Changeset 8956
- Timestamp:
- 2017-12-08T14:17:56+01:00 (7 years ago)
- Location:
- branches/UKMO/ROMS_WAD_7832/NEMOGCM
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/domain.F90
r8870 r8956 674 674 ENDIF 675 675 ! 676 IF( l n_wd_il .or. ln_wd_dl) THEN ! wetting and drying domain676 IF( ll_wd ) THEN ! wetting and drying domain 677 677 CALL iom_rstput( 0, 0, inum, 'ht_0' , ht_0 , ktype = jp_r8 ) 678 678 ENDIF -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/usrdef_zgr.F90
r8865 r8956 16 16 USE oce ! ocean variables 17 17 USE dom_oce , ONLY: ln_zco, ln_zps, ln_sco ! ocean space and time domain 18 USE dom_oce , ONLY: ht_0, mi0, mi1, nimpp, njmpp, &19 & mj0, mj1, glamt, gphit , ht_0! ocean space and time domain18 USE dom_oce , ONLY: ht_0, mi0, mi1, nimpp, njmpp, & 19 & mj0, mj1, glamt, gphit ! ocean space and time domain 20 20 USE usrdef_nam ! User defined : namelist variables 21 USE wet_dry , ONLY: rn_wdmin1, rn_wdmin2, rn_wdld, rn_ht_0,rn_ssh_ref 21 USE wet_dry , ONLY: rn_wdmin1, rn_wdmin2, rn_wdld, & 22 & rn_ht_0, rn_ssh_ref ! Wetting and drying 22 23 ! 23 24 USE in_out_manager ! I/O manager -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn2d.F90
r8870 r8956 170 170 ii = idx%nbi(jb,igrd) 171 171 ij = idx%nbj(jb,igrd) 172 IF( l n_wd_il .OR. ln_wd_dl) THEN172 IF( ll_wd ) THEN 173 173 spgu(ii, ij) = dta%ssh(jb) - rn_ssh_ref 174 174 ELSE -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r8870 r8956 154 154 CALL iom_put( "e3tdef" , ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 155 155 156 IF( (ln_wd_il .OR. ln_wd_dl )) THEN157 CALL iom_put( "ssh" , sshn+rn_ssh_ref ) ! sea surface height !bring it back to the reference need wad if here156 IF( ll_wd ) THEN 157 CALL iom_put( "ssh" , sshn+rn_ssh_ref ) ! sea surface height (brought back to the reference used for wetting and drying) 158 158 ELSE 159 CALL iom_put( "ssh" , sshn ) ! sea surface height !bring it back to the reference need wad if here159 CALL iom_put( "ssh" , sshn ) ! sea surface height 160 160 ENDIF 161 161 -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r8870 r8956 39 39 USE domc1d ! 1D configuration: column location 40 40 USE dyncor_c1d ! 1D configuration: Coriolis term (cor_c1d routine) 41 USE wet_dry, ONLY : ln_wd_il, ln_wd_dl41 USE wet_dry, ONLY : ll_wd 42 42 ! 43 43 USE in_out_manager ! I/O manager … … 674 674 ENDIF 675 675 ! 676 IF( l n_wd_il .or. ln_wd_dl) THEN ! wetting and drying domain676 IF( ll_wd ) THEN ! wetting and drying domain 677 677 CALL iom_rstput( 0, 0, inum, 'ht_0' , ht_0 , ktype = jp_r8 ) 678 678 ENDIF -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r8870 r8956 877 877 ! 878 878 879 ! MJB ln_wd edits start here - these are essential 880 881 IF( (ln_wd_il .OR. ln_wd_dl)) THEN 882 883 ! Wetting and drying test case 879 IF( ll_wd ) THEN ! MJB ll_wd edits start here - these are essential 880 ! 884 881 IF( cn_cfg == 'wad' ) THEN 882 ! Wetting and drying test case 885 883 CALL usr_def_istate( gdept_b, tmask, tsb, ub, vb, sshb ) 886 884 tsn (:,:,:,:) = tsb (:,:,:,:) ! set now values from to before ones … … 888 886 un (:,:,:) = ub (:,:,:) 889 887 vn (:,:,:) = vb (:,:,:) 890 ELSEIF( ln_wd_il .or. ln_wd_dl ) THEN ! if not test case 888 ELSE 889 ! if not test case 891 890 sshn(:,:) = -rn_ssh_ref 892 891 sshb(:,:) = -rn_ssh_ref … … 902 901 ENDDO 903 902 ENDDO 904 ENDIF !If wad elseif ln_wd_il or ln_wd_dl903 ENDIF !If test case else 905 904 906 905 ! Adjust vertical metrics for all wad 907 906 DO jk = 1, jpk 908 909 910 & + e3t_0(:,:,jk) * (1._wp -tmask(:,:,jk))907 e3t_n(:,:,jk) = e3t_0(:,:,jk) * ( ht_0(:,:) - rn_ht_0 + sshn(:,:) ) & 908 & / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) & 909 & + e3t_0(:,:,jk) * ( 1._wp - tmask(:,:,jk) ) 911 910 END DO 912 911 e3t_b(:,:,:) = e3t_n(:,:,:) … … 914 913 DO ji = 1, jpi 915 914 DO jj = 1, jpj 916 IF ( ht_0(ji,jj) .LE. 0.0 .AND. NINT( ssmask(ji,jj)) .EQ. 1) THEN915 IF ( ht_0(ji,jj) .LE. 0.0 .AND. NINT( ssmask(ji,jj) ) .EQ. 1) THEN 917 916 CALL ctl_stop( 'dom_vvl_rst: ht_0 must be positive at potentially wet points' ) 918 917 ENDIF … … 927 926 sshn(:,:) = 0.0_wp 928 927 ! 929 END IF 928 END IF ! end of ll_wd edits 930 929 931 930 IF( ln_vvl_ztilde .OR. ln_vvl_layer) THEN -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r8870 r8956 18 18 USE dom_oce ! ocean space and time domain 19 19 USE phycst , ONLY : rsmall 20 USE wet_dry, ONLY : l n_wd_il, ln_wd_dl20 USE wet_dry, ONLY : ll_wd ! Wetting and drying 21 21 ! 22 22 USE in_out_manager ! I/O manager … … 198 198 ENDIF 199 199 ! 200 IF( l n_wd_il .OR. ln_wd_dl) CALL iom_rstput( 0, 0, inum, 'ht_0' , ht_0 , ktype = jp_r8 )200 IF( ll_wd ) CALL iom_rstput( 0, 0, inum, 'ht_0' , ht_0 , ktype = jp_r8 ) 201 201 202 202 ! ! ============================ -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r8870 r8956 30 30 USE usrdef_zgr ! user defined vertical coordinate system 31 31 USE depth_e3 ! depth <=> e3 32 USE wet_dry, ONLY: ln_wd_il, ln_wd_dl, rn_ssh_ref32 USE wet_dry, ONLY: ll_wd, rn_ssh_ref ! Wetting and drying 33 33 ! 34 34 USE in_out_manager ! I/O manager … … 259 259 ! 260 260 ! reference depth for negative bathy (wetting and drying only) 261 IF( l n_wd_il .OR. ln_wd_dl) CALL iom_get( inum, 'rn_wd_ref_depth' , rn_ssh_ref )261 IF( ll_wd ) CALL iom_get( inum, 'rn_wd_ref_depth' , rn_ssh_ref ) 262 262 ! 263 263 CALL iom_close( inum ) -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r8870 r8956 454 454 DO jj = 2, jpjm1 455 455 DO ji = 2, jpim1 456 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji+1,jj) ) > &456 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 457 457 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & 458 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) )&459 & 460 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. (&461 & MAX( sshn(ji,jj) ,sshn(ji+1,jj) ) > &462 & MAX( -ht_0(ji,jj), -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 )458 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 459 & > rn_wdmin1 + rn_wdmin2 460 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( & 461 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 462 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 463 463 464 464 IF(ll_tmp1) THEN … … 467 467 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here 468 468 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 469 & / (sshn(ji+1,jj) - 469 & / (sshn(ji+1,jj) - sshn(ji ,jj)) ) 470 470 ELSE 471 471 zcpx(ji,jj) = 0._wp 472 472 END IF 473 473 474 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji,jj+1) ) > &475 & MAX( -ht_0(ji,jj) 476 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) )&477 & 478 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. (&479 & MAX( sshn(ji,jj) ,sshn(ji,jj+1) ) > &480 & MAX( -ht_0(ji,jj), -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 )474 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 475 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) .AND. & 476 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 477 & > rn_wdmin1 + rn_wdmin2 478 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( & 479 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 480 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 481 481 482 482 IF(ll_tmp1) THEN … … 485 485 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 486 486 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 487 & / (sshn(ji,jj+1) - 487 & / (sshn(ji,jj+1) - sshn(ji,jj )) ) 488 488 ELSE 489 489 zcpy(ji,jj) = 0._wp … … 706 706 DO jj = 2, jpjm1 707 707 DO ji = 2, jpim1 708 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji+1,jj) ) > &709 & MAX( -ht_0(ji,jj) 710 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) )&711 & 712 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. (&713 & MAX( sshn(ji,jj) ,sshn(ji+1,jj) ) > &714 & MAX( -ht_0(ji,jj), -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 )708 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 709 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & 710 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 711 & > rn_wdmin1 + rn_wdmin2 712 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( & 713 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 714 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 715 715 716 716 IF(ll_tmp1) THEN … … 719 719 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here 720 720 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 721 & / (sshn(ji+1,jj) - 721 & / (sshn(ji+1,jj) - sshn(ji ,jj)) ) 722 722 ELSE 723 723 zcpx(ji,jj) = 0._wp 724 724 END IF 725 725 726 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji,jj+1) ) > &727 & MAX( -ht_0(ji,jj) 728 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) )&729 & 730 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. (&731 & MAX( sshn(ji,jj) ,sshn(ji,jj+1) ) > &732 & MAX( -ht_0(ji,jj), -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 )726 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 727 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) .AND. & 728 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 729 & > rn_wdmin1 + rn_wdmin2 730 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( & 731 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 732 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 733 733 734 734 IF(ll_tmp1) THEN … … 737 737 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 738 738 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 739 & / (sshn(ji,jj+1) - 739 & / (sshn(ji,jj+1) - sshn(ji,jj )) ) 740 740 ELSE 741 741 zcpy(ji,jj) = 0._wp … … 1005 1005 DO jj = 2, jpjm1 1006 1006 DO ji = 2, jpim1 1007 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji+1,jj) ) > &1008 & MAX( -ht_0(ji,jj) 1009 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) )&1010 & 1011 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. (&1012 & MAX( sshn(ji,jj) ,sshn(ji+1,jj) ) > &1013 & MAX( -ht_0(ji,jj), -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 )1007 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 1008 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & 1009 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 1010 & > rn_wdmin1 + rn_wdmin2 1011 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( & 1012 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 1013 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 1014 1014 1015 1015 IF(ll_tmp1) THEN … … 1025 1025 END IF 1026 1026 1027 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji,jj+1) ) > &1028 & MAX( -ht_0(ji,jj) 1029 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) )&1030 & 1031 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. (&1032 & MAX( sshn(ji,jj) ,sshn(ji,jj+1) ) > &1033 & MAX( -ht_0(ji,jj), -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 )1027 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 1028 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) .AND. & 1029 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 1030 & > rn_wdmin1 + rn_wdmin2 1031 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( & 1032 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 1033 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 1034 1034 1035 1035 IF(ll_tmp1) THEN … … 1038 1038 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 1039 1039 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 1040 & / (sshn(ji,jj+1) - 1040 & / (sshn(ji,jj+1) - sshn(ji,jj )) ) 1041 1041 zcpy(ji,jj) = max(min( zcpy(ji,jj) , 1.0_wp),0.0_wp) 1042 1042 -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r8907 r8956 140 140 INTEGER, INTENT(in) :: kt ! ocean time-step index 141 141 ! 142 LOGICAL :: ll_fw_start 143 LOGICAL :: ll_init 142 LOGICAL :: ll_fw_start ! if true, forward integration 143 LOGICAL :: ll_init ! if true, special startup of 2d equations 144 144 LOGICAL :: ll_tmp1, ll_tmp2 ! local logical variables used in W/D 145 INTEGER :: ji, jj, jk, jn 146 INTEGER :: ikbu, ikbv, noffset 147 INTEGER :: iktu, iktv 145 INTEGER :: ji, jj, jk, jn ! dummy loop indices 146 INTEGER :: ikbu, ikbv, noffset ! local integers 147 INTEGER :: iktu, iktv ! local integers 148 148 REAL(wp) :: zmdi 149 REAL(wp) :: zraur, z1_2dt_b, z2dt_bf 149 REAL(wp) :: zraur, z1_2dt_b, z2dt_bf ! local scalars 150 150 REAL(wp) :: zx1, zy1, zx2, zy2 ! - - 151 REAL(wp) :: z1_12, z1_8, z1_4, z1_2 151 REAL(wp) :: z1_12, z1_8, z1_4, z1_2 ! - - 152 152 REAL(wp) :: zu_spg, zv_spg ! - - 153 REAL(wp) :: zhura, zhvra 154 REAL(wp) :: za0, za1, za2, za3 153 REAL(wp) :: zhura, zhvra ! - - 154 REAL(wp) :: za0, za1, za2, za3 ! - - 155 155 REAL(wp) :: zwdramp ! local scalar - only used if ln_wd_dl = .True. 156 156 … … 190 190 z1_2 = 0.5_wp 191 191 zraur = 1._wp / rau0 192 zwdramp = 1._wp / rn_wdmin1 193 ! zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) 194 ! 192 zwdramp = 1._wp / rn_wdmin1 ! simplest ramp 193 ! zwdramp = 1._wp / (rn_wdmin2 - rn_wdmin1) ! more general ramp 194 ! ! reciprocal of baroclinic time step 195 195 IF( kt == nit000 .AND. neuler == 0 ) THEN ; z2dt_bf = rdt 196 196 ELSE ; z2dt_bf = 2.0_wp * rdt … … 198 198 z1_2dt_b = 1.0_wp / z2dt_bf 199 199 ! 200 ll_init = ln_bt_av 200 ll_init = ln_bt_av ! if no time averaging, then no specific restart 201 201 ll_fw_start = .FALSE. 202 ! 202 ! ! time offset in steps for bdy data update 203 203 IF( .NOT.ln_bt_fw ) THEN ; noffset = - nn_baro 204 204 ELSE ; noffset = 0 205 205 ENDIF 206 206 ! 207 IF( kt == nit000 ) THEN 207 IF( kt == nit000 ) THEN !* initialisation 208 208 ! 209 209 IF(lwp) WRITE(numout,*) … … 416 416 DO jj = 2, jpjm1 417 417 DO ji = 2, jpim1 418 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji+1,jj) ) > &418 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 419 419 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & 420 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji+1,jj) + ht_0(ji+1,jj) )&421 & 422 ll_tmp2 = ( ABS( sshn(ji+1,jj) -sshn(ji ,jj)) > 1.E-12 ).AND.( &423 & MAX( sshn(ji,jj) ,sshn(ji+1,jj) ) > &424 & MAX( -ht_0(ji,jj), -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 )420 & MAX( sshn(ji,jj) + ht_0(ji,jj) , sshn(ji+1,jj) + ht_0(ji+1,jj) ) & 421 & > rn_wdmin1 + rn_wdmin2 422 ll_tmp2 = ( ABS( sshn(ji+1,jj) - sshn(ji ,jj)) > 1.E-12 ).AND.( & 423 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 424 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 425 425 426 426 IF(ll_tmp1) THEN … … 429 429 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here 430 430 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_0(ji+1,jj) - sshn(ji,jj) - ht_0(ji,jj)) & 431 & / (sshn(ji+1,jj) - 431 & / (sshn(ji+1,jj) - sshn(ji ,jj)) ) 432 432 zcpx(ji,jj) = max(min( zcpx(ji,jj) , 1.0_wp),0.0_wp) 433 433 … … 436 436 END IF 437 437 438 ll_tmp1 = MIN( sshn(ji,jj) ,sshn(ji,jj+1) ) > &438 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 439 439 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) .AND. & 440 & MAX( sshn(ji,jj) + ht_0(ji,jj), sshn(ji,jj+1) + ht_0(ji,jj+1) )&441 & 442 ll_tmp2 = ( ABS( sshn(ji,jj) -sshn(ji,jj+1)) > 1.E-12 ).AND.( &443 & MAX( sshn(ji,jj) ,sshn(ji,jj+1) ) > &444 & MAX( -ht_0(ji,jj), -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 )440 & MAX( sshn(ji,jj) + ht_0(ji,jj) , sshn(ji,jj+1) + ht_0(ji,jj+1) ) & 441 & > rn_wdmin1 + rn_wdmin2 442 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1)) > 1.E-12 ).AND.( & 443 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 444 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 445 445 446 446 IF(ll_tmp1) THEN … … 449 449 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 450 450 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_0(ji,jj+1) - sshn(ji,jj) - ht_0(ji,jj)) & 451 & / (sshn(ji,jj+1) - 451 & / (sshn(ji,jj+1) - sshn(ji,jj )) ) 452 452 zcpy(ji,jj) = max(min( zcpy(ji,jj) , 1.0_wp),0.0_wp) 453 453 … … 487 487 END DO 488 488 ! 489 ! 489 ! ! Add bottom stress contribution from baroclinic velocities: 490 490 IF (ln_bt_fw) THEN 491 491 DO jj = 2, jpjm1 … … 863 863 DO ji = 2, jpim1 864 864 ll_tmp1 = MIN( zsshp2_e(ji,jj) , zsshp2_e(ji+1,jj) ) > & 865 & MAX( -ht_0(ji,jj) ,-ht_0(ji+1,jj) ) .AND. &866 & MAX( zsshp2_e(ji,jj) + ht_0(ji,jj) , zsshp2_e(ji+1,jj) + ht_0(ji+1,jj) ) &865 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & 866 & MAX( zsshp2_e(ji,jj) + ht_0(ji,jj) , zsshp2_e(ji+1,jj) + ht_0(ji+1,jj) ) & 867 867 & > rn_wdmin1 + rn_wdmin2 868 868 ll_tmp2 = (ABS(zsshp2_e(ji,jj) - zsshp2_e(ji+1,jj)) > 1.E-12 ).AND.( & 869 869 & MAX( zsshp2_e(ji,jj) , zsshp2_e(ji+1,jj) ) > & 870 & MAX( -ht_0(ji,jj) ,-ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 )870 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 871 871 872 872 IF(ll_tmp1) THEN … … 874 874 ELSE IF(ll_tmp2) THEN 875 875 ! no worries about zsshp2_e(ji+1,jj) - zsshp2_e(ji ,jj) = 0, it won't happen ! here 876 zcpx(ji,jj) = ABS( (zsshp2_e(ji+1,jj) + ht_0(ji+1,jj) - zsshp2_e(ji,jj) - ht_0(ji,jj)) &876 zcpx(ji,jj) = ABS( (zsshp2_e(ji+1,jj) + ht_0(ji+1,jj) - zsshp2_e(ji,jj) - ht_0(ji,jj)) & 877 877 & / (zsshp2_e(ji+1,jj) - zsshp2_e(ji ,jj)) ) 878 878 ELSE … … 881 881 882 882 ll_tmp1 = MIN( zsshp2_e(ji,jj) , zsshp2_e(ji,jj+1) ) > & 883 & MAX( -ht_0(ji,jj) ,-ht_0(ji,jj+1) ) .AND. &884 & MAX( zsshp2_e(ji,jj) + ht_0(ji,jj) , zsshp2_e(ji,jj+1) + ht_0(ji,jj+1) ) &883 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) .AND. & 884 & MAX( zsshp2_e(ji,jj) + ht_0(ji,jj) , zsshp2_e(ji,jj+1) + ht_0(ji,jj+1) ) & 885 885 & > rn_wdmin1 + rn_wdmin2 886 886 ll_tmp2 = (ABS(zsshp2_e(ji,jj) - zsshp2_e(ji,jj+1)) > 1.E-12 ).AND.( & 887 887 & MAX( zsshp2_e(ji,jj) , zsshp2_e(ji,jj+1) ) > & 888 & MAX( -ht_0(ji,jj) ,-ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 )888 & MAX( -ht_0(ji,jj) , -ht_0(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 889 889 890 890 IF(ll_tmp1) THEN … … 892 892 ELSE IF(ll_tmp2) THEN 893 893 ! no worries about zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj ) = 0, it won't happen ! here 894 zcpy(ji,jj) = ABS( (zsshp2_e(ji,jj+1) + ht_0(ji,jj+1) - zsshp2_e(ji,jj) - ht_0(ji,jj)) &894 zcpy(ji,jj) = ABS( (zsshp2_e(ji,jj+1) + ht_0(ji,jj+1) - zsshp2_e(ji,jj) - ht_0(ji,jj)) & 895 895 & / (zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj )) ) 896 896 ELSE … … 902 902 ! 903 903 ! Compute associated depths at U and V points: 904 IF( .NOT.ln_linssh .AND. .NOT.ln_dynadv_vec ) THEN 904 IF( .NOT.ln_linssh .AND. .NOT.ln_dynadv_vec ) THEN !* Vector form 905 905 ! 906 906 DO jj = 2, jpjm1 … … 980 980 ! Add bottom stresses: 981 981 !jth do implicitly instead 982 IF ( .NOT. l n_wd_il .and. .NOT. ln_wd_dl) THEN ! Revert to explicit for bit comparison tests in non wad runs982 IF ( .NOT. ll_wd ) THEN ! Revert to explicit for bit comparison tests in non wad runs 983 983 zu_trd(:,:) = zu_trd(:,:) + bfrua(:,:) * un_e(:,:) * hur_e(:,:) 984 984 zv_trd(:,:) = zv_trd(:,:) + bfrva(:,:) * vn_e(:,:) * hvr_e(:,:) … … 1015 1015 ! 1016 1016 ! Set next velocities: 1017 IF( ln_dynadv_vec .OR. ln_linssh ) THEN 1017 IF( ln_dynadv_vec .OR. ln_linssh ) THEN !* Vector form 1018 1018 DO jj = 2, jpjm1 1019 1019 DO ji = fs_2, fs_jpim1 ! vector opt. … … 1031 1031 1032 1032 !jth implicit bottom friction: 1033 IF ( ln_wd_il .or. ln_wd_dl) THEN ! revert to explicit for bit comparison tests in non wad runs1033 IF ( ll_wd ) THEN ! revert to explicit for bit comparison tests in non wad runs 1034 1034 ua_e(ji,jj) = ua_e(ji,jj) /(1.0 - rdtbt * bfrua(ji,jj) * hur_e(ji,jj)) 1035 1035 va_e(ji,jj) = va_e(ji,jj) /(1.0 - rdtbt * bfrva(ji,jj) * hvr_e(ji,jj)) … … 1039 1039 END DO 1040 1040 ! 1041 ELSE 1041 ELSE !* Flux form 1042 1042 DO jj = 2, jpjm1 1043 1043 DO ji = fs_2, fs_jpim1 ! vector opt. … … 1100 1100 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) 1101 1101 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) 1102 ELSE 1103 IF ( .NOT.ln_wd_dl) THEN1102 ELSE ! Sum transports 1103 IF ( .NOT.ln_wd_dl ) THEN 1104 1104 ua_b (:,:) = ua_b (:,:) + za1 * ua_e (:,:) * hu_e (:,:) 1105 1105 va_b (:,:) = va_b (:,:) + za1 * va_e (:,:) * hv_e (:,:) … … 1109 1109 END IF 1110 1110 ENDIF 1111 ! 1111 ! ! Sum sea level 1112 1112 ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 1113 1113 … … 1383 1383 rdtbt = rdt / REAL( nn_baro , wp ) 1384 1384 zcmax = zcmax * rdtbt 1385 1385 ! Print results 1386 1386 IF(lwp) WRITE(numout,*) 1387 1387 IF(lwp) WRITE(numout,*) 'dyn_spg_ts : split-explicit free surface' -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/DYN/wet_dry.F90
r8907 r8956 46 46 LOGICAL, PUBLIC :: ln_wd_dl_bc !: DL scheme: True implies 3D velocities are set to the barotropic values at points 47 47 !: where the flow is from wet points on less than half the barotropic sub-steps 48 LOGICAL, PUBLIC :: 48 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) 49 49 REAL(wp), PUBLIC :: rn_ssh_ref !: height of z=0 with respect to the geoid; 50 50 REAL(wp), PUBLIC :: rn_ht_0 !: the height at which ht_0 = 0 51 51 52 LOGICAL, PUBLIC :: ll_wd !: Wetting/drying activation switch if either ln_wd_il or ln_wd_dl 52 53 53 54 PUBLIC wad_init ! initialisation routine called by step.F90 … … 67 68 !! ** input : - namwad namelist 68 69 !!---------------------------------------------------------------------- 69 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, &70 & rn_ht_0,ln_wd_dl_rmp70 NAMELIST/namwad/ ln_wd_il, ln_wd_dl, rn_wdmin0, rn_wdmin1, rn_wdmin2, rn_wdld, & 71 & nn_wdit, ln_wd_dl_bc, ln_wd_dl_rmp, rn_ht_0 71 72 72 73 INTEGER :: ios ! Local integer output status for namelist read … … 89 90 WRITE(numout,*) '~~~~~~~~' 90 91 WRITE(numout,*) ' Namelist namwad' 91 WRITE(numout,*) ' Logical for Iter Lim wd option ln_wd_il= ', ln_wd_il92 WRITE(numout,*) ' Logical for Dir. Lim wd option ln_wd_dl= ', ln_wd_dl92 WRITE(numout,*) ' Logical for Iter Lim wd option ln_wd_il = ', ln_wd_il 93 WRITE(numout,*) ' Logical for Dir. Lim wd option ln_wd_dl = ', ln_wd_dl 93 94 WRITE(numout,*) ' Depth at which wet/drying starts rn_wdmin0 = ', rn_wdmin0 94 95 WRITE(numout,*) ' Minimum wet depth on dried cells rn_wdmin1 = ', rn_wdmin1 95 WRITE(numout,*) ' Tolerance of min wet depth rn_wdmin2= ', rn_wdmin296 WRITE(numout,*) ' Tolerance of min wet depth rn_wdmin2 = ', rn_wdmin2 96 97 WRITE(numout,*) ' land elevation threshold rn_wdld = ', rn_wdld 97 98 WRITE(numout,*) ' Max iteration for W/D limiter nn_wdit = ', nn_wdit 98 WRITE(numout,*) ' T => baroclinic u,v =0 at dry pts: ln_wd_dl_bc = ', ln_wd_dl_bc99 WRITE(numout,*) ' use a ramp for rwd limiter: ln_wd_dl_rwd_rmp= ', ln_wd_dl_rmp100 WRITE(numout,*) ' the height (z) at which ht_0 = 0:rn_ht_0 = ', rn_ht_099 WRITE(numout,*) ' T => baroclinic u,v=0 at dry pts: ln_wd_dl_bc = ', ln_wd_dl_bc 100 WRITE(numout,*) ' use a ramp for rwd limiter: ln_wd_dl_rwd_rmp = ', ln_wd_dl_rmp 101 WRITE(numout,*) ' the height (z) at which ht_0=0: rn_ht_0 = ', rn_ht_0 101 102 ENDIF 102 103 ! 104 ll_wd = .FALSE. 103 105 IF(ln_wd_il .OR. ln_wd_dl) THEN 106 ll_wd = .TRUE. 104 107 ALLOCATE( wdmask(jpi,jpj), STAT=ierr ) 105 108 ALLOCATE( wdramp(jpi,jpj), wdrampu(jpi,jpj), wdrampv(jpi,jpj), STAT=ierr ) … … 139 142 IF( nn_timing == 1 ) CALL timing_start('wad_lmt') 140 143 141 IF( ln_wd_il) THEN144 IF( ln_wd_il ) THEN 142 145 143 146 CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu, zflxv, zflxu1, zflxv1 ) 144 147 CALL wrk_alloc( jpi, jpj, zwdlmtu, zwdlmtv) 145 148 ! 146 147 !IF(lwp) WRITE(numout,*)148 !IF(lwp) WRITE(numout,*) 'wad_lmt : wetting/drying limiters and velocity limiting'149 149 150 150 jflag = 0 … … 177 177 DO ji = 2, jpi 178 178 179 IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE! we don't care about land cells180 IF( ht_0(ji,jj)-rn_ssh_ref > zdepwd )CYCLE ! and cells which are unlikely to dry179 IF( tmask(ji, jj, 1) < 0.5_wp ) CYCLE ! we don't care about land cells 180 IF( ht_0(ji,jj) - rn_ssh_ref > zdepwd ) CYCLE ! and cells which are unlikely to dry 181 181 182 182 zflxp(ji,jj) = max(zflxu(ji,jj), 0._wp) - min(zflxu(ji-1,jj), 0._wp) + & … … 187 187 zdep2 = ht_0(ji,jj) + sshb1(ji,jj) - rn_wdmin1 188 188 IF(zdep2 .le. 0._wp) THEN !add more safty, but not necessary 189 sshb1(ji,jj) = rn_wdmin1 - ht_0(ji,jj)190 IF(zflxu(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = 0._wp191 IF(zflxu(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = 0._wp192 IF(zflxv(ji, jj) > 0._wp) zwdlmtv(ji ,jj) = 0._wp193 IF(zflxv(ji,jj-1) < 0._wp) zwdlmtv(ji,jj-1) = 0._wp194 wdmask(ji,jj) = 0._wp189 sshb1(ji,jj) = rn_wdmin1 - ht_0(ji,jj) 190 IF(zflxu(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = 0._wp 191 IF(zflxu(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = 0._wp 192 IF(zflxv(ji, jj) > 0._wp) zwdlmtv(ji ,jj) = 0._wp 193 IF(zflxv(ji,jj-1) < 0._wp) zwdlmtv(ji,jj-1) = 0._wp 194 wdmask(ji,jj) = 0._wp 195 195 END IF 196 196 ENDDO … … 198 198 199 199 200 ! slwa201 200 ! HPG limiter from jholt 202 wdramp(:,:) = min((ht_0(:,:) + sshb1(:,:) - rn_wdmin1)/(rn_wdmin0 - rn_wdmin1),1.0_wp) 203 ! write(6,*)'wdramp ',wdramp(10,10),wdramp(10,11) 201 wdramp(:,:) = min((ht_0(:,:) + sshb1(:,:) - rn_wdmin1)/(rn_wdmin0 - rn_wdmin1),1.0_wp) 204 202 !jth assume don't need a lbc_lnk here 205 DO jj = 1, jpjm1 206 DO ji = 1, jpim1 207 wdrampu(ji,jj) = min(wdramp(ji,jj),wdramp(ji+1,jj)) 208 wdrampv(ji,jj) = min(wdramp(ji,jj),wdramp(ji,jj+1)) 209 ENDDO 210 ENDDO 211 !wdrampu(:,:)=1.0_wp 212 !wdrampv(:,:)=1.0_wp 203 DO jj = 1, jpjm1 204 DO ji = 1, jpim1 205 wdrampu(ji,jj) = min(wdramp(ji,jj),wdramp(ji+1,jj)) 206 wdrampv(ji,jj) = min(wdramp(ji,jj),wdramp(ji,jj+1)) 207 END DO 208 END DO 213 209 ! end HPG limiter 214 210 … … 240 236 241 237 IF( zdep1 > zdep2 ) THEN 242 wdmask(ji, jj) = 0243 zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zflxp(ji,jj) * z2dt )244 !zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zzflxp * z2dt )245 ! flag if the limiter has been used but stop flagging if the only246 ! changes have zeroed the coefficient since further iterations will247 ! not change anything248 IF( zcoef > 0._wp ) THEN249 jflag = 1250 ELSE251 zcoef = 0._wp252 ENDIF253 IF(jk1 > nn_wdit) zcoef = 0._wp254 IF(zflxu1(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = zcoef255 IF(zflxu1(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = zcoef256 IF(zflxv1(ji, jj) > 0._wp) zwdlmtv(ji ,jj) = zcoef257 IF(zflxv1(ji,jj-1) < 0._wp) zwdlmtv(ji,jj-1) = zcoef238 wdmask(ji, jj) = 0 239 zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zflxp(ji,jj) * z2dt ) 240 !zcoef = ( ( zdep2 - rn_wdmin2 ) * ztmp - zzflxn * z2dt ) / ( zzflxp * z2dt ) 241 ! flag if the limiter has been used but stop flagging if the only 242 ! changes have zeroed the coefficient since further iterations will 243 ! not change anything 244 IF( zcoef > 0._wp ) THEN 245 jflag = 1 246 ELSE 247 zcoef = 0._wp 248 ENDIF 249 IF(jk1 > nn_wdit) zcoef = 0._wp 250 IF(zflxu1(ji, jj) > 0._wp) zwdlmtu(ji ,jj) = zcoef 251 IF(zflxu1(ji-1,jj) < 0._wp) zwdlmtu(ji-1,jj) = zcoef 252 IF(zflxv1(ji, jj) > 0._wp) zwdlmtv(ji ,jj) = zcoef 253 IF(zflxv1(ji,jj-1) < 0._wp) zwdlmtv(ji,jj-1) = zcoef 258 254 END IF 259 255 END DO ! ji loop … … 270 266 271 267 DO jk = 1, jpkm1 272 un(:,:,jk) = un(:,:,jk) * zwdlmtu(:, :)273 vn(:,:,jk) = vn(:,:,jk) * zwdlmtv(:, :)268 un(:,:,jk) = un(:,:,jk) * zwdlmtu(:, :) 269 vn(:,:,jk) = vn(:,:,jk) * zwdlmtv(:, :) 274 270 END DO 275 271 276 272 CALL lbc_lnk( un, 'U', -1. ) 277 273 CALL lbc_lnk( vn, 'V', -1. ) 278 !274 ! 279 275 un_b(:,:) = un_b(:,:) * zwdlmtu(:, :) 280 276 vn_b(:,:) = vn_b(:,:) * zwdlmtv(:, :) … … 325 321 IF( nn_timing == 1 ) CALL timing_start('wad_lmt_bt') 326 322 327 IF( ln_wd_il) THEN323 IF( ln_wd_il ) THEN 328 324 329 325 CALL wrk_alloc( jpi, jpj, zflxp, zflxn, zflxu1, zflxv1 ) -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r8865 r8956 122 122 IF( .NOT. l_rnfcpl ) rnf(:,:) = rn_rfact * ( sf_rnf(1)%fnow(:,:,1) ) ! updated runoff value at time step kt 123 123 ! 124 ! ! set temperature & salinity content of runoffs124 ! ! set temperature & salinity content of runoffs 125 125 IF( ln_rnf_tem ) THEN ! use runoffs temperature data 126 126 rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0 … … 133 133 END WHERE 134 134 ELSE ! use SST as runoffs temperature 135 rnf_tsc(:,:,jp_tem) = MAX(sst_m(:,:),0.0_wp) * rnf(:,:) * r1_rau0 !CEOD River is fresh water so must at least be 0 unless we consider ice 135 !CEOD River is fresh water so must at least be 0 unless we consider ice 136 rnf_tsc(:,:,jp_tem) = MAX(sst_m(:,:),0.0_wp) * rnf(:,:) * r1_rau0 136 137 ENDIF 137 138 ! ! use runoffs salinity data -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
r8865 r8956 320 320 ztc_f = ztc_f - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 321 321 ENDIF 322 ! Rivers can be not just at the surface must go down to nk_rnd(ji,jj)323 322 IF( ln_rnf_depth ) THEN 323 ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 324 324 IF( mikt(ji,jj) <=jk .and. jk <= nk_rnf(ji,jj) ) THEN 325 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) )*(e3t_n(ji,jj,jk)/h_rnf(ji,jj) ) ! as we have sigma can do that here change later 325 ! as we have sigma can do that here change later 326 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) ) & 327 & * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) ) 326 328 ENDIF 327 329 ELSE 328 329 330 330 IF( jk == mikt(ji,jj) ) THEN ! first level 331 ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj) ) ) 332 ENDIF 331 333 ENDIF 332 334 -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90
r8870 r8956 34 34 USE wrk_nemo ! Memory Allocation 35 35 USE timing ! Timing 36 USE wet_dry, ONLY : ln_wd_il, ln_wd_dl, rn_wdmin136 USE wet_dry, ONLY : ll_wd, rn_wdmin1 ! Wetting and drying 37 37 38 38 IMPLICIT NONE … … 123 123 DO jj = 2, jpj 124 124 DO ji = fs_2, fs_jpim1 ! vector opt. 125 IF ( l n_wd_il .or. ln_wd_dl ) THEN! If near WAD point limit the flux for now125 IF ( ll_wd ) THEN ! If near WAD point limit the flux for now 126 126 IF ( sshn(ji,jj) + ht_0(ji,jj) > 2._wp * rn_wdmin1 ) THEN 127 127 sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) ! non solar heat flux -
branches/UKMO/ROMS_WAD_7832/NEMOGCM/NEMO/OPA_SRC/stpctl.F90
r8870 r8956 22 22 USE lib_mpp ! distributed memory computing 23 23 USE lib_fortran ! Fortran routines library 24 USE wet_dry, ONLY: ln_wd_il, ln_wd_dl, rn_ssh_ref ! reference depth for negative bathy24 USE wet_dry, ONLY: ll_wd, rn_ssh_ref ! reference depth for negative bathy 25 25 26 26 IMPLICIT NONE … … 151 151 DO jj = 1, jpj 152 152 DO ji = 1, jpi 153 IF( (l n_wd_il .OR. ln_wd_dl)) THEN153 IF( (ll_wd ) THEN 154 154 IF( tmask(ji,jj,1) == 1) zsshmax = MAX( zsshmax, ABS(sshn(ji,jj)+rn_ssh_ref) ) 155 155 ELSE
Note: See TracChangeset
for help on using the changeset viewer.