Ignore:
Timestamp:
Jan 17, 2018 4:24:59 PM (4 years ago)
Author:
suehring
Message:

Major bugfix in horizontal diffusion of all scalar quantities at vertical surfaces; further bugfix: density is considered for vertical fluxes of passive scalar and salinity

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/diffusion_s.f90

    r2718 r2759  
    2525! -----------------
    2626! $Id$
     27! Major bugfix, horizontal diffusion at vertical surfaces corrected.
     28!
     29! 2718 2018-01-02 08:49:38Z maronga
    2730! Corrected "Former revisions" section
    2831!
     
    136139       
    137140       USE grid_variables,                                                     &
    138            ONLY:  ddx2, ddy2
     141           ONLY:  ddx, ddx2, ddy, ddy2
    139142       
    140143       USE indices,                                                            &
     
    231234             DO  m = surf_s, surf_e
    232235                k           = surf_def_v(0)%k(m)
    233                 tend(k,j,i) = tend(k,j,i) + s_flux_def_v_north(m) * ddy2
     236                tend(k,j,i) = tend(k,j,i) + s_flux_def_v_north(m) * ddy
    234237             ENDDO
    235238!
     
    239242             DO  m = surf_s, surf_e
    240243                k           = surf_def_v(1)%k(m)
    241                 tend(k,j,i) = tend(k,j,i) + s_flux_def_v_south(m) * ddy2
     244                tend(k,j,i) = tend(k,j,i) + s_flux_def_v_south(m) * ddy
    242245             ENDDO
    243246!
     
    247250             DO  m = surf_s, surf_e
    248251                k           = surf_def_v(2)%k(m)
    249                 tend(k,j,i) = tend(k,j,i) + s_flux_def_v_east(m) * ddx2
     252                tend(k,j,i) = tend(k,j,i) + s_flux_def_v_east(m) * ddx
    250253             ENDDO
    251254!
     
    255258             DO  m = surf_s, surf_e
    256259                k           = surf_def_v(3)%k(m)
    257                 tend(k,j,i) = tend(k,j,i) + s_flux_def_v_west(m) * ddx2
     260                tend(k,j,i) = tend(k,j,i) + s_flux_def_v_west(m) * ddx
    258261             ENDDO
    259262!
     
    264267             DO  m = surf_s, surf_e
    265268                k           = surf_lsm_v(0)%k(m)
    266                 tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_north(m) * ddy2
     269                tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_north(m) * ddy
    267270             ENDDO
    268271!
     
    272275             DO  m = surf_s, surf_e
    273276                k           = surf_lsm_v(1)%k(m)
    274                 tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_south(m) * ddy2
     277                tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_south(m) * ddy
    275278             ENDDO
    276279!
     
    280283             DO  m = surf_s, surf_e
    281284                k           = surf_lsm_v(2)%k(m)
    282                 tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_east(m) * ddx2
     285                tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_east(m) * ddx
    283286             ENDDO
    284287!
     
    288291             DO  m = surf_s, surf_e
    289292                k           = surf_lsm_v(3)%k(m)
    290                 tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_west(m) * ddx2
     293                tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_west(m) * ddx
    291294             ENDDO
    292295!
     
    297300             DO  m = surf_s, surf_e
    298301                k           = surf_usm_v(0)%k(m)
    299                 tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_north(m) * ddy2
     302                tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_north(m) * ddy
    300303             ENDDO
    301304!
     
    305308             DO  m = surf_s, surf_e
    306309                k           = surf_usm_v(1)%k(m)
    307                 tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_south(m) * ddy2
     310                tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_south(m) * ddy
    308311             ENDDO
    309312!
     
    313316             DO  m = surf_s, surf_e
    314317                k           = surf_usm_v(2)%k(m)
    315                 tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_east(m) * ddx2
     318                tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_east(m) * ddx
    316319             ENDDO
    317320!
     
    321324             DO  m = surf_s, surf_e
    322325                k           = surf_usm_v(3)%k(m)
    323                 tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_west(m) * ddx2
     326                tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_west(m) * ddx
    324327             ENDDO
    325328
     
    448451       
    449452       USE grid_variables,                                                     &
    450            ONLY:  ddx2, ddy2
     453           ONLY:  ddx, ddx2, ddy, ddy2
    451454       
    452455       USE indices,                                                            &
     
    543546       DO  m = surf_s, surf_e
    544547          k           = surf_def_v(0)%k(m)
    545           tend(k,j,i) = tend(k,j,i) + s_flux_def_v_north(m) * ddy2
     548          tend(k,j,i) = tend(k,j,i) + s_flux_def_v_north(m) * ddy
    546549       ENDDO
    547550!
     
    551554       DO  m = surf_s, surf_e
    552555          k           = surf_def_v(1)%k(m)
    553           tend(k,j,i) = tend(k,j,i) + s_flux_def_v_south(m) * ddy2
     556          tend(k,j,i) = tend(k,j,i) + s_flux_def_v_south(m) * ddy
    554557       ENDDO
    555558!
     
    559562       DO  m = surf_s, surf_e
    560563          k           = surf_def_v(2)%k(m)
    561           tend(k,j,i) = tend(k,j,i) + s_flux_def_v_east(m) * ddx2
     564          tend(k,j,i) = tend(k,j,i) + s_flux_def_v_east(m) * ddx
    562565       ENDDO
    563566!
     
    567570       DO  m = surf_s, surf_e
    568571          k           = surf_def_v(3)%k(m)
    569           tend(k,j,i) = tend(k,j,i) + s_flux_def_v_west(m) * ddx2
     572          tend(k,j,i) = tend(k,j,i) + s_flux_def_v_west(m) * ddx
    570573       ENDDO
    571574!
     
    576579       DO  m = surf_s, surf_e
    577580          k           = surf_lsm_v(0)%k(m)
    578           tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_north(m) * ddy2
     581          tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_north(m) * ddy
    579582       ENDDO
    580583!
     
    584587       DO  m = surf_s, surf_e
    585588          k           = surf_lsm_v(1)%k(m)
    586           tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_south(m) * ddy2
     589          tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_south(m) * ddy
    587590       ENDDO
    588591!
     
    592595       DO  m = surf_s, surf_e
    593596          k           = surf_lsm_v(2)%k(m)
    594           tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_east(m) * ddx2
     597          tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_east(m) * ddx
    595598       ENDDO
    596599!
     
    600603       DO  m = surf_s, surf_e
    601604          k           = surf_lsm_v(3)%k(m)
    602           tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_west(m) * ddx2
     605          tend(k,j,i) = tend(k,j,i) + s_flux_lsm_v_west(m) * ddx
    603606       ENDDO
    604607!
     
    609612       DO  m = surf_s, surf_e
    610613          k           = surf_usm_v(0)%k(m)
    611           tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_north(m) * ddy2
     614          tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_north(m) * ddy
    612615       ENDDO
    613616!
     
    617620       DO  m = surf_s, surf_e
    618621          k           = surf_usm_v(1)%k(m)
    619           tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_south(m) * ddy2
     622          tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_south(m) * ddy
    620623       ENDDO
    621624!
     
    625628       DO  m = surf_s, surf_e
    626629          k           = surf_usm_v(2)%k(m)
    627           tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_east(m) * ddx2
     630          tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_east(m) * ddx
    628631       ENDDO
    629632!
     
    633636       DO  m = surf_s, surf_e
    634637          k           = surf_usm_v(3)%k(m)
    635           tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_west(m) * ddx2
     638          tend(k,j,i) = tend(k,j,i) + s_flux_usm_v_west(m) * ddx
    636639       ENDDO
    637640
Note: See TracChangeset for help on using the changeset viewer.