- Timestamp:
- 2017-12-01T10:48:12+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90
r8865 r8870 7 7 !! Wetting and drying includes initialisation routine and routines to 8 8 !! compute and apply flux limiters and preserve water depth positivity 9 !! only effects if wetting/drying is on (ln_wd == .true.)9 !! only effects if wetting/drying is on (ln_wd_il == .true. or ln_wd_dl==.true. ) 10 10 !!============================================================================== 11 11 !! History : 3.6 ! 2014-09 ((H.Liu) Original code … … 38 38 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: wdramp, wdrampu, wdrampv ! for hpg limiting 39 39 40 LOGICAL, PUBLIC :: ln_wd !: Wetting/drying activation switch (T:on,F:off) 40 LOGICAL, PUBLIC :: ln_wd_il !: Wetting/drying il activation switch (T:on,F:off) 41 LOGICAL, PUBLIC :: ln_wd_dl !: Wetting/drying dl activation switch (T:on,F:off) 41 42 REAL(wp), PUBLIC :: rn_wdmin0 !: depth at which wetting/drying starts 42 LOGICAL, PUBLIC :: ln_rwd !: ROMS Wetting/drying activation switch (T:on,F:off)43 43 REAL(wp), PUBLIC :: rn_wdmin1 !: minimum water depth on dried cells 44 44 REAL(wp), PUBLIC :: rn_wdmin2 !: tolerance of minimum water depth on dried cells … … 46 46 !: will be considered 47 47 INTEGER , PUBLIC :: nn_wdit !: maximum number of iteration for W/D limiter 48 LOGICAL, PUBLIC :: ln_ rwd_bc !: ROMSscheme: True implies 3D velocities are set to the barotropic values at points48 LOGICAL, PUBLIC :: ln_wd_dl_bc !: DL scheme: True implies 3D velocities are set to the barotropic values at points 49 49 !: where the flow is from wet points on less than half the barotropic sub-steps 50 LOGICAL, PUBLIC :: ln_ rwd_rmp !: use a ramp for the rwdflux limiter between 2 rn_wdmin1 and rn_wdmin1 (rather than a cut-off at rn_wdmin1)50 LOGICAL, PUBLIC :: ln_wd_dl_rmp !: use a ramp for the dl flux limiter between 2 rn_wdmin1 and rn_wdmin1 (rather than a cut-off at rn_wdmin1) 51 51 REAL(wp), PUBLIC :: rn_ssh_ref !: height of z=0 with respect to the geoid; 52 52 REAL(wp), PUBLIC :: rn_ht_0 !: the height at which ht_0 = 0 53 53 54 LOGICAL, PUBLIC :: ln_wd_diag ! True implies wad diagnostic at chosen point are printed out55 INTEGER , PUBLIC :: jn_wd_i, jn_wd_j, jn_wd_k ! indices at which diagnostic outputs are generated56 54 57 55 PUBLIC wad_init ! initialisation routine called by step.F90 … … 71 69 !! ** input : - namwad namelist 72 70 !!---------------------------------------------------------------------- 73 NAMELIST/namwad/ ln_wd , ln_rwd, rn_wdmin0, ln_rwd, rn_wdmin1, rn_wdmin2, rn_wdld, nn_wdit, ln_wd_diag, ln_rwd_bc, &74 & rn_ht_0, jn_wd_i, jn_wd_j, jn_wd_k,ln_rwd_rmp71 NAMELIST/namwad/ ln_wd_il, ln_wd_dl, rn_wdmin0, ln_wd_dl, rn_wdmin1, rn_wdmin2, rn_wdld, nn_wdit, ln_wd_dl_bc, & 72 & rn_ht_0,ln_wd_dl_rmp 75 73 76 74 INTEGER :: ios ! Local integer output status for namelist read … … 93 91 WRITE(numout,*) '~~~~~~~~' 94 92 WRITE(numout,*) ' Namelist namwad' 95 WRITE(numout,*) ' Logical for NOC wd scheme ln_wd = ', ln_wd96 WRITE(numout,*) ' Logical for ROMS wd scheme ln_rwd = ', ln_rwd93 WRITE(numout,*) ' Logical for Iter Lim wd option ln_wd_il = ', ln_wd_il 94 WRITE(numout,*) ' Logical for Dir. Lim wd option ln_wd_dl = ', ln_wd_dl 97 95 WRITE(numout,*) ' Depth at which wet/drying starts rn_wdmin0 = ', rn_wdmin0 98 96 WRITE(numout,*) ' Minimum wet depth on dried cells rn_wdmin1 = ', rn_wdmin1 … … 100 98 WRITE(numout,*) ' land elevation threshold rn_wdld = ', rn_wdld 101 99 WRITE(numout,*) ' Max iteration for W/D limiter nn_wdit = ', nn_wdit 102 WRITE(numout,*) ' Logical for WAD diagnostics ln_wd_diag = ', ln_wd_diag 103 WRITE(numout,*) ' T => baroclinic u,v = 0 at dry pts: ln_rwd_bc = ', ln_rwd_bc 104 WRITE(numout,*) ' use a ramp for rwd limiter: ln_rwd_rmp = ', ln_rwd_rmp 100 WRITE(numout,*) ' T => baroclinic u,v = 0 at dry pts: ln_wd_dl_bc = ', ln_wd_dl_bc 101 WRITE(numout,*) ' use a ramp for rwd limiter: ln_wd_dl_rwd_rmp = ', ln_wd_dl_rmp 105 102 WRITE(numout,*) ' the height (z) at which ht_0 = 0:rn_ht_0 = ', rn_ht_0 106 WRITE(numout,*) ' i-index for diagnostic point jn_wd_i = ', jn_wd_i107 WRITE(numout,*) ' j-index for diagnostic point jn_wd_j = ', jn_wd_j108 WRITE(numout,*) ' k-index for diagnostic point jn_wd_k = ', jn_wd_k109 103 ENDIF 110 104 ! 111 IF(ln_wd .OR. ln_rwd) THEN105 IF(ln_wd_il .OR. ln_wd_dl) THEN 112 106 ALLOCATE( wdmask(jpi,jpj), STAT=ierr ) 113 107 ALLOCATE( wdramp(jpi,jpj), wdrampu(jpi,jpj), wdrampv(jpi,jpj), STAT=ierr ) … … 147 141 IF( nn_timing == 1 ) CALL timing_start('wad_lmt') 148 142 149 IF(ln_wd ) THEN143 IF(ln_wd_il) THEN 150 144 151 145 CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 ) … … 333 327 IF( nn_timing == 1 ) CALL timing_start('wad_lmt_bt') 334 328 335 IF(ln_wd ) THEN329 IF(ln_wd_il) THEN 336 330 337 331 CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 )
Note: See TracChangeset
for help on using the changeset viewer.