Changeset 12377 for NEMO/trunk/tests
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 69 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/tests/BENCH/MY_SRC/usrdef_nam.F90
r11536 r12377 61 61 !!---------------------------------------------------------------------- 62 62 ! 63 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)64 63 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 903 ) 65 64 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) … … 72 71 IF( nn_isize < 0 .AND. nn_jsize < 0 ) THEN 73 72 ! 74 REWIND( numnam_ref ) ! Namelist nammpp in reference namelist: mpi variables75 73 READ ( numnam_ref, nammpp, IOSTAT = ios, ERR = 901) 76 74 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nammpp in reference namelist' ) 77 75 ! 78 REWIND( numnam_cfg ) ! Namelist nammpp in configuration namelist: mpi variables79 76 READ ( numnam_cfg, nammpp, IOSTAT = ios, ERR = 902 ) 80 77 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nammpp in configuration namelist' ) -
NEMO/trunk/tests/BENCH/MY_SRC/usrdef_sbc.F90
r10179 r12377 41 41 CONTAINS 42 42 43 SUBROUTINE usrdef_sbc_oce( kt )43 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 44 44 !!--------------------------------------------------------------------- 45 45 !! *** ROUTINE usr_def_sbc *** … … 56 56 !!---------------------------------------------------------------------- 57 57 INTEGER, INTENT(in) :: kt ! ocean time step 58 INTEGER, INTENT(in) :: Kbb ! ocean time index 58 59 !!--------------------------------------------------------------------- 59 60 ! -
NEMO/trunk/tests/BENCH/MY_SRC/usrdef_zgr.F90
r11536 r12377 30 30 PUBLIC usr_def_zgr ! called by domzgr.F90 31 31 32 !! * Substitutions33 # include "vectopt_loop_substitute.h90"34 32 !!---------------------------------------------------------------------- 35 33 !! NEMO/OPA 4.0 , NEMO Consortium (2016) -
NEMO/trunk/tests/BENCH/MY_SRC/zdfiwm.F90
r11536 r12377 48 48 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: hcri_iwm ! decay scale for low-mode critical slope dissipation (m) 49 49 50 !! * Substitutions51 # include "vectopt_loop_substitute.h90"52 50 !!---------------------------------------------------------------------- 53 51 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 69 67 70 68 71 SUBROUTINE zdf_iwm( kt, p_avm, p_avt, p_avs )69 SUBROUTINE zdf_iwm( kt, Kmm, p_avm, p_avt, p_avs ) 72 70 !!---------------------------------------------------------------------- 73 71 !! *** ROUTINE zdf_iwm *** … … 118 116 !!---------------------------------------------------------------------- 119 117 INTEGER , INTENT(in ) :: kt ! ocean time step 118 INTEGER , INTENT(in ) :: Kmm ! time level index 120 119 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avm ! momentum Kz (w-points) 121 120 REAL(wp), DIMENSION(:,:,:) , INTENT(inout) :: p_avt, p_avs ! tracer Kz (w-points) … … 155 154 END DO 156 155 END DO 157 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept _n - sshn156 !!gm gde3w ==>>> check for ssh taken into account.... seem OK gde3w_n=gdept(Kmm) - ssh(Kmm) 158 157 DO jk = 2, jpkm1 ! complete with the level-dependent part 159 zemx_iwm(:,:,jk) = zfact(:,:) * ( EXP( ( gde3w _n(:,:,jk ) - zhdep(:,:) ) / hcri_iwm(:,:) ) &160 & - EXP( ( gde3w _n(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) ) ) * wmask(:,:,jk) &161 & / ( gde3w _n(:,:,jk) - gde3w_n(:,:,jk-1) )162 163 !!gm delta(gde3w _n) = e3t_n!! Please verify the grid-point position w versus t-point158 zemx_iwm(:,:,jk) = zfact(:,:) * ( EXP( ( gde3w(:,:,jk ) - zhdep(:,:) ) / hcri_iwm(:,:) ) & 159 & - EXP( ( gde3w(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) ) ) * wmask(:,:,jk) & 160 & / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 161 162 !!gm delta(gde3w) = e3t(Kmm) !! Please verify the grid-point position w versus t-point 164 163 !!gm it seems to me that only 1/hcri_iwm is used ==> compute it one for all 165 164 … … 175 174 zfact(:,:) = 0._wp 176 175 DO jk = 2, jpkm1 ! part independent of the level 177 zfact(:,:) = zfact(:,:) + e3w _n(:,:,jk) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk)176 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk) 178 177 END DO 179 178 ! … … 192 191 zfact(:,:) = 0._wp 193 192 DO jk = 2, jpkm1 ! part independent of the level 194 zfact(:,:) = zfact(:,:) + e3w _n(:,:,jk) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk)193 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk) 195 194 END DO 196 195 ! … … 213 212 zfact(:,:) = 0._wp 214 213 DO jk = 2, jpkm1 215 zfact(:,:) = zfact(:,:) + e3w _n(:,:,jk) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk)214 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk) 216 215 zwkb(:,:,jk) = zfact(:,:) 217 216 END DO 218 217 !!gm even better: 219 218 ! DO jk = 2, jpkm1 220 ! zwkb(:,:) = zwkb(:,:) + e3w _n(:,:,jk) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) )219 ! zwkb(:,:) = zwkb(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) 221 220 ! END DO 222 221 ! zfact(:,:) = zwkb(:,:,jpkm1) … … 253 252 DO jk = 2, jpkm1 ! complete with the level-dependent part 254 253 zemx_iwm(:,:,jk) = zemx_iwm(:,:,jk) + zweight(:,:,jk) * zfact(:,:) * wmask(:,:,jk) & 255 & / ( gde3w _n(:,:,jk) - gde3w_n(:,:,jk-1) )256 !!gm use of e3t _njust above?254 & / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 255 !!gm use of e3t(:,:,:,Kmm) just above? 257 256 END DO 258 257 ! 259 258 !!gm this is to be replaced by just a constant value znu=1.e-6 m2/s 260 259 ! Calculate molecular kinematic viscosity 261 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts n(:,:,:,jp_tem) + 0.00694_wp * tsn(:,:,:,jp_tem) * tsn(:,:,:,jp_tem) &262 & + 0.02305_wp * ts n(:,:,:,jp_sal) ) * tmask(:,:,:) * r1_rau0260 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts(:,:,:,jp_tem,Kmm) + 0.00694_wp * ts(:,:,:,jp_tem,Kmm) * ts(:,:,:,jp_tem,Kmm) & 261 & + 0.02305_wp * ts(:,:,:,jp_sal,Kmm) ) * tmask(:,:,:) * r1_rau0 263 262 DO jk = 2, jpkm1 264 263 znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) … … 300 299 DO jj = 1, jpj 301 300 DO ji = 1, jpi 302 zztmp = zztmp + e3w _n(ji,jj,jk) * e1e2t(ji,jj) &301 zztmp = zztmp + e3w(ji,jj,jk,Kmm) * e1e2t(ji,jj) & 303 302 & * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 304 303 END DO … … 356 355 z2d(:,:) = 0._wp 357 356 DO jk = 2, jpkm1 358 z2d(:,:) = z2d(:,:) + e3w _n(:,:,jk) * z3d(:,:,jk) * wmask(:,:,jk)357 z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 359 358 END DO 360 359 z2d(:,:) = rau0 * z2d(:,:) … … 404 403 !!---------------------------------------------------------------------- 405 404 ! 406 REWIND( numnam_ref ) ! Namelist namzdf_iwm in reference namelist : Wave-driven mixing407 405 READ ( numnam_ref, namzdf_iwm, IOSTAT = ios, ERR = 901) 408 406 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_iwm in reference namelist' ) 409 407 ! 410 REWIND( numnam_cfg ) ! Namelist namzdf_iwm in configuration namelist : Wave-driven mixing411 408 READ ( numnam_cfg, namzdf_iwm, IOSTAT = ios, ERR = 902 ) 412 409 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namzdf_iwm in configuration namelist' ) -
NEMO/trunk/tests/CANAL/EXPREF/field_def_nemo-oce.xml
r12230 r12377 1 1 <?xml version="1.0"?> 2 2 <!-- $id$ --> 3 4 <field_definition level="1" prec="4" operation="average" enabled=".TRUE." default_value="1.e20" > <!-- time step automaticaly defined --> 5 6 <!-- 7 ===================================================================================================== 8 = Configurable diagnostics = 9 ===================================================================================================== 10 --> 11 12 <field_group id="diamlr_fields"> 13 14 <!-- 15 ===================================================================================================== 16 Configuration of multiple-linear-regression analysis (diamlr) 17 ===================================================================================================== 18 19 This field group configures diamlr for tidal harmonic analysis of field 20 ssh: in addition to a regressor for fitting the mean value (diamlr_r101), 21 it includes the regressors for the analysis of the tidal constituents 22 that are available in the tidal-forcing implementation (see 23 ./src/OCE/SBC/tide.h90). 24 25 --> 26 27 <!-- Time --> 28 <field id="diamlr_time" grid_ref="diamlr_grid_T_2D" prec="8" /> 29 30 <!-- Regressors for tidal harmonic analysis --> 31 <field id="diamlr_r001" field_ref="diamlr_time" expr="sin( __TDE_M2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:M2" /> 32 <field id="diamlr_r002" field_ref="diamlr_time" expr="cos( __TDE_M2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:M2" /> 33 <field id="diamlr_r003" field_ref="diamlr_time" expr="sin( __TDE_N2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:N2" /> 34 <field id="diamlr_r004" field_ref="diamlr_time" expr="cos( __TDE_N2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:N2" /> 35 <field id="diamlr_r005" field_ref="diamlr_time" expr="sin( __TDE_2N2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:2N2" /> 36 <field id="diamlr_r006" field_ref="diamlr_time" expr="cos( __TDE_2N2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:2N2" /> 37 <field id="diamlr_r007" field_ref="diamlr_time" expr="sin( __TDE_S2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:S2" /> 38 <field id="diamlr_r008" field_ref="diamlr_time" expr="cos( __TDE_S2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:S2" /> 39 <field id="diamlr_r009" field_ref="diamlr_time" expr="sin( __TDE_K2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:K2" /> 40 <field id="diamlr_r010" field_ref="diamlr_time" expr="cos( __TDE_K2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:K2" /> 41 <field id="diamlr_r011" field_ref="diamlr_time" expr="sin( __TDE_K1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:K1" /> 42 <field id="diamlr_r012" field_ref="diamlr_time" expr="cos( __TDE_K1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:K1" /> 43 <field id="diamlr_r013" field_ref="diamlr_time" expr="sin( __TDE_O1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:O1" /> 44 <field id="diamlr_r014" field_ref="diamlr_time" expr="cos( __TDE_O1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:O1" /> 45 <field id="diamlr_r015" field_ref="diamlr_time" expr="sin( __TDE_Q1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:Q1" /> 46 <field id="diamlr_r016" field_ref="diamlr_time" expr="cos( __TDE_Q1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:Q1" /> 47 <field id="diamlr_r017" field_ref="diamlr_time" expr="sin( __TDE_P1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:P1" /> 48 <field id="diamlr_r018" field_ref="diamlr_time" expr="cos( __TDE_P1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:P1" /> 49 <field id="diamlr_r019" field_ref="diamlr_time" expr="sin( __TDE_M4_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:M4" /> 50 <field id="diamlr_r020" field_ref="diamlr_time" expr="cos( __TDE_M4_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:M4" /> 51 <field id="diamlr_r021" field_ref="diamlr_time" expr="sin( __TDE_Mf_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:Mf" /> 52 <field id="diamlr_r022" field_ref="diamlr_time" expr="cos( __TDE_Mf_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:Mf" /> 53 <field id="diamlr_r023" field_ref="diamlr_time" expr="sin( __TDE_Mm_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:Mm" /> 54 <field id="diamlr_r024" field_ref="diamlr_time" expr="cos( __TDE_Mm_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:Mm" /> 55 <field id="diamlr_r025" field_ref="diamlr_time" expr="sin( __TDE_Msqm_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:Msqm" /> 56 <field id="diamlr_r026" field_ref="diamlr_time" expr="cos( __TDE_Msqm_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:Msqm" /> 57 <field id="diamlr_r027" field_ref="diamlr_time" expr="sin( __TDE_Mtm_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:Mtm" /> 58 <field id="diamlr_r028" field_ref="diamlr_time" expr="cos( __TDE_Mtm_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:Mtm" /> 59 <field id="diamlr_r029" field_ref="diamlr_time" expr="sin( __TDE_S1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:S1" /> 60 <field id="diamlr_r030" field_ref="diamlr_time" expr="cos( __TDE_S1_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:S1" /> 61 <field id="diamlr_r031" field_ref="diamlr_time" expr="sin( __TDE_MU2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:MU2" /> 62 <field id="diamlr_r032" field_ref="diamlr_time" expr="cos( __TDE_MU2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:MU2" /> 63 <field id="diamlr_r033" field_ref="diamlr_time" expr="sin( __TDE_NU2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:NU2" /> 64 <field id="diamlr_r034" field_ref="diamlr_time" expr="cos( __TDE_NU2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:NU2" /> 65 <field id="diamlr_r035" field_ref="diamlr_time" expr="sin( __TDE_L2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:L2" /> 66 <field id="diamlr_r036" field_ref="diamlr_time" expr="cos( __TDE_L2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:L2" /> 67 <field id="diamlr_r037" field_ref="diamlr_time" expr="sin( __TDE_T2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:sin:T2" /> 68 <field id="diamlr_r038" field_ref="diamlr_time" expr="cos( __TDE_T2_omega__ * diamlr_time )" enabled=".TRUE." comment="harmonic:cos:T2" /> 69 <field id="diamlr_r101" field_ref="diamlr_time" expr="diamlr_time^0.0" enabled=".TRUE." comment="mean" /> 70 71 <!-- Fields selected for regression analysis --> 72 <field id="diamlr_f001" field_ref="ssh" enabled=".TRUE." /> 73 74 </field_group> 3 75 4 76 <!-- … … 8 80 ============================================================================================================ 9 81 --> 10 <field_definition level="1" prec="4" operation="average" enabled=".TRUE." default_value="1.e20" > <!-- time step automaticaly defined --> 82 83 <field_group id="diadetide_fields"> 84 85 <!-- 86 ===================================================================================================== 87 Weight fields for the computation of daily detided model diagnostics (diadetide) 88 ===================================================================================================== 89 90 --> 91 92 <field id="diadetide_weight" grid_ref="diadetide_grid_T_2D" enabled=".TRUE." /> 93 <field id="diadetide_weight_grid_T_2D" field_ref="diadetide_weight" grid_ref="diadetide_grid_T_2D" enabled=".TRUE." > this </field> 94 <field id="diadetide_weight_grid_U_2D" field_ref="diadetide_weight" grid_ref="diadetide_grid_U_2D" enabled=".TRUE." > this </field> 95 <field id="diadetide_weight_grid_V_2D" field_ref="diadetide_weight" grid_ref="diadetide_grid_V_2D" enabled=".TRUE." > this </field> 96 <field id="diadetide_weight_grid_T_3D" field_ref="diadetide_weight" grid_ref="diadetide_grid_2D_to_grid_T_3D" enabled=".TRUE." > this </field> 97 <field id="diadetide_weight_grid_U_3D" field_ref="diadetide_weight" grid_ref="diadetide_grid_2D_to_grid_U_3D" enabled=".TRUE." > this </field> 98 <field id="diadetide_weight_grid_V_3D" field_ref="diadetide_weight" grid_ref="diadetide_grid_2D_to_grid_V_3D" enabled=".TRUE." > this </field> 99 <field id="diadetide_weight_grid_W_3D" field_ref="diadetide_weight" grid_ref="diadetide_grid_2D_to_grid_W_3D" enabled=".TRUE." > this </field> 100 101 </field_group> 11 102 12 103 <!-- … … 22 113 <field id="salgrad" long_name="module of salinity gradient" unit="psu/m" grid_ref="grid_T_3D"/> 23 114 <field id="salgrad2" long_name="square of module of salinity gradient" unit="psu2/m2" grid_ref="grid_T_3D"/> 24 <field id="ke" long_name="kinetic energy" unit="m2/s2" grid_ref="grid_T_3D"/>25 <field id="ke_zint" long_name="vertical integration of kinetic energy" unit="m3/s2" />115 <field id="ke" long_name="kinetic energy" unit="m2/s2" grid_ref="grid_T_3D"/> 116 <field id="ke_zint" long_name="vertical integration of kinetic energy" unit="m3/s2" /> 26 117 <field id="relvor" long_name="relative vorticity" unit="s-1" grid_ref="grid_T_3D"/> 27 118 <field id="absvor" long_name="absolute vorticity" unit="s-1" grid_ref="grid_T_3D"/> 28 119 <field id="potvor" long_name="potential vorticity" unit="s-1" grid_ref="grid_T_3D"/> 29 30 <field id="e3t" long_name="T-cell thickness" standard_name="cell_thickness" unit="m" grid_ref="grid_T_3D" /> 31 <field id="e3t_surf" long_name="T-cell thickness" field_ref="e3t" standard_name="cell_thickness" unit="m" grid_ref="grid_T_SFC"/> 32 <field id="e3t_0" long_name="Initial T-cell thickness" standard_name="ref_cell_thickness" unit="m" grid_ref="grid_T_3D" /> 33 120 <field id="sstgrad2" long_name="square of module of sst gradient" unit="degC2/m2" /> 121 122 <field id="e3t" long_name="T-cell thickness" standard_name="cell_thickness" unit="m" grid_ref="grid_T_3D" /> 123 <field id="e3ts" long_name="T-cell thickness" field_ref="e3t" standard_name="cell_thickness" unit="m" grid_ref="grid_T_SFC"/> 124 <field id="e3t_0" long_name="Initial T-cell thickness" standard_name="ref_cell_thickness" unit="m" grid_ref="grid_T_3D" /> 125 <field id="e3tb" long_name="bottom T-cell thickness" standard_name="bottom_cell_thickness" unit="m" grid_ref="grid_T_2D"/> 126 <field id="e3t_300" field_ref="e3t" grid_ref="grid_T_zoom_300" detect_missing_value="true" /> 127 <field id="e3t_vsum300" field_ref="e3t_300" grid_ref="grid_T_vsum" detect_missing_value="true" /> 128 <field id="masscello" long_name="Sea Water Mass per unit area" standard_name="sea_water_mass_per_unit_area" unit="kg/m2" grid_ref="grid_T_3D"/> 129 <field id="volcello" long_name="Ocean Volume" standard_name="ocean_volume" unit="m3" grid_ref="grid_T_3D"/> 34 130 <field id="toce" long_name="temperature" standard_name="sea_water_potential_temperature" unit="degC" grid_ref="grid_T_3D"/> 35 131 <field id="toce_e3t" long_name="temperature (thickness weighted)" unit="degC" grid_ref="grid_T_3D" > toce * e3t </field > … … 37 133 <field id="soce_e3t" long_name="salinity (thickness weighted)" unit="1e-3" grid_ref="grid_T_3D" > soce * e3t </field > 38 134 135 <field id="toce_e3t_300" field_ref="toce_e3t" unit="degree_C" grid_ref="grid_T_zoom_300" detect_missing_value="true" /> 136 <field id="toce_e3t_vsum300" field_ref="toce_e3t_300" unit="degress_C*m" grid_ref="grid_T_vsum" detect_missing_value="true" /> 137 <field id="toce_vmean300" field_ref="toce_e3t_vsum300" unit="degree_C" grid_ref="grid_T_vsum" detect_missing_value="true" > toce_e3t_vsum300/e3t_vsum300 </field> 138 139 <!-- AGRIF sponge --> 140 <field id="agrif_spt" long_name=" AGRIF t-sponge coefficient" unit=" " /> 141 39 142 <!-- t-eddy viscosity coefficients (ldfdyn) --> 40 143 <field id="ahmt_2d" long_name=" surface t-eddy viscosity coefficient" unit="m2/s or m4/s" /> 41 144 <field id="ahmt_3d" long_name=" 3D t-eddy viscosity coefficient" unit="m2/s or m4/s" grid_ref="grid_T_3D"/> 42 145 43 <field id="sst" long_name="sea surface temperature" standard_name="sea_surface_temperature" unit="degC" /> 146 <field id="sst" long_name="Bulk sea surface temperature" standard_name="bulk_sea_surface_temperature" unit="degC" /> 147 <field id="t_skin" long_name="Skin temperature aka SSST" standard_name="skin_temperature" unit="degC" /> 44 148 <field id="sst2" long_name="square of sea surface temperature" standard_name="square_of_sea_surface_temperature" unit="degC2" > sst * sst </field > 45 149 <field id="sstmax" long_name="max of sea surface temperature" field_ref="sst" operation="maximum" /> … … 62 166 <field id="taubot" long_name="bottom stress module" unit="N/m2" /> 63 167 168 <!-- Case EOS = TEOS-10 : output potential temperature --> 169 <field id="toce_pot" long_name="Sea Water Potential Temperature" standard_name="sea_water_potential_temperature" unit="degC" grid_ref="grid_T_3D"/> 170 <field id="sst_pot" long_name="potential sea surface temperature" standard_name="sea_surface_temperature" unit="degC" /> 171 <field id="tosmint_pot" long_name="vertical integral of potential temperature times density" standard_name="integral_wrt_depth_of_product_of_density_and_potential_temperature" unit="(kg m2) degree_C" /> 172 173 64 174 <field id="ssh" long_name="sea surface height" standard_name="sea_surface_height_above_geoid" unit="m" /> 65 175 <field id="ssh2" long_name="square of sea surface height" standard_name="square_of_sea_surface_height_above_geoid" unit="m2" > ssh * ssh </field > … … 73 183 <field id="heatc" long_name="Heat content vertically integrated" standard_name="integral_of_sea_water_potential_temperature_wrt_depth_expressed_as_heat_content" unit="J/m2" /> 74 184 <field id="saltc" long_name="Salt content vertically integrated" unit="1e-3*kg/m2" /> 75 <field id="salt2c" long_name="Salt content vertically integrated" unit="1e-3*kg/m2" />76 185 77 186 <!-- EOS --> … … 102 211 <field id="topthdep" long_name="Top of Thermocline Depth (dT = -0.2 wrt 10m)" standard_name="ocean_mixed_layer_thickness_defined_by_temperature" unit="m" /> 103 212 <field id="pycndep" long_name="Pycnocline Depth (dsigma[dT=-0.2] wrt 10m)" standard_name="ocean_mixed_layer_thickness_defined_by_sigma_theta" unit="m" /> 104 <field id="BLT" long_name="Barrier Layer Thickness" unit="m" 213 <field id="BLT" long_name="Barrier Layer Thickness" unit="m" > topthdep - pycndep </field> 105 214 <field id="tinv" long_name="Max of vertical invertion of temperature" unit="degC" /> 106 215 <field id="depti" long_name="Depth of max. vert. inv. of temperature" unit="m" /> 107 <field id="20d" long_name="Depth of 20C isotherm" standard_name="depth_of_isosurface_of_sea_water_potential_temperature" unit="m" axis_ref="iax_20C" /> 108 <field id="28d" long_name="Depth of 28C isotherm" standard_name="depth_of_isosurface_of_sea_water_potential_temperature" unit="m" axis_ref="iax_28C" /> 216 <field id="20d" long_name="Depth of 20C isotherm" standard_name="depth_of_isosurface_of_sea_water_potential_temperature" unit="m" axis_ref="iax_20C" /> 217 <field id="26d" long_name="Depth of 26C isotherm" standard_name="depth_of_isosurface_of_sea_water_potential_temperature" unit="m" axis_ref="iax_26C" /> 218 <field id="28d" long_name="Depth of 28C isotherm" standard_name="depth_of_isosurface_of_sea_water_potential_temperature" unit="m" axis_ref="iax_28C" /> 109 219 <field id="hc300" long_name="Heat content 0-300m" standard_name="integral_of_sea_water_potential_temperature_wrt_depth_expressed_as_heat_content" unit="J/m2" /> 220 <field id="hc700" long_name="Heat content 0-700m" standard_name="integral_of_sea_water_potential_temperature_wrt_depth_expressed_as_heat_content" unit="J/m2" /> 221 <field id="hc2000" long_name="Heat content 0-2000m" standard_name="integral_of_sea_water_potential_temperature_wrt_depth_expressed_as_heat_content" unit="J/m2" /> 110 222 111 223 <!-- variables available with diaar5 --> … … 129 241 130 242 <field_group id="Tides_T" grid_ref="grid_T_2D" operation="once" > 131 <!-- tidal composante --> 132 <field id="M2x" long_name="M2 Elevation harmonic real part " unit="m" /> 133 <field id="M2y" long_name="M2 Elevation harmonic imaginary part" unit="m" /> 134 <field id="S2x" long_name="S2 Elevation harmonic real part " unit="m" /> 135 <field id="S2y" long_name="S2 Elevation harmonic imaginary part" unit="m" /> 136 <field id="N2x" long_name="N2 Elevation harmonic real part " unit="m" /> 137 <field id="N2y" long_name="N2 Elevation harmonic imaginary part" unit="m" /> 138 <field id="K1x" long_name="K1 Elevation harmonic real part " unit="m" /> 139 <field id="K1y" long_name="K1 Elevation harmonic imaginary part" unit="m" /> 140 <field id="O1x" long_name="O1 Elevation harmonic real part " unit="m" /> 141 <field id="O1y" long_name="O1 Elevation harmonic imaginary part" unit="m" /> 142 <field id="Q1x" long_name="Q1 Elevation harmonic real part " unit="m" /> 143 <field id="Q1y" long_name="Q1 Elevation harmonic imaginary part" unit="m" /> 144 <field id="M4x" long_name="M4 Elevation harmonic real part " unit="m" /> 145 <field id="M4y" long_name="M4 Elevation harmonic imaginary part" unit="m" /> 146 <field id="K2x" long_name="K2 Elevation harmonic real part " unit="m" /> 147 <field id="K2y" long_name="K2 Elevation harmonic imaginary part" unit="m" /> 148 <field id="P1x" long_name="P1 Elevation harmonic real part " unit="m" /> 149 <field id="P1y" long_name="P1 Elevation harmonic imaginary part" unit="m" /> 150 <field id="Mfx" long_name="Mf Elevation harmonic real part " unit="m" /> 151 <field id="Mfy" long_name="Mf Elevation harmonic imaginary part" unit="m" /> 152 <field id="Mmx" long_name="Mm Elevation harmonic real part " unit="m" /> 153 <field id="Mmy" long_name="Mm Elevation harmonic imaginary part" unit="m" /> 154 </field_group> 155 156 <field_group id="Tides_U" grid_ref="grid_U_2D" operation="once" > 157 <field id="M2x_u" long_name="M2 current barotrope along i-axis harmonic real part " unit="m/s" /> 158 <field id="M2y_u" long_name="M2 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 159 <field id="S2x_u" long_name="S2 current barotrope along i-axis harmonic real part " unit="m/s" /> 160 <field id="S2y_u" long_name="S2 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 161 <field id="N2x_u" long_name="N2 current barotrope along i-axis harmonic real part " unit="m/s" /> 162 <field id="N2y_u" long_name="N2 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 163 <field id="K1x_u" long_name="K1 current barotrope along i-axis harmonic real part " unit="m/s" /> 164 <field id="K1y_u" long_name="K1 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 165 <field id="O1x_u" long_name="O1 current barotrope along i-axis harmonic real part " unit="m/s" /> 166 <field id="O1y_u" long_name="O1 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 167 <field id="Q1x_u" long_name="Q1 current barotrope along i-axis harmonic real part " unit="m/s" /> 168 <field id="Q1y_u" long_name="Q1 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 169 <field id="M4x_u" long_name="M4 current barotrope along i-axis harmonic real part " unit="m/s" /> 170 <field id="M4y_u" long_name="M4 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 171 <field id="K2x_u" long_name="K2 current barotrope along i-axis harmonic real part " unit="m/s" /> 172 <field id="K2y_u" long_name="K2 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 173 <field id="P1x_u" long_name="P1 current barotrope along i-axis harmonic real part " unit="m/s" /> 174 <field id="P1y_u" long_name="P1 current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 175 <field id="Mfx_u" long_name="Mf current barotrope along i-axis harmonic real part " unit="m/s" /> 176 <field id="Mfy_u" long_name="Mf current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 177 <field id="Mmx_u" long_name="Mm current barotrope along i-axis harmonic real part " unit="m/s" /> 178 <field id="Mmy_u" long_name="Mm current barotrope along i-axis harmonic imaginary part " unit="m/s" /> 179 </field_group> 180 181 <field_group id="Tides_V" grid_ref="grid_V_2D" operation="once" > 182 <field id="M2x_v" long_name="M2 current barotrope along j-axis harmonic real part " unit="m/s" /> 183 <field id="M2y_v" long_name="M2 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 184 <field id="S2x_v" long_name="S2 current barotrope along j-axis harmonic real part " unit="m/s" /> 185 <field id="S2y_v" long_name="S2 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 186 <field id="N2x_v" long_name="N2 current barotrope along j-axis harmonic real part " unit="m/s" /> 187 <field id="N2y_v" long_name="N2 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 188 <field id="K1x_v" long_name="K1 current barotrope along j-axis harmonic real part " unit="m/s" /> 189 <field id="K1y_v" long_name="K1 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 190 <field id="O1x_v" long_name="O1 current barotrope along j-axis harmonic real part " unit="m/s" /> 191 <field id="O1y_v" long_name="O1 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 192 <field id="Q1x_v" long_name="Q1 current barotrope along j-axis harmonic real part " unit="m/s" /> 193 <field id="Q1y_v" long_name="Q1 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 194 <field id="M4x_v" long_name="M4 current barotrope along j-axis harmonic real part " unit="m/s" /> 195 <field id="M4y_v" long_name="M4 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 196 <field id="K2x_v" long_name="K2 current barotrope along j-axis harmonic real part " unit="m/s" /> 197 <field id="K2y_v" long_name="K2 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 198 <field id="P1x_v" long_name="P1 current barotrope along j-axis harmonic real part " unit="m/s" /> 199 <field id="P1y_v" long_name="P1 current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 200 <field id="Mfx_v" long_name="Mf current barotrope along j-axis harmonic real part " unit="m/s" /> 201 <field id="Mfy_v" long_name="Mf current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 202 <field id="Mmx_v" long_name="Mm current barotrope along j-axis harmonic real part " unit="m/s" /> 203 <field id="Mmy_v" long_name="Mm current barotrope along j-axis harmonic imaginary part " unit="m/s" /> 243 <!-- Tidal potential --> 244 <field id="tide_pot" long_name="Total tidal potential" unit="m" /> 245 <field id="tide_pot_M2" long_name="M2 tidal potential" unit="m" /> 246 <field id="tide_pot_N2" long_name="N2 tidal potential" unit="m" /> 247 <field id="tide_pot_2N2" long_name="2N2 tidal potential" unit="m" /> 248 <field id="tide_pot_S2" long_name="S2 tidal potential" unit="m" /> 249 <field id="tide_pot_K2" long_name="K2 tidal potential" unit="m" /> 250 <field id="tide_pot_K1" long_name="K1 tidal potential" unit="m" /> 251 <field id="tide_pot_O1" long_name="O1 tidal potential" unit="m" /> 252 <field id="tide_pot_Q1" long_name="Q1 tidal potential" unit="m" /> 253 <field id="tide_pot_P1" long_name="P1 tidal potential" unit="m" /> 254 <field id="tide_pot_M4" long_name="M4 tidal potential" unit="m" /> 255 <field id="tide_pot_Mf" long_name="Mf tidal potential" unit="m" /> 256 <field id="tide_pot_Mm" long_name="Mm tidal potential" unit="m" /> 257 <field id="tide_pot_Msqm" long_name="Msqm tidal potential" unit="m" /> 258 <field id="tide_pot_Mtm" long_name="Mtm tidal potential" unit="m" /> 259 <field id="tide_pot_S1" long_name="S1 tidal potential" unit="m" /> 260 <field id="tide_pot_MU2" long_name="MU2 tidal potential" unit="m" /> 261 <field id="tide_pot_NU2" long_name="NU2 tidal potential" unit="m" /> 262 <field id="tide_pot_L2" long_name="L2 tidal potential" unit="m" /> 263 <field id="tide_pot_T2" long_name="T2 tidal potential" unit="m" /> 204 264 </field_group> 205 265 … … 260 320 <field id="runoffs" long_name="River Runoffs" standard_name="water_flux_into_sea_water_from_rivers" unit="kg/m2/s" /> 261 321 <field id="precip" long_name="Total precipitation" standard_name="precipitation_flux" unit="kg/m2/s" /> 322 <field id="wclosea" long_name="closed sea empmr correction" standard_name="closea_empmr" unit="kg/m2/s" /> 262 323 263 324 <field id="qt" long_name="Net Downward Heat Flux" standard_name="surface_downward_heat_flux_in_sea_water" unit="W/m2" /> … … 266 327 <field id="qsr3d" long_name="Shortwave Radiation 3D distribution" standard_name="downwelling_shortwave_flux_in_sea_water" unit="W/m2" grid_ref="grid_T_3D" /> 267 328 <field id="qrp" long_name="Surface Heat Flux: Damping" standard_name="heat_flux_into_sea_water_due_to_newtonian_relaxation" unit="W/m2" /> 329 <field id="qclosea" long_name="closed sea heat content flux" standard_name="closea_heat_content_downward_flux" unit="W/m2" /> 268 330 <field id="erp" long_name="Surface Water Flux: Damping" standard_name="water_flux_out_of_sea_water_due_to_newtonian_relaxation" unit="kg/m2/s" /> 269 331 <field id="taum" long_name="wind stress module" standard_name="magnitude_of_surface_downward_stress" unit="N/m2" /> … … 274 336 275 337 <!-- * variable related to ice shelf forcing * --> 276 <field id="fwfisf" long_name="Ice shelf melting" unit="kg/m2/s" /> 277 <field id="fwfisf3d" long_name="Ice shelf melting" unit="kg/m2/s" grid_ref="grid_T_3D" /> 278 <field id="qlatisf" long_name="Ice shelf latent heat flux" unit="W/m2" /> 279 <field id="qlatisf3d" long_name="Ice shelf latent heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 280 <field id="qhcisf" long_name="Ice shelf heat content flux" unit="W/m2" /> 281 <field id="qhcisf3d" long_name="Ice shelf heat content flux" unit="W/m2" grid_ref="grid_T_3D" /> 282 <field id="isfgammat" long_name="transfert coefficient for isf (temperature) " unit="m/s" /> 283 <field id="isfgammas" long_name="transfert coefficient for isf (salinity) " unit="m/s" /> 284 <field id="stbl" long_name="salinity in the Losh tbl " unit="PSU" /> 285 <field id="ttbl" long_name="temperature in the Losh tbl " unit="C" /> 286 <field id="utbl" long_name="zonal current in the Losh tbl at T point " unit="m/s" /> 287 <field id="vtbl" long_name="merid current in the Losh tbl at T point " unit="m/s" /> 288 <field id="thermald" long_name="thermal driving of ice shelf melting " unit="C" /> 289 <field id="tfrz" long_name="top freezing point (used to compute melt) " unit="C" /> 290 <field id="tinsitu" long_name="top insitu temperature (used to cmpt melt) " unit="C" /> 291 <field id="ustar" long_name="ustar at T point used in ice shelf melting " unit="m/s" /> 338 <field id="isftfrz_cav" long_name="freezing point temperature at ocean/isf interface" unit="degC" /> 339 <field id="isftfrz_par" long_name="freezing point temperature in the parametrization boundary layer" unit="degC" /> 340 <field id="fwfisf_cav" long_name="Ice shelf melt rate" unit="kg/m2/s" /> 341 <field id="fwfisf_par" long_name="Ice shelf melt rate" unit="kg/m2/s" /> 342 <field id="qoceisf_cav" long_name="Ice shelf ocean heat flux" unit="W/m2" /> 343 <field id="qoceisf_par" long_name="Ice shelf ocean heat flux" unit="W/m2" /> 344 <field id="qlatisf_cav" long_name="Ice shelf latent heat flux" unit="W/m2" /> 345 <field id="qlatisf_par" long_name="Ice shelf latent heat flux" unit="W/m2" /> 346 <field id="qhcisf_cav" long_name="Ice shelf heat content flux of injected water" unit="W/m2" /> 347 <field id="qhcisf_par" long_name="Ice shelf heat content flux of injected water" unit="W/m2" /> 348 <field id="fwfisf3d_cav" long_name="Ice shelf melt rate" unit="kg/m2/s" grid_ref="grid_T_3D" /> 349 <field id="fwfisf3d_par" long_name="Ice shelf melt rate" unit="kg/m2/s" grid_ref="grid_T_3D" /> 350 <field id="qoceisf3d_cav" long_name="Ice shelf ocean heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 351 <field id="qoceisf3d_par" long_name="Ice shelf ocean heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 352 <field id="qlatisf3d_cav" long_name="Ice shelf latent heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 353 <field id="qlatisf3d_par" long_name="Ice shelf latent heat flux" unit="W/m2" grid_ref="grid_T_3D" /> 354 <field id="qhcisf3d_cav" long_name="Ice shelf heat content flux of injected water" unit="W/m2" grid_ref="grid_T_3D" /> 355 <field id="qhcisf3d_par" long_name="Ice shelf heat content flux of injected water" unit="W/m2" grid_ref="grid_T_3D" /> 356 <field id="ttbl_cav" long_name="temperature in Losch tbl" unit="degC" /> 357 <field id="ttbl_par" long_name="temperature in the parametrisation boundary layer" unit="degC" /> 358 <field id="isfthermald_cav" long_name="thermal driving of ice shelf melting" unit="degC" /> 359 <field id="isfthermald_par" long_name="thermal driving of ice shelf melting" unit="degC" /> 360 <field id="isfgammat" long_name="Ice shelf heat-transfert velocity" unit="m/s" /> 361 <field id="isfgammas" long_name="Ice shelf salt-transfert velocity" unit="m/s" /> 362 <field id="stbl" long_name="salinity in the Losh tbl" unit="1e-3" /> 363 <field id="utbl" long_name="zonal current in the Losh tbl at T point" unit="m/s" /> 364 <field id="vtbl" long_name="merid current in the Losh tbl at T point" unit="m/s" /> 365 <field id="isfustar" long_name="ustar at T point used in ice shelf melting" unit="m/s" /> 366 <field id="qconisf" long_name="Conductive heat flux through the ice shelf" unit="W/m2" /> 292 367 293 368 <!-- *_oce variables available with ln_blk_clio or ln_blk_core --> 369 <field id="rho_air" long_name="Air density at 10m above sea surface" standard_name="rho_air_10m" unit="kg/m3" /> 370 <field id="dt_skin" long_name="SSST-SST temperature difference" standard_name="SSST-SST" unit="K" /> 294 371 <field id="qlw_oce" long_name="Longwave Downward Heat Flux over open ocean" standard_name="surface_net_downward_longwave_flux" unit="W/m2" /> 295 372 <field id="qsb_oce" long_name="Sensible Downward Heat Flux over open ocean" standard_name="surface_downward_sensible_heat_flux" unit="W/m2" /> 296 373 <field id="qla_oce" long_name="Latent Downward Heat Flux over open ocean" standard_name="surface_downward_latent_heat_flux" unit="W/m2" /> 374 <field id="evap_oce" long_name="Evaporation over open ocean" standard_name="evaporation" unit="kg/m2/s" /> 297 375 <field id="qt_oce" long_name="total flux at ocean surface" standard_name="surface_downward_heat_flux_in_sea_water" unit="W/m2" /> 298 376 <field id="qsr_oce" long_name="solar heat flux at ocean surface" standard_name="net_downward_shortwave_flux_at_sea_water_surface" unit="W/m2" /> … … 312 390 313 391 <!-- available if key_oasis3 + conservative method --> 314 <field id="rain" long_name="Liquid precipitation" standard_name="rainfall_flux" unit="kg/m2/s" /> 392 <field id="rain" long_name="Liquid precipitation" standard_name="rainfall_flux" unit="kg/m2/s" /> 393 <field id="rain_ao_cea" long_name="Liquid precipitation over ice-free ocean (cell average)" standard_name="rainfall_flux" unit="kg/m2/s" /> 315 394 <field id="evap_ao_cea" long_name="Evaporation over ice-free ocean (cell average)" standard_name="water_evaporation_flux" unit="kg/m2/s" /> 316 395 <field id="isnwmlt_cea" long_name="Snow over Ice melting (cell average)" standard_name="surface_snow_melt_flux" unit="kg/m2/s" /> … … 355 434 356 435 </field_group> <!-- SBC --> 357 436 437 <!-- ABL --> 438 <field_group id="ABL" > <!-- time step automaticaly defined based on nn_fsbc --> 439 440 <!-- variables available with ABL on atmospheric T grid--> 441 <field_group id="grid_ABL3D" grid_ref="grid_TA_3D" > 442 <field id="u_abl" long_name="ABL i-horizontal velocity" standard_name="abl_x_velocity" unit="m/s" /> 443 <field id="v_abl" long_name="ABL j-horizontal velocity" standard_name="abl_y_velocity" unit="m/s" /> 444 <field id="t_abl" long_name="ABL potential temperature" standard_name="abl_theta" unit="K" /> 445 <field id="q_abl" long_name="ABL specific humidity" standard_name="abl_qspe" unit="kg/kg" /> 446 <!-- debug (to be removed) --> 447 <field id="u_dta" long_name="DTA i-horizontal velocity" standard_name="dta_x_velocity" unit="m/s" /> 448 <field id="v_dta" long_name="DTA j-horizontal velocity" standard_name="dta_y_velocity" unit="m/s" /> 449 <field id="t_dta" long_name="DTA potential temperature" standard_name="dta_theta" unit="K" /> 450 <field id="q_dta" long_name="DTA specific humidity" standard_name="dta_qspe" unit="kg/kg" /> 451 <field id="coeft" long_name="ABL nudging coefficient" standard_name="coeft" unit="" /> 452 <field id="tke_abl" long_name="ABL turbulent kinetic energy" standard_name="abl_tke" unit="m2/s2" /> 453 <field id="avm_abl" long_name="ABL turbulent viscosity" standard_name="abl_avm" unit="m2/s" /> 454 <field id="avt_abl" long_name="ABL turbulent diffusivity" standard_name="abl_avt" unit="m2/s" /> 455 <field id="mxl_abl" long_name="ABL mixing length" standard_name="abl_mxl" unit="m" /> 456 </field_group> 457 458 <field_group id="grid_ABL2D" grid_ref="grid_TA_2D" > 459 <field id="pblh" long_name="ABL height" standard_name="abl_height" unit="m" /> 460 <field id="uz1_abl" long_name="ABL i-horizontal velocity" standard_name="abl_x_velocity" unit="m/s" /> 461 <field id="vz1_abl" long_name="ABL j-horizontal velocity" standard_name="abl_y_velocity" unit="m/s" /> 462 <field id="uvz1_abl" long_name="ABL wind speed module" standard_name="abl_wind_speed" unit="m/s" > sqrt( uz1_abl^2 + vz1_abl^2 ) </field> 463 <field id="tz1_abl" long_name="ABL potential temperature" standard_name="abl_theta" unit="K" /> 464 <field id="qz1_abl" long_name="ABL specific humidity" standard_name="abl_qspe" unit="kg/kg" /> 465 <field id="uz1_dta" long_name="DTA i-horizontal velocity" standard_name="dta_x_velocity" unit="m/s" /> 466 <field id="vz1_dta" long_name="DTA j-horizontal velocity" standard_name="dta_y_velocity" unit="m/s" /> 467 <field id="uvz1_dta" long_name="DTA wind speed module" standard_name="dta_wind_speed" unit="m/s" > sqrt( uz1_dta^2 + vz1_dta^2 ) </field> 468 <field id="tz1_dta" long_name="DTA potential temperature" standard_name="dta_theta" unit="K" /> 469 <field id="qz1_dta" long_name="DTA specific humidity" standard_name="dta_qspe" unit="kg/kg" /> 470 <!-- debug (to be removed) --> 471 <field id="uz1_geo" long_name="GEO i-horizontal velocity" standard_name="geo_x_velocity" unit="m/s" /> 472 <field id="vz1_geo" long_name="GEO j-horizontal velocity" standard_name="geo_y_velocity" unit="m/s" /> 473 <field id="uvz1_geo" long_name="GEO wind speed module" standard_name="geo_wind_speed" unit="m/s" > sqrt( uz1_geo^2 + vz1_geo^2 ) </field> 474 </field_group> 475 476 </field_group> <!-- ABL --> 477 478 358 479 <!-- U grid --> 359 480 360 481 <field_group id="grid_U" grid_ref="grid_U_2D"> 361 <field id="e3u" long_name="U-cell thickness" standard_name="cell_thickness" unit="m" grid_ref="grid_U_3D" /> 362 <field id="e3u_0" long_name="Initial U-cell thickness" standard_name="ref_cell_thickness" unit="m" grid_ref="grid_U_3D"/> 363 <field id="utau" long_name="Wind Stress along i-axis" standard_name="surface_downward_x_stress" unit="N/m2" /> 364 <field id="uoce" long_name="ocean current along i-axis" standard_name="sea_water_x_velocity" unit="m/s" grid_ref="grid_U_3D" /> 365 <field id="uoce_e3u" long_name="ocean current along i-axis (thickness weighted)" unit="m/s" grid_ref="grid_U_3D" > uoce * e3u </field> 482 <field id="e2u" long_name="U-cell width in meridional direction" standard_name="cell_width" unit="m" /> 483 <field id="e3u" long_name="U-cell thickness" standard_name="cell_thickness" unit="m" grid_ref="grid_U_3D" /> 484 <field id="e3u_0" long_name="Initial U-cell thickness" standard_name="ref_cell_thickness" unit="m" grid_ref="grid_U_3D"/> 485 <field id="utau" long_name="Wind Stress along i-axis" standard_name="surface_downward_x_stress" unit="N/m2" /> 486 <field id="uoce" long_name="ocean current along i-axis" standard_name="sea_water_x_velocity" unit="m/s" grid_ref="grid_U_3D" /> 487 <field id="uoce_e3u" long_name="ocean current along i-axis (thickness weighted)" unit="m/s" grid_ref="grid_U_3D" > uoce * e3u </field> 488 <field id="uoce_e3u_vsum" long_name="ocean current along i-axis * e3u summed on the vertical" field_ref="uoce_e3u" unit="m3/s" grid_ref="grid_U_vsum"/> 489 <field id="uocetr_vsum" long_name="ocean transport along i-axis summed on the vertical" field_ref="e2u" unit="m3/s"> this * uoce_e3u_vsum </field> 490 491 <field id="uocetr_vsum_op" long_name="ocean current along i-axis * e3u * e2u summed on the vertical" read_access="true" freq_op="1mo" field_ref="e2u" unit="m3/s"> @uocetr_vsum </field> 492 <field id="uocetr_vsum_cumul" long_name="ocean current along i-axis * e3u * e2u cumulated from southwest point" freq_offset="_reset_" operation="instant" freq_op="1mo" unit="m3/s" /> 493 <field id="msftbarot" long_name="ocean_barotropic_mass_streamfunction" unit="kg s-1" > uocetr_vsum_cumul * $rau0 </field> 494 495 366 496 <field id="ssu" long_name="ocean surface current along i-axis" unit="m/s" /> 367 497 <field id="sbu" long_name="ocean bottom current along i-axis" unit="m/s" /> … … 370 500 <field id="uocet" long_name="ocean transport along i-axis times temperature (CRS)" unit="degC*m/s" grid_ref="grid_U_3D" /> 371 501 <field id="uoces" long_name="ocean transport along i-axis times salinity (CRS)" unit="1e-3*m/s" grid_ref="grid_U_3D" /> 372 502 <field id="ssuww" long_name="ocean surface wind work along i-axis" standard_name="surface_x_wind_work" unit="N/m*s" > utau * ssu </field> 503 <!-- AGRIF sponge --> 504 <field id="agrif_spu" long_name=" AGRIF u-sponge coefficient" unit=" " /> 373 505 <!-- u-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> 374 506 <field id="ahtu_2d" long_name=" surface u-eddy diffusivity coefficient" unit="m2/s or m4/s" /> … … 382 514 383 515 <!-- uoce_eiv: available EIV (ln_ldfeiv=T and ln_ldfeiv_dia=T) --> 384 <field id="uoce_eiv" long_name="EIV ocean current along i-axis" standard_name="bolus_sea_water_x_velocity" unit="m/s" grid_ref="grid_U_3D" /> 516 <field id="uoce_eiv" long_name="EIV ocean current along i-axis" standard_name="bolus_sea_water_x_velocity" unit="m/s" grid_ref="grid_U_3D" /> 517 <field id="ueiv_masstr" long_name="EIV Ocean Mass X Transport" standard_name="bolus_ocean_mass_x_transport" unit="kg/s" grid_ref="grid_U_3D" /> 518 <field id="ueiv_heattr" long_name="ocean bolus heat transport along i-axis" standard_name="ocean_heat_x_transport_due_to_bolus_advection" unit="W" /> 519 <field id="ueiv_salttr" long_name="ocean bolus salt transport along i-axis" standard_name="ocean_salt_x_transport_due_to_bolus_advection" unit="Kg" /> 520 <field id="ueiv_heattr3d" long_name="ocean bolus heat transport along i-axis" standard_name="ocean_heat_x_transport_due_to_bolus_advection" unit="W" grid_ref="grid_U_3D" /> 521 <field id="ueiv_salttr3d" long_name="ocean bolus salt transport along i-axis" standard_name="ocean_salt_x_transport_due_to_bolus_advection" unit="kg" grid_ref="grid_U_3D" /> 385 522 386 523 <!-- uoce_bbl: available with ln_trabbl=T and nn_bbl_adv=1 --> … … 396 533 <field id="utbl" long_name="zonal current in the Losh tbl" unit="m/s" /> 397 534 398 <field id="u_masstr" long_name="Ocean Mass X Transport" standard_name="ocean_mass_x_transport" unit="kg/s" grid_ref="grid_U_3D" /> 535 <!-- variables available with diaar5 --> 536 <field id="u_masstr" long_name="Ocean Mass X Transport" standard_name="ocean_mass_x_transport" unit="kg/s" grid_ref="grid_U_3D" /> 399 537 <field id="u_masstr_vint" long_name="vertical integral of ocean eulerian mass transport along i-axis" standard_name="vertical_integral_of_ocean_mass_x_transport" unit="kg/s" /> 400 538 <field id="u_heattr" long_name="ocean eulerian heat transport along i-axis" standard_name="ocean_heat_x_transport" unit="W" /> … … 402 540 <field id="uadv_heattr" long_name="ocean advective heat transport along i-axis" standard_name="advectice_ocean_heat_x_transport" unit="W" /> 403 541 <field id="uadv_salttr" long_name="ocean advective salt transport along i-axis" standard_name="advectice_ocean_salt_x_transport" unit="1e-3*kg/s" /> 404 <field id="ueiv_heattr" long_name="ocean bolus heat transport along i-axis" standard_name="ocean_heat_x_transport_due_to_bolus_advection" unit="W" />405 <field id="ueiv_salttr" long_name="ocean bolus salt transport along i-axis" standard_name="ocean_salt_x_transport_due_to_bolus_advection" unit="Kg" />406 <field id="ueiv_heattr3d" long_name="ocean bolus heat transport along i-axis" standard_name="ocean_heat_x_transport_due_to_bolus_advection" unit="W" grid_ref="grid_U_3D" />407 <field id="ueiv_salttr3d" long_name="ocean bolus salt transport along i-axis" standard_name="ocean_salt_x_transport_due_to_bolus_advection" unit="kg" grid_ref="grid_U_3D" />408 542 <field id="udiff_heattr" long_name="ocean diffusion heat transport along i-axis" standard_name="ocean_heat_x_transport_due_to_diffusion" unit="W" /> 409 543 <field id="udiff_salttr" long_name="ocean diffusion salt transport along i-axis" standard_name="ocean_salt_x_transport_due_to_diffusion" unit="1e-3*kg/s" /> … … 413 547 414 548 <field_group id="grid_V" grid_ref="grid_V_2D"> 549 <field id="e1v" long_name="V-cell width in longitudinal direction" standard_name="cell_width" unit="m" /> 415 550 <field id="e3v" long_name="V-cell thickness" standard_name="cell_thickness" unit="m" grid_ref="grid_V_3D" /> 416 551 <field id="e3v_0" long_name="Initial V-cell thickness" standard_name="ref_cell_thickness" unit="m" grid_ref="grid_V_3D" /> … … 424 559 <field id="vocet" long_name="ocean transport along j-axis times temperature (CRS)" unit="degC*m/s" grid_ref="grid_V_3D" /> 425 560 <field id="voces" long_name="ocean transport along j-axis times salinity (CRS)" unit="1e-3*m/s" grid_ref="grid_V_3D" /> 426 561 <field id="ssvww" long_name="ocean surface wind work along j-axis" standard_name="surface_y_wind_work" unit="N/m*s" > vtau * ssv </field> 562 <!-- AGRIF sponge --> 563 <field id="agrif_spv" long_name=" AGRIF v-sponge coefficient" unit=" " /> 427 564 <!-- v-eddy diffusivity coefficients (available if ln_traldf_OFF=F) --> 428 565 <field id="ahtv_2d" long_name=" surface v-eddy diffusivity coefficient" unit="m2/s or (m4/s)^1/2" /> … … 436 573 437 574 <!-- voce_eiv: available EIV (ln_ldfeiv=T and ln_ldfeiv_dia=T) --> 438 <field id="voce_eiv" long_name="EIV ocean current along j-axis" standard_name="bolus_sea_water_y_velocity" unit="m/s" grid_ref="grid_V_3D" /> 575 <field id="voce_eiv" long_name="EIV ocean current along j-axis" standard_name="bolus_sea_water_y_velocity" unit="m/s" grid_ref="grid_V_3D" /> 576 <field id="veiv_masstr" long_name="EIV Ocean Mass Y Transport" standard_name="bolus_ocean_mass_y_transport" unit="kg/s" grid_ref="grid_V_3D" /> 577 <field id="veiv_heattr" long_name="ocean bolus heat transport along j-axis" standard_name="ocean_heat_y_transport_due_to_bolus_advection" unit="W" /> 578 <field id="veiv_salttr" long_name="ocean bolus salt transport along j-axis" standard_name="ocean_salt_x_transport_due_to_bolus_advection" unit="Kg" /> 579 <field id="veiv_heattr3d" long_name="ocean bolus heat transport along j-axis" standard_name="ocean_heat_y_transport_due_to_bolus_advection" unit="W" grid_ref="grid_V_3D" /> 580 <field id="veiv_salttr3d" long_name="ocean bolus salt transport along j-axis" standard_name="ocean_salt_y_transport_due_to_bolus_advection" unit="kg" grid_ref="grid_V_3D" /> 581 439 582 440 583 <!-- voce_bbl: available with ln_trabbl=T and nn_bbl_adv=1 --> … … 456 599 <field id="vadv_heattr" long_name="ocean advective heat transport along j-axis" standard_name="advectice_ocean_heat_y_transport" unit="W" /> 457 600 <field id="vadv_salttr" long_name="ocean advective salt transport along j-axis" standard_name="advectice_ocean_salt_y_transport" unit="1e-3*kg/s" /> 458 <field id="veiv_heattr" long_name="ocean bolus heat transport along j-axis" standard_name="ocean_heat_y_transport_due_to_bolus_advection" unit="W" />459 <field id="veiv_salttr" long_name="ocean bolus salt transport along j-axis" standard_name="ocean_salt_x_transport_due_to_bolus_advection" unit="Kg" />460 <field id="veiv_heattr3d" long_name="ocean bolus heat transport along j-axis" standard_name="ocean_heat_y_transport_due_to_bolus_advection" unit="W" grid_ref="grid_V_3D" />461 <field id="veiv_salttr3d" long_name="ocean bolus salt transport along j-axis" standard_name="ocean_salt_y_transport_due_to_bolus_advection" unit="kg" grid_ref="grid_V_3D" />462 601 <field id="vdiff_heattr" long_name="ocean diffusion heat transport along j-axis" standard_name="ocean_heat_y_transport_due_to_diffusion" unit="W" /> 463 602 <field id="vdiff_salttr" long_name="ocean diffusion salt transport along j-axis" standard_name="ocean_salt_y_transport_due_to_diffusion" unit="1e-3*kg/s" /> … … 468 607 <field_group id="grid_W" grid_ref="grid_W_3D"> 469 608 <field id="e3w" long_name="W-cell thickness" standard_name="cell_thickness" unit="m" /> 470 <field id="woce" long_name="ocean vertical velocity" standard_name="upward_sea_water_velocity" unit="m/s" /> 609 <field id="woce" long_name="ocean vertical velocity" standard_name="upward_sea_water_velocity" unit="m/s" /> 610 <field id="woce_e3w" long_name="ocean vertical velocity * e3w" unit="m2/s" > woce * e3w </field> 471 611 <field id="wocetr_eff" long_name="effective ocean vertical transport" unit="m3/s" /> 472 612 473 613 <!-- woce_eiv: available with EIV (ln_ldfeiv=T and ln_ldfeiv_dia=T) --> 474 614 <field id="woce_eiv" long_name="EIV ocean vertical velocity" standard_name="bolus_upward_sea_water_velocity" unit="m/s" /> 475 476 <field id="avt" long_name="vertical eddy diffusivity" standard_name="ocean_vertical_heat_diffusivity" unit="m2/s" /> 615 <field id="weiv_masstr" long_name="EIV Upward Ocean Mass Transport" standard_name="bolus_upward_ocean_mass_transport" unit="kg/s" /> 616 <field id="weiv_heattr3d" long_name="ocean bolus heat transport" standard_name="ocean_heat_z_transport_due_to_bolus_advection" unit="W" /> 617 <field id="weiv_salttr3d" long_name="ocean bolus salt transport" standard_name="ocean_salt_z_transport_due_to_bolus_advection" unit="kg" /> 618 619 <field id="avt" long_name="vertical eddy diffusivity" standard_name="ocean_vertical_heat_diffusivity" unit="m2/s" /> 620 <field id="avt_e3w" long_name="vertical heat diffusivity * e3w" unit="m3/s" > avt * e3w </field> 477 621 <field id="logavt" long_name="logarithm of vertical eddy diffusivity" standard_name="ocean_vertical_heat_diffusivity" unit="m2/s" /> 478 622 <field id="avm" long_name="vertical eddy viscosity" standard_name="ocean_vertical_momentum_diffusivity" unit="m2/s" /> 623 <field id="avm_e3w" long_name="vertical eddy viscosity * e3w" unit="m3/s" > avm * e3w </field> 479 624 480 625 <!-- avs: /= avt with ln_zdfddm=T --> 481 626 <field id="avs" long_name="salt vertical eddy diffusivity" standard_name="ocean_vertical_salt_diffusivity" unit="m2/s" /> 482 <field id="logavs" long_name="logarithm of salt vertical eddy diffusivity" standard_name="ocean_vertical_heat_diffusivity" unit="m2/s" /> 627 <field id="avs_e3w" long_name="vertical salt diffusivity * e3w" unit="m3/s" > avs * e3w </field> 628 <field id="logavs" long_name="logarithm of salt vertical eddy diffusivity" standard_name="ocean_vertical_heat_diffusivity" unit="m2/s" /> 483 629 484 630 <!-- avt_evd and avm_evd: available with ln_zdfevd --> 485 631 <field id="avt_evd" long_name="convective enhancement of vertical diffusivity" standard_name="ocean_vertical_tracer_diffusivity_due_to_convection" unit="m2/s" /> 486 <field id="avm_evd" long_name="convective enhancement of vertical viscosity" standard_name="ocean_vertical_momentum_diffusivity_due_to_convection" unit="m2/s" /> 632 <field id="avt_evd_e3w" long_name="convective enhancement to vertical diffusivity * e3w " unit="m3/s" > avt_evd * e3w </field> 633 <field id="avm_evd" long_name="convective enhancement of vertical viscosity" standard_name="ocean_vertical_momentum_diffusivity_due_to_convection" unit="m2/s" /> 487 634 488 635 <!-- avt_tide: available with ln_zdfiwm=T --> … … 503 650 504 651 <!-- F grid --> 652 <!-- AGRIF sponge --> 653 <field id="agrif_spf" long_name=" AGRIF f-sponge coefficient" unit=" " /> 505 654 <!-- f-eddy viscosity coefficients (ldfdyn) --> 506 655 <field id="ahmf_2d" long_name=" surface f-eddy viscosity coefficient" unit="m2/s or m4/s" /> … … 515 664 <field id="masstot" long_name="global total mass" standard_name="sea_water_mass" unit="kg" /> 516 665 <field id="temptot" long_name="global mean temperature" standard_name="sea_water_potential_temperature" unit="degC" /> 517 <field id="saltot" long_name="global mean salinity" standard_name="sea_water_salinity" unit="1e-3" /> 518 <field id="fram_trans" long_name="Sea Ice Mass Transport Through Fram Strait" standard_name="sea_ice_transport_across_line" unit="kg/s" /> 666 <field id="saltot" long_name="global mean salinity" standard_name="sea_water_salinity" unit="1e-3" /> 667 <field id="ssttot" long_name="global mean sea surface temperature" standard_name="sea_water_conservative_temperature" unit="degC" /> 668 <!-- EOS = TEOS-10 --> 669 <field id="temptot_pot" long_name="global mean potential temperature" standard_name="sea_water_potential_temperature" unit="degC" /> 519 670 520 671 <!-- available with ln_diahsb --> … … 533 684 <field id="bgmissal" long_name="global mean salinity error due to free surface (linssh true)" unit="1e-3" /> 534 685 </field_group> 686 687 688 <!-- transects --> 689 <field_group id="oce_straits"> 690 <field id="uoce_e3u_ave" long_name="Monthly average of u*e3u" field_ref="uoce_e3u" freq_op="1mo" freq_offset="_reset_" > @uoce_e3u </field> 691 <field id="uoce_e3u_ave_vsum" long_name="Vertical sum of u*e3u" field_ref="uoce_e3u_ave" grid_ref="grid_U_vsum" /> 692 <field id="uocetr_vsum_section" long_name="Total 2D transport in i-direction" field_ref="uoce_e3u_ave_vsum" grid_ref="grid_U_scalar" detect_missing_value="true"> this * e2u </field> 693 <field id="uocetr_strait" long_name="Total transport across lines in i-direction" field_ref="uocetr_vsum_section" grid_ref="grid_U_4strait" /> 694 <field id="u_masstr_strait" long_name="Sea water transport across line in i-direction" field_ref="uocetr_strait" grid_ref="grid_U_4strait_hsum" unit="kg/s"> this * maskMFO_u * $rau0 </field> 695 696 <field id="voce_e3v_ave" long_name="Monthly average of v*e3v" field_ref="voce_e3v" freq_op="1mo" freq_offset="_reset_" > @voce_e3v </field> 697 <field id="voce_e3v_ave_vsum" long_name="Vertical sum of v*e3v" field_ref="voce_e3v_ave" grid_ref="grid_V_vsum" /> 698 <field id="vocetr_vsum_section" long_name="Total 2D transport of in j-direction" field_ref="voce_e3v_ave_vsum" grid_ref="grid_V_scalar" detect_missing_value="true"> this * e1v </field> 699 <field id="vocetr_strait" long_name="Total transport across lines in j-direction" field_ref="vocetr_vsum_section" grid_ref="grid_V_4strait" /> 700 <field id="v_masstr_strait" long_name="Sea water transport across line in j-direction" field_ref="vocetr_strait" grid_ref="grid_V_4strait_hsum" unit="kg/s"> this * maskMFO_v * $rau0 </field> 701 702 <field id="masstr_strait" long_name="Sea water transport across line" grid_ref="grid_4strait" > u_masstr_strait + v_masstr_strait </field> 703 </field_group> 704 535 705 536 706 <!-- variables available with ln_floats --> … … 568 738 <!-- Poleward transport : ptr --> 569 739 <field_group id="diaptr" > 570 <field id="zomsfglo" long_name="Meridional Stream-Function: Global" unit="Sv" grid_ref="gznl_W_3D" /> 571 <field id="zomsfatl" long_name="Meridional Stream-Function: Atlantic" unit="Sv" grid_ref="gznl_W_3D" /> 572 <field id="zomsfpac" long_name="Meridional Stream-Function: Pacific" unit="Sv" grid_ref="gznl_W_3D" /> 573 <field id="zomsfind" long_name="Meridional Stream-Function: Indian" unit="Sv" grid_ref="gznl_W_3D" /> 574 <field id="zomsfipc" long_name="Meridional Stream-Function: Pacific+Indian" unit="Sv" grid_ref="gznl_W_3D" /> 575 <field id="zotemglo" long_name="Zonal Mean Temperature : Global" unit="degree_C" grid_ref="gznl_T_3D" /> 576 <field id="zotematl" long_name="Zonal Mean Temperature : Atlantic" unit="degree_C" grid_ref="gznl_T_3D" /> 577 <field id="zotempac" long_name="Zonal Mean Temperature : Pacific" unit="degree_C" grid_ref="gznl_T_3D" /> 578 <field id="zotemind" long_name="Zonal Mean Temperature : Indian" unit="degree_C" grid_ref="gznl_T_3D" /> 579 <field id="zotemipc" long_name="Zonal Mean Temperature : Pacific+Indian" unit="degree_C" grid_ref="gznl_T_3D" /> 580 <field id="zosalglo" long_name="Zonal Mean Salinity : Global" unit="0.001" grid_ref="gznl_T_3D" /> 581 <field id="zosalatl" long_name="Zonal Mean Salinity : Atlantic" unit="0.001" grid_ref="gznl_T_3D" /> 582 <field id="zosalpac" long_name="Zonal Mean Salinity : Pacific" unit="0.001" grid_ref="gznl_T_3D" /> 583 <field id="zosalind" long_name="Zonal Mean Salinity : Indian" unit="0.001" grid_ref="gznl_T_3D" /> 584 <field id="zosalipc" long_name="Zonal Mean Salinity : Pacific+Indian" unit="0.001" grid_ref="gznl_T_3D" /> 585 <field id="zosrfglo" long_name="Zonal Mean Surface" unit="m2" grid_ref="gznl_T_3D" /> 586 <field id="zosrfatl" long_name="Zonal Mean Surface : Atlantic" unit="m2" grid_ref="gznl_T_3D" /> 587 <field id="zosrfpac" long_name="Zonal Mean Surface : Pacific" unit="m2" grid_ref="gznl_T_3D" /> 588 <field id="zosrfind" long_name="Zonal Mean Surface : Indian" unit="m2" grid_ref="gznl_T_3D" /> 589 <field id="zosrfipc" long_name="Zonal Mean Surface : Pacific+Indian" unit="m2" grid_ref="gznl_T_3D" /> 590 <field id="sophtadv" long_name="Advective Heat Transport" unit="PW" grid_ref="gznl_T_2D" /> 591 <field id="sophtadv_atl" long_name="Advective Heat Transport: Atlantic" unit="PW" grid_ref="gznl_T_2D" /> 592 <field id="sophtadv_pac" long_name="Advective Heat Transport: Pacific" unit="PW" grid_ref="gznl_T_2D" /> 593 <field id="sophtadv_ind" long_name="Advective Heat Transport: Indian" unit="PW" grid_ref="gznl_T_2D" /> 594 <field id="sophtadv_ipc" long_name="Advective Heat Transport: Pacific+Indian" unit="PW" grid_ref="gznl_T_2D" /> 595 <field id="sophtldf" long_name="Diffusive Heat Transport" unit="PW" grid_ref="gznl_T_2D" /> 596 <field id="sophtldf_atl" long_name="Diffusive Heat Transport: Atlantic" unit="PW" grid_ref="gznl_T_2D" /> 597 <field id="sophtldf_pac" long_name="Diffusive Heat Transport: Pacific" unit="PW" grid_ref="gznl_T_2D" /> 598 <field id="sophtldf_ind" long_name="Diffusive Heat Transport: Indian" unit="PW" grid_ref="gznl_T_2D" /> 599 <field id="sophtldf_ipc" long_name="Diffusive Heat Transport: Pacific+Indian" unit="PW" grid_ref="gznl_T_2D" /> 600 <field id="sophtove" long_name="Overturning Heat Transport" unit="PW" grid_ref="gznl_T_2D" /> 601 <field id="sophtove_atl" long_name="Overturning Heat Transport: Atlantic" unit="PW" grid_ref="gznl_T_2D" /> 602 <field id="sophtove_pac" long_name="Overturning Heat Transport: Pacific" unit="PW" grid_ref="gznl_T_2D" /> 603 <field id="sophtove_ind" long_name="Overturning Heat Transport: Indian" unit="PW" grid_ref="gznl_T_2D" /> 604 <field id="sophtove_ipc" long_name="Overturning Heat Transport: Pacific+Indian" unit="PW" grid_ref="gznl_T_2D" /> 605 <field id="sophtbtr" long_name="Barotropic Heat Transport" unit="PW" grid_ref="gznl_T_2D" /> 606 <field id="sophtbtr_atl" long_name="Barotropic Heat Transport: Atlantic" unit="PW" grid_ref="gznl_T_2D" /> 607 <field id="sophtbtr_pac" long_name="Barotropic Heat Transport: Pacific" unit="PW" grid_ref="gznl_T_2D" /> 608 <field id="sophtbtr_ind" long_name="Barotropic Heat Transport: Indian" unit="PW" grid_ref="gznl_T_2D" /> 609 <field id="sophtbtr_ipc" long_name="Barotropic Heat Transport: Pacific+Indian" unit="PW" grid_ref="gznl_T_2D" /> 610 <field id="sophteiv" long_name="Heat Transport from mesoscale eddy advection" unit="PW" grid_ref="gznl_T_2D" /> 611 <field id="sophteiv_atl" long_name="Heat Transport from mesoscale eddy advection: Atlantic" unit="PW" grid_ref="gznl_T_2D" /> 612 <field id="sophteiv_pac" long_name="Heat Transport from mesoscale eddy advection: Pacific" unit="PW" grid_ref="gznl_T_2D" /> 613 <field id="sophteiv_ind" long_name="Heat Transport from mesoscale eddy advection: Indian" unit="PW" grid_ref="gznl_T_2D" /> 614 <field id="sophteiv_ipc" long_name="Heat Transport from mesoscale eddy advection: Pacific+Indian" unit="PW" grid_ref="gznl_T_2D" /> 615 <field id="sopstadv" long_name="Advective Salt Transport" unit="Giga g/s" grid_ref="gznl_T_2D" /> 616 <field id="sopstadv_atl" long_name="Advective Salt Transport: Atlantic" unit="Giga g/s" grid_ref="gznl_T_2D" /> 617 <field id="sopstadv_pac" long_name="Advective Salt Transport: Pacific" unit="Giga g/s" grid_ref="gznl_T_2D" /> 618 <field id="sopstadv_ind" long_name="Advective Salt Transport: Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 619 <field id="sopstadv_ipc" long_name="Advective Salt Transport: Pacific+Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 620 <field id="sopstove" long_name="Overturning Salt Transport" unit="Giga g/s" grid_ref="gznl_T_2D" /> 621 <field id="sopstove_atl" long_name="Overturning Salt Transport: Atlantic" unit="Giga g/s" grid_ref="gznl_T_2D" /> 622 <field id="sopstove_pac" long_name="Overturning Salt Transport: Pacific" unit="Giga g/s" grid_ref="gznl_T_2D" /> 623 <field id="sopstove_ind" long_name="Overturning Salt Transport: Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 624 <field id="sopstove_ipc" long_name="Overturning Salt Transport: Pacific+Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 625 <field id="sopstbtr" long_name="Barotropic Salt Transport" unit="Giga g/s" grid_ref="gznl_T_2D" /> 626 <field id="sopstbtr_atl" long_name="Barotropic Salt Transport: Atlantic" unit="Giga g/s" grid_ref="gznl_T_2D" /> 627 <field id="sopstbtr_pac" long_name="Barotropic Salt Transport: Pacific" unit="Giga g/s" grid_ref="gznl_T_2D" /> 628 <field id="sopstbtr_ind" long_name="Barotropic Salt Transport: Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 629 <field id="sopstbtr_ipc" long_name="Barotropic Salt Transport: Pacific+Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 630 <field id="sopstldf" long_name="Diffusive Salt Transport" unit="Giga g/s" grid_ref="gznl_T_2D" /> 631 <field id="sopstldf_atl" long_name="Diffusive Salt Transport: Atlantic" unit="Giga g/s" grid_ref="gznl_T_2D" /> 632 <field id="sopstldf_pac" long_name="Diffusive Salt Transport: Pacific" unit="Giga g/s" grid_ref="gznl_T_2D" /> 633 <field id="sopstldf_ind" long_name="Diffusive Salt Transport: Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 634 <field id="sopstldf_ipc" long_name="Diffusive Salt Transport: Pacific+Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 635 <field id="sopsteiv" long_name="Salt Transport from mesoscale eddy advection" unit="Giga g/s" grid_ref="gznl_T_2D" /> 636 <field id="sopsteiv_atl" long_name="Salt Transport from mesoscale eddy advection: Atlantic" unit="Giga g/s" grid_ref="gznl_T_2D" /> 637 <field id="sopsteiv_pac" long_name="Salt Transport from mesoscale eddy advection: Pacific" unit="Giga g/s" grid_ref="gznl_T_2D" /> 638 <field id="sopsteiv_ind" long_name="Salt Transport from mesoscale eddy advection: Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 639 <field id="sopsteiv_ipc" long_name="Salt Transport from mesoscale eddy advection: Pacific+Indian" unit="Giga g/s" grid_ref="gznl_T_2D" /> 640 </field_group> 740 <field id="zomsf" long_name="Overturning Stream-Function : All basins" unit="Sv" grid_ref="grid_znl_W_3D" /> 741 <field id="zotem" long_name="Zonal Mean Temperature : All basins" unit="degree_C" grid_ref="grid_znl_T_3D" /> 742 <field id="zosal" long_name="Zonal Mean Salinity : All basins" unit="0.001" grid_ref="grid_znl_T_3D" /> 743 <field id="zosrf" long_name="Zonal Mean Surface : All basins" unit="m2" grid_ref="grid_znl_T_3D" /> 744 <field id="sophtove" long_name="Overturning Heat Transport: All basins" unit="PW" grid_ref="grid_znl_T_2D" /> 745 <field id="sopstove" long_name="Overturning Salt Transport: All basins" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 746 <field id="sophtbtr" long_name="Barotropic Heat Transport: All basins" unit="PW" grid_ref="grid_znl_T_2D" /> 747 <field id="sopstbtr" long_name="Barotropic Salt Transport: All basins" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 748 <field id="sophtadv" long_name="Advective Heat Transport: All basins" unit="PW" grid_ref="grid_znl_T_2D" /> 749 <field id="sopstadv" long_name="Advective Salt Transport: All basins" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 750 <field id="sophtldf" long_name="Diffusive Heat Transport: All basins" unit="PW" grid_ref="grid_znl_T_2D" /> 751 <field id="sopstldf" long_name="Diffusive Salt Transport: All basins" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 752 <field id="sophtvtr" long_name="Heat Transport : All basins" unit="PW" grid_ref="grid_znl_T_2D" /> 753 <field id="sopstvtr" long_name="Salt Transport : All basins" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 754 <field id="sophteiv" long_name="Heat Transport from mesoscale eddy advection: All basins" unit="PW" grid_ref="grid_znl_T_2D" /> 755 <field id="sopsteiv" long_name="Salt Transport from mesoscale eddy advection : All basins" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 756 <field id="sopstadv" long_name="Advective Salt Transport" unit="Giga g/s" grid_ref="grid_znl_T_2D" /> 757 <field id="sophtgyre" long_name="Overturning heat transport due to gyre" field_ref="sophtove" unit="W" grid_ref="grid_znl_T_2D" > sophtvtr - sophtove </field> 758 <field id="sopstgyre" long_name="Overturning salt transport due to gyre" field_ref="sopstove" unit="kg/s" grid_ref="grid_znl_T_2D" > sophtvtr - sopstove </field> 759 </field_group> 760 761 <field_group id="constant_fields" grid_ref="grid_T_2D" operation="once" > 762 <field id="bathy" long_name="Sea floor depth below geoid" standard_name="sea_floor_depth_below_geoid" unit="m"/> 763 <field id="areacello" long_name="Horizontal area of ocean grid cells" standard_name="cell_area" unit="m2" /> 764 <field id="hfgeou" long_name="Upward geothermal heat flux at sea floor" standard_name="upward_geothermal_heat_flux_at_sea_floor" unit="W/m2"/> 765 <field id="basins" long_name="ocean tracer region masks" standard_name="ocean_tracer_region_masks" unit="none" grid_ref="grid_basin" /> 766 </field_group> 767 641 768 642 769 <!-- … … 671 798 <field id="ttrd_totad" long_name="temperature-trend: total advection" standard_name="tendency_of_sea_water_salinity_due_to_advection" unit="degC/s" /> 672 799 <field id="strd_totad" long_name="salinity -trend: total advection" standard_name="tendency_of_sea_water_salinity_due_to_advection" unit="1e-3/s" /> 673 <field id="ttrd_sad" long_name="temperature-trend: surface adv. (linssh true)" 674 <field id="strd_sad" long_name="salinity -trend: surface adv. (linssh true)" 800 <field id="ttrd_sad" long_name="temperature-trend: surface adv. (linssh true)" unit="degC/s" grid_ref="grid_T_2D" /> 801 <field id="strd_sad" long_name="salinity -trend: surface adv. (linssh true)" unit="1e-3/s" grid_ref="grid_T_2D" /> 675 802 <field id="ttrd_ldf" long_name="temperature-trend: lateral diffusion" standard_name="tendency_of_sea_water_temperature_due_to_horizontal_mixing" unit="degC/s" /> 676 803 <field id="strd_ldf" long_name="salinity -trend: lateral diffusion" standard_name="tendency_of_sea_water_salinity_due_to_horizontal_mixing" unit="1e-3/s" /> … … 729 856 <field id="ttrd_npc_e3t" unit="degC/s * m" > ttrd_npc * e3t </field> 730 857 <field id="strd_npc_e3t" unit="1e-3/s * m" > strd_npc * e3t </field> 731 <field id="ttrd_qns_e3t" unit="degC/s * m" > ttrd_qns * e3t _surf</field>732 <field id="strd_cdt_e3t" unit="degC/s * m" > strd_cdt * e3t _surf</field>858 <field id="ttrd_qns_e3t" unit="degC/s * m" > ttrd_qns * e3ts </field> 859 <field id="strd_cdt_e3t" unit="degC/s * m" > strd_cdt * e3ts </field> 733 860 <field id="ttrd_qsr_e3t" unit="degC/s * m" > ttrd_qsr * e3t </field> 734 861 <field id="ttrd_bbc_e3t" unit="degC/s * m" > ttrd_bbc * e3t </field> … … 932 1059 <field_group id="groupU" > 933 1060 <field field_ref="uoce" name="uo" long_name="sea_water_x_velocity" /> 934 <field field_ref="ssu" name="uos" long_name="sea_surface_x_velocity" />935 1061 <field field_ref="utau" name="tauuo" long_name="surface_downward_x_stress" /> 936 1062 </field_group> … … 938 1064 <field_group id="groupV" > 939 1065 <field field_ref="voce" name="vo" long_name="sea_water_y_velocity" /> 940 <field field_ref="ssv" name="vos" long_name="sea_surface_y_velocity" />941 1066 <field field_ref="vtau" name="tauvo" long_name="surface_downward_y_stress" /> 942 1067 </field_group> -
NEMO/trunk/tests/CANAL/EXPREF/namelist_cfg
r12206 r12377 276 276 !! namdiu Cool skin and warm layer models (default: OFF) 277 277 !! namflo float parameters (default: OFF) 278 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)279 278 !! nam_diadct transports through some sections (default: OFF) 280 279 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/CANAL/MY_SRC/diawri.F90
r12206 r12377 56 56 USE lib_mpp ! MPP library 57 57 USE timing ! preformance summary 58 USE diu rnal_bulk! diurnal warm layer59 USE cool_skin! Cool skin58 USE diu_bulk ! diurnal warm layer 59 USE diu_coolskin ! Cool skin 60 60 61 61 IMPLICIT NONE … … 76 76 INTEGER, SAVE, ALLOCATABLE, DIMENSION(:) :: ndex_bT 77 77 78 !! * Substitutions79 # include "vectopt_loop_substitute.h90"80 78 !!---------------------------------------------------------------------- 81 79 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 96 94 97 95 98 SUBROUTINE dia_wri( kt )96 SUBROUTINE dia_wri( kt, Kmm ) 99 97 !!--------------------------------------------------------------------- 100 98 !! *** ROUTINE dia_wri *** … … 106 104 !!---------------------------------------------------------------------- 107 105 INTEGER, INTENT( in ) :: kt ! ocean time-step index 106 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 108 107 !! 109 108 INTEGER :: ji, jj, jk ! dummy loop indices … … 114 113 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D workspace 115 114 REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d ! 3D workspace 116 REAL(wp), DIMENSION(jpi,jpj,jpk) :: bu, bv ! volume of u- and v-boxes117 REAL(wp), DIMENSION(jpi,jpj,jpk) :: r1_bt ! inverse of t-box volume118 115 !!---------------------------------------------------------------------- 119 116 ! … … 122 119 ! Output the initial state and forcings 123 120 IF( ninist == 1 ) THEN 124 CALL dia_wri_state( 'output.init' )121 CALL dia_wri_state( Kmm, 'output.init' ) 125 122 ninist = 0 126 123 ENDIF … … 131 128 CALL iom_put("e3v_0", e3v_0(:,:,:) ) 132 129 ! 133 CALL iom_put( "e3t" , e3t _n(:,:,:) )134 CALL iom_put( "e3u" , e3u _n(:,:,:) )135 CALL iom_put( "e3v" , e3v _n(:,:,:) )136 CALL iom_put( "e3w" , e3w _n(:,:,:) )130 CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 131 CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 132 CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 133 CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 137 134 IF( iom_use("e3tdef") ) & 138 CALL iom_put( "e3tdef" , ( ( e3t _n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )135 CALL iom_put( "e3tdef" , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 139 136 140 137 IF( ll_wd ) THEN 141 CALL iom_put( "ssh" , (ssh n+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying)138 CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying) 142 139 ELSE 143 CALL iom_put( "ssh" , ssh n) ! sea surface height140 CALL iom_put( "ssh" , ssh(:,:,Kmm) ) ! sea surface height 144 141 ENDIF 145 142 146 143 IF( iom_use("wetdep") ) & ! wet depth 147 CALL iom_put( "wetdep" , ht_0(:,:) + ssh n(:,:) )144 CALL iom_put( "wetdep" , ht_0(:,:) + ssh(:,:,Kmm) ) 148 145 149 CALL iom_put( "toce", ts n(:,:,:,jp_tem) ) ! 3D temperature150 CALL iom_put( "sst", ts n(:,:,1,jp_tem) ) ! surface temperature146 CALL iom_put( "toce", ts(:,:,:,jp_tem,Kmm) ) ! 3D temperature 147 CALL iom_put( "sst", ts(:,:,1,jp_tem,Kmm) ) ! surface temperature 151 148 IF ( iom_use("sbt") ) THEN 152 149 DO jj = 1, jpj 153 150 DO ji = 1, jpi 154 151 ikbot = mbkt(ji,jj) 155 z2d(ji,jj) = ts n(ji,jj,ikbot,jp_tem)152 z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 156 153 END DO 157 154 END DO … … 159 156 ENDIF 160 157 161 CALL iom_put( "soce", ts n(:,:,:,jp_sal) ) ! 3D salinity162 CALL iom_put( "sss", ts n(:,:,1,jp_sal) ) ! surface salinity158 CALL iom_put( "soce", ts(:,:,:,jp_sal,Kmm) ) ! 3D salinity 159 CALL iom_put( "sss", ts(:,:,1,jp_sal,Kmm) ) ! surface salinity 163 160 IF ( iom_use("sbs") ) THEN 164 161 DO jj = 1, jpj 165 162 DO ji = 1, jpi 166 163 ikbot = mbkt(ji,jj) 167 z2d(ji,jj) = ts n(ji,jj,ikbot,jp_sal)164 z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 168 165 END DO 169 166 END DO … … 176 173 DO jj = 2, jpjm1 177 174 DO ji = fs_2, fs_jpim1 ! vector opt. 178 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * u n(ji ,jj,mbku(ji ,jj)) )**2 &179 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * u n(ji-1,jj,mbku(ji-1,jj)) )**2 &180 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * v n(ji,jj ,mbkv(ji,jj )) )**2 &181 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * v n(ji,jj-1,mbkv(ji,jj-1)) )**2175 zztmp2 = ( ( rCdU_bot(ji+1,jj)+rCdU_bot(ji ,jj) ) * uu(ji ,jj,mbku(ji ,jj),Kmm) )**2 & 176 & + ( ( rCdU_bot(ji ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm) )**2 & 177 & + ( ( rCdU_bot(ji,jj+1)+rCdU_bot(ji,jj ) ) * vv(ji,jj ,mbkv(ji,jj ),Kmm) )**2 & 178 & + ( ( rCdU_bot(ji,jj )+rCdU_bot(ji,jj-1) ) * vv(ji,jj-1,mbkv(ji,jj-1),Kmm) )**2 182 179 z2d(ji,jj) = zztmp * SQRT( zztmp2 ) * tmask(ji,jj,1) 183 180 ! … … 188 185 ENDIF 189 186 190 CALL iom_put( "uoce", u n(:,:,:) ) ! 3D i-current191 CALL iom_put( "ssu", u n(:,:,1) ) ! surface i-current187 CALL iom_put( "uoce", uu(:,:,:,Kmm) ) ! 3D i-current 188 CALL iom_put( "ssu", uu(:,:,1,Kmm) ) ! surface i-current 192 189 IF ( iom_use("sbu") ) THEN 193 190 DO jj = 1, jpj 194 191 DO ji = 1, jpi 195 192 ikbot = mbku(ji,jj) 196 z2d(ji,jj) = u n(ji,jj,ikbot)193 z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 197 194 END DO 198 195 END DO … … 200 197 ENDIF 201 198 202 CALL iom_put( "voce", v n(:,:,:) ) ! 3D j-current203 CALL iom_put( "ssv", v n(:,:,1) ) ! surface j-current199 CALL iom_put( "voce", vv(:,:,:,Kmm) ) ! 3D j-current 200 CALL iom_put( "ssv", vv(:,:,1,Kmm) ) ! surface j-current 204 201 IF ( iom_use("sbv") ) THEN 205 202 DO jj = 1, jpj 206 203 DO ji = 1, jpi 207 204 ikbot = mbkv(ji,jj) 208 z2d(ji,jj) = v n(ji,jj,ikbot)205 z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 209 206 END DO 210 207 END DO … … 212 209 ENDIF 213 210 214 CALL iom_put( "woce", w n) ! vertical velocity211 CALL iom_put( "woce", ww ) ! vertical velocity 215 212 IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN ! vertical mass transport & its square value 216 213 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 217 214 z2d(:,:) = rau0 * e1e2t(:,:) 218 215 DO jk = 1, jpk 219 z3d(:,:,jk) = w n(:,:,jk) * z2d(:,:)216 z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) 220 217 END DO 221 218 CALL iom_put( "w_masstr" , z3d ) … … 235 232 DO jj = 2, jpjm1 ! sal gradient 236 233 DO ji = fs_2, fs_jpim1 ! vector opt. 237 zztmp = ts n(ji,jj,jk,jp_sal)238 zztmpx = ( ts n(ji+1,jj,jk,jp_sal) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - tsn(ji-1,jj ,jk,jp_sal) ) * r1_e1u(ji-1,jj)239 zztmpy = ( ts n(ji,jj+1,jk,jp_sal) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - tsn(ji ,jj-1,jk,jp_sal) ) * r1_e2v(ji,jj-1)234 zztmp = ts(ji,jj,jk,jp_sal,Kmm) 235 zztmpx = ( ts(ji+1,jj,jk,jp_sal,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,jk,jp_sal,Kmm) ) * r1_e1u(ji-1,jj) 236 zztmpy = ( ts(ji,jj+1,jk,jp_sal,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,jk,jp_sal,Kmm) ) * r1_e2v(ji,jj-1) 240 237 z3d(ji,jj,jk) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 241 238 & * umask(ji,jj,jk) * umask(ji-1,jj,jk) * vmask(ji,jj,jk) * umask(ji,jj-1,jk) … … 252 249 DO jj = 2, jpjm1 ! sst gradient 253 250 DO ji = fs_2, fs_jpim1 ! vector opt. 254 zztmp = ts n(ji,jj,1,jp_tem)255 zztmpx = ( ts n(ji+1,jj,1,jp_tem) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - tsn(ji-1,jj ,1,jp_tem) ) * r1_e1u(ji-1,jj)256 zztmpy = ( ts n(ji,jj+1,1,jp_tem) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - tsn(ji ,jj-1,1,jp_tem) ) * r1_e2v(ji,jj-1)251 zztmp = ts(ji,jj,1,jp_tem,Kmm) 252 zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 253 zztmpy = ( ts(ji,jj+1,1,jp_tem,Kmm) - zztmp ) * r1_e2v(ji,jj) + ( zztmp - ts(ji ,jj-1,1,jp_tem,Kmm) ) * r1_e2v(ji,jj-1) 257 254 z2d(ji,jj) = 0.25 * ( zztmpx * zztmpx + zztmpy * zztmpy ) & 258 255 & * umask(ji,jj,1) * umask(ji-1,jj,1) * vmask(ji,jj,1) * umask(ji,jj-1,1) … … 271 268 DO jj = 1, jpj 272 269 DO ji = 1, jpi 273 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk)270 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 274 271 END DO 275 272 END DO … … 283 280 DO jj = 1, jpj 284 281 DO ji = 1, jpi 285 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk)282 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 286 283 END DO 287 284 END DO … … 295 292 DO jj = 1, jpj 296 293 DO ji = 1, jpi 297 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk)294 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 298 295 END DO 299 296 END DO … … 305 302 z3d(:,:,jpk) = 0._wp 306 303 DO jk = 1, jpkm1 307 DO jj = 2, jpj 308 DO ji = 2, jpi 309 zztmpx = 0.5 * ( un(ji-1,jj ,jk) + un(ji,jj,jk) ) 310 zztmpy = 0.5 * ( vn(ji ,jj-1,jk) + vn(ji,jj,jk) ) 311 z3d(ji,jj,jk) = 0.5 * ( zztmpx*zztmpx + zztmpy*zztmpy ) 304 DO jj = 2, jpjm1 305 DO ji = fs_2, fs_jpim1 ! vector opt. 306 zztmp = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 307 z3d(ji,jj,jk) = zztmp * ( uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 308 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 309 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 310 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 312 311 END DO 313 312 END DO … … 325 324 DO jj = 2, jpj 326 325 DO ji = 2, jpi 327 z3d(ji,jj,jk) = 0.25_wp * ( u n(ji ,jj,jk) * un(ji ,jj,jk) * e1e2u(ji ,jj) * e3u_n(ji ,jj,jk) &328 & + u n(ji-1,jj,jk) * un(ji-1,jj,jk) * e1e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) &329 & + v n(ji,jj ,jk) * vn(ji,jj ,jk) * e1e2v(ji,jj ) * e3v_n(ji,jj ,jk) &330 & + v n(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1e2v(ji,jj-1) * e3v_n(ji,jj-1,jk) ) &331 & * r1_e1e2t(ji,jj) / e3t _n(ji,jj,jk) * tmask(ji,jj,jk)326 z3d(ji,jj,jk) = 0.25_wp * ( uu(ji ,jj,jk,Kmm) * uu(ji ,jj,jk,Kmm) * e1e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 327 & + uu(ji-1,jj,jk,Kmm) * uu(ji-1,jj,jk,Kmm) * e1e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 328 & + vv(ji,jj ,jk,Kmm) * vv(ji,jj ,jk,Kmm) * e1e2v(ji,jj ) * e3v(ji,jj ,jk,Kmm) & 329 & + vv(ji,jj-1,jk,Kmm) * vv(ji,jj-1,jk,Kmm) * e1e2v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) ) & 330 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 332 331 END DO 333 332 END DO … … 341 340 DO jj = 1, jpj 342 341 DO ji = 1, jpi 343 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * z3d(ji,jj,jk) * tmask(ji,jj,jk)342 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * tmask(ji,jj,jk) 344 343 END DO 345 344 END DO … … 349 348 ENDIF 350 349 ! 351 CALL iom_put( "hdiv", hdiv n) ! Horizontal divergence350 CALL iom_put( "hdiv", hdiv ) ! Horizontal divergence 352 351 353 352 IF ( iom_use("relvor") .OR. iom_use("absvor") .OR. iom_use("potvor") ) THEN … … 357 356 DO jj = 1, jpjm1 358 357 DO ji = 1, fs_jpim1 ! vector opt. 359 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) &360 & - e1u(ji ,jj+1) * u n(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) * r1_e1e2f(ji,jj)358 z3d(ji,jj,jk) = ( e2v(ji+1,jj ) * vv(ji+1,jj ,jk,Kmm) - e2v(ji,jj) * vv(ji,jj,jk,Kmm) & 359 & - e1u(ji ,jj+1) * uu(ji ,jj+1,jk,Kmm) + e1u(ji,jj) * uu(ji,jj,jk,Kmm) ) * r1_e1e2f(ji,jj) 361 360 END DO 362 361 END DO … … 377 376 DO jj = 1, jpjm1 378 377 DO ji = 1, fs_jpim1 ! vector opt. 379 ze3 = ( e3t _n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) &380 & + e3t _n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) )378 ze3 = ( e3t(ji,jj+1,jk,Kmm)*tmask(ji,jj+1,jk) + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 379 & + e3t(ji,jj ,jk,Kmm)*tmask(ji,jj ,jk) + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 381 380 IF( ze3 /= 0._wp ) THEN ; ze3 = 4._wp / ze3 382 381 ELSE ; ze3 = 0._wp … … 396 395 z2d(:,:) = 0.e0 397 396 DO jk = 1, jpkm1 398 z3d(:,:,jk) = rau0 * u n(:,:,jk) * e2u(:,:) * e3u_n(:,:,jk) * umask(:,:,jk)397 z3d(:,:,jk) = rau0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 399 398 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 400 399 END DO … … 408 407 DO jj = 2, jpjm1 409 408 DO ji = fs_2, fs_jpim1 ! vector opt. 410 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )409 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 411 410 END DO 412 411 END DO … … 421 420 DO jj = 2, jpjm1 422 421 DO ji = fs_2, fs_jpim1 ! vector opt. 423 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )422 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 424 423 END DO 425 424 END DO … … 433 432 z3d(:,:,jpk) = 0.e0 434 433 DO jk = 1, jpkm1 435 z3d(:,:,jk) = rau0 * v n(:,:,jk) * e1v(:,:) * e3v_n(:,:,jk) * vmask(:,:,jk)434 z3d(:,:,jk) = rau0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 436 435 END DO 437 436 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction … … 443 442 DO jj = 2, jpjm1 444 443 DO ji = fs_2, fs_jpim1 ! vector opt. 445 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) )444 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 446 445 END DO 447 446 END DO … … 456 455 DO jj = 2, jpjm1 457 456 DO ji = fs_2, fs_jpim1 ! vector opt. 458 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts n(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) )457 z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 459 458 END DO 460 459 END DO … … 469 468 DO jj = 2, jpjm1 470 469 DO ji = fs_2, fs_jpim1 ! vector opt. 471 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_tem)470 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) 472 471 END DO 473 472 END DO … … 481 480 DO jj = 2, jpjm1 482 481 DO ji = fs_2, fs_jpim1 ! vector opt. 483 z2d(ji,jj) = z2d(ji,jj) + e3t _n(ji,jj,jk) * tsn(ji,jj,jk,jp_sal)482 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 484 483 END DO 485 484 END DO … … 492 491 ! 493 492 494 IF (ln_dia25h) CALL dia_25h( kt )! 25h averaging493 IF (ln_dia25h) CALL dia_25h( kt, Kmm ) ! 25h averaging 495 494 496 495 IF( ln_timing ) CALL timing_stop('dia_wri') … … 518 517 519 518 520 SUBROUTINE dia_wri( kt )519 SUBROUTINE dia_wri( kt, Kmm ) 521 520 !!--------------------------------------------------------------------- 522 521 !! *** ROUTINE dia_wri *** … … 531 530 !!---------------------------------------------------------------------- 532 531 INTEGER, INTENT( in ) :: kt ! ocean time-step index 532 INTEGER, INTENT( in ) :: Kmm ! ocean time level index 533 533 ! 534 534 LOGICAL :: ll_print = .FALSE. ! =T print and flush numout … … 546 546 ! 547 547 IF( ninist == 1 ) THEN !== Output the initial state and forcings ==! 548 CALL dia_wri_state( 'output.init' )548 CALL dia_wri_state( Kmm, 'output.init' ) 549 549 ninist = 0 550 550 ENDIF … … 687 687 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 688 688 IF( .NOT.ln_linssh ) THEN 689 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t _n689 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t(:,:,:,Kmm) 690 690 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 691 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t _n691 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t(:,:,:,Kmm) 692 692 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 693 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t _n693 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t(:,:,:,Kmm) 694 694 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 695 695 ENDIF … … 708 708 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 709 709 IF( ln_linssh ) THEN 710 CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature" & ! emp * ts n(:,:,1,jp_tem)710 CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature" & ! emp * ts(:,:,1,jp_tem,Kmm) 711 711 & , "KgC/m2/s", & ! sosst_cd 712 712 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 713 CALL histdef( nid_T, "sosss_cd", "Concentration/Dilution term on salinity" & ! emp * ts n(:,:,1,jp_sal)713 CALL histdef( nid_T, "sosss_cd", "Concentration/Dilution term on salinity" & ! emp * ts(:,:,1,jp_sal,Kmm) 714 714 & , "KgPSU/m2/s",& ! sosss_cd 715 715 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) … … 787 787 788 788 ! !!! nid_U : 3D 789 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! u n789 CALL histdef( nid_U, "vozocrtx", "Zonal Current" , "m/s" , & ! uu(:,:,:,Kmm) 790 790 & jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 791 791 IF( ln_wave .AND. ln_sdw) THEN … … 800 800 801 801 ! !!! nid_V : 3D 802 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! v n802 CALL histdef( nid_V, "vomecrty", "Meridional Current" , "m/s" , & ! vv(:,:,:,Kmm) 803 803 & jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 804 804 IF( ln_wave .AND. ln_sdw) THEN … … 813 813 814 814 ! !!! nid_W : 3D 815 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! w n815 CALL histdef( nid_W, "vovecrtz", "Vertical Velocity" , "m/s" , & ! ww 816 816 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 817 817 CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt … … 851 851 852 852 IF( .NOT.ln_linssh ) THEN 853 CALL histwrite( nid_T, "votemper", it, ts n(:,:,:,jp_tem) * e3t_n(:,:,:) , ndim_T , ndex_T ) ! heat content854 CALL histwrite( nid_T, "vosaline", it, ts n(:,:,:,jp_sal) * e3t_n(:,:,:) , ndim_T , ndex_T ) ! salt content855 CALL histwrite( nid_T, "sosstsst", it, ts n(:,:,1,jp_tem) * e3t_n(:,:,1) , ndim_hT, ndex_hT ) ! sea surface heat content856 CALL histwrite( nid_T, "sosaline", it, ts n(:,:,1,jp_sal) * e3t_n(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity content853 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! heat content 854 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! salt content 855 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface heat content 856 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity content 857 857 ELSE 858 CALL histwrite( nid_T, "votemper", it, ts n(:,:,:,jp_tem) , ndim_T , ndex_T ) ! temperature859 CALL histwrite( nid_T, "vosaline", it, ts n(:,:,:,jp_sal) , ndim_T , ndex_T ) ! salinity860 CALL histwrite( nid_T, "sosstsst", it, ts n(:,:,1,jp_tem) , ndim_hT, ndex_hT ) ! sea surface temperature861 CALL histwrite( nid_T, "sosaline", it, ts n(:,:,1,jp_sal) , ndim_hT, ndex_hT ) ! sea surface salinity858 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) , ndim_T , ndex_T ) ! temperature 859 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) , ndim_T , ndex_T ) ! salinity 860 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) , ndim_hT, ndex_hT ) ! sea surface temperature 861 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity 862 862 ENDIF 863 863 IF( .NOT.ln_linssh ) THEN 864 zw3d(:,:,:) = ( ( e3t _n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2865 CALL histwrite( nid_T, "vovvle3t", it, e3t _n (:,:,:) , ndim_T , ndex_T ) ! level thickness866 CALL histwrite( nid_T, "vovvldep", it, gdept _n(:,:,:) , ndim_T , ndex_T ) ! t-point depth864 zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 865 CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm) , ndim_T , ndex_T ) ! level thickness 866 CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T ) ! t-point depth 867 867 CALL histwrite( nid_T, "vovvldef", it, zw3d , ndim_T , ndex_T ) ! level thickness deformation 868 868 ENDIF 869 CALL histwrite( nid_T, "sossheig", it, ssh n, ndim_hT, ndex_hT ) ! sea surface height869 CALL histwrite( nid_T, "sossheig", it, ssh(:,:,Kmm) , ndim_hT, ndex_hT ) ! sea surface height 870 870 CALL histwrite( nid_T, "sowaflup", it, ( emp-rnf ) , ndim_hT, ndex_hT ) ! upward water flux 871 871 CALL histwrite( nid_T, "sorunoff", it, rnf , ndim_hT, ndex_hT ) ! river runoffs … … 874 874 ! in linear free surface case) 875 875 IF( ln_linssh ) THEN 876 zw2d(:,:) = emp (:,:) * ts n(:,:,1,jp_tem)876 zw2d(:,:) = emp (:,:) * ts(:,:,1,jp_tem,Kmm) 877 877 CALL histwrite( nid_T, "sosst_cd", it, zw2d, ndim_hT, ndex_hT ) ! c/d term on sst 878 zw2d(:,:) = emp (:,:) * ts n(:,:,1,jp_sal)878 zw2d(:,:) = emp (:,:) * ts(:,:,1,jp_sal,Kmm) 879 879 CALL histwrite( nid_T, "sosss_cd", it, zw2d, ndim_hT, ndex_hT ) ! c/d term on sss 880 880 ENDIF … … 912 912 CALL histwrite( nid_T, "sohefldp", it, qrp , ndim_hT, ndex_hT ) ! heat flux damping 913 913 CALL histwrite( nid_T, "sowafldp", it, erp , ndim_hT, ndex_hT ) ! freshwater flux damping 914 zw2d(:,:) = erp(:,:) * ts n(:,:,1,jp_sal) * tmask(:,:,1)914 zw2d(:,:) = erp(:,:) * ts(:,:,1,jp_sal,Kmm) * tmask(:,:,1) 915 915 CALL histwrite( nid_T, "sosafldp", it, zw2d , ndim_hT, ndex_hT ) ! salt flux damping 916 916 ENDIF … … 925 925 #endif 926 926 927 CALL histwrite( nid_U, "vozocrtx", it, u n, ndim_U , ndex_U ) ! i-current927 CALL histwrite( nid_U, "vozocrtx", it, uu(:,:,:,Kmm) , ndim_U , ndex_U ) ! i-current 928 928 CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress 929 929 930 CALL histwrite( nid_V, "vomecrty", it, v n, ndim_V , ndex_V ) ! j-current930 CALL histwrite( nid_V, "vomecrty", it, vv(:,:,:,Kmm) , ndim_V , ndex_V ) ! j-current 931 931 CALL histwrite( nid_V, "sometauy", it, vtau , ndim_hV, ndex_hV ) ! j-wind stress 932 932 933 CALL histwrite( nid_W, "vovecrtz", it, w n, ndim_T, ndex_T ) ! vert. current933 CALL histwrite( nid_W, "vovecrtz", it, ww , ndim_T, ndex_T ) ! vert. current 934 934 CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. 935 935 CALL histwrite( nid_W, "votkeavm", it, avm , ndim_T, ndex_T ) ! T vert. eddy visc. coef. … … 958 958 #endif 959 959 960 SUBROUTINE dia_wri_state( cdfile_name )960 SUBROUTINE dia_wri_state( Kmm, cdfile_name ) 961 961 !!--------------------------------------------------------------------- 962 962 !! *** ROUTINE dia_wri_state *** … … 971 971 !! File 'output.abort.nc' is created in case of abnormal job end 972 972 !!---------------------------------------------------------------------- 973 INTEGER , INTENT( in ) :: Kmm ! time level index 973 974 CHARACTER (len=* ), INTENT( in ) :: cdfile_name ! name of the file created 974 975 !! … … 987 988 #endif 988 989 989 CALL iom_rstput( 0, 0, inum, 'votemper', ts n(:,:,:,jp_tem) ) ! now temperature990 CALL iom_rstput( 0, 0, inum, 'vosaline', ts n(:,:,:,jp_sal) ) ! now salinity991 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh n) ! sea surface height992 CALL iom_rstput( 0, 0, inum, 'vozocrtx', u n) ! now i-velocity993 CALL iom_rstput( 0, 0, inum, 'vomecrty', v n) ! now j-velocity994 CALL iom_rstput( 0, 0, inum, 'vovecrtz', w n) ! now k-velocity990 CALL iom_rstput( 0, 0, inum, 'votemper', ts(:,:,:,jp_tem,Kmm) ) ! now temperature 991 CALL iom_rstput( 0, 0, inum, 'vosaline', ts(:,:,:,jp_sal,Kmm) ) ! now salinity 992 CALL iom_rstput( 0, 0, inum, 'sossheig', ssh(:,:,Kmm) ) ! sea surface height 993 CALL iom_rstput( 0, 0, inum, 'vozocrtx', uu(:,:,:,Kmm) ) ! now i-velocity 994 CALL iom_rstput( 0, 0, inum, 'vomecrty', vv(:,:,:,Kmm) ) ! now j-velocity 995 CALL iom_rstput( 0, 0, inum, 'vovecrtz', ww ) ! now k-velocity 995 996 IF( ALLOCATED(ahtu) ) THEN 996 997 CALL iom_rstput( 0, 0, inum, 'ahtu', ahtu ) ! aht at u-point … … 1008 1009 CALL iom_rstput( 0, 0, inum, 'sometauy', vtau ) ! j-wind stress 1009 1010 IF( .NOT.ln_linssh ) THEN 1010 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept _n) ! T-cell depth1011 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t _n) ! T-cell thickness1011 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm) ) ! T-cell depth 1012 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm) ) ! T-cell thickness 1012 1013 END IF 1013 1014 IF( ln_wave .AND. ln_sdw ) THEN -
NEMO/trunk/tests/CANAL/MY_SRC/domvvl.F90
r11536 r12377 8 8 !! 3.3 ! 2011-10 (M. Leclair) totally rewrote domvvl: vvl option includes z_star and z_tilde coordinates 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 10 11 !!---------------------------------------------------------------------- 11 12 … … 13 14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 14 15 !! dom_vvl_sf_nxt : Compute next vertical scale factors 15 !! dom_vvl_sf_ swp: Swap vertical scale factors and update the vertical grid16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 16 17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 17 18 !! dom_vvl_rst : read/write restart file … … 37 38 PUBLIC dom_vvl_init ! called by domain.F90 38 39 PUBLIC dom_vvl_sf_nxt ! called by step.F90 39 PUBLIC dom_vvl_sf_ swp! called by step.F9040 PUBLIC dom_vvl_sf_update ! called by step.F90 40 41 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 41 42 … … 61 62 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 62 63 63 !! * Substitutions64 # include "vectopt_loop_substitute.h90"65 64 !!---------------------------------------------------------------------- 66 65 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 93 92 94 93 95 SUBROUTINE dom_vvl_init 94 SUBROUTINE dom_vvl_init( Kbb, Kmm, Kaa ) 96 95 !!---------------------------------------------------------------------- 97 96 !! *** ROUTINE dom_vvl_init *** … … 104 103 !! 105 104 !! ** Action : - e3t_(n/b) and tilde_e3t_(n/b) 106 !! - Regrid: e3 (u/v)_n107 !! e3 (u/v)_b108 !! e3w _n109 !! e3 (u/v)w_b110 !! e3 (u/v)w_n111 !! gdept _n, gdepw_n and gde3w_n105 !! - Regrid: e3[u/v](:,:,:,Kmm) 106 !! e3[u/v](:,:,:,Kmm) 107 !! e3w(:,:,:,Kmm) 108 !! e3[u/v]w_b 109 !! e3[u/v]w_n 110 !! gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm) and gde3w 112 111 !! - h(t/u/v)_0 113 112 !! - frq_rst_e3t and frq_rst_hdv … … 115 114 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 116 115 !!---------------------------------------------------------------------- 116 INTEGER, INTENT(in) :: Kbb, Kmm, Kaa 117 ! 117 118 INTEGER :: ji, jj, jk 118 119 INTEGER :: ii0, ii1, ij0, ij1 … … 130 131 ! 131 132 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf 132 CALL dom_vvl_rst( nit000, 'READ' )133 e3t _a(:,:,jpk) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all133 CALL dom_vvl_rst( nit000, Kbb, Kmm, 'READ' ) 134 e3t(:,:,jpk,Kaa) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all 134 135 ! 135 136 ! !== Set of all other vertical scale factors ==! (now and before) 136 137 ! ! Horizontal interpolation of e3t 137 CALL dom_vvl_interpol( e3t _b(:,:,:), e3u_b(:,:,:), 'U' ) ! from T to U138 CALL dom_vvl_interpol( e3t _n(:,:,:), e3u_n(:,:,:), 'U' )139 CALL dom_vvl_interpol( e3t _b(:,:,:), e3v_b(:,:,:), 'V' ) ! from T to V140 CALL dom_vvl_interpol( e3t _n(:,:,:), e3v_n(:,:,:), 'V' )141 CALL dom_vvl_interpol( e3u _n(:,:,:), e3f_n(:,:,:), 'F' ) ! from U to F138 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3u(:,:,:,Kbb), 'U' ) ! from T to U 139 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3u(:,:,:,Kmm), 'U' ) 140 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3v(:,:,:,Kbb), 'V' ) ! from T to V 141 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3v(:,:,:,Kmm), 'V' ) 142 CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3f(:,:,:), 'F' ) ! from U to F 142 143 ! ! Vertical interpolation of e3t,u,v 143 CALL dom_vvl_interpol( e3t _n(:,:,:), e3w_n (:,:,:), 'W' ) ! from T to W144 CALL dom_vvl_interpol( e3t _b(:,:,:), e3w_b (:,:,:), 'W' )145 CALL dom_vvl_interpol( e3u _n(:,:,:), e3uw_n(:,:,:), 'UW' ) ! from U to UW146 CALL dom_vvl_interpol( e3u _b(:,:,:), e3uw_b(:,:,:), 'UW' )147 CALL dom_vvl_interpol( e3v _n(:,:,:), e3vw_n(:,:,:), 'VW' ) ! from V to UW148 CALL dom_vvl_interpol( e3v _b(:,:,:), e3vw_b(:,:,:), 'VW' )144 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3w (:,:,:,Kmm), 'W' ) ! from T to W 145 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3w (:,:,:,Kbb), 'W' ) 146 CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3uw(:,:,:,Kmm), 'UW' ) ! from U to UW 147 CALL dom_vvl_interpol( e3u(:,:,:,Kbb), e3uw(:,:,:,Kbb), 'UW' ) 148 CALL dom_vvl_interpol( e3v(:,:,:,Kmm), e3vw(:,:,:,Kmm), 'VW' ) ! from V to UW 149 CALL dom_vvl_interpol( e3v(:,:,:,Kbb), e3vw(:,:,:,Kbb), 'VW' ) 149 150 150 151 ! We need to define e3[tuv]_a for AGRIF initialisation (should not be a problem for the restartability...) 151 e3t _a(:,:,:) = e3t_n(:,:,:)152 e3u _a(:,:,:) = e3u_n(:,:,:)153 e3v _a(:,:,:) = e3v_n(:,:,:)152 e3t(:,:,:,Kaa) = e3t(:,:,:,Kmm) 153 e3u(:,:,:,Kaa) = e3u(:,:,:,Kmm) 154 e3v(:,:,:,Kaa) = e3v(:,:,:,Kmm) 154 155 ! 155 156 ! !== depth of t and w-point ==! (set the isf depth as it is in the initial timestep) 156 gdept _n(:,:,1) = 0.5_wp * e3w_n(:,:,1) ! reference to the ocean surface (used for MLD and light penetration)157 gdepw _n(:,:,1) = 0.0_wp158 gde3w _n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) ! reference to a common level z=0 for hpg159 gdept _b(:,:,1) = 0.5_wp * e3w_b(:,:,1)160 gdepw _b(:,:,1) = 0.0_wp157 gdept(:,:,1,Kmm) = 0.5_wp * e3w(:,:,1,Kmm) ! reference to the ocean surface (used for MLD and light penetration) 158 gdepw(:,:,1,Kmm) = 0.0_wp 159 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) ! reference to a common level z=0 for hpg 160 gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 161 gdepw(:,:,1,Kbb) = 0.0_wp 161 162 DO jk = 2, jpk ! vertical sum 162 163 DO jj = 1,jpj … … 165 166 ! ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) 166 167 ! ! 0.5 where jk = mikt 167 !!gm ??????? BUG ? gdept _n as well as gde3w_ndoes not include the thickness of ISF ??168 !!gm ??????? BUG ? gdept(:,:,:,Kmm) as well as gde3w does not include the thickness of ISF ?? 168 169 zcoef = ( tmask(ji,jj,jk) - wmask(ji,jj,jk) ) 169 gdepw _n(ji,jj,jk) = gdepw_n(ji,jj,jk-1) + e3t_n(ji,jj,jk-1)170 gdept _n(ji,jj,jk) = zcoef * ( gdepw_n(ji,jj,jk ) + 0.5 * e3w_n(ji,jj,jk)) &171 & + (1-zcoef) * ( gdept _n(ji,jj,jk-1) + e3w_n(ji,jj,jk))172 gde3w _n(ji,jj,jk) = gdept_n(ji,jj,jk) - sshn(ji,jj)173 gdepw _b(ji,jj,jk) = gdepw_b(ji,jj,jk-1) + e3t_b(ji,jj,jk-1)174 gdept _b(ji,jj,jk) = zcoef * ( gdepw_b(ji,jj,jk ) + 0.5 * e3w_b(ji,jj,jk)) &175 & + (1-zcoef) * ( gdept _b(ji,jj,jk-1) + e3w_b(ji,jj,jk))170 gdepw(ji,jj,jk,Kmm) = gdepw(ji,jj,jk-1,Kmm) + e3t(ji,jj,jk-1,Kmm) 171 gdept(ji,jj,jk,Kmm) = zcoef * ( gdepw(ji,jj,jk ,Kmm) + 0.5 * e3w(ji,jj,jk,Kmm)) & 172 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kmm) + e3w(ji,jj,jk,Kmm)) 173 gde3w(ji,jj,jk) = gdept(ji,jj,jk,Kmm) - ssh(ji,jj,Kmm) 174 gdepw(ji,jj,jk,Kbb) = gdepw(ji,jj,jk-1,Kbb) + e3t(ji,jj,jk-1,Kbb) 175 gdept(ji,jj,jk,Kbb) = zcoef * ( gdepw(ji,jj,jk ,Kbb) + 0.5 * e3w(ji,jj,jk,Kbb)) & 176 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kbb) + e3w(ji,jj,jk,Kbb)) 176 177 END DO 177 178 END DO … … 179 180 ! 180 181 ! !== thickness of the water column !! (ocean portion only) 181 ht _n(:,:) = e3t_n(:,:,1) * tmask(:,:,1) !!gm BUG : this should be 1/2 * e3w(k=1) ....182 hu _b(:,:) = e3u_b(:,:,1) * umask(:,:,1)183 hu _n(:,:) = e3u_n(:,:,1) * umask(:,:,1)184 hv _b(:,:) = e3v_b(:,:,1) * vmask(:,:,1)185 hv _n(:,:) = e3v_n(:,:,1) * vmask(:,:,1)182 ht(:,:) = e3t(:,:,1,Kmm) * tmask(:,:,1) !!gm BUG : this should be 1/2 * e3w(k=1) .... 183 hu(:,:,Kbb) = e3u(:,:,1,Kbb) * umask(:,:,1) 184 hu(:,:,Kmm) = e3u(:,:,1,Kmm) * umask(:,:,1) 185 hv(:,:,Kbb) = e3v(:,:,1,Kbb) * vmask(:,:,1) 186 hv(:,:,Kmm) = e3v(:,:,1,Kmm) * vmask(:,:,1) 186 187 DO jk = 2, jpkm1 187 ht _n(:,:) = ht_n(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk)188 hu _b(:,:) = hu_b(:,:) + e3u_b(:,:,jk) * umask(:,:,jk)189 hu _n(:,:) = hu_n(:,:) + e3u_n(:,:,jk) * umask(:,:,jk)190 hv _b(:,:) = hv_b(:,:) + e3v_b(:,:,jk) * vmask(:,:,jk)191 hv _n(:,:) = hv_n(:,:) + e3v_n(:,:,jk) * vmask(:,:,jk)188 ht(:,:) = ht(:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 189 hu(:,:,Kbb) = hu(:,:,Kbb) + e3u(:,:,jk,Kbb) * umask(:,:,jk) 190 hu(:,:,Kmm) = hu(:,:,Kmm) + e3u(:,:,jk,Kmm) * umask(:,:,jk) 191 hv(:,:,Kbb) = hv(:,:,Kbb) + e3v(:,:,jk,Kbb) * vmask(:,:,jk) 192 hv(:,:,Kmm) = hv(:,:,Kmm) + e3v(:,:,jk,Kmm) * vmask(:,:,jk) 192 193 END DO 193 194 ! 194 195 ! !== inverse of water column thickness ==! (u- and v- points) 195 r1_hu _b(:,:) = ssumask(:,:) / ( hu_b(:,:) + 1._wp - ssumask(:,:) ) ! _i mask due to ISF196 r1_hu _n(:,:) = ssumask(:,:) / ( hu_n(:,:) + 1._wp - ssumask(:,:) )197 r1_hv _b(:,:) = ssvmask(:,:) / ( hv_b(:,:) + 1._wp - ssvmask(:,:) )198 r1_hv _n(:,:) = ssvmask(:,:) / ( hv_n(:,:) + 1._wp - ssvmask(:,:) )196 r1_hu(:,:,Kbb) = ssumask(:,:) / ( hu(:,:,Kbb) + 1._wp - ssumask(:,:) ) ! _i mask due to ISF 197 r1_hu(:,:,Kmm) = ssumask(:,:) / ( hu(:,:,Kmm) + 1._wp - ssumask(:,:) ) 198 r1_hv(:,:,Kbb) = ssvmask(:,:) / ( hv(:,:,Kbb) + 1._wp - ssvmask(:,:) ) 199 r1_hv(:,:,Kmm) = ssvmask(:,:) / ( hv(:,:,Kmm) + 1._wp - ssvmask(:,:) ) 199 200 200 201 ! !== z_tilde coordinate case ==! (Restoring frequencies) … … 266 267 267 268 268 SUBROUTINE dom_vvl_sf_nxt( kt, kcall )269 SUBROUTINE dom_vvl_sf_nxt( kt, Kbb, Kmm, Kaa, kcall ) 269 270 !!---------------------------------------------------------------------- 270 271 !! *** ROUTINE dom_vvl_sf_nxt *** … … 288 289 !! Reference : Leclair, M., and Madec, G. 2011, Ocean Modelling. 289 290 !!---------------------------------------------------------------------- 290 INTEGER, INTENT( in ) :: kt ! time step 291 INTEGER, INTENT( in ), OPTIONAL :: kcall ! optional argument indicating call sequence 291 INTEGER, INTENT( in ) :: kt ! time step 292 INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time step 293 INTEGER, INTENT( in ), OPTIONAL :: kcall ! optional argument indicating call sequence 292 294 ! 293 295 INTEGER :: ji, jj, jk ! dummy loop indices … … 321 323 ! ! --------------------------------------------- ! 322 324 ! 323 z_scale(:,:) = ( ssh a(:,:) - sshb(:,:) ) * ssmask(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - ssmask(:,:) )325 z_scale(:,:) = ( ssh(:,:,Kaa) - ssh(:,:,Kbb) ) * ssmask(:,:) / ( ht_0(:,:) + ssh(:,:,Kmm) + 1. - ssmask(:,:) ) 324 326 DO jk = 1, jpkm1 325 ! formally this is the same as e3t _a= e3t_0*(1+ssha/ht_0)326 e3t _a(:,:,jk) = e3t_b(:,:,jk) + e3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk)327 ! formally this is the same as e3t(:,:,:,Kaa) = e3t_0*(1+ssha/ht_0) 328 e3t(:,:,jk,Kaa) = e3t(:,:,jk,Kbb) + e3t(:,:,jk,Kmm) * z_scale(:,:) * tmask(:,:,jk) 327 329 END DO 328 330 ! … … 337 339 zht(:,:) = 0._wp 338 340 DO jk = 1, jpkm1 339 zhdiv(:,:) = zhdiv(:,:) + e3t _n(:,:,jk) * hdivn(:,:,jk)340 zht (:,:) = zht (:,:) + e3t _n(:,:,jk) * tmask(:,:,jk)341 zhdiv(:,:) = zhdiv(:,:) + e3t(:,:,jk,Kmm) * hdiv(:,:,jk) 342 zht (:,:) = zht (:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 341 343 END DO 342 344 zhdiv(:,:) = zhdiv(:,:) / ( zht(:,:) + 1. - tmask_i(:,:) ) … … 348 350 DO jk = 1, jpkm1 349 351 hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:) & 350 & * ( hdiv_lf(:,:,jk) - e3t _n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) )352 & * ( hdiv_lf(:,:,jk) - e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) ) 351 353 END DO 352 354 ENDIF … … 361 363 IF( ln_vvl_ztilde ) THEN ! z_tilde case 362 364 DO jk = 1, jpkm1 363 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - ( e3t _n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) )365 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - ( e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) ) 364 366 END DO 365 367 ELSE ! layer case 366 368 DO jk = 1, jpkm1 367 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - e3t _n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) * tmask(:,:,jk)369 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) * tmask(:,:,jk) 368 370 END DO 369 371 ENDIF … … 476 478 zht(:,:) = zht(:,:) + tilde_e3t_a(:,:,jk) * tmask(:,:,jk) 477 479 END DO 478 z_scale(:,:) = - zht(:,:) / ( ht_0(:,:) + ssh n(:,:) + 1. - ssmask(:,:) )480 z_scale(:,:) = - zht(:,:) / ( ht_0(:,:) + ssh(:,:,Kmm) + 1. - ssmask(:,:) ) 479 481 DO jk = 1, jpkm1 480 dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + e3t _n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk)482 dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + e3t(:,:,jk,Kmm) * z_scale(:,:) * tmask(:,:,jk) 481 483 END DO 482 484 … … 486 488 ! ! ---baroclinic part--------- ! 487 489 DO jk = 1, jpkm1 488 e3t _a(:,:,jk) = e3t_a(:,:,jk) + dtilde_e3t_a(:,:,jk) * tmask(:,:,jk)490 e3t(:,:,jk,Kaa) = e3t(:,:,jk,Kaa) + dtilde_e3t_a(:,:,jk) * tmask(:,:,jk) 489 491 END DO 490 492 ENDIF … … 501 503 zht(:,:) = 0.0_wp 502 504 DO jk = 1, jpkm1 503 zht(:,:) = zht(:,:) + e3t _n(:,:,jk) * tmask(:,:,jk)504 END DO 505 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh n(:,:) - zht(:,:) ) )505 zht(:,:) = zht(:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 506 END DO 507 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh(:,:,Kmm) - zht(:,:) ) ) 506 508 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 507 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshn-SUM(e3t _n))) =', z_tmax509 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshn-SUM(e3t(:,:,:,Kmm)))) =', z_tmax 508 510 ! 509 511 zht(:,:) = 0.0_wp 510 512 DO jk = 1, jpkm1 511 zht(:,:) = zht(:,:) + e3t _a(:,:,jk) * tmask(:,:,jk)512 END DO 513 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh a(:,:) - zht(:,:) ) )513 zht(:,:) = zht(:,:) + e3t(:,:,jk,Kaa) * tmask(:,:,jk) 514 END DO 515 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh(:,:,Kaa) - zht(:,:) ) ) 514 516 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 515 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+ssha-SUM(e3t _a))) =', z_tmax517 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+ssha-SUM(e3t(:,:,:,Kaa)))) =', z_tmax 516 518 ! 517 519 zht(:,:) = 0.0_wp 518 520 DO jk = 1, jpkm1 519 zht(:,:) = zht(:,:) + e3t _b(:,:,jk) * tmask(:,:,jk)520 END DO 521 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh b(:,:) - zht(:,:) ) )521 zht(:,:) = zht(:,:) + e3t(:,:,jk,Kbb) * tmask(:,:,jk) 522 END DO 523 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh(:,:,Kbb) - zht(:,:) ) ) 522 524 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 523 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshb-SUM(e3t _b))) =', z_tmax524 ! 525 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh b(:,:) ) )525 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshb-SUM(e3t(:,:,:,Kbb)))) =', z_tmax 526 ! 527 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh(:,:,Kbb) ) ) 526 528 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 527 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh b))) =', z_tmax528 ! 529 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh n(:,:) ) )529 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh(:,:,Kbb)))) =', z_tmax 530 ! 531 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh(:,:,Kmm) ) ) 530 532 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 531 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh n))) =', z_tmax532 ! 533 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh a(:,:) ) )533 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh(:,:,Kmm)))) =', z_tmax 534 ! 535 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh(:,:,Kaa) ) ) 534 536 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 535 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh a))) =', z_tmax537 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh(:,:,Kaa)))) =', z_tmax 536 538 END IF 537 539 … … 540 542 ! *********************************** ! 541 543 542 CALL dom_vvl_interpol( e3t _a(:,:,:), e3u_a(:,:,:), 'U' )543 CALL dom_vvl_interpol( e3t _a(:,:,:), e3v_a(:,:,:), 'V' )544 CALL dom_vvl_interpol( e3t(:,:,:,Kaa), e3u(:,:,:,Kaa), 'U' ) 545 CALL dom_vvl_interpol( e3t(:,:,:,Kaa), e3v(:,:,:,Kaa), 'V' ) 544 546 545 547 ! *********************************** ! … … 547 549 ! *********************************** ! 548 550 549 hu _a(:,:) = e3u_a(:,:,1) * umask(:,:,1)550 hv _a(:,:) = e3v_a(:,:,1) * vmask(:,:,1)551 hu(:,:,Kaa) = e3u(:,:,1,Kaa) * umask(:,:,1) 552 hv(:,:,Kaa) = e3v(:,:,1,Kaa) * vmask(:,:,1) 551 553 DO jk = 2, jpkm1 552 hu _a(:,:) = hu_a(:,:) + e3u_a(:,:,jk) * umask(:,:,jk)553 hv _a(:,:) = hv_a(:,:) + e3v_a(:,:,jk) * vmask(:,:,jk)554 hu(:,:,Kaa) = hu(:,:,Kaa) + e3u(:,:,jk,Kaa) * umask(:,:,jk) 555 hv(:,:,Kaa) = hv(:,:,Kaa) + e3v(:,:,jk,Kaa) * vmask(:,:,jk) 554 556 END DO 555 557 ! ! Inverse of the local depth 556 558 !!gm BUG ? don't understand the use of umask_i here ..... 557 r1_hu _a(:,:) = ssumask(:,:) / ( hu_a(:,:) + 1._wp - ssumask(:,:) )558 r1_hv _a(:,:) = ssvmask(:,:) / ( hv_a(:,:) + 1._wp - ssvmask(:,:) )559 r1_hu(:,:,Kaa) = ssumask(:,:) / ( hu(:,:,Kaa) + 1._wp - ssumask(:,:) ) 560 r1_hv(:,:,Kaa) = ssvmask(:,:) / ( hv(:,:,Kaa) + 1._wp - ssvmask(:,:) ) 559 561 ! 560 562 IF( ln_timing ) CALL timing_stop('dom_vvl_sf_nxt') … … 563 565 564 566 565 SUBROUTINE dom_vvl_sf_ swp( kt)566 !!---------------------------------------------------------------------- 567 !! *** ROUTINE dom_vvl_sf_ swp***567 SUBROUTINE dom_vvl_sf_update( kt, Kbb, Kmm, Kaa ) 568 !!---------------------------------------------------------------------- 569 !! *** ROUTINE dom_vvl_sf_update *** 568 570 !! 569 !! ** Purpose : compute time filter and swap of scale factors571 !! ** Purpose : for z tilde case: compute time filter and swap of scale factors 570 572 !! compute all depths and related variables for next time step 571 573 !! write outputs and restart file 572 574 !! 573 !! ** Method : - swap of e3t with trick for volume/tracer conservation 575 !! ** Method : - swap of e3t with trick for volume/tracer conservation (ONLY FOR Z TILDE CASE) 574 576 !! - reconstruct scale factor at other grid points (interpolate) 575 577 !! - recompute depths and water height fields 576 578 !! 577 !! ** Action : - e3t_(b/n), tilde_e3t_(b/n) and e3(u/v)_nready for next time step579 !! ** Action : - tilde_e3t_(b/n) ready for next time step 578 580 !! - Recompute: 579 581 !! e3(u/v)_b 580 !! e3w _n582 !! e3w(:,:,:,Kmm) 581 583 !! e3(u/v)w_b 582 584 !! e3(u/v)w_n 583 !! gdept _n, gdepw_n and gde3w_n585 !! gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm) and gde3w 584 586 !! h(u/v) and h(u/v)r 585 587 !! … … 587 589 !! Leclair, M., and G. Madec, 2011, Ocean Modelling. 588 590 !!---------------------------------------------------------------------- 589 INTEGER, INTENT( in ) :: kt ! time step 591 INTEGER, INTENT( in ) :: kt ! time step 592 INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time level indices 590 593 ! 591 594 INTEGER :: ji, jj, jk ! dummy loop indices … … 595 598 IF( ln_linssh ) RETURN ! No calculation in linear free surface 596 599 ! 597 IF( ln_timing ) CALL timing_start('dom_vvl_sf_ swp')600 IF( ln_timing ) CALL timing_start('dom_vvl_sf_update') 598 601 ! 599 602 IF( kt == nit000 ) THEN 600 603 IF(lwp) WRITE(numout,*) 601 IF(lwp) WRITE(numout,*) 'dom_vvl_sf_ swp : - time filter and swap of scale factors'602 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ - interpolate scale factors and compute depths for next time step'604 IF(lwp) WRITE(numout,*) 'dom_vvl_sf_update : - interpolate scale factors and compute depths for next time step' 605 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~' 603 606 ENDIF 604 607 ! … … 615 618 tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) 616 619 ENDIF 617 gdept _b(:,:,:) = gdept_n(:,:,:)618 gdepw _b(:,:,:) = gdepw_n(:,:,:)619 620 e3t _n(:,:,:) = e3t_a(:,:,:)621 e3u _n(:,:,:) = e3u_a(:,:,:)622 e3v _n(:,:,:) = e3v_a(:,:,:)620 gdept(:,:,:,Kbb) = gdept(:,:,:,Kmm) 621 gdepw(:,:,:,Kbb) = gdepw(:,:,:,Kmm) 622 623 e3t(:,:,:,Kmm) = e3t(:,:,:,Kaa) 624 e3u(:,:,:,Kmm) = e3u(:,:,:,Kaa) 625 e3v(:,:,:,Kmm) = e3v(:,:,:,Kaa) 623 626 624 627 ! Compute all missing vertical scale factor and depths … … 626 629 ! Horizontal scale factor interpolations 627 630 ! -------------------------------------- 628 ! - ML - e3u _b and e3v_b are allready computed in dynnxt629 ! - JC - hu _b, hv_b, hur_b, hvr_b also631 ! - ML - e3u(:,:,:,Kbb) and e3v(:,:,:,Kbb) are already computed in dynnxt 632 ! - JC - hu(:,:,:,Kbb), hv(:,:,:,:,Kbb), hur_b, hvr_b also 630 633 631 CALL dom_vvl_interpol( e3u _n(:,:,:), e3f_n(:,:,:), 'F' )634 CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3f(:,:,:), 'F' ) 632 635 633 636 ! Vertical scale factor interpolations 634 CALL dom_vvl_interpol( e3t _n(:,:,:), e3w_n(:,:,:), 'W' )635 CALL dom_vvl_interpol( e3u _n(:,:,:), e3uw_n(:,:,:), 'UW' )636 CALL dom_vvl_interpol( e3v _n(:,:,:), e3vw_n(:,:,:), 'VW' )637 CALL dom_vvl_interpol( e3t _b(:,:,:), e3w_b(:,:,:), 'W' )638 CALL dom_vvl_interpol( e3u _b(:,:,:), e3uw_b(:,:,:), 'UW' )639 CALL dom_vvl_interpol( e3v _b(:,:,:), e3vw_b(:,:,:), 'VW' )637 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3w(:,:,:,Kmm), 'W' ) 638 CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3uw(:,:,:,Kmm), 'UW' ) 639 CALL dom_vvl_interpol( e3v(:,:,:,Kmm), e3vw(:,:,:,Kmm), 'VW' ) 640 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3w(:,:,:,Kbb), 'W' ) 641 CALL dom_vvl_interpol( e3u(:,:,:,Kbb), e3uw(:,:,:,Kbb), 'UW' ) 642 CALL dom_vvl_interpol( e3v(:,:,:,Kbb), e3vw(:,:,:,Kbb), 'VW' ) 640 643 641 644 ! t- and w- points depth (set the isf depth as it is in the initial step) 642 gdept _n(:,:,1) = 0.5_wp * e3w_n(:,:,1)643 gdepw _n(:,:,1) = 0.0_wp644 gde3w _n(:,:,1) = gdept_n(:,:,1) - sshn(:,:)645 gdept(:,:,1,Kmm) = 0.5_wp * e3w(:,:,1,Kmm) 646 gdepw(:,:,1,Kmm) = 0.0_wp 647 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 645 648 DO jk = 2, jpk 646 649 DO jj = 1,jpj … … 649 652 ! 1 for jk = mikt 650 653 zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) 651 gdepw _n(ji,jj,jk) = gdepw_n(ji,jj,jk-1) + e3t_n(ji,jj,jk-1)652 gdept _n(ji,jj,jk) = zcoef * ( gdepw_n(ji,jj,jk ) + 0.5 * e3w_n(ji,jj,jk) ) &653 & + (1-zcoef) * ( gdept _n(ji,jj,jk-1) + e3w_n(ji,jj,jk) )654 gde3w _n(ji,jj,jk) = gdept_n(ji,jj,jk) - sshn(ji,jj)654 gdepw(ji,jj,jk,Kmm) = gdepw(ji,jj,jk-1,Kmm) + e3t(ji,jj,jk-1,Kmm) 655 gdept(ji,jj,jk,Kmm) = zcoef * ( gdepw(ji,jj,jk ,Kmm) + 0.5 * e3w(ji,jj,jk,Kmm) ) & 656 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kmm) + e3w(ji,jj,jk,Kmm) ) 657 gde3w(ji,jj,jk) = gdept(ji,jj,jk,Kmm) - ssh(ji,jj,Kmm) 655 658 END DO 656 659 END DO … … 659 662 ! Local depth and Inverse of the local depth of the water 660 663 ! ------------------------------------------------------- 661 hu_n(:,:) = hu_a(:,:) ; r1_hu_n(:,:) = r1_hu_a(:,:) 662 hv_n(:,:) = hv_a(:,:) ; r1_hv_n(:,:) = r1_hv_a(:,:) 663 ! 664 ht_n(:,:) = e3t_n(:,:,1) * tmask(:,:,1) 664 ! 665 ht(:,:) = e3t(:,:,1,Kmm) * tmask(:,:,1) 665 666 DO jk = 2, jpkm1 666 ht _n(:,:) = ht_n(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk)667 ht(:,:) = ht(:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 667 668 END DO 668 669 669 670 ! write restart file 670 671 ! ================== 671 IF( lrst_oce ) CALL dom_vvl_rst( kt, 'WRITE' )672 ! 673 IF( ln_timing ) CALL timing_stop('dom_vvl_sf_ swp')674 ! 675 END SUBROUTINE dom_vvl_sf_ swp672 IF( lrst_oce ) CALL dom_vvl_rst( kt, Kbb, Kmm, 'WRITE' ) 673 ! 674 IF( ln_timing ) CALL timing_stop('dom_vvl_sf_update') 675 ! 676 END SUBROUTINE dom_vvl_sf_update 676 677 677 678 … … 783 784 784 785 785 SUBROUTINE dom_vvl_rst( kt, cdrw )786 SUBROUTINE dom_vvl_rst( kt, Kbb, Kmm, cdrw ) 786 787 !!--------------------------------------------------------------------- 787 788 !! *** ROUTINE dom_vvl_rst *** … … 795 796 !! they are set to 0. 796 797 !!---------------------------------------------------------------------- 797 INTEGER , INTENT(in) :: kt ! ocean time-step 798 CHARACTER(len=*), INTENT(in) :: cdrw ! "READ"/"WRITE" flag 798 INTEGER , INTENT(in) :: kt ! ocean time-step 799 INTEGER , INTENT(in) :: Kbb, Kmm ! ocean time level indices 800 CHARACTER(len=*), INTENT(in) :: cdrw ! "READ"/"WRITE" flag 799 801 ! 800 802 INTEGER :: ji, jj, jk … … 806 808 IF( ln_rstart ) THEN !* Read the restart file 807 809 CALL rst_read_open ! open the restart file if necessary 808 CALL iom_get( numror, jpdom_autoglo, 'sshn' , ssh n, ldxios = lrxios )810 CALL iom_get( numror, jpdom_autoglo, 'sshn' , ssh(:,:,Kmm), ldxios = lrxios ) 809 811 ! 810 812 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 817 819 ! ! --------- ! 818 820 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 819 CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t _b(:,:,:), ldxios = lrxios )820 CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t _n(:,:,:), ldxios = lrxios )821 CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 822 CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 821 823 ! needed to restart if land processor not computed 822 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t _b and e3t_nfound in restart files'824 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' 823 825 WHERE ( tmask(:,:,:) == 0.0_wp ) 824 e3t _n(:,:,:) = e3t_0(:,:,:)825 e3t _b(:,:,:) = e3t_0(:,:,:)826 e3t(:,:,:,Kmm) = e3t_0(:,:,:) 827 e3t(:,:,:,Kbb) = e3t_0(:,:,:) 826 828 END WHERE 827 829 IF( neuler == 0 ) THEN 828 e3t _b(:,:,:) = e3t_n(:,:,:)830 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 829 831 ENDIF 830 832 ELSE IF( id1 > 0 ) THEN 831 IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t _nnot found in restart files'833 IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart files' 832 834 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 833 835 IF(lwp) write(numout,*) 'neuler is forced to 0' 834 CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t _b(:,:,:), ldxios = lrxios )835 e3t _n(:,:,:) = e3t_b(:,:,:)836 CALL iom_get( numror, jpdom_autoglo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios ) 837 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 836 838 neuler = 0 837 839 ELSE IF( id2 > 0 ) THEN 838 IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t _bnot found in restart files'840 IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kbb) not found in restart files' 839 841 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 840 842 IF(lwp) write(numout,*) 'neuler is forced to 0' 841 CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t _n(:,:,:), ldxios = lrxios )842 e3t _b(:,:,:) = e3t_n(:,:,:)843 CALL iom_get( numror, jpdom_autoglo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios ) 844 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 843 845 neuler = 0 844 846 ELSE 845 IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t _nnot found in restart file'847 IF(lwp) write(numout,*) 'dom_vvl_rst WARNING : e3t(:,:,:,Kmm) not found in restart file' 846 848 IF(lwp) write(numout,*) 'Compute scale factor from sshn' 847 849 IF(lwp) write(numout,*) 'neuler is forced to 0' 848 850 DO jk = 1, jpk 849 e3t _n(:,:,jk) = e3t_0(:,:,jk) * ( ht_0(:,:) + sshn(:,:) ) &851 e3t(:,:,jk,Kmm) = e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) & 850 852 & / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) & 851 853 & + e3t_0(:,:,jk) * (1._wp -tmask(:,:,jk)) 852 854 END DO 853 e3t _b(:,:,:) = e3t_n(:,:,:)855 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 854 856 neuler = 0 855 857 ENDIF … … 888 890 IF( cn_cfg == 'wad' ) THEN 889 891 ! Wetting and drying test case 890 CALL usr_def_istate( gdept _b, tmask, tsb, ub, vb, sshb)891 ts n (:,:,:,:) = tsb (:,:,:,:) ! set now values from to before ones892 ssh n (:,:) = sshb(:,:)893 u n (:,:,:) = ub (:,:,:)894 v n (:,:,:) = vb (:,:,:)892 CALL usr_def_istate( gdept(:,:,:,Kbb), tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb) ) 893 ts (:,:,:,:,Kmm) = ts (:,:,:,:,Kbb) ! set now values from to before ones 894 ssh (:,:,Kmm) = ssh(:,:,Kbb) 895 uu (:,:,:,Kmm) = uu (:,:,:,Kbb) 896 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 895 897 ELSE 896 898 ! if not test case 897 ssh n(:,:) = -ssh_ref898 ssh b(:,:) = -ssh_ref899 ssh(:,:,Kmm) = -ssh_ref 900 ssh(:,:,Kbb) = -ssh_ref 899 901 900 902 DO jj = 1, jpj 901 903 DO ji = 1, jpi 902 904 IF( ht_0(ji,jj)-ssh_ref < rn_wdmin1 ) THEN ! if total depth is less than min depth 903 904 sshb(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 905 sshn(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 906 ssha(ji,jj) = rn_wdmin1 - (ht_0(ji,jj) ) 905 ssh(ji,jj,Kbb) = rn_wdmin1 - (ht_0(ji,jj) ) 906 ssh(ji,jj,Kmm) = rn_wdmin1 - (ht_0(ji,jj) ) 907 907 ENDIF 908 908 ENDDO … … 912 912 ! Adjust vertical metrics for all wad 913 913 DO jk = 1, jpk 914 e3t _n(:,:,jk) = e3t_0(:,:,jk) * ( ht_0(:,:) + sshn(:,:) ) &914 e3t(:,:,jk,Kmm) = e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kmm) ) & 915 915 & / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) & 916 916 & + e3t_0(:,:,jk) * ( 1._wp - tmask(:,:,jk) ) 917 917 END DO 918 e3t _b(:,:,:) = e3t_n(:,:,:)918 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 919 919 920 920 DO ji = 1, jpi … … 928 928 ELSE 929 929 ! 930 ! usr_def_istate called here only to get sshb, that is needed to initialize e3t _b and e3t_n931 CALL usr_def_istate( gdept_0, tmask, ts b, ub, vb, sshb )930 ! usr_def_istate called here only to get sshb, that is needed to initialize e3t(Kbb) and e3t(Kmm) 931 CALL usr_def_istate( gdept_0, tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb) ) 932 932 ! usr_def_istate will be called again in istate_init to initialize ts(bn), ssh(bn), u(bn) and v(bn) 933 933 ! 934 934 DO jk=1,jpk 935 e3t _b(:,:,jk) = e3t_0(:,:,jk) * ( ht_0(:,:) + sshb(:,:) ) &936 & / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) &937 & + e3t_0(:,:,jk) * ( 1._wp - tmask(:,:,jk) ) ! make sure e3t_b != 0 on land points935 e3t(:,:,jk,Kmm) = e3t_0(:,:,jk) * ( ht_0(:,:) + ssh(:,:,Kbb) ) & 936 & / ( ht_0(:,:) + 1._wp - ssmask(:,:) ) * tmask(:,:,jk) & 937 & + e3t_0(:,:,jk) * ( 1._wp - tmask(:,:,jk) ) ! make sure e3t_b != 0 on land points 938 938 END DO 939 e3t_n(:,:,:) = e3t_b(:,:,:) 940 sshn(:,:) = sshb(:,:) ! needed later for gde3w 941 !!$ e3t_n(:,:,:)=e3t_0(:,:,:) 942 !!$ e3t_b(:,:,:)=e3t_0(:,:,:) 939 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 940 ssh(:,: ,Kmm) = ssh(:,: ,Kbb) ! needed later for gde3w 943 941 ! 944 942 END IF ! end of ll_wd edits … … 958 956 ! ! all cases ! 959 957 ! ! --------- ! 960 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t _b(:,:,:), ldxios = lwxios )961 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t _n(:,:,:), ldxios = lwxios )958 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lwxios ) 959 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lwxios ) 962 960 ! ! ----------------------- ! 963 961 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! … … 992 990 !!---------------------------------------------------------------------- 993 991 ! 994 REWIND( numnam_ref ) ! Namelist nam_vvl in reference namelist :995 992 READ ( numnam_ref, nam_vvl, IOSTAT = ios, ERR = 901) 996 993 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_vvl in reference namelist' ) 997 REWIND( numnam_cfg ) ! Namelist nam_vvl in configuration namelist : Parameters of the run998 994 READ ( numnam_cfg, nam_vvl, IOSTAT = ios, ERR = 902 ) 999 995 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nam_vvl in configuration namelist' ) -
NEMO/trunk/tests/CANAL/MY_SRC/stpctl.F90
r10572 r12377 42 42 CONTAINS 43 43 44 SUBROUTINE stp_ctl( kt, kindic )44 SUBROUTINE stp_ctl( kt, Kbb, Kmm, kindic ) 45 45 !!---------------------------------------------------------------------- 46 46 !! *** ROUTINE stp_ctl *** … … 60 60 !!---------------------------------------------------------------------- 61 61 INTEGER, INTENT(in ) :: kt ! ocean time-step index 62 INTEGER, INTENT(in ) :: Kbb, Kmm ! ocean time level index 62 63 INTEGER, INTENT(inout) :: kindic ! error indicator 63 64 !! … … 111 112 ! !== test of extrema ==! 112 113 IF( ll_wd ) THEN 113 zmax(1) = MAXVAL( ABS( ssh n(:,:) + ssh_ref*tmask(:,:,1) ) ) ! ssh max114 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref*tmask(:,:,1) ) ) ! ssh max 114 115 ELSE 115 zmax(1) = MAXVAL( ABS( ssh n(:,:) ) ) ! ssh max116 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) ) ) ! ssh max 116 117 ENDIF 117 zmax(2) = MAXVAL( ABS( u n(:,:,:) ) ) ! velocity max (zonal only)118 zmax(3) = MAXVAL( -ts n(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) ! minus salinity max119 zmax(4) = MAXVAL( ts n(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp ) ! salinity max120 zmax(5) = MAXVAL( -ts n(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp ) ! minus temperature max121 zmax(6) = MAXVAL( ts n(:,:,:,jp_tem) , mask = tmask(:,:,:) == 1._wp ) ! temperature max118 zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ) ) ! velocity max (zonal only) 119 zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! minus salinity max 120 zmax(4) = MAXVAL( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! salinity max 121 zmax(5) = MAXVAL( -ts(:,:,:,jp_tem,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! minus temperature max 122 zmax(6) = MAXVAL( ts(:,:,:,jp_tem,Kmm) , mask = tmask(:,:,:) == 1._wp ) ! temperature max 122 123 zmax(7) = REAL( nstop , wp ) ! stop indicator 123 124 IF( ln_zad_Aimp ) THEN … … 148 149 ! !== error handling ==! 149 150 IF( ( ln_ctl .OR. lsomeoce ) .AND. ( & ! have use mpp_max (because ln_ctl=.T.) or contains some ocean points 150 & zmax(1) > 50._wp .OR. & ! too large sea surface height ( > 50 m )151 & zmax(2) > 20._wp .OR. & ! too large velocity ( > 20 m/s)152 !!$ 153 !!$ 154 !!$ 151 & zmax(1) > 20._wp .OR. & ! too large sea surface height ( > 20 m ) 152 & zmax(2) > 10._wp .OR. & ! too large velocity ( > 10 m/s) 153 !!$ & zmax(3) >= 0._wp .OR. & ! negative or zero sea surface salinity 154 !!$ & zmax(4) >= 100._wp .OR. & ! too large sea surface salinity ( > 100 ) 155 !!$ & zmax(4) < 0._wp .OR. & ! too large sea surface salinity (keep this line for sea-ice) 155 156 & ISNAN( zmax(1) + zmax(2) + zmax(3) ) ) ) THEN ! NaN encounter in the tests 156 157 IF( lk_mpp .AND. ln_ctl ) THEN 157 CALL mpp_maxloc( 'stpctl', ABS(ssh n) , ssmask(:,:) , zzz, ih )158 CALL mpp_maxloc( 'stpctl', ABS(u n) , umask (:,:,:), zzz, iu )159 CALL mpp_minloc( 'stpctl', ts n(:,:,:,jp_sal), tmask (:,:,:), zzz, is1 )160 CALL mpp_maxloc( 'stpctl', ts n(:,:,:,jp_sal), tmask (:,:,:), zzz, is2 )158 CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:,Kmm)) , ssmask(:,:) , zzz, ih ) 159 CALL mpp_maxloc( 'stpctl', ABS(uu(:,:,:,Kmm)) , umask (:,:,:), zzz, iu ) 160 CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm), tmask (:,:,:), zzz, is1 ) 161 CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm), tmask (:,:,:), zzz, is2 ) 161 162 ELSE 162 ih(:) = MAXLOC( ABS( ssh n(:,:) ) ) + (/ nimpp - 1, njmpp - 1 /)163 iu(:) = MAXLOC( ABS( u n (:,:,:) ) ) + (/ nimpp - 1, njmpp - 1, 0 /)164 is1(:) = MINLOC( ts n(:,:,:,jp_sal), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /)165 is2(:) = MAXLOC( ts n(:,:,:,jp_sal), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /)163 ih(:) = MAXLOC( ABS( ssh(:,:,Kmm) ) ) + (/ nimpp - 1, njmpp - 1 /) 164 iu(:) = MAXLOC( ABS( uu (:,:,:,Kmm) ) ) + (/ nimpp - 1, njmpp - 1, 0 /) 165 is1(:) = MINLOC( ts(:,:,:,jp_sal,Kmm), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 166 is2(:) = MAXLOC( ts(:,:,:,jp_sal,Kmm), mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 166 167 ENDIF 167 168 168 WRITE(ctmp1,*) ' stp_ctl: |ssh| > 50 m or |U| > 20 m/sor NaN encounter in the tests'169 WRITE(ctmp1,*) ' stp_ctl: |ssh| > 20 m or |U| > 10 m/s or S <= 0 or S >= 100 or NaN encounter in the tests' 169 170 WRITE(ctmp2,9100) kt, zmax(1), ih(1) , ih(2) 170 171 WRITE(ctmp3,9200) kt, zmax(2), iu(1) , iu(2) , iu(3) … … 173 174 WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort.nc file' 174 175 175 CALL dia_wri_state( 'output.abort' ) ! create an output.abort file176 CALL dia_wri_state( Kmm, 'output.abort' ) ! create an output.abort file 176 177 177 178 IF( .NOT. ln_ctl ) THEN -
NEMO/trunk/tests/CANAL/MY_SRC/trazdf.F90
r10572 r12377 35 35 PUBLIC tra_zdf_imp ! called by trczdf.F90 36 36 37 !! * Substitutions38 # include "vectopt_loop_substitute.h90"39 37 !!---------------------------------------------------------------------- 40 38 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 44 42 CONTAINS 45 43 46 SUBROUTINE tra_zdf( kt )44 SUBROUTINE tra_zdf( kt, Kbb, Kmm, Krhs, pts, Kaa ) 47 45 !!---------------------------------------------------------------------- 48 46 !! *** ROUTINE tra_zdf *** … … 50 48 !! ** Purpose : compute the vertical ocean tracer physics. 51 49 !!--------------------------------------------------------------------- 52 INTEGER, INTENT(in) :: kt ! ocean time-step index 50 INTEGER , INTENT(in) :: kt ! ocean time-step index 51 INTEGER , INTENT(in) :: Kbb, Kmm, Krhs, Kaa ! time level indices 52 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 53 53 ! 54 54 INTEGER :: jk ! Dummy loop indices … … 70 70 IF( l_trdtra ) THEN !* Save ta and sa trends 71 71 ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 72 ztrdt(:,:,:) = tsa(:,:,:,jp_tem)73 ztrds(:,:,:) = tsa(:,:,:,jp_sal)72 ztrdt(:,:,:) = pts(:,:,:,jp_tem,Kaa) 73 ztrds(:,:,:) = pts(:,:,:,jp_sal,Kaa) 74 74 ENDIF 75 75 ! 76 76 ! !* compute lateral mixing trend and add it to the general trend 77 CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt, tsb, tsa, jpts )77 CALL tra_zdf_imp( kt, nit000, 'TRA', r2dt, Kbb, Kmm, Krhs, pts, Kaa, jpts ) 78 78 79 79 !!gm WHY here ! and I don't like that ! … … 81 81 ! JMM avoid negative salinities near river outlet ! Ugly fix 82 82 ! JMM : restore negative salinities to small salinities: 83 !!$ WHERE( tsa(:,:,:,jp_sal) < 0._wp ) tsa(:,:,:,jp_sal) = 0.1_wp83 !!$ WHERE( pts(:,:,:,jp_sal,Kaa) < 0._wp ) pts(:,:,:,jp_sal,Kaa) = 0.1_wp 84 84 !!gm 85 85 86 86 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 87 87 DO jk = 1, jpkm1 88 ztrdt(:,:,jk) = ( ( tsa(:,:,jk,jp_tem)*e3t_a(:,:,jk) - tsb(:,:,jk,jp_tem)*e3t_b(:,:,jk) ) &89 & / (e3t _n(:,:,jk)*r2dt) ) - ztrdt(:,:,jk)90 ztrds(:,:,jk) = ( ( tsa(:,:,jk,jp_sal)*e3t_a(:,:,jk) - tsb(:,:,jk,jp_sal)*e3t_b(:,:,jk) ) &91 & / (e3t _n(:,:,jk)*r2dt) ) - ztrds(:,:,jk)88 ztrdt(:,:,jk) = ( ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) - pts(:,:,jk,jp_tem,Kbb)*e3t(:,:,jk,Kbb) ) & 89 & / (e3t(:,:,jk,Kmm)*r2dt) ) - ztrdt(:,:,jk) 90 ztrds(:,:,jk) = ( ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) - pts(:,:,jk,jp_sal,Kbb)*e3t(:,:,jk,Kbb) ) & 91 & / (e3t(:,:,jk,Kmm)*r2dt) ) - ztrds(:,:,jk) 92 92 END DO 93 93 !!gm this should be moved in trdtra.F90 and done on all trends 94 94 CALL lbc_lnk_multi( 'trazdf', ztrdt, 'T', 1. , ztrds, 'T', 1. ) 95 95 !!gm 96 CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt )97 CALL trd_tra( kt, 'TRA', jp_sal, jptra_zdf, ztrds )96 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_tem, jptra_zdf, ztrdt ) 97 CALL trd_tra( kt, Kmm, Krhs, 'TRA', jp_sal, jptra_zdf, ztrds ) 98 98 DEALLOCATE( ztrdt , ztrds ) 99 99 ENDIF 100 100 ! ! print mean trends (used for debugging) 101 IF(ln_ctl) CALL prt_ctl( tab3d_1= tsa(:,:,:,jp_tem), clinfo1=' zdf - Ta: ', mask1=tmask, &102 & tab3d_2= tsa(:,:,:,jp_sal), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' )101 IF(ln_ctl) CALL prt_ctl( tab3d_1=pts(:,:,:,jp_tem,Kaa), clinfo1=' zdf - Ta: ', mask1=tmask, & 102 & tab3d_2=pts(:,:,:,jp_sal,Kaa), clinfo2= ' Sa: ', mask2=tmask, clinfo3='tra' ) 103 103 ! 104 104 IF( ln_timing ) CALL timing_stop('tra_zdf') … … 107 107 108 108 109 SUBROUTINE tra_zdf_imp( kt, kit000, cdtype, p2dt, ptb, pta, kjpt )109 SUBROUTINE tra_zdf_imp( kt, kit000, cdtype, p2dt, Kbb, Kmm, Krhs, pt, Kaa, kjpt ) 110 110 !!---------------------------------------------------------------------- 111 111 !! *** ROUTINE tra_zdf_imp *** … … 125 125 !! If iso-neutral mixing, add to avt the contribution due to lateral mixing. 126 126 !! 127 !! ** Action : - pt abecomes the after tracer128 !!--------------------------------------------------------------------- 129 INTEGER , INTENT(in ) :: kt ! ocean time-step index130 INTEGER , INTENT(in ) :: kit000 ! first time step index131 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator)132 INTEGER , INTENT(in ) :: kjpt ! number of tracers133 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step134 REAL(wp) , DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before and now tracer fields135 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt ), INTENT(inout) :: pta ! in: tracer trend ; out: after tracer field127 !! ** Action : - pt(:,:,:,:,Kaa) becomes the after tracer 128 !!--------------------------------------------------------------------- 129 INTEGER , INTENT(in ) :: kt ! ocean time-step index 130 INTEGER , INTENT(in ) :: Kbb, Kmm, Krhs, Kaa ! ocean time level indices 131 INTEGER , INTENT(in ) :: kit000 ! first time step index 132 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) 133 INTEGER , INTENT(in ) :: kjpt ! number of tracers 134 REAL(wp) , INTENT(in ) :: p2dt ! tracer time-step 135 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt,jpt), INTENT(inout) :: pt ! tracers and RHS of tracer equation 136 136 ! 137 137 INTEGER :: ji, jj, jk, jn ! dummy loop indices … … 181 181 DO jj = 2, jpjm1 182 182 DO ji = fs_2, fs_jpim1 ! vector opt. (ensure same order of calculation as below if wi=0.) 183 zzwi = - p2dt * zwt(ji,jj,jk ) / e3w _n(ji,jj,jk)184 zzws = - p2dt * zwt(ji,jj,jk+1) / e3w _n(ji,jj,jk+1)185 zwd(ji,jj,jk) = e3t _a(ji,jj,jk) - zzwi - zzws &183 zzwi = - p2dt * zwt(ji,jj,jk ) / e3w(ji,jj,jk ,Kmm) 184 zzws = - p2dt * zwt(ji,jj,jk+1) / e3w(ji,jj,jk+1,Kmm) 185 zwd(ji,jj,jk) = e3t(ji,jj,jk,Kaa) - zzwi - zzws & 186 186 & + p2dt * ( MAX( wi(ji,jj,jk ) , 0._wp ) - MIN( wi(ji,jj,jk+1) , 0._wp ) ) 187 187 zwi(ji,jj,jk) = zzwi + p2dt * MIN( wi(ji,jj,jk ) , 0._wp ) … … 194 194 DO jj = 2, jpjm1 195 195 DO ji = fs_2, fs_jpim1 ! vector opt. 196 zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk ) / e3w _n(ji,jj,jk)197 zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / e3w _n(ji,jj,jk+1)198 zwd(ji,jj,jk) = e3t _a(ji,jj,jk) - zwi(ji,jj,jk) - zws(ji,jj,jk)196 zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk ) / e3w(ji,jj,jk,Kmm) 197 zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / e3w(ji,jj,jk+1,Kmm) 198 zwd(ji,jj,jk) = e3t(ji,jj,jk,Kaa) - zwi(ji,jj,jk) - zws(ji,jj,jk) 199 199 END DO 200 200 END DO … … 218 218 ! The solution will be in the 4d array pta. 219 219 ! The 3d array zwt is used as a work space array. 220 ! En route to the solution pt ais used a to evaluate the rhs and then220 ! En route to the solution pt(:,:,:,:,Kaa) is used a to evaluate the rhs and then 221 221 ! used as a work space array: its value is modified. 222 222 ! … … 238 238 DO jj = 2, jpjm1 !* 2nd recurrence: Zk = Yk - Ik / Tk-1 Zk-1 239 239 DO ji = fs_2, fs_jpim1 240 pt a(ji,jj,1,jn) = e3t_b(ji,jj,1) * ptb(ji,jj,1,jn) + p2dt * e3t_n(ji,jj,1) * pta(ji,jj,1,jn)240 pt(ji,jj,1,jn,Kaa) = e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb) + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Krhs) 241 241 END DO 242 242 END DO … … 244 244 DO jj = 2, jpjm1 245 245 DO ji = fs_2, fs_jpim1 246 zrhs = e3t _b(ji,jj,jk) * ptb(ji,jj,jk,jn) + p2dt * e3t_n(ji,jj,jk) * pta(ji,jj,jk,jn) ! zrhs=right hand side247 pt a(ji,jj,jk,jn) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pta(ji,jj,jk-1,jn)246 zrhs = e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb) + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs) ! zrhs=right hand side 247 pt(ji,jj,jk,jn,Kaa) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * pt(ji,jj,jk-1,jn,Kaa) 248 248 END DO 249 249 END DO … … 252 252 DO jj = 2, jpjm1 !* 3d recurrence: Xk = (Zk - Sk Xk+1 ) / Tk (result is the after tracer) 253 253 DO ji = fs_2, fs_jpim1 254 pt a(ji,jj,jpkm1,jn) = pta(ji,jj,jpkm1,jn) / zwt(ji,jj,jpkm1) * tmask(ji,jj,jpkm1)254 pt(ji,jj,jpkm1,jn,Kaa) = pt(ji,jj,jpkm1,jn,Kaa) / zwt(ji,jj,jpkm1) * tmask(ji,jj,jpkm1) 255 255 END DO 256 256 END DO … … 258 258 DO jj = 2, jpjm1 259 259 DO ji = fs_2, fs_jpim1 260 pt a(ji,jj,jk,jn) = ( pta(ji,jj,jk,jn) - zws(ji,jj,jk) * pta(ji,jj,jk+1,jn) ) &260 pt(ji,jj,jk,jn,Kaa) = ( pt(ji,jj,jk,jn,Kaa) - zws(ji,jj,jk) * pt(ji,jj,jk+1,jn,Kaa) ) & 261 261 & / zwt(ji,jj,jk) * tmask(ji,jj,jk) 262 262 END DO -
NEMO/trunk/tests/CANAL/MY_SRC/usrdef_nam.F90
r11899 r12377 84 84 !!---------------------------------------------------------------------- 85 85 ! 86 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)87 86 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 88 87 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/CANAL/MY_SRC/usrdef_sbc.F90
r10074 r12377 31 31 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 32 32 33 !! * Substitutions34 # include "vectopt_loop_substitute.h90"35 33 !!---------------------------------------------------------------------- 36 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 40 38 CONTAINS 41 39 42 SUBROUTINE usrdef_sbc_oce( kt )40 SUBROUTINE usrdef_sbc_oce( kt, Kmm, Kbb ) 43 41 !!--------------------------------------------------------------------- 44 42 !! *** ROUTINE usr_def_sbc *** … … 54 52 !! 55 53 !!---------------------------------------------------------------------- 56 INTEGER, INTENT(in) :: kt ! ocean time step57 54 INTEGER, INTENT(in) :: kt ! ocean time step 55 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time index 58 56 INTEGER :: ji, jj ! dummy loop indices 59 57 REAL(wp) :: zrhoair = 1.22 ! approximate air density [Kg/m3] … … 88 86 89 87 WHERE( ABS(gphit) <= rn_windszy/2. ) 90 zwndrel(:,:) = rn_u10 - rn_uofac * u n(:,:,1)88 zwndrel(:,:) = rn_u10 - rn_uofac * uu(:,:,1,Kmm) 91 89 ELSEWHERE 92 zwndrel(:,:) = - rn_uofac * u n(:,:,1)90 zwndrel(:,:) = - rn_uofac * uu(:,:,1,Kmm) 93 91 END WHERE 94 92 utau(:,:) = zrhocd * zwndrel(:,:) * zwndrel(:,:) 95 93 96 zwndrel(:,:) = - rn_uofac * v n(:,:,1)94 zwndrel(:,:) = - rn_uofac * vv(:,:,1,Kmm) 97 95 vtau(:,:) = zrhocd * zwndrel(:,:) * zwndrel(:,:) 98 96 … … 105 103 END SUBROUTINE usrdef_sbc_ice_tau 106 104 107 SUBROUTINE usrdef_sbc_ice_flx( kt ) 105 106 SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 108 107 INTEGER, INTENT(in) :: kt ! ocean time step 108 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phs ! snow thickness 109 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 109 110 END SUBROUTINE usrdef_sbc_ice_flx 110 111 -
NEMO/trunk/tests/CANAL/MY_SRC/usrdef_zgr.F90
r10425 r12377 31 31 PUBLIC usr_def_zgr ! called by domzgr.F90 32 32 33 !! * Substitutions34 # include "vectopt_loop_substitute.h90"35 33 !!---------------------------------------------------------------------- 36 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/ICE_ADV1D/EXPREF/namelist_cfg
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_ADV1D/EXPREF/namelist_cfg_120pts
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_ADV1D/EXPREF/namelist_cfg_240pts
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_ADV1D/EXPREF/namelist_cfg_60pts
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_ADV1D/MY_SRC/usrdef_nam.F90
r11536 r12377 63 63 !!---------------------------------------------------------------------- 64 64 ! 65 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)66 65 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 67 66 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/ICE_ADV1D/MY_SRC/usrdef_sbc.F90
r10513 r12377 33 33 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 34 34 35 !! * Substitutions36 # include "vectopt_loop_substitute.h90"37 35 !!---------------------------------------------------------------------- 38 36 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 42 40 CONTAINS 43 41 44 SUBROUTINE usrdef_sbc_oce( kt )42 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 45 43 !!--------------------------------------------------------------------- 46 44 !! *** ROUTINE usr_def_sbc *** … … 57 55 !!---------------------------------------------------------------------- 58 56 INTEGER, INTENT(in) :: kt ! ocean time step 57 INTEGER, INTENT(in) :: Kbb ! ocean time index 59 58 !!--------------------------------------------------------------------- 60 59 ! -
NEMO/trunk/tests/ICE_ADV1D/MY_SRC/usrdef_zgr.F90
r10513 r12377 25 25 PUBLIC usr_def_zgr ! called by domzgr.F90 26 26 27 !! * Substitutions28 # include "vectopt_loop_substitute.h90"29 27 !!---------------------------------------------------------------------- 30 28 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/ICE_ADV2D/EXPREF/namelist_cfg
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_ADV2D/MY_SRC/usrdef_nam.F90
r11536 r12377 63 63 !!---------------------------------------------------------------------- 64 64 ! 65 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)66 65 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 67 66 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/ICE_ADV2D/MY_SRC/usrdef_sbc.F90
r10515 r12377 33 33 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 34 34 35 !! * Substitutions36 # include "vectopt_loop_substitute.h90"37 35 !!---------------------------------------------------------------------- 38 36 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 42 40 CONTAINS 43 41 44 SUBROUTINE usrdef_sbc_oce( kt )42 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 45 43 !!--------------------------------------------------------------------- 46 44 !! *** ROUTINE usr_def_sbc *** … … 57 55 !!---------------------------------------------------------------------- 58 56 INTEGER, INTENT(in) :: kt ! ocean time step 57 INTEGER, INTENT(in) :: Kbb ! ocean time index 59 58 !!--------------------------------------------------------------------- 60 59 ! -
NEMO/trunk/tests/ICE_ADV2D/MY_SRC/usrdef_zgr.F90
r10515 r12377 25 25 PUBLIC usr_def_zgr ! called by domzgr.F90 26 26 27 !! * Substitutions28 # include "vectopt_loop_substitute.h90"29 27 !!---------------------------------------------------------------------- 30 28 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/ICE_AGRIF/EXPREF/1_namelist_cfg
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_AGRIF/EXPREF/context_nemo.xml
r12213 r12377 5 5 --> 6 6 <context id="nemo"> 7 <!-- $id$ -->7 <!-- $id$ --> 8 8 <variable_definition> 9 <!-- Year of time origin for NetCDF files; defaults to 1800 --> 10 <variable id="ref_year" type="int" > 1800 </variable> 11 <variable id="rau0" type="float" > 1026.0 </variable> 12 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 13 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> 14 <variable id="rhoic" type="float" > 917.0 </variable> 15 <variable id="rhosn" type="float" > 330.0 </variable> 16 <variable id="missval" type="float" > 1.e20 </variable> 9 <!-- Year/Month/Day of time origin for NetCDF files; defaults to 1800-01-01 --> 10 <variable id="ref_year" type="int"> 1900 </variable> 11 <variable id="ref_month" type="int"> 01 </variable> 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="rau0" type="float" > 1026.0 </variable> 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> 16 <variable id="rhoic" type="float" > 917.0 </variable> 17 <variable id="rhosn" type="float" > 330.0 </variable> 18 <variable id="missval" type="float" > 1.e20 </variable> 17 19 </variable_definition> 20 18 21 <!-- Fields definition --> 19 22 <field_definition src="./field_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics --> … … 23 26 <file_definition src="./file_def_nemo-oce.xml"/> <!-- NEMO ocean dynamics --> 24 27 <file_definition src="./file_def_nemo-ice.xml"/> <!-- NEMO sea-ice model --> 25 <!-- 26 ============================================================================================================ 27 = grid definition = = DO NOT CHANGE = 28 ============================================================================================================ 29 --> 30 31 <axis_definition> 32 <axis id="deptht" long_name="Vertical T levels" unit="m" positive="down" /> 33 <axis id="depthu" long_name="Vertical U levels" unit="m" positive="down" /> 34 <axis id="depthv" long_name="Vertical V levels" unit="m" positive="down" /> 35 <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 36 <axis id="nfloat" long_name="Float number" unit="-" /> 37 <axis id="icbcla" long_name="Iceberg class" unit="1" /> 38 <axis id="ncatice" long_name="Ice category" unit="1" /> 39 <axis id="iax_20C" long_name="20 degC isotherm" unit="degC" /> 40 <axis id="iax_28C" long_name="28 degC isotherm" unit="degC" /> 41 <axis id="deptht_surface" axis_ref="deptht" > 42 <zoom_axis begin=" 1 " n=" 1 " /> 43 </axis> 44 </axis_definition> 28 29 30 <!-- Axis definition --> 31 <axis_definition src="./axis_def_nemo.xml"/> 45 32 33 <!-- Domain definition --> 46 34 <domain_definition src="./domain_def_nemo.xml"/> 35 36 <!-- Grids definition --> 37 <grid_definition src="./grid_def_nemo.xml"/> 47 38 48 <grid_definition src="./grid_def_nemo.xml"/>49 39 50 40 </context> -
NEMO/trunk/tests/ICE_AGRIF/EXPREF/namelist_cfg
r12206 r12377 202 202 !! namdiu Cool skin and warm layer models (default: OFF) 203 203 !! namflo float parameters (default: OFF) 204 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)205 204 !! nam_diadct transports through some sections (default: OFF) 206 205 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/ICE_AGRIF/MY_SRC/usrdef_nam.F90
r11536 r12377 63 63 !!---------------------------------------------------------------------- 64 64 ! 65 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)66 65 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 67 66 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/ICE_AGRIF/MY_SRC/usrdef_sbc.F90
r10516 r12377 33 33 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 34 34 35 !! * Substitutions36 # include "vectopt_loop_substitute.h90"37 35 !!---------------------------------------------------------------------- 38 36 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 42 40 CONTAINS 43 41 44 SUBROUTINE usrdef_sbc_oce( kt )42 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 45 43 !!--------------------------------------------------------------------- 46 44 !! *** ROUTINE usr_def_sbc *** … … 57 55 !!---------------------------------------------------------------------- 58 56 INTEGER, INTENT(in) :: kt ! ocean time step 57 INTEGER, INTENT(in) :: Kbb ! ocean time index 59 58 !!--------------------------------------------------------------------- 60 59 ! -
NEMO/trunk/tests/ICE_AGRIF/MY_SRC/usrdef_zgr.F90
r10516 r12377 25 25 PUBLIC usr_def_zgr ! called by domzgr.F90 26 26 27 !! * Substitutions28 # include "vectopt_loop_substitute.h90"29 27 !!---------------------------------------------------------------------- 30 28 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/ISOMIP/EXPREF/file_def_nemo-oce.xml
r9572 r12377 27 27 <field field_ref="ssh" name="sossheig" /> 28 28 <!-- variable for ice shelf --> 29 <field field_ref="qlatisf" name="sohflisf" /> 30 <field field_ref="fwfisf" name="sowflisf" /> 29 <field field_ref="fwfisf_cav" name="sowflisf" /> 31 30 <field field_ref="isfgammat" name="sogammat" /> 32 31 <field field_ref="isfgammas" name="sogammas" /> -
NEMO/trunk/tests/ISOMIP/EXPREF/namelist_cfg
r12206 r12377 46 46 rn_rdt = 1800. ! time step for the dynamics (and tracer if nn_acc=0) 47 47 / 48 !----------------------------------------------------------------------- 49 &namcfg ! parameters of the configuration (default: use namusr_def in namelist_cfg) 50 !----------------------------------------------------------------------- 51 / 52 !----------------------------------------------------------------------- 53 &namtsd ! Temperature & Salinity Data (init/dmp) (default: OFF) 54 !----------------------------------------------------------------------- 55 56 / 57 !----------------------------------------------------------------------- 58 &namwad ! Wetting and Drying (WaD) (default: OFF) 59 !----------------------------------------------------------------------- 60 / 61 !----------------------------------------------------------------------- 62 &namcrs ! coarsened grid (for outputs and/or TOP) (ln_crs =T) 63 !----------------------------------------------------------------------- 64 / 65 !----------------------------------------------------------------------- 66 &namc1d ! 1D configuration options ("key_c1d" default: PAPA station) 67 !----------------------------------------------------------------------- 68 / 69 !----------------------------------------------------------------------- 70 &namc1d_dyndmp ! U & V newtonian damping ("key_c1d" default: OFF) 71 !----------------------------------------------------------------------- 72 / 73 !----------------------------------------------------------------------- 74 &namc1d_uvd ! data: U & V currents ("key_c1d" default: OFF) 75 !----------------------------------------------------------------------- 76 77 / 78 48 79 !!====================================================================== 49 80 !! *** Surface Boundary Condition namelists *** !! … … 59 90 !! namsbc_rnf river runoffs (ln_rnf =T) 60 91 !! namsbc_apr Atmospheric Pressure (ln_apr_dyn =T) 61 !! namsbc_isf ice shelf melting/freezing (ln_isfcav =T : read (ln_read_cfg=T) or set or usr_def_zgr )62 !! namsbc_iscpl coupling option between land ice model and ocean (ln_isfcav =T)63 92 !! namsbc_wave external fields from wave model (ln_wave =T) 64 93 !! namberg iceberg floats (ln_icebergs=T) … … 66 95 ! 67 96 !----------------------------------------------------------------------- 68 &namsbc ! Surface Boundary Condition (surface module) 69 !----------------------------------------------------------------------- 70 nn_fsbc = 1 ! frequency of surface boundary condition computation 97 &namsbc ! Surface Boundary Condition manager (default: NO selection) 98 !----------------------------------------------------------------------- 99 nn_fsbc = 1 ! frequency of SBC module call 100 ! ! (control sea-ice & iceberg model call) 71 101 ln_usr = .true. ! user defined formulation (T => check usrdef_sbc) 72 ln_isf = .true. ! ice shelf melting/freezing (T => fill namsbc_isf) 73 / 74 !----------------------------------------------------------------------- 75 &namsbc_isf ! Top boundary layer (ISF) (ln_isfcav =T : read (ln_read_cfg=T) 76 !----------------------------------------------------------------------- or set or usr_def_zgr ) 77 ! ! file name ! frequency (hours) ! variable ! time interpol. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 78 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 79 ! nn_isf == 4 80 sn_fwfisf = 'rnfisf' , -12. ,'sowflisf', .false. , .true. , 'yearly' , '' , '' , '' 81 ! nn_isf == 3 82 sn_rnfisf = 'rnfisf' , -12. ,'sofwfisf', .false. , .true. , 'yearly' , '' , '' , '' 83 ! nn_isf == 2 and 3 84 sn_depmax_isf = 'rnfisf' , -12. ,'sozisfmax' , .false. , .true. , 'yearly' , '' , '' , '' 85 sn_depmin_isf = 'rnfisf' , -12. ,'sozisfmin' , .false. , .true. , 'yearly' , '' , '' , '' 86 ! nn_isf == 2 87 sn_Leff_isf = 'rnfisf' , -12. ,'Leff' , .false. , .true. , 'yearly' , '' , '' , '' 88 ! for all case 89 nn_isf = 1 ! ice shelf melting/freezing 90 ! 1 = presence of ISF 2 = bg03 parametrisation 91 ! 3 = rnf file for isf 4 = ISF fwf specified 92 ! option 1 and 4 need ln_isfcav = .true. (domzgr) 93 ! only for nn_isf = 1 or 2 94 rn_gammat0 = 1.0e-4 ! gammat coefficient used in blk formula 95 rn_gammas0 = 1.0e-4 ! gammas coefficient used in blk formula 96 ! only for nn_isf = 1 or 4 97 rn_hisf_tbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) 98 ! 0 => thickness of the tbl = thickness of the first wet cell 99 ! only for nn_isf = 1 100 nn_isfblk = 1 ! 1 ISOMIP like: 2 equations formulation (Hunter et al., 2006) 101 ! 2 ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 102 nn_gammablk = 0 ! 0 = cst Gammat (= gammat/s) 103 ! 1 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 104 ! 2 = velocity and stability dependent Gamma (Holland et al. 1999) 105 / 106 !----------------------------------------------------------------------- 107 &namsbc_iscpl ! land ice / ocean coupling option 108 !----------------------------------------------------------------------- 109 / 102 / 103 !----------------------------------------------------------------------- 104 &namsbc_flx ! surface boundary condition : flux formulation (ln_flx =T) 105 !----------------------------------------------------------------------- 106 / 107 !----------------------------------------------------------------------- 108 &namsbc_blk ! namsbc_blk generic Bulk formula (ln_blk =T) 109 !----------------------------------------------------------------------- 110 111 / 112 !----------------------------------------------------------------------- 113 &namsbc_cpl ! coupled ocean/atmosphere model ("key_oasis3") 114 !----------------------------------------------------------------------- 115 116 / 117 !----------------------------------------------------------------------- 118 &namsbc_sas ! Stand-Alone Surface module: ocean data (SAS_SRC only) 119 !----------------------------------------------------------------------- 120 121 / 122 !----------------------------------------------------------------------- 123 &namsbc_iif ! Ice-IF : use observed ice cover (nn_ice = 1) 124 !----------------------------------------------------------------------- 125 / 126 !----------------------------------------------------------------------- 127 &namtra_qsr ! penetrative solar radiation (ln_traqsr =T) 128 !----------------------------------------------------------------------- 129 130 / 131 !----------------------------------------------------------------------- 132 &namsbc_ssr ! surface boundary condition : sea surface restoring (ln_ssr =T) 133 !----------------------------------------------------------------------- 134 135 / 136 !----------------------------------------------------------------------- 137 &namsbc_rnf ! runoffs (ln_rnf =T) 138 !----------------------------------------------------------------------- 139 140 / 141 !----------------------------------------------------------------------- 142 &namsbc_apr ! Atmospheric pressure used as ocean forcing (ln_apr_dyn =T) 143 !----------------------------------------------------------------------- 144 145 / 146 !----------------------------------------------------------------------- 147 &namisf ! Top boundary layer (ISF) (default: OFF) 148 !----------------------------------------------------------------------- 149 ! 150 ! ---------------- ice shelf load ------------------------------- 151 ! 152 ! 153 ! ---------------- ice shelf melt formulation ------------------------------- 154 ! 155 ln_isf = .true. ! activate ice shelf module 156 cn_isfdir = './' ! directory for all ice shelf input file 157 ! 158 ! ---------------- cavities opened ------------------------------- 159 ! 160 ln_isfcav_mlt = .true. ! ice shelf melting into the cavity (need ln_isfcav = .true. in domain_cfg.nc) 161 cn_isfcav_mlt = '2eq' ! ice shelf melting formulation (spe/2eq/3eq/oasis) 162 ! ! spe = fwfisf is read from a forcing field 163 ! ! 2eq = ISOMIP like: 2 equations formulation (Hunter et al., 2006) 164 ! ! 3eq = ISOMIP+ like: 3 equations formulation (Asay-Davis et al., 2015) 165 ! ! oasis = fwfisf is given by oasis and pattern by file sn_isfcav_fwf 166 ! ! cn_isfcav_mlt = 2eq or 3eq cases: 167 cn_gammablk = 'spe' ! scheme to compute gammat/s (spe,ad15,hj99) 168 ! ! ad15 = velocity dependend Gamma (u* * gammat/s) (Jenkins et al. 2010) 169 ! ! hj99 = velocity and stability dependent Gamma (Holland et al. 1999) 170 rn_gammat0 = 1.e-4 ! gammat coefficient used in blk formula 171 rn_gammas0 = 1.e-4 ! gammas coefficient used in blk formula 172 ! 173 rn_htbl = 30. ! thickness of the top boundary layer (Losh et al. 2008) 174 ! ! 0 => thickness of the tbl = thickness of the first wet cell 175 ! 176 / 177 !----------------------------------------------------------------------- 178 &namsbc_wave ! External fields from wave model (ln_wave=T) 179 !----------------------------------------------------------------------- 180 / 181 !----------------------------------------------------------------------- 182 &namberg ! iceberg parameters (default: OFF) 183 !----------------------------------------------------------------------- 184 185 / 186 110 187 !!====================================================================== 111 188 !! *** Lateral boundary condition *** !! … … 124 201 rn_shlat = 0. ! free slip 125 202 / 203 !----------------------------------------------------------------------- 204 &namagrif ! AGRIF zoom ("key_agrif") 205 !----------------------------------------------------------------------- 206 / 207 !----------------------------------------------------------------------- 208 &nam_tide ! tide parameters (default: OFF) 209 !----------------------------------------------------------------------- 210 / 211 !----------------------------------------------------------------------- 212 &nambdy ! unstructured open boundaries (default: OFF) 213 !----------------------------------------------------------------------- 214 / 215 !----------------------------------------------------------------------- 216 &nambdy_dta ! open boundaries - external data (see nam_bdy) 217 !----------------------------------------------------------------------- 218 219 / 220 !----------------------------------------------------------------------- 221 &nambdy_tide ! tidal forcing at open boundaries (default: OFF) 222 !----------------------------------------------------------------------- 223 / 224 126 225 !!====================================================================== 127 226 !! *** Top/Bottom boundary condition *** !! … … 145 244 / 146 245 !----------------------------------------------------------------------- 147 &namdrg_top ! TOP friction (ln_ isfcav=T)246 &namdrg_top ! TOP friction (ln_OFF =F & ln_isfcav=T) 148 247 !----------------------------------------------------------------------- 149 248 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 156 255 / 157 256 !----------------------------------------------------------------------- 158 &namdrg_bot ! BOTTOM friction 257 &namdrg_bot ! BOTTOM friction (ln_OFF =F) 159 258 !----------------------------------------------------------------------- 160 259 rn_Cd0 = 1.e-3 ! drag coefficient [-] … … 166 265 rn_boost = 50. ! local boost factor [-] 167 266 / 267 !----------------------------------------------------------------------- 268 &nambbc ! bottom temperature boundary condition (default: OFF) 269 !----------------------------------------------------------------------- 270 271 / 272 !----------------------------------------------------------------------- 273 &nambbl ! bottom boundary layer scheme (default: OFF) 274 !----------------------------------------------------------------------- 275 / 276 168 277 !!====================================================================== 169 278 !! Tracer (T-S) namelists !! … … 178 287 ! 179 288 !----------------------------------------------------------------------- 180 &nameos ! ocean Equation Of Seawater (default: OFF)289 &nameos ! ocean Equation Of Seawater (default: NO selection) 181 290 !----------------------------------------------------------------------- 182 291 ln_eos80 = .true. ! = Use EOS80 equation of state … … 199 308 rn_Ld = 10.e+3 ! lateral diffusive length [m] 200 309 / 310 !----------------------------------------------------------------------- 311 &namtra_mle ! mixed layer eddy parametrisation (Fox-Kemper) (default: OFF) 312 !----------------------------------------------------------------------- 313 / 314 !----------------------------------------------------------------------- 315 &namtra_eiv ! eddy induced velocity param. (default: OFF) 316 !----------------------------------------------------------------------- 317 / 318 !----------------------------------------------------------------------- 319 &namtra_dmp ! tracer: T & S newtonian damping (default: OFF) 320 !----------------------------------------------------------------------- 321 / 322 201 323 !!====================================================================== 202 324 !! *** Dynamics namelists *** !! … … 212 334 ! 213 335 !----------------------------------------------------------------------- 336 &nam_vvl ! vertical coordinate options (default: z-star) 337 !----------------------------------------------------------------------- 338 / 339 !----------------------------------------------------------------------- 214 340 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 215 341 !----------------------------------------------------------------------- … … 218 344 / 219 345 !----------------------------------------------------------------------- 220 &namdyn_vor ! Vorticity / Coriolis scheme (default: OFF)346 &namdyn_vor ! Vorticity / Coriolis scheme (default: NO selection) 221 347 !----------------------------------------------------------------------- 222 348 ln_dynvor_ene = .true. ! energy conserving scheme … … 241 367 rn_Lv = 10.e+3 ! lateral viscous length [m] 242 368 / 369 !----------------------------------------------------------------------- 370 &namdta_dyn ! offline ocean input files (OFF_SRC only) 371 !----------------------------------------------------------------------- 372 373 / 374 243 375 !!====================================================================== 244 376 !! vertical physics namelists !! … … 253 385 ! 254 386 !----------------------------------------------------------------------- 255 &namzdf ! vertical physics 256 !----------------------------------------------------------------------- 257 ! ! type of vertical closure 387 &namzdf ! vertical physics manager (default: NO selection) 388 !----------------------------------------------------------------------- 389 ! ! type of vertical closure (required) 258 390 ln_zdfcst = .true. ! constant mixing 391 ! 392 ! ! convection 259 393 ln_zdfevd = .true. ! enhanced vertical diffusion 260 nn_evdm = 1 ! apply on tracer (=0) or on tracer and momentum (=1)261 rn_evd = 0.1 ! mixing coefficient [m2/s]394 rn_evd = 0.1 ! mixing coefficient [m2/s] 395 ! 262 396 ! ! coefficients 263 rn_avm0 = 1.e-3 ! vertical eddy viscosity [m2/s] 264 rn_avt0 = 5.e-5 ! vertical eddy diffusivity [m2/s] 265 / 397 rn_avm0 = 1.e-3 ! vertical eddy viscosity [m2/s] (background Kz if ln_zdfcst) 398 rn_avt0 = 5.e-5 ! vertical eddy diffusivity [m2/s] (background Kz if ln_zdfcst) 399 / 400 !----------------------------------------------------------------------- 401 &namzdf_ric ! richardson number dependent vertical diffusion (ln_zdfric =T) 402 !----------------------------------------------------------------------- 403 / 404 !----------------------------------------------------------------------- 405 &namzdf_tke ! turbulent eddy kinetic dependent vertical diffusion (ln_zdftke =T) 406 !----------------------------------------------------------------------- 407 / 408 !----------------------------------------------------------------------- 409 &namzdf_gls ! GLS vertical diffusion (ln_zdfgls =T) 410 !----------------------------------------------------------------------- 411 / 412 !----------------------------------------------------------------------- 413 &namzdf_osm ! OSM vertical diffusion (ln_zdfosm =T) 414 !----------------------------------------------------------------------- 415 / 416 !----------------------------------------------------------------------- 417 &namzdf_iwm ! internal wave-driven mixing parameterization (ln_zdfiwm =T) 418 !----------------------------------------------------------------------- 419 / 420 266 421 !!====================================================================== 267 422 !! *** Diagnostics namelists *** !! … … 273 428 !! namdiu Cool skin and warm layer models (default: OFF) 274 429 !! namflo float parameters (default: OFF) 275 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)276 430 !! nam_diadct transports through some sections (default: OFF) 277 431 !! nam_dia25h 25h Mean Output (default: OFF) … … 279 433 !!====================================================================== 280 434 ! 435 !----------------------------------------------------------------------- 436 &namtrd ! trend diagnostics (default: OFF) 437 !----------------------------------------------------------------------- 438 / 439 !----------------------------------------------------------------------- 440 &namptr ! Poleward Transport Diagnostic (default: OFF) 441 !----------------------------------------------------------------------- 442 / 443 !----------------------------------------------------------------------- 444 &namhsb ! Heat and salt budgets (default: OFF) 445 !----------------------------------------------------------------------- 446 / 447 !----------------------------------------------------------------------- 448 &namdiu ! Cool skin and warm layer models (default: OFF) 449 !----------------------------------------------------------------------- 450 / 451 !----------------------------------------------------------------------- 452 &namflo ! float parameters ("key_float") 453 !----------------------------------------------------------------------- 454 / 455 !----------------------------------------------------------------------- 456 &nam_diaharm ! Harmonic analysis of tidal constituents ("key_diaharm") 457 !----------------------------------------------------------------------- 458 / 459 !----------------------------------------------------------------------- 460 &namdct ! transports through some sections ("key_diadct") 461 !----------------------------------------------------------------------- 462 / 463 !----------------------------------------------------------------------- 464 &nam_diatmb ! Top Middle Bottom Output (default: OFF) 465 !----------------------------------------------------------------------- 466 / 467 !----------------------------------------------------------------------- 468 &nam_dia25h ! 25h Mean Output (default: OFF) 469 !----------------------------------------------------------------------- 470 / 471 !----------------------------------------------------------------------- 472 &namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4") 473 !----------------------------------------------------------------------- 474 / 475 281 476 !!====================================================================== 282 477 !! *** Observation & Assimilation *** !! … … 286 481 !!====================================================================== 287 482 ! 483 !----------------------------------------------------------------------- 484 &namobs ! observation usage switch (default: OFF) 485 !----------------------------------------------------------------------- 486 / 487 !----------------------------------------------------------------------- 488 &nam_asminc ! assimilation increments ('key_asminc') 489 !----------------------------------------------------------------------- 490 / 491 288 492 !!====================================================================== 289 493 !! *** Miscellaneous namelists *** !! -
NEMO/trunk/tests/ISOMIP/MY_SRC/usrdef_nam.F90
r11536 r12377 64 64 !!---------------------------------------------------------------------- 65 65 ! 66 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)67 66 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 68 67 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/ISOMIP/MY_SRC/usrdef_sbc.F90
r10074 r12377 1 1 MODULE usrdef_sbc 2 2 !!====================================================================== 3 !! *** MODULEusrdef_sbc ***3 !! *** MODULE usrdef_sbc *** 4 4 !! 5 5 !! === ISOMIP configuration === … … 32 32 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 33 33 34 !! * Substitutions35 # include "vectopt_loop_substitute.h90"36 34 !!---------------------------------------------------------------------- 37 35 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 41 39 CONTAINS 42 40 43 SUBROUTINE usrdef_sbc_oce( kt )41 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 44 42 !!--------------------------------------------------------------------- 45 43 !! *** ROUTINE usr_def_sbc *** … … 56 54 !!---------------------------------------------------------------------- 57 55 INTEGER, INTENT(in) :: kt ! ocean time step 56 INTEGER, INTENT(in) :: Kbb ! ocean time index 58 57 !!--------------------------------------------------------------------- 59 58 ! … … 81 80 END SUBROUTINE usrdef_sbc_ice_tau 82 81 83 SUBROUTINE usrdef_sbc_ice_flx( kt ) 82 83 SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 84 84 INTEGER, INTENT(in) :: kt ! ocean time step 85 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phs ! snow thickness 86 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 85 87 END SUBROUTINE usrdef_sbc_ice_flx 86 88 -
NEMO/trunk/tests/ISOMIP/MY_SRC/usrdef_zgr.F90
r10491 r12377 30 30 PUBLIC usr_def_zgr ! called by domzgr.F90 31 31 32 !! * Substitutions33 # include "vectopt_loop_substitute.h90"34 32 !!---------------------------------------------------------------------- 35 33 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_cen2_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_ubs_cfg
r12206 r12377 46 46 !----------------------------------------------------------------------- 47 47 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 48 !49 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice50 48 ! 51 49 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) … … 278 276 !! namdiu Cool skin and warm layer models (default: OFF) 279 277 !! namflo float parameters (default: OFF) 280 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)281 278 !! nam_diadct transports through some sections (default: OFF) 282 279 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_eenH_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_een_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ene_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ens_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_cen2_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_ubs_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_eenH_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_een_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ene_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ens_cfg
r10075 r12377 32 32 !----------------------------------------------------------------------- 33 33 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 34 !35 rn_isfhmin = 0.00 ! treshold (m) to discriminate grounding ice to floating ice36 34 ! 37 35 rn_rdt = 1. ! time step for the dynamics (and tracer if nn_acc=0) -
NEMO/trunk/tests/LOCK_EXCHANGE/MY_SRC/usrdef_nam.F90
r11536 r12377 60 60 !!---------------------------------------------------------------------- 61 61 ! 62 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)63 62 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 64 63 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/LOCK_EXCHANGE/MY_SRC/usrdef_sbc.F90
r10074 r12377 31 31 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 32 32 33 !! * Substitutions34 # include "vectopt_loop_substitute.h90"35 33 !!---------------------------------------------------------------------- 36 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 40 38 CONTAINS 41 39 42 SUBROUTINE usrdef_sbc_oce( kt )40 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 43 41 !!--------------------------------------------------------------------- 44 42 !! *** ROUTINE usr_def_sbc *** … … 55 53 !!---------------------------------------------------------------------- 56 54 INTEGER, INTENT(in) :: kt ! ocean time step 55 INTEGER, INTENT(in) :: Kbb ! ocean time index 57 56 !!--------------------------------------------------------------------- 58 57 ! … … 80 79 END SUBROUTINE usrdef_sbc_ice_tau 81 80 82 SUBROUTINE usrdef_sbc_ice_flx( kt ) 81 82 SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 83 83 INTEGER, INTENT(in) :: kt ! ocean time step 84 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phs ! snow thickness 85 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 84 86 END SUBROUTINE usrdef_sbc_ice_flx 85 87 -
NEMO/trunk/tests/LOCK_EXCHANGE/MY_SRC/usrdef_zgr.F90
r10425 r12377 27 27 PUBLIC usr_def_zgr ! called by domzgr.F90 28 28 29 !! * Substitutions30 # include "vectopt_loop_substitute.h90"31 29 !!---------------------------------------------------------------------- 32 30 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_flux_ubs_cfg
r12206 r12377 294 294 !! namdiu Cool skin and warm layer models (default: OFF) 295 295 !! namflo float parameters (default: OFF) 296 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)297 296 !! nam_diadct transports through some sections (default: OFF) 298 297 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/OVERFLOW/MY_SRC/usrdef_nam.F90
r11536 r12377 61 61 !!---------------------------------------------------------------------- 62 62 ! 63 REWIND( numnam_cfg ) ! Namelist namusr_def (exist in namelist_cfg only)64 63 READ ( numnam_cfg, namusr_def, IOSTAT = ios, ERR = 902 ) 65 64 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namusr_def in configuration namelist' ) -
NEMO/trunk/tests/OVERFLOW/MY_SRC/usrdef_sbc.F90
r10074 r12377 31 31 PUBLIC usrdef_sbc_ice_flx ! routine called by icestp.F90 for ice thermo 32 32 33 !! * Substitutions34 # include "vectopt_loop_substitute.h90"35 33 !!---------------------------------------------------------------------- 36 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 40 38 CONTAINS 41 39 42 SUBROUTINE usrdef_sbc_oce( kt )40 SUBROUTINE usrdef_sbc_oce( kt, Kbb ) 43 41 !!--------------------------------------------------------------------- 44 42 !! *** ROUTINE usr_def_sbc *** … … 55 53 !!---------------------------------------------------------------------- 56 54 INTEGER, INTENT(in) :: kt ! ocean time step 55 INTEGER, INTENT(in) :: Kbb ! ocean time index 57 56 !!--------------------------------------------------------------------- 58 57 ! … … 80 79 END SUBROUTINE usrdef_sbc_ice_tau 81 80 82 SUBROUTINE usrdef_sbc_ice_flx( kt ) 81 82 SUBROUTINE usrdef_sbc_ice_flx( kt, phs, phi ) 83 83 INTEGER, INTENT(in) :: kt ! ocean time step 84 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phs ! snow thickness 85 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 84 86 END SUBROUTINE usrdef_sbc_ice_flx 85 87 -
NEMO/trunk/tests/OVERFLOW/MY_SRC/usrdef_zgr.F90
r11077 r12377 29 29 PUBLIC usr_def_zgr ! called by domzgr.F90 30 30 31 !! * Substitutions32 # include "vectopt_loop_substitute.h90"33 31 !!---------------------------------------------------------------------- 34 32 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/trunk/tests/VORTEX/EXPREF/1_namelist_cfg
r12206 r12377 273 273 !! namdiu Cool skin and warm layer models (default: OFF) 274 274 !! namflo float parameters (default: OFF) 275 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF)276 275 !! nam_diadct transports through some sections (default: OFF) 277 276 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/VORTEX/EXPREF/namelist_cfg
r12206 r12377 264 264 !! namdiu Cool skin and warm layer models (default: OFF) 265 265 !! namflo float parameters (default: OFF) 266 !! nam_diaharm Harmonic analysis of tidal constituents (default; OFF)267 266 !! nam_diadct transports through some sections (default: OFF) 268 267 !! nam_dia25h 25h Mean Output (default: OFF) -
NEMO/trunk/tests/VORTEX/MY_SRC/domvvl.F90
r11536 r12377 8 8 !! 3.3 ! 2011-10 (M. Leclair) totally rewrote domvvl: vvl option includes z_star and z_tilde coordinates 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 10 11 !!---------------------------------------------------------------------- 11 12 … … 13 14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 14 15 !! dom_vvl_sf_nxt : Compute next vertical scale factors 15 !! dom_vvl_sf_ swp: Swap vertical scale factors and update the vertical grid16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 16 17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 17 18 !! dom_vvl_rst : read/write restart file … … 36 37 37 38 PUBLIC dom_vvl_init ! called by domain.F90 39 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 38 40 PUBLIC dom_vvl_sf_nxt ! called by step.F90 39 PUBLIC dom_vvl_sf_ swp! called by step.F9041 PUBLIC dom_vvl_sf_update ! called by step.F90 40 42 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 41 43 … … 61 63 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 62 64 63 !! * Substitutions64 # include "vectopt_loop_substitute.h90"65 65 !!---------------------------------------------------------------------- 66 66 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 93 93 94 94 95 SUBROUTINE dom_vvl_init 95 SUBROUTINE dom_vvl_init( Kbb, Kmm, Kaa ) 96 96 !!---------------------------------------------------------------------- 97 97 !! *** ROUTINE dom_vvl_init *** … … 102 102 !! ** Method : - use restart file and/or initialize 103 103 !! - interpolate scale factors 104 !! 105 !! ** Action : - e3t_(n/b) and tilde_e3t_(n/b) 106 !! - Regrid: e3[u/v](:,:,:,Kmm) 107 !! e3[u/v](:,:,:,Kmm) 108 !! e3w(:,:,:,Kmm) 109 !! e3[u/v]w_b 110 !! e3[u/v]w_n 111 !! gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm) and gde3w 112 !! - h(t/u/v)_0 113 !! - frq_rst_e3t and frq_rst_hdv 114 !! 115 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 116 !!---------------------------------------------------------------------- 117 INTEGER, INTENT(in) :: Kbb, Kmm, Kaa 118 ! 119 IF(lwp) WRITE(numout,*) 120 IF(lwp) WRITE(numout,*) 'dom_vvl_init : Variable volume activated' 121 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~' 122 ! 123 CALL dom_vvl_ctl ! choose vertical coordinate (z_star, z_tilde or layer) 124 ! 125 ! ! Allocate module arrays 126 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' ) 127 ! 128 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf 129 CALL dom_vvl_rst( nit000, Kbb, Kmm, 'READ' ) 130 e3t(:,:,jpk,Kaa) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all 131 ! 132 CALL dom_vvl_zgr(Kbb, Kmm, Kaa) ! interpolation scale factor, depth and water column 133 ! 134 END SUBROUTINE dom_vvl_init 135 ! 136 SUBROUTINE dom_vvl_zgr(Kbb, Kmm, Kaa) 137 !!---------------------------------------------------------------------- 138 !! *** ROUTINE dom_vvl_init *** 139 !! 140 !! ** Purpose : Interpolation of all scale factors, 141 !! depths and water column heights 142 !! 143 !! ** Method : - interpolate scale factors 104 144 !! 105 145 !! ** Action : - e3t_(n/b) and tilde_e3t_(n/b) … … 115 155 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. 116 156 !!---------------------------------------------------------------------- 157 INTEGER, INTENT(in) :: Kbb, Kmm, Kaa 158 !!---------------------------------------------------------------------- 117 159 INTEGER :: ji, jj, jk 118 160 INTEGER :: ii0, ii1, ij0, ij1 … … 120 162 !!---------------------------------------------------------------------- 121 163 ! 122 IF(lwp) WRITE(numout,*)123 IF(lwp) WRITE(numout,*) 'dom_vvl_init : Variable volume activated'124 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~'125 !126 CALL dom_vvl_ctl ! choose vertical coordinate (z_star, z_tilde or layer)127 !128 ! ! Allocate module arrays129 IF( dom_vvl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dom_vvl_init : unable to allocate arrays' )130 !131 ! ! Read or initialize e3t_(b/n), tilde_e3t_(b/n) and hdiv_lf132 CALL dom_vvl_rst( nit000, 'READ' )133 e3t_a(:,:,jpk) = e3t_0(:,:,jpk) ! last level always inside the sea floor set one for all134 !135 164 ! !== Set of all other vertical scale factors ==! (now and before) 136 165 ! ! Horizontal interpolation of e3t 137 CALL dom_vvl_interpol( e3t _b(:,:,:), e3u_b(:,:,:), 'U' ) ! from T to U138 CALL dom_vvl_interpol( e3t _n(:,:,:), e3u_n(:,:,:), 'U' )139 CALL dom_vvl_interpol( e3t _b(:,:,:), e3v_b(:,:,:), 'V' ) ! from T to V140 CALL dom_vvl_interpol( e3t _n(:,:,:), e3v_n(:,:,:), 'V' )141 CALL dom_vvl_interpol( e3u _n(:,:,:), e3f_n(:,:,:), 'F' ) ! from U to F166 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3u(:,:,:,Kbb), 'U' ) ! from T to U 167 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3u(:,:,:,Kmm), 'U' ) 168 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3v(:,:,:,Kbb), 'V' ) ! from T to V 169 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3v(:,:,:,Kmm), 'V' ) 170 CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3f(:,:,:), 'F' ) ! from U to F 142 171 ! ! Vertical interpolation of e3t,u,v 143 CALL dom_vvl_interpol( e3t _n(:,:,:), e3w_n (:,:,:), 'W' ) ! from T to W144 CALL dom_vvl_interpol( e3t _b(:,:,:), e3w_b (:,:,:), 'W' )145 CALL dom_vvl_interpol( e3u _n(:,:,:), e3uw_n(:,:,:), 'UW' ) ! from U to UW146 CALL dom_vvl_interpol( e3u _b(:,:,:), e3uw_b(:,:,:), 'UW' )147 CALL dom_vvl_interpol( e3v _n(:,:,:), e3vw_n(:,:,:), 'VW' ) ! from V to UW148 CALL dom_vvl_interpol( e3v _b(:,:,:), e3vw_b(:,:,:), 'VW' )172 CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3w (:,:,:,Kmm), 'W' ) ! from T to W 173 CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3w (:,:,:,Kbb), 'W' ) 174 CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3uw(:,:,:,Kmm), 'UW' ) ! from U to UW 175 CALL dom_vvl_interpol( e3u(:,:,:,Kbb), e3uw(:,:,:,Kbb), 'UW' ) 176 CALL dom_vvl_interpol( e3v(:,:,:,Kmm), e3vw(:,:,:,Kmm), 'VW' ) ! from V to UW 177 CALL dom_vvl_interpol( e3v(:,:,:,Kbb), e3vw(:,:,:,Kbb), 'VW' ) 149 178 150 179 ! We need to define e3[tuv]_a for AGRIF initialisation (should not be a problem for the restartability...) 151 e3t _a(:,:,:) = e3t_n(:,:,:)152 e3u _a(:,:,:) = e3u_n(:,:,:)153 e3v _a(:,:,:) = e3v_n(:,:,:)180 e3t(:,:,:,Kaa) = e3t(:,:,:,Kmm) 181 e3u(:,:,:,Kaa) = e3u(:,:,:,Kmm) 182 e3v(:,:,:,Kaa) = e3v(:,:,:,Kmm) 154 183 ! 155 184 ! !== depth of t and w-point ==! (set the isf depth as it is in the initial timestep) 156 gdept _n(:,:,1) = 0.5_wp * e3w_n(:,:,1) ! reference to the ocean surface (used for MLD and light penetration)157 gdepw _n(:,:,1) = 0.0_wp158 gde3w _n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) ! reference to a common level z=0 for hpg159 gdept _b(:,:,1) = 0.5_wp * e3w_b(:,:,1)160 gdepw _b(:,:,1) = 0.0_wp185 gdept(:,:,1,Kmm) = 0.5_wp * e3w(:,:,1,Kmm) ! reference to the ocean surface (used for MLD and light penetration) 186 gdepw(:,:,1,Kmm) = 0.0_wp 187 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) ! reference to a common level z=0 for hpg 188 gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 189 gdepw(:,:,1,Kbb) = 0.0_wp 161 190 DO jk = 2, jpk ! vertical sum 162 191 DO jj = 1,jpj … … 165 194 ! ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) 166 195 ! ! 0.5 where jk = mikt 167 !!gm ??????? BUG ? gdept _n as well as gde3w_ndoes not include the thickness of ISF ??196 !!gm ??????? BUG ? gdept(:,:,:,Kmm) as well as gde3w does not include the thickness of ISF ?? 168 197 zcoef = ( tmask(ji,jj,jk) - wmask(ji,jj,jk) ) 169 gdepw _n(ji,jj,jk) = gdepw_n(ji,jj,jk-1) + e3t_n(ji,jj,jk-1)170 gdept _n(ji,jj,jk) = zcoef * ( gdepw_n(ji,jj,jk ) + 0.5 * e3w_n(ji,jj,jk)) &171 & + (1-zcoef) * ( gdept _n(ji,jj,jk-1) + e3w_n(ji,jj,jk))172 gde3w _n(ji,jj,jk) = gdept_n(ji,jj,jk) - sshn(ji,jj)173 gdepw _b(ji,jj,jk) = gdepw_b(ji,jj,jk-1) + e3t_b(ji,jj,jk-1)174 gdept _b(ji,jj,jk) = zcoef * ( gdepw_b(ji,jj,jk ) + 0.5 * e3w_b(ji,jj,jk)) &175 & + (1-zcoef) * ( gdept _b(ji,jj,jk-1) + e3w_b(ji,jj,jk))198 gdepw(ji,jj,jk,Kmm) = gdepw(ji,jj,jk-1,Kmm) + e3t(ji,jj,jk-1,Kmm) 199 gdept(ji,jj,jk,Kmm) = zcoef * ( gdepw(ji,jj,jk ,Kmm) + 0.5 * e3w(ji,jj,jk,Kmm)) & 200 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kmm) + e3w(ji,jj,jk,Kmm)) 201 gde3w(ji,jj,jk) = gdept(ji,jj,jk,Kmm) - ssh(ji,jj,Kmm) 202 gdepw(ji,jj,jk,Kbb) = gdepw(ji,jj,jk-1,Kbb) + e3t(ji,jj,jk-1,Kbb) 203 gdept(ji,jj,jk,Kbb) = zcoef * ( gdepw(ji,jj,jk ,Kbb) + 0.5 * e3w(ji,jj,jk,Kbb)) & 204 & + (1-zcoef) * ( gdept(ji,jj,jk-1,Kbb) + e3w(ji,jj,jk,Kbb)) 176 205 END DO 177 206 END DO … … 179 208 ! 180 209 ! !== thickness of the water column !! (ocean portion only) 181 ht _n(:,:) = e3t_n(:,:,1) * tmask(:,:,1) !!gm BUG : this should be 1/2 * e3w(k=1) ....182 hu _b(:,:) = e3u_b(:,:,1) * umask(:,:,1)183 hu _n(:,:) = e3u_n(:,:,1) * umask(:,:,1)184 hv _b(:,:) = e3v_b(:,:,1) * vmask(:,:,1)185 hv _n(:,:) = e3v_n(:,:,1) * vmask(:,:,1)210 ht(:,:) = e3t(:,:,1,Kmm) * tmask(:,:,1) !!gm BUG : this should be 1/2 * e3w(k=1) .... 211 hu(:,:,Kbb) = e3u(:,:,1,Kbb) * umask(:,:,1) 212 hu(:,:,Kmm) = e3u(:,:,1,Kmm) * umask(:,:,1) 213 hv(:,:,Kbb) = e3v(:,:,1,Kbb) * vmask(:,:,1) 214 hv(:,:,Kmm) = e3v(:,:,1,Kmm) * vmask(:,:,1) 186 215 DO jk = 2, jpkm1 187 ht _n(:,:) = ht_n(:,:) + e3t_n(:,:,jk) * tmask(:,:,jk)188 hu _b(:,:) = hu_b(:,:) + e3u_b(:,:,jk) * umask(:,:,jk)189 hu _n(:,:) = hu_n(:,:) + e3u_n(:,:,jk) * umask(:,:,jk)190 hv _b(:,:) = hv_b(:,:) + e3v_b(:,:,jk) * vmask(:,:,jk)191 hv _n(:,:) = hv_n(:,:) + e3v_n(:,:,jk) * vmask(:,:,jk)216 ht(:,:) = ht(:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 217 hu(:,:,Kbb) = hu(:,:,Kbb) + e3u(:,:,jk,Kbb) * umask(:,:,jk) 218 hu(:,:,Kmm) = hu(:,:,Kmm) + e3u(:,:,jk,Kmm) * umask(:,:,jk) 219 hv(:,:,Kbb) = hv(:,:,Kbb) + e3v(:,:,jk,Kbb) * vmask(:,:,jk) 220 hv(:,:,Kmm) = hv(:,:,Kmm) + e3v(:,:,jk,Kmm) * vmask(:,:,jk) 192 221 END DO 193 222 ! 194 223 ! !== inverse of water column thickness ==! (u- and v- points) 195 r1_hu _b(:,:) = ssumask(:,:) / ( hu_b(:,:) + 1._wp - ssumask(:,:) ) ! _i mask due to ISF196 r1_hu _n(:,:) = ssumask(:,:) / ( hu_n(:,:) + 1._wp - ssumask(:,:) )197 r1_hv _b(:,:) = ssvmask(:,:) / ( hv_b(:,:) + 1._wp - ssvmask(:,:) )198 r1_hv _n(:,:) = ssvmask(:,:) / ( hv_n(:,:) + 1._wp - ssvmask(:,:) )224 r1_hu(:,:,Kbb) = ssumask(:,:) / ( hu(:,:,Kbb) + 1._wp - ssumask(:,:) ) ! _i mask due to ISF 225 r1_hu(:,:,Kmm) = ssumask(:,:) / ( hu(:,:,Kmm) + 1._wp - ssumask(:,:) ) 226 r1_hv(:,:,Kbb) = ssvmask(:,:) / ( hv(:,:,Kbb) + 1._wp - ssvmask(:,:) ) 227 r1_hv(:,:,Kmm) = ssvmask(:,:) / ( hv(:,:,Kmm) + 1._wp - ssvmask(:,:) ) 199 228 200 229 ! !== z_tilde coordinate case ==! (Restoring frequencies) … … 263 292 ENDIF 264 293 ! 265 END SUBROUTINE dom_vvl_ init266 267 268 SUBROUTINE dom_vvl_sf_nxt( kt, kcall )294 END SUBROUTINE dom_vvl_zgr 295 296 297 SUBROUTINE dom_vvl_sf_nxt( kt, Kbb, Kmm, Kaa, kcall ) 269 298 !!---------------------------------------------------------------------- 270 299 !! *** ROUTINE dom_vvl_sf_nxt *** … … 288 317 !! Reference : Leclair, M., and Madec, G. 2011, Ocean Modelling. 289 318 !!---------------------------------------------------------------------- 290 INTEGER, INTENT( in ) :: kt ! time step 291 INTEGER, INTENT( in ), OPTIONAL :: kcall ! optional argument indicating call sequence 319 INTEGER, INTENT( in ) :: kt ! time step 320 INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time step 321 INTEGER, INTENT( in ), OPTIONAL :: kcall ! optional argument indicating call sequence 292 322 ! 293 323 INTEGER :: ji, jj, jk ! dummy loop indices … … 321 351 ! ! --------------------------------------------- ! 322 352 ! 323 z_scale(:,:) = ( ssh a(:,:) - sshb(:,:) ) * ssmask(:,:) / ( ht_0(:,:) + sshn(:,:) + 1. - ssmask(:,:) )353 z_scale(:,:) = ( ssh(:,:,Kaa) - ssh(:,:,Kbb) ) * ssmask(:,:) / ( ht_0(:,:) + ssh(:,:,Kmm) + 1. - ssmask(:,:) ) 324 354 DO jk = 1, jpkm1 325 ! formally this is the same as e3t _a= e3t_0*(1+ssha/ht_0)326 e3t _a(:,:,jk) = e3t_b(:,:,jk) + e3t_n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk)355 ! formally this is the same as e3t(:,:,:,Kaa) = e3t_0*(1+ssha/ht_0) 356 e3t(:,:,jk,Kaa) = e3t(:,:,jk,Kbb) + e3t(:,:,jk,Kmm) * z_scale(:,:) * tmask(:,:,jk) 327 357 END DO 328 358 ! … … 337 367 zht(:,:) = 0._wp 338 368 DO jk = 1, jpkm1 339 zhdiv(:,:) = zhdiv(:,:) + e3t _n(:,:,jk) * hdivn(:,:,jk)340 zht (:,:) = zht (:,:) + e3t _n(:,:,jk) * tmask(:,:,jk)369 zhdiv(:,:) = zhdiv(:,:) + e3t(:,:,jk,Kmm) * hdiv(:,:,jk) 370 zht (:,:) = zht (:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 341 371 END DO 342 372 zhdiv(:,:) = zhdiv(:,:) / ( zht(:,:) + 1. - tmask_i(:,:) ) … … 348 378 DO jk = 1, jpkm1 349 379 hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:) & 350 & * ( hdiv_lf(:,:,jk) - e3t _n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) )380 & * ( hdiv_lf(:,:,jk) - e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) ) 351 381 END DO 352 382 ENDIF … … 361 391 IF( ln_vvl_ztilde ) THEN ! z_tilde case 362 392 DO jk = 1, jpkm1 363 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - ( e3t _n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) )393 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - ( e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) - hdiv_lf(:,:,jk) ) 364 394 END DO 365 395 ELSE ! layer case 366 396 DO jk = 1, jpkm1 367 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - e3t _n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) * tmask(:,:,jk)397 tilde_e3t_a(:,:,jk) = tilde_e3t_a(:,:,jk) - e3t(:,:,jk,Kmm) * ( hdiv(:,:,jk) - zhdiv(:,:) ) * tmask(:,:,jk) 368 398 END DO 369 399 ENDIF … … 383 413 DO jk = 1, jpkm1 ! a - first derivative: diffusive fluxes 384 414 DO jj = 1, jpjm1 385 DO ji = 1, fs_jpim1 ! vector opt.415 DO ji = 1, jpim1 ! vector opt. 386 416 un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_e1u(ji,jj) & 387 417 & * ( tilde_e3t_b(ji,jj,jk) - tilde_e3t_b(ji+1,jj ,jk) ) … … 401 431 DO jk = 1, jpkm1 ! c - second derivative: divergence of diffusive fluxes 402 432 DO jj = 2, jpjm1 403 DO ji = fs_2, fs_jpim1 ! vector opt.433 DO ji = 2, jpim1 ! vector opt. 404 434 tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) + ( un_td(ji-1,jj ,jk) - un_td(ji,jj,jk) & 405 435 & + vn_td(ji ,jj-1,jk) - vn_td(ji,jj,jk) & … … 476 506 zht(:,:) = zht(:,:) + tilde_e3t_a(:,:,jk) * tmask(:,:,jk) 477 507 END DO 478 z_scale(:,:) = - zht(:,:) / ( ht_0(:,:) + ssh n(:,:) + 1. - ssmask(:,:) )508 z_scale(:,:) = - zht(:,:) / ( ht_0(:,:) + ssh(:,:,Kmm) + 1. - ssmask(:,:) ) 479 509 DO jk = 1, jpkm1 480 dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + e3t _n(:,:,jk) * z_scale(:,:) * tmask(:,:,jk)510 dtilde_e3t_a(:,:,jk) = dtilde_e3t_a(:,:,jk) + e3t(:,:,jk,Kmm) * z_scale(:,:) * tmask(:,:,jk) 481 511 END DO 482 512 … … 486 516 ! ! ---baroclinic part--------- ! 487 517 DO jk = 1, jpkm1 488 e3t _a(:,:,jk) = e3t_a(:,:,jk) + dtilde_e3t_a(:,:,jk) * tmask(:,:,jk)518 e3t(:,:,jk,Kaa) = e3t(:,:,jk,Kaa) + dtilde_e3t_a(:,:,jk) * tmask(:,:,jk) 489 519 END DO 490 520 ENDIF … … 501 531 zht(:,:) = 0.0_wp 502 532 DO jk = 1, jpkm1 503 zht(:,:) = zht(:,:) + e3t _n(:,:,jk) * tmask(:,:,jk)504 END DO 505 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh n(:,:) - zht(:,:) ) )533 zht(:,:) = zht(:,:) + e3t(:,:,jk,Kmm) * tmask(:,:,jk) 534 END DO 535 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh(:,:,Kmm) - zht(:,:) ) ) 506 536 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 507 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshn-SUM(e3t _n))) =', z_tmax537 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshn-SUM(e3t(:,:,:,Kmm)))) =', z_tmax 508 538 ! 509 539 zht(:,:) = 0.0_wp 510 540 DO jk = 1, jpkm1 511 zht(:,:) = zht(:,:) + e3t _a(:,:,jk) * tmask(:,:,jk)512 END DO 513 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh a(:,:) - zht(:,:) ) )541 zht(:,:) = zht(:,:) + e3t(:,:,jk,Kaa) * tmask(:,:,jk) 542 END DO 543 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh(:,:,Kaa) - zht(:,:) ) ) 514 544 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 515 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+ssha-SUM(e3t _a))) =', z_tmax545 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+ssha-SUM(e3t(:,:,:,Kaa)))) =', z_tmax 516 546 ! 517 547 zht(:,:) = 0.0_wp 518 548 DO jk = 1, jpkm1 519 zht(:,:) = zht(:,:) + e3t _b(:,:,jk) * tmask(:,:,jk)520 END DO 521 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh b(:,:) - zht(:,:) ) )549 zht(:,:) = zht(:,:) + e3t(:,:,jk,Kbb) * tmask(:,:,jk) 550 END DO 551 z_tmax = MAXVAL( tmask(:,:,1) * tmask_i(:,:) * ABS( ht_0(:,:) + ssh(:,:,Kbb) - zht(:,:) ) ) 522 552 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 523 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshb-SUM(e3t _b))) =', z_tmax524 ! 525 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh b(:,:) ) )553 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ht_0+sshb-SUM(e3t(:,:,:,Kbb)))) =', z_tmax 554 ! 555 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh(:,:,Kbb) ) ) 526 556 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 527 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh b))) =', z_tmax528 ! 529 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh n(:,:) ) )557 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh(:,:,Kbb)))) =', z_tmax 558 ! 559 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh(:,:,Kmm) ) ) 530 560 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 531 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh n))) =', z_tmax532 ! 533 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh a(:,:) ) )561 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh(:,:,Kmm)))) =', z_tmax 562 ! 563 z_tmax = MAXVAL( tmask(:,:,1) * ABS( ssh(:,:,Kaa) ) ) 534 564 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 535 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh a))) =', z_tmax565 IF( lwp ) WRITE(numout, *) kt,' MAXVAL(abs(ssh(:,:,Kaa)))) =', z_tmax 536 566 END IF 537 567 … … 540 570 ! *********************************** ! 541 571 542 CALL dom_vvl_interpol( e3t _a(:,:,:), e3u_a(:,:,:), 'U' )543 CALL dom_vvl_interpol( e3t _a(:,:,:), e3v_a(:,:,:), 'V' )572 CALL dom_vvl_interpol( e3t(:,:,:,Kaa), e3u(:,:,:,Kaa), 'U' ) 573 CALL dom_vvl_interpol( e3t(:,:,:,Kaa), e3v(:,:,:,Kaa), 'V' ) 544 574 545 575 ! *********************************** ! … … 547 577 ! *********************************** ! 548 578 549 hu _a(:,:) = e3u_a(:,:,1) * umask(:,:,1)550 hv _a(:,:) = e3v_a(:,:,1) * vmask(:,:,1)579 hu(:,:,Kaa) = e3u(:,:,1,Kaa) * umask(:,:,1) 580 hv(:,:,Kaa) = e3v(:,:,1,Kaa) * vmask(:,:,1) 551 581 DO jk = 2, jpkm1 552 hu _a(:,:) = hu_a(:,:) + e3u_a(:,:,jk) * umask(:,:,jk)553 hv _a(:,:) = hv_a(:,:) + e3v_a(:,:,jk) * vmask(:,:,jk)582 hu(:,:,Kaa) = hu(:,:,Kaa) + e3u(:,:,jk,Kaa) * umask(:,:,jk) 583 hv(:,:,Kaa) = hv(:,:,Kaa) + e3v(:,:,jk,Kaa) * vmask(:,:,jk) 554 584 END DO 555 585 ! ! Inverse of the local depth 556 586 !!gm BUG ? don't understand the use of umask_i here ..... 557 r1_hu _a(:,:) = ssumask(:,:) / ( hu_a(:,:) + 1._wp - ssumask(:,:) )558 r1_hv _a(:,:) = ssvmask(:,:) / ( hv_a(:,:) + 1._wp - ssvmask(:,:) )587 r1_hu(:,:,Kaa) = ssumask(:,:) / ( hu(:,:,Kaa) + 1._wp - ssumask(:,:) ) 588 r1_hv(:,:,Kaa) = ssvmask(:,:) / ( hv(:,:,Kaa) + 1._wp - ssvmask(:,:) ) 559 589 ! 560 590 IF( ln_timing ) CALL timing_stop('dom_vvl_sf_nxt') … … 563 593 564 594 565 SUBROUTINE dom_vvl_sf_ swp( kt)566 !!---------------------------------------------------------------------- 567 !! *** ROUTINE dom_vvl_sf_ swp***595 SUBROUTINE dom_vvl_sf_update( kt, Kbb, Kmm, Kaa ) 596 !!---------------------------------------------------------------------- 597 !! *** ROUTINE dom_vvl_sf_update *** 568 598 !! 569 !! ** Purpose : compute time filter and swap of scale factors599 !! ** Purpose : for z tilde case: compute time filter and swap of scale factors 570 600 !! compute all depths and related variables for next time step 571 601 !! write outputs and restart file 572 602 !! 573 !! ** Method : - swap of e3t with trick for volume/tracer conservation 603 !! ** Method : - swap of e3t with trick for volume/tracer conservation (ONLY FOR Z TILDE CASE) 574 604 !! - reconstruct scale factor at other grid points (interpolate) 575 605 !! - recompute depths and water height fields 576 606 !! 577 !! ** Action : - e3t_(b/n), tilde_e3t_(b/n) and e3(u/v)_nready for next time step607 !! ** Action : - tilde_e3t_(b/n) ready for next time step 578 608 !! - Recompute: 579 609 !! e3(u/v)_b 580 !! e3w _n610 !! e3w(:,:,:,Kmm) 581 611 !! e3(u/v)w_b 582 612 !! e3(u/v)w_n 583 !! gdept _n, gdepw_n and gde3w_n613 !! gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm) and gde3w 584 614 !! h(u/v) and h(u/v)r 585 615 !! … … 587 617 !! Leclair, M., and G. Madec, 2011, Ocean Modelling. 588 618 !!---------------------------------------------------------------------- 589 INTEGER, INTENT( in ) :: kt ! time step 619 INTEGER, INTENT( in ) :: kt ! time step 620 INTEGER, INTENT( in ) :: Kbb, Kmm, Kaa ! time level indices 590 621 ! 591 622 INTEGER :: ji, jj, jk ! dummy loop indices … … 595 626 IF( ln_linssh ) RETURN ! No calculation in linear free surface 596 627 ! 597 IF( ln_timing ) CALL timing_start('dom_vvl_sf_ swp')628 IF( ln_timing ) CALL timing_start('dom_vvl_sf_update') 598 629 ! 599 630 IF( kt == nit000 ) THEN 600 631 IF(lwp) WRITE(numout,*) 601 IF(lwp) WRITE(numout,*) 'dom_vvl_sf_ swp : - time filter and swap of scale factors'602 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ - interpolate scale factors and compute depths for next time step'632 IF(lwp) WRITE(numout,*) 'dom_vvl_sf_update : - interpolate scale factors and compute depths for next time step' 633 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~~~' 603 634 ENDIF 604 635 ! … … 615 646 tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) 616 647 ENDIF 617 gdept_b(:,:,:) = gdept_n(:,:,:)618 gdepw_b(:,:,:) = gdepw_n(:,:,:)619 620 e3t_n(:,:,:) = e3t_a(:,:,:)621 e3u_n(:,:,:) = e3u_a(:,:,:)622 e3v_n(:,:,:) = e3v_a(:,:,:)623 648 624 649 ! Compute all missing vertical scale