- Timestamp:
- 2020-12-03T12:20:38+01:00 (3 years ago)
- Location:
- NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG
- Files:
-
- 1 deleted
- 86 edited
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG
- Property svn:externals
-
old new 8 8 9 9 # SETTE 10 ^/utils/CI/sette @13292sette10 ^/utils/CI/sette_wave@13990 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/BENCH/EXPREF/namelist_cfg_orca025_like
r13286 r14037 77 77 !! !! 78 78 !! namdrg top/bottom drag coefficient (default: NO selection) 79 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)80 !! namdrg_bot bottom friction (ln_ OFF =F)79 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 80 !! namdrg_bot bottom friction (ln_drg_OFF =F) 81 81 !! nambbc bottom temperature boundary condition (default: OFF) 82 82 !! nambbl bottom boundary layer scheme (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/BENCH/EXPREF/namelist_cfg_orca12_like
r13286 r14037 77 77 !! !! 78 78 !! namdrg top/bottom drag coefficient (default: NO selection) 79 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)80 !! namdrg_bot bottom friction (ln_ OFF =F)79 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 80 !! namdrg_bot bottom friction (ln_drg_OFF =F) 81 81 !! nambbc bottom temperature boundary condition (default: OFF) 82 82 !! nambbl bottom boundary layer scheme (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/BENCH/EXPREF/namelist_cfg_orca1_like
r13286 r14037 77 77 !! !! 78 78 !! namdrg top/bottom drag coefficient (default: NO selection) 79 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)80 !! namdrg_bot bottom friction (ln_ OFF =F)79 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 80 !! namdrg_bot bottom friction (ln_drg_OFF =F) 81 81 !! nambbc bottom temperature boundary condition (default: OFF) 82 82 !! nambbl bottom boundary layer scheme (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/BENCH/MY_SRC/usrdef_sbc.F90
r13295 r14037 137 137 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 138 138 !! 139 REAL(wp) :: zfr1, zfr2 ! local variables140 139 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 141 140 !!--------------------------------------------------------------------- … … 172 171 qsr_tot (:,:) = at_i_b(:,:) * qsr_oce(:,:) + SUM( a_i_b(:,:,:) * qsr_ice(:,:,:), dim=3 ) 173 172 174 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 175 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm 176 zfr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1 177 ! 178 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 179 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 180 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 181 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 182 ELSEWHERE ! zero when hs>0 183 qtr_ice_top(:,:,:) = 0._wp 184 END WHERE 173 ! --- shortwave radiation transmitted thru the surface scattering layer (W/m2) --- ! 174 qtr_ice_top(:,:,:) = 0._wp 175 185 176 #endif 186 177 -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/EXPREF/file_def_nemo-oce.xml
r9572 r14037 15 15 <field field_ref="soce" /> 16 16 <field field_ref="ssh" /> 17 <field field_ref="s algrad" />18 <field field_ref=" ke_zint" />17 <field field_ref="socegrad" /> 18 <field field_ref="eken_int" /> 19 19 <field field_ref="relvor" /> 20 20 <field field_ref="potvor" /> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/EXPREF/namelist_cfg
r12489 r14037 20 20 &namusr_def ! User defined : CANAL configuration: Flat bottom, beta-plane 21 21 !----------------------------------------------------------------------- 22 rn_domszx = 3600. ! x horizontal size [km]23 rn_domszy = 1 800. ! y horizontal size [km]24 rn_domszz = 5000. ! z vertical size [m]25 rn_dx = 30. ! x horizontal resolution [km]26 rn_dy = 30. ! y horizontal resolution [km]27 rn_dz = 500. ! z vertical resolution [m]22 rn_domszx = 2000. ! x horizontal size [km] 23 rn_domszy = 1000. ! y horizontal size [km] 24 rn_domszz = 1000. ! z vertical size [m] 25 rn_dx = 10. ! x horizontal resolution [km] 26 rn_dy = 10. ! y horizontal resolution [km] 27 rn_dz = 1000. ! z vertical resolution [m] 28 28 rn_0xratio = 0.5 ! x-domain ratio of the 0 29 29 rn_0yratio = 0.5 ! y-domain ratio of the 0 … … 31 31 rn_ppgphi0 = 38.5 ! Reference latitude [degrees] 32 32 rn_u10 = 0. ! 10m wind speed [m/s] 33 rn_windszx = 4000.! longitudinal wind extension [km]34 rn_windszy = 4000.! latitudinal wind extension [km]35 rn_uofac = 0.! Uoce multiplicative factor (0.:absolute or 1.:relative winds)33 rn_windszx = 90. ! longitudinal wind extension [km] 34 rn_windszy = 90. ! latitudinal wind extension [km] 35 !!clem rn_uofac = 0. ! Uoce multiplicative factor (0.:absolute or 1.:relative winds) 36 36 rn_vtxmax = 1. ! initial vortex max current [m/s] 37 37 rn_uzonal = 1. ! initial zonal current [m/s] 38 rn_ujetszx = 4000. 39 rn_ujetszy = 400 0. ! latitudinal jet extension [km]38 rn_ujetszx = 4000. ! longitudinal jet extension [km] 39 rn_ujetszy = 400. ! latitudinal jet extension [km] 40 40 nn_botcase = 0 ! bottom definition (0:flat, 1:bump) 41 nn_initcase = 1 ! initial condition case (0:rest, 1:zonal current, 2:current shear, 3: gaussian zonal current, 42 ! ! 4: geostrophic zonal pulse, 5: vortex) 43 ln_sshnoise = .false. ! add random noise on initial ssh 44 rn_lambda = 50. ! gaussian lambda 41 nn_initcase = 1 ! initial condition case 42 ! ! -1 : stratif at rest 43 ! ! 0 : rest 44 ! ! 1 : zonal current 45 ! ! 2 : current shear 46 ! ! 3 : gaussian zonal current 47 ! ! 4 : geostrophic zonal pulse 48 ! ! 5 : baroclinic vortex 49 ln_sshnoise = .FALSE. ! add random noise on initial ssh 50 rn_lambda = 50. ! gaussian lambda 51 nn_perio = 1 45 52 / 46 53 !----------------------------------------------------------------------- … … 59 66 !----------------------------------------------------------------------- 60 67 ln_linssh = .false. ! =T linear free surface ==>> model level are fixed in time 61 rn_Dt = 1440. ! time step for the dynamics (and tracer if nn_acc=0) 62 rn_atfp = 0.05 ! asselin time filter parameter 68 rn_Dt = 1200. ! time step for the dynamics (and tracer if nn_acc=0) 69 rn_atfp = 0.0 ! asselin time filter parameter 70 / 71 !----------------------------------------------------------------------- 72 &namcfg ! parameters of the configuration (default: use namusr_def in namelist_cfg) 73 !----------------------------------------------------------------------- 74 ln_write_cfg = .false. ! (=T) create the domain configuration file 75 cn_domcfg_out = "domain_cfg" ! newly created domain configuration filename 63 76 / 64 77 !!====================================================================== … … 108 121 !! !! 109 122 !! namdrg top/bottom drag coefficient (default: NO selection) 110 !! namdrg_top top friction (ln_ OFF =F & ln_isfcav=T)111 !! namdrg_bot bottom friction (ln_ OFF =F)123 !! namdrg_top top friction (ln_drg_OFF =F & ln_isfcav=T) 124 !! namdrg_bot bottom friction (ln_drg_OFF =F) 112 125 !! nambbc bottom temperature boundary condition (default: OFF) 113 126 !! nambbl bottom boundary layer scheme (default: OFF) … … 117 130 &namdrg ! top/bottom drag coefficient (default: NO selection) 118 131 !----------------------------------------------------------------------- 119 ln_ OFF = .true. ! free-slip : Cd = 0132 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 120 133 / 121 134 !!====================================================================== … … 134 147 !----------------------------------------------------------------------- 135 148 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 136 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS149 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 137 150 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 138 151 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 148 161 ln_traadv_OFF = .false. ! No tracer advection 149 162 ln_traadv_cen = .false. ! 2nd order centered scheme 150 nn_cen_h = 4! =2/4, horizontal 2nd order CEN / 4th order CEN151 nn_cen_v = 4! =2/4, vertical 2nd order CEN / 4th order COMPACT163 nn_cen_h = 2 ! =2/4, horizontal 2nd order CEN / 4th order CEN 164 nn_cen_v = 2 ! =2/4, vertical 2nd order CEN / 4th order COMPACT 152 165 ln_traadv_fct = .false. ! FCT scheme 153 nn_fct_h = 2! =2/4, horizontal 2nd / 4th order166 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 154 167 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 155 168 ln_traadv_mus = .false. ! MUSCL scheme … … 162 175 &namtra_ldf ! lateral diffusion scheme for tracers (default: NO selection) 163 176 !----------------------------------------------------------------------- 164 ln_traldf_OFF = .true. ! No explicit diffusion 177 ! ! Operator type: 178 ln_traldf_OFF = .true. ! No explicit diffusion 179 ln_traldf_lap = .false. ! laplacian operator 180 ln_traldf_blp = .false. ! bilaplacian operator 181 ! 182 ! ! Direction of action: 183 ln_traldf_lev = .false. ! iso-level 184 ln_traldf_hor = .true. ! horizontal (geopotential) 185 ln_traldf_iso = .false. ! iso-neutral (standard operator) 186 ln_traldf_triad = .false. ! iso-neutral (triad operator) 187 ! 188 ! ! iso-neutral options: 189 ln_traldf_msc = .false. ! Method of Stabilizing Correction (both operators) 190 rn_slpmax = 0.01 ! slope limit (both operators) 191 ln_triad_iso = .false. ! pure horizontal mixing in ML (triad only) 192 rn_sw_triad = 1 ! =1 switching triad ; =0 all 4 triads used (triad only) 193 ln_botmix_triad = .false. ! lateral mixing on bottom (triad only) 194 ! 195 ! ! Coefficients: 196 nn_aht_ijk_t = 31 ! space/time variation of eddy coefficient: 197 ! ! =-20 (=-30) read in eddy_diffusivity_2D.nc (..._3D.nc) file 198 ! ! = 0 constant 199 ! ! = 10 F(k) =ldf_c1d 200 ! ! = 20 F(i,j) =ldf_c2d 201 ! ! = 21 F(i,j,t) =Treguier et al. JPO 1997 formulation 202 ! ! = 30 F(i,j,k) =ldf_c2d * ldf_c1d 203 ! ! = 31 F(i,j,k,t)=F(local velocity and grid-spacing) 204 ! ! time invariant coefficients: aht0 = 1/2 Ud*Ld (lap case) 205 ! ! or = 1/12 Ud*Ld^3 (blp case) 206 rn_Ud = 0.01 ! lateral diffusive velocity [m/s] (nn_aht_ijk_t= 0, 10, 20, 30) 207 rn_Ld = 200.e+3 ! lateral diffusive length [m] (nn_aht_ijk_t= 0, 10) 165 208 / 166 209 !!====================================================================== … … 183 226 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 184 227 ln_dynadv_cen2 = .false. ! flux form - 2nd order centered scheme 185 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme228 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 186 229 / 187 230 !----------------------------------------------------------------------- 188 231 &namdyn_vor ! Vorticity / Coriolis scheme (default: NO selection) 189 232 !----------------------------------------------------------------------- 190 ln_dynvor_ene = . true. ! energy conserving scheme191 ln_dynvor_ens = .false. ! enstrophy conserving scheme192 ln_dynvor_mix = .false. ! mixed scheme233 ln_dynvor_ene = .false. ! energy conserving scheme 234 ln_dynvor_ens = .false. ! enstrophy conserving scheme 235 ln_dynvor_mix = .false. ! mixed scheme 193 236 ln_dynvor_een = .false. ! energy & enstrophy scheme 237 ln_dynvor_enT = .false. ! energy conserving scheme (T-point) 238 ln_dynvor_eeT = .true. ! energy conserving scheme (een using e3t) 194 239 nn_een_e3f = 0 ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 195 240 / … … 210 255 ! ! = 1 Boxcar over nn_e sub-steps 211 256 ! ! = 2 Boxcar over 2*nn_e " " 212 ln_bt_auto = . false. ! Number of sub-step defined from:257 ln_bt_auto = .true. ! Number of sub-step defined from: 213 258 nn_e = 24 ! =F : the number of sub-step in rn_Dt seconds 214 259 / … … 222 267 ! ! Direction of action : 223 268 ln_dynldf_lev = .false. ! iso-level 224 ln_dynldf_hor = . true. ! horizontal (geopotential)269 ln_dynldf_hor = .false. ! horizontal (geopotential) 225 270 ln_dynldf_iso = .false. ! iso-neutral 226 271 ! ! Coefficient 227 nn_ahm_ijk_t = 20! space/time variation of eddy coef272 nn_ahm_ijk_t = 31 ! space/time variation of eddy coef 228 273 ! ! =-30 read in eddy_viscosity_3D.nc file 229 274 ! ! =-20 read in eddy_viscosity_2D.nc file … … 271 316 !! !! 272 317 !! namtrd dynamics and/or tracer trends (default: OFF) 273 !! namptr Poleward Transport Diagnostics (default: OFF)274 318 !! namhsb Heat and salt budgets (default: OFF) 275 319 !! namdiu Cool skin and warm layer models (default: OFF) 276 320 !! namdiu Cool skin and warm layer models (default: OFF) 321 <<<<<<< .working 277 322 !! namflo float parameters (default: OFF) 278 323 !! nam_diadct transports through some sections (default: OFF) 324 ||||||| .merge-left.r13465 325 !! namflo float parameters (default: OFF) 326 !! nam_diaharm Harmonic analysis of tidal constituents (default: OFF) 327 !! nam_diadct transports through some sections (default: OFF) 328 ======= 329 !! namflo float parameters ("key_float") 330 !! nam_diaharm Harmonic analysis of tidal constituents ("key_diaharm") 331 !! namdct transports through some sections ("key_diadct") 332 !! nam_diatmb Top Middle Bottom Output (default: OFF) 333 >>>>>>> .merge-right.r13470 279 334 !! nam_dia25h 25h Mean Output (default: OFF) 280 335 !! namnc4 netcdf4 chunking and compression settings ("key_netcdf4") … … 285 340 !----------------------------------------------------------------------- 286 341 ln_glo_trd = .false. ! (T) global domain averaged diag for T, T^2, KE, and PE 287 ln_dyn_trd = .true. ! (T) 3D momentum trend output342 ln_dyn_trd = .true. ! (T) 3D momentum trend output 288 343 ln_dyn_mxl = .false. ! (T) 2D momentum trends averaged over the mixed layer (not coded yet) 289 344 ln_vor_trd = .false. ! (T) 2D barotropic vorticity trends (not coded yet) … … 312 367 &nammpp ! Massively Parallel Processing ("key_mpp_mpi") 313 368 !----------------------------------------------------------------------- 369 !! jpni = 8 ! jpni number of processors following i (set automatically if < 1) 370 !! jpnj = 1 ! jpnj number of processors following j (set automatically if < 1) 314 371 / 315 372 !----------------------------------------------------------------------- 316 373 &namctl ! Control prints (default: OFF) 317 374 !----------------------------------------------------------------------- 375 ln_timing = .true. ! timing by routine write out in timing.output file 376 !! ln_diacfl = .true. ! CFL diagnostics write out in cfl_diagnostics.ascii 318 377 / 319 378 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/domvvl.F90
r13295 r14037 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 11 !! 4.x ! 2020-02 (G. Madec, S. Techene) introduce ssh to h0 ratio 11 12 !!---------------------------------------------------------------------- 12 13 13 !!----------------------------------------------------------------------14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness15 !! dom_vvl_sf_nxt : Compute next vertical scale factors16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another18 !! dom_vvl_rst : read/write restart file19 !! dom_vvl_ctl : Check the vvl options20 !!----------------------------------------------------------------------21 14 USE oce ! ocean dynamics and tracers 22 15 USE phycst ! physical constant … … 36 29 PRIVATE 37 30 38 PUBLIC dom_vvl_init ! called by domain.F9039 PUBLIC dom_vvl_zgr ! called by isfcpl.F9040 PUBLIC dom_vvl_sf_nxt ! called by step.F9041 PUBLIC dom_vvl_sf_update ! called by step.F9042 PUBLIC dom_vvl_interpol ! called by dynnxt.F9043 44 31 ! !!* Namelist nam_vvl 45 32 LOGICAL , PUBLIC :: ln_vvl_zstar = .FALSE. ! zstar vertical coordinate … … 63 50 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 64 51 52 #if defined key_qco 53 !!---------------------------------------------------------------------- 54 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordonate 55 !!---------------------------------------------------------------------- 56 #else 57 !!---------------------------------------------------------------------- 58 !! Default key Old management of time varying vertical coordinate 59 !!---------------------------------------------------------------------- 60 61 !!---------------------------------------------------------------------- 62 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 63 !! dom_vvl_sf_nxt : Compute next vertical scale factors 64 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 65 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 66 !! dom_vvl_rst : read/write restart file 67 !! dom_vvl_ctl : Check the vvl options 68 !!---------------------------------------------------------------------- 69 70 PUBLIC dom_vvl_init ! called by domain.F90 71 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 72 PUBLIC dom_vvl_sf_nxt ! called by step.F90 73 PUBLIC dom_vvl_sf_update ! called by step.F90 74 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 75 65 76 !! * Substitutions 66 77 # include "do_loop_substitute.h90" … … 135 146 ! 136 147 END SUBROUTINE dom_vvl_init 137 ! 148 149 138 150 SUBROUTINE dom_vvl_zgr(Kbb, Kmm, Kaa) 139 151 !!---------------------------------------------------------------------- … … 261 273 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN 262 274 IF( nn_cfg == 3 ) THEN ! ORCA2: Suppress ztilde in the Foxe Basin for ORCA2 263 ii0 = 103 ; ii1 = 111264 ij0 = 128 ; ij1 = 135 ;275 ii0 = 103 + nn_hls - 1 ; ii1 = 111 + nn_hls - 1 276 ij0 = 128 + nn_hls ; ij1 = 135 + nn_hls 265 277 frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.0_wp 266 278 frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0_wp / rn_Dt … … 268 280 ENDIF 269 281 ENDIF 270 ENDIF271 !272 IF(lwxios) THEN273 ! define variables in restart file when writing with XIOS274 CALL iom_set_rstw_var_active('e3t_b')275 CALL iom_set_rstw_var_active('e3t_n')276 ! ! ----------------------- !277 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases !278 ! ! ----------------------- !279 CALL iom_set_rstw_var_active('tilde_e3t_b')280 CALL iom_set_rstw_var_active('tilde_e3t_n')281 END IF282 ! ! -------------!283 IF( ln_vvl_ztilde ) THEN ! z_tilde case !284 ! ! ------------ !285 CALL iom_set_rstw_var_active('hdiv_lf')286 ENDIF287 !288 282 ENDIF 289 283 ! … … 322 316 LOGICAL :: ll_do_bclinic ! local logical 323 317 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 324 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 318 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ze3t 319 LOGICAL , DIMENSION(:,:,:), ALLOCATABLE :: llmsk 325 320 !!---------------------------------------------------------------------- 326 321 ! … … 435 430 ! Maximum deformation control 436 431 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 437 ze3t(:,:,jpk) = 0._wp 438 DO jk = 1, jpkm1 439 ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 440 END DO 441 z_tmax = MAXVAL( ze3t(:,:,:) ) 442 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 443 z_tmin = MINVAL( ze3t(:,:,:) ) 444 CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 432 ALLOCATE( ze3t(jpi,jpj,jpk), llmsk(jpi,jpj,jpk) ) 433 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 434 ze3t(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) / e3t_0(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 435 END_3D 436 ! 437 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 438 llmsk(Nie1: jpi,:,:) = .FALSE. 439 llmsk(:, 1:Njs1,:) = .FALSE. 440 llmsk(:,Nje1: jpj,:) = .FALSE. 441 ! 442 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 443 z_tmax = MAXVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 444 z_tmin = MINVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 445 445 ! - ML - test: for the moment, stop simulation for too large e3_t variations 446 446 IF( ( z_tmax > rn_zdef_max ) .OR. ( z_tmin < - rn_zdef_max ) ) THEN 447 IF( lk_mpp ) THEN 448 CALL mpp_maxloc( 'domvvl', ze3t, tmask, z_tmax, ijk_max ) 449 CALL mpp_minloc( 'domvvl', ze3t, tmask, z_tmin, ijk_min ) 450 ELSE 451 ijk_max = MAXLOC( ze3t(:,:,:) ) 452 ijk_max(1) = mig0_oldcmp(ijk_max(1)) 453 ijk_max(2) = mjg0_oldcmp(ijk_max(2)) 454 ijk_min = MINLOC( ze3t(:,:,:) ) 455 ijk_min(1) = mig0_oldcmp(ijk_min(1)) 456 ijk_min(2) = mjg0_oldcmp(ijk_min(2)) 457 ENDIF 447 CALL mpp_maxloc( 'domvvl', ze3t, llmsk, z_tmax, ijk_max ) 448 CALL mpp_minloc( 'domvvl', ze3t, llmsk, z_tmin, ijk_min ) 458 449 IF (lwp) THEN 459 450 WRITE(numout, *) 'MAX( tilde_e3t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax … … 464 455 ENDIF 465 456 ENDIF 457 DEALLOCATE( ze3t, llmsk ) 466 458 ! - ML - end test 467 459 ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below … … 793 785 IF( ln_rstart ) THEN !* Read the restart file 794 786 CALL rst_read_open ! open the restart file if necessary 795 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) , ldxios = lrxios)787 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 796 788 ! 797 789 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 806 798 ! 807 799 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 808 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)809 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)800 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 801 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 810 802 ! needed to restart if land processor not computed 811 803 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 821 813 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 822 814 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)815 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 824 816 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 825 817 l_1st_euler = .true. … … 828 820 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 829 821 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 830 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)822 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 831 823 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 832 824 l_1st_euler = .true. … … 853 845 ! ! ----------------------- ! 854 846 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 855 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lrxios)856 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lrxios)847 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 857 849 ELSE ! one at least array is missing 858 850 tilde_e3t_b(:,:,:) = 0.0_wp … … 863 855 ! ! ------------ ! 864 856 IF( id5 > 0 ) THEN ! required array exists 865 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lrxios)857 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 866 858 ELSE ! array is missing 867 859 hdiv_lf(:,:,:) = 0.0_wp … … 937 929 ! ! =================== 938 930 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 939 IF( lwxios ) CALL iom_swap( cwxios_context )940 931 ! ! --------- ! 941 932 ! ! all cases ! 942 933 ! ! --------- ! 943 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lwxios)944 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lwxios)934 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 935 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 945 936 ! ! ----------------------- ! 946 937 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 947 938 ! ! ----------------------- ! 948 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lwxios)949 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lwxios)939 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 940 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 950 941 END IF 951 942 ! ! -------------! 952 943 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 953 944 ! ! ------------ ! 954 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lwxios)945 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 955 946 ENDIF 956 947 ! 957 IF( lwxios ) CALL iom_swap( cxios_context )958 948 ENDIF 959 949 ! … … 1030 1020 END SUBROUTINE dom_vvl_ctl 1031 1021 1022 #endif 1023 1032 1024 !!====================================================================== 1033 1025 END MODULE domvvl -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/stpctl.F90
r13216 r14037 49 49 !! 50 50 !! ** Method : - Save the time step in numstp 51 !! - Print it each 50 time steps52 51 !! - Stop the run IF problem encountered by setting nstop > 0 53 52 !! Problems checked: |ssh| maximum larger than 10 m … … 68 67 REAL(wp) :: zzz ! local real 69 68 REAL(wp), DIMENSION(9) :: zmax, zmaxlocal 70 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 69 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns, ll_0oce 71 70 LOGICAL, DIMENSION(jpi,jpj,jpk) :: llmsk 72 71 CHARACTER(len=20) :: clname … … 119 118 ! !== test of local extrema ==! 120 119 ! !== done by all processes at every time step ==! 121 llmsk(:,:,1) = ssmask(:,:) == 1._wp 120 ! 121 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 122 llmsk(Nie1: jpi,:,:) = .FALSE. 123 llmsk(:, 1:Njs1,:) = .FALSE. 124 llmsk(:,Nje1: jpj,:) = .FALSE. 125 ! 126 llmsk(Nis0:Nie0,Njs0:Nje0,1) = ssmask(Nis0:Nie0,Njs0:Nje0) == 1._wp ! define only the inner domain 127 ! 128 ll_0oce = .NOT. ANY( llmsk(:,:,1) ) ! no ocean point in the inner domain? 129 ! 122 130 IF( ll_wd ) THEN 123 131 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) + ssh_ref ), mask = llmsk(:,:,1) ) ! ssh max … … 125 133 zmax(1) = MAXVAL( ABS( ssh(:,:,Kmm) ), mask = llmsk(:,:,1) ) ! ssh max 126 134 ENDIF 127 llmsk( :,:,:) = umask(:,:,:) == 1._wp135 llmsk(Nis0:Nie0,Njs0:Nje0,:) = umask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 128 136 zmax(2) = MAXVAL( ABS( uu(:,:,:,Kmm) ), mask = llmsk ) ! velocity max (zonal only) 129 llmsk( :,:,:) = tmask(:,:,:) == 1._wp137 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 130 138 zmax(3) = MAXVAL( -ts(:,:,:,jp_sal,Kmm), mask = llmsk ) ! minus salinity max 131 139 zmax(4) = MAXVAL( ts(:,:,:,jp_sal,Kmm), mask = llmsk ) ! salinity max … … 143 151 zmax(5:8) = 0._wp 144 152 ENDIF 145 zmax(9) = REAL( nstop, wp ) ! stop indicator 153 zmax(9) = REAL( nstop, wp ) ! stop indicator 154 ! 146 155 ! !== get global extrema ==! 147 156 ! !== done by all processes if writting run.stat ==! 148 157 IF( ll_colruns ) THEN 149 158 zmaxlocal(:) = zmax(:) 150 CALL mpp_max( "stpctl", zmax ) ! max over the global domain 159 CALL mpp_max( "stpctl", zmax ) ! max over the global domain: ok even of ll_0oce = .true. 151 160 nstop = NINT( zmax(9) ) ! update nstop indicator (now sheared among all local domains) 152 ENDIF 161 ELSE 162 ! if no ocean point: MAXVAL returns -HUGE => we must overwrite this value to avoid error handling bellow. 163 IF( ll_0oce ) zmax(1:4) = (/ 0._wp, 0._wp, -1._wp, 1._wp /) ! default "valid" values... 164 ENDIF 165 ! 166 zmax(3) = -zmax(3) ! move back from max(-zz) to min(zz) : easier to manage! 167 zmax(5) = -zmax(5) ! move back from max(-zz) to min(zz) : easier to manage! 168 IF( ll_colruns ) THEN 169 zmaxlocal(3) = -zmaxlocal(3) ! move back from max(-zz) to min(zz) : easier to manage! 170 zmaxlocal(5) = -zmaxlocal(5) ! move back from max(-zz) to min(zz) : easier to manage! 171 ENDIF 172 ! 153 173 ! !== write "run.stat" files ==! 154 174 ! !== done only by 1st subdomain at writting timestep ==! 155 175 IF( ll_wrtruns ) THEN 156 WRITE(numrun,9500) kt, zmax(1), zmax(2), -zmax(3), zmax(4) 157 istatus = NF90_PUT_VAR( nrunid, nvarid(1), (/ zmax(1)/), (/kt/), (/1/) ) 158 istatus = NF90_PUT_VAR( nrunid, nvarid(2), (/ zmax(2)/), (/kt/), (/1/) ) 159 istatus = NF90_PUT_VAR( nrunid, nvarid(3), (/-zmax(3)/), (/kt/), (/1/) ) 160 istatus = NF90_PUT_VAR( nrunid, nvarid(4), (/ zmax(4)/), (/kt/), (/1/) ) 161 istatus = NF90_PUT_VAR( nrunid, nvarid(5), (/-zmax(5)/), (/kt/), (/1/) ) 162 istatus = NF90_PUT_VAR( nrunid, nvarid(6), (/ zmax(6)/), (/kt/), (/1/) ) 163 IF( ln_zad_Aimp ) THEN 164 istatus = NF90_PUT_VAR( nrunid, nvarid(7), (/ zmax(7)/), (/kt/), (/1/) ) 165 istatus = NF90_PUT_VAR( nrunid, nvarid(8), (/ zmax(8)/), (/kt/), (/1/) ) 166 ENDIF 176 WRITE(numrun,9500) kt, zmax(1), zmax(2), zmax(3), zmax(4) 177 DO ji = 1, 6 + 2 * COUNT( (/ln_zad_Aimp/) ) 178 istatus = NF90_PUT_VAR( nrunid, nvarid(ji), (/zmax(ji)/), (/kt/), (/1/) ) 179 END DO 167 180 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 168 181 END IF … … 170 183 ! !== done by all processes at every time step ==! 171 184 ! 172 IF( 173 & 174 !!$ & zmax(3) >= 0._wp .OR. & ! negative or zero sea surface salinity175 !!$ & 176 !!$ & 177 & 178 & 185 IF( zmax(1) > 20._wp .OR. & ! too large sea surface height ( > 20 m ) 186 & zmax(2) > 10._wp .OR. & ! too large velocity ( > 10 m/s) 187 !!$ & zmax(3) <= 0._wp .OR. & ! negative or zero sea surface salinity 188 !!$ & zmax(4) >= 100._wp .OR. & ! too large sea surface salinity ( > 100 ) 189 !!$ & zmax(4) < 0._wp .OR. & ! too large sea surface salinity (keep this line for sea-ice) 190 & ISNAN( zmax(1) + zmax(2) + zmax(3) ) .OR. & ! NaN encounter in the tests 191 & ABS( zmax(1) + zmax(2) + zmax(3) ) > HUGE(1._wp) ) THEN ! Infinity encounter in the tests 179 192 ! 180 193 iloc(:,:) = 0 … … 183 196 IF( lwm .AND. kt /= nitend ) istatus = NF90_CLOSE(nrunid) 184 197 ! get global loc on the min/max 185 CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:, Kmm)), ssmask(:,: ), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F 186 CALL mpp_maxloc( 'stpctl', ABS( uu(:,:,:, Kmm)), umask(:,:,:), zzz, iloc(1:3,2) ) 187 CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , tmask(:,:,:), zzz, iloc(1:3,3) ) 188 CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , tmask(:,:,:), zzz, iloc(1:3,4) ) 198 llmsk(Nis0:Nie0,Njs0:Nje0,1) = ssmask(Nis0:Nie0,Njs0:Nje0 ) == 1._wp ! define only the inner domain 199 CALL mpp_maxloc( 'stpctl', ABS(ssh(:,:, Kmm)), llmsk(:,:,1), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F 200 llmsk(Nis0:Nie0,Njs0:Nje0,:) = umask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 201 CALL mpp_maxloc( 'stpctl', ABS( uu(:,:,:, Kmm)), llmsk(:,:,:), zzz, iloc(1:3,2) ) 202 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 203 CALL mpp_minloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , llmsk(:,:,:), zzz, iloc(1:3,3) ) 204 CALL mpp_maxloc( 'stpctl', ts(:,:,:,jp_sal,Kmm) , llmsk(:,:,:), zzz, iloc(1:3,4) ) 189 205 ! find which subdomain has the max. 190 206 iareamin(:) = jpnij+1 ; iareamax(:) = 0 ; iareasum(:) = 0 … … 199 215 ELSE ! find local min and max locations: 200 216 ! if we are here, this means that the subdomain contains some oce points -> no need to test the mask used in maxloc 201 iloc(1:2,1) = MAXLOC( ABS( ssh(:,:, Kmm)), mask = ssmask(:,: ) == 1._wp ) + (/ nimpp - 1, njmpp - 1 /) 202 iloc(1:3,2) = MAXLOC( ABS( uu(:,:,:, Kmm)), mask = umask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 203 iloc(1:3,3) = MINLOC( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 204 iloc(1:3,4) = MAXLOC( ts(:,:,:,jp_sal,Kmm) , mask = tmask(:,:,:) == 1._wp ) + (/ nimpp - 1, njmpp - 1, 0 /) 217 llmsk(Nis0:Nie0,Njs0:Nje0,1) = ssmask(Nis0:Nie0,Njs0:Nje0 ) == 1._wp ! define only the inner domain 218 iloc(1:2,1) = MAXLOC( ABS( ssh(:,:, Kmm)), mask = llmsk(:,:,1) ) 219 llmsk(Nis0:Nie0,Njs0:Nje0,:) = umask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 220 iloc(1:3,2) = MAXLOC( ABS( uu(:,:,:, Kmm)), mask = llmsk(:,:,:) ) 221 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 222 iloc(1:3,3) = MINLOC( ts(:,:,:,jp_sal,Kmm) , mask = llmsk(:,:,:) ) 223 iloc(1:3,4) = MAXLOC( ts(:,:,:,jp_sal,Kmm) , mask = llmsk(:,:,:) ) 224 DO ji = 1, 4 ! local domain indices ==> global domain indices, excluding halos 225 iloc(1:2,ji) = (/ mig0(iloc(1,ji)), mjg0(iloc(2,ji)) /) 226 END DO 205 227 iareamin(:) = narea ; iareamax(:) = narea ; iareasum(:) = 1 ! this is local information 206 228 ENDIF 207 229 ! 208 230 WRITE(ctmp1,*) ' stp_ctl: |ssh| > 20 m or |U| > 10 m/s or S <= 0 or S >= 100 or NaN encounter in the tests' 209 CALL wrt_line( ctmp2, kt, '|ssh| max', 210 CALL wrt_line( ctmp3, kt, '|U| max', 211 CALL wrt_line( ctmp4, kt, 'Sal min', -zmax(3), iloc(:,3), iareasum(3), iareamin(3), iareamax(3) )212 CALL wrt_line( ctmp5, kt, 'Sal max', 231 CALL wrt_line( ctmp2, kt, '|ssh| max', zmax(1), iloc(:,1), iareasum(1), iareamin(1), iareamax(1) ) 232 CALL wrt_line( ctmp3, kt, '|U| max', zmax(2), iloc(:,2), iareasum(2), iareamin(2), iareamax(2) ) 233 CALL wrt_line( ctmp4, kt, 'Sal min', zmax(3), iloc(:,3), iareasum(3), iareamin(3), iareamax(3) ) 234 CALL wrt_line( ctmp5, kt, 'Sal max', zmax(4), iloc(:,4), iareasum(4), iareamin(4), iareamax(4) ) 213 235 IF( Agrif_Root() ) THEN 214 236 WRITE(ctmp6,*) ' ===> output of last computed fields in output.abort* files' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/trazdf.F90
r13295 r14037 54 54 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 55 55 ! 56 INTEGER :: j k ! Dummy loop indices56 INTEGER :: ji, jj, jk ! Dummy loop indices 57 57 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt, ztrds ! 3D workspace 58 58 !!--------------------------------------------------------------------- … … 61 61 ! 62 62 IF( kt == nit000 ) THEN 63 IF(lwp)WRITE(numout,*) 64 IF(lwp)WRITE(numout,*) 'tra_zdf : implicit vertical mixing on T & S' 65 IF(lwp)WRITE(numout,*) '~~~~~~~ ' 63 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile 64 IF(lwp)WRITE(numout,*) 65 IF(lwp)WRITE(numout,*) 'tra_zdf : implicit vertical mixing on T & S' 66 IF(lwp)WRITE(numout,*) '~~~~~~~ ' 67 ENDIF 66 68 ENDIF 67 69 ! … … 83 85 84 86 IF( l_trdtra ) THEN ! save the vertical diffusive trends for further diagnostics 85 DO jk = 1, jpkm1 86 ztrdt(:,:,jk) = ( ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) - pts(:,:,jk,jp_tem,Kbb)*e3t(:,:,jk,Kbb) ) & 87 & / (e3t(:,:,jk,Kmm)*rDt) ) - ztrdt(:,:,jk) 88 ztrds(:,:,jk) = ( ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) - pts(:,:,jk,jp_sal,Kbb)*e3t(:,:,jk,Kbb) ) & 89 & / (e3t(:,:,jk,Kmm)*rDt) ) - ztrds(:,:,jk) 87 DO jk = 1, jpk 88 ztrdt(:,:,jk) = ( ( pts(:,:,jk,jp_tem,Kaa)*e3t(:,:,jk,Kaa) & 89 & - pts(:,:,jk,jp_tem,Kbb)*e3t(:,:,jk,Kbb) ) & 90 & / ( e3t(:,:,jk,Kmm)*rDt ) ) & 91 & - ztrdt(:,:,jk) 92 ztrds(:,:,jk) = ( ( pts(:,:,jk,jp_sal,Kaa)*e3t(:,:,jk,Kaa) & 93 & - pts(:,:,jk,jp_sal,Kbb)*e3t(:,:,jk,Kbb) ) & 94 & / ( e3t(:,:,jk,Kmm)*rDt ) ) & 95 & - ztrds(:,:,jk) 90 96 END DO 91 97 !!gm this should be moved in trdtra.F90 and done on all trends … … 135 141 INTEGER :: ji, jj, jk, jn ! dummy loop indices 136 142 REAL(wp) :: zrhs, zzwi, zzws ! local scalars 137 REAL(wp), DIMENSION( jpi,jpj,jpk) :: zwi, zwt, zwd, zws143 REAL(wp), DIMENSION(A2D(nn_hls),jpk) :: zwi, zwt, zwd, zws 138 144 !!--------------------------------------------------------------------- 139 145 ! … … 149 155 ! 150 156 ! vertical mixing coef.: avt for temperature, avs for salinity and passive tracers 151 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN ; zwt(:,:,2:jpk) = avt(:,:,2:jpk) 152 ELSE ; zwt(:,:,2:jpk) = avs(:,:,2:jpk) 157 IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN 158 DO_3D( 1, 1, 1, 1, 2, jpk ) 159 zwt(ji,jj,jk) = avt(ji,jj,jk) 160 END_3D 161 ELSE 162 DO_3D( 1, 1, 1, 1, 2, jpk ) 163 zwt(ji,jj,jk) = avs(ji,jj,jk) 164 END_3D 153 165 ENDIF 154 166 zwt(:,:,1) = 0._wp -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/usrdef_istate.F90
r13295 r14037 66 66 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ ' 67 67 ! 68 IF (ln_sshnoise) CALL RANDOM_NUMBER(zrandom)69 68 zjetx = ABS(rn_ujetszx)/2. 70 69 zjety = ABS(rn_ujetszy)/2. 71 70 ! 71 zf0 = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 72 ! 72 73 SELECT CASE(nn_initcase) 74 75 CASE(-1) ! stratif at rest 76 77 ! sea level: 78 pssh(:,:) = 0. 79 ! temperature: 80 pts(:,:,1,jp_tem) = 25. !!30._wp 81 pts(:,:,2:jpk,jp_tem) = 22. !!24._wp 82 ! salinity: 83 pts(:,:,:,jp_sal) = 35._wp 84 ! velocities: 85 pu(:,:,:) = 0. 86 pv(:,:,:) = 0. 87 73 88 CASE(0) ! rest 74 89 … … 98 113 zbeta = 2._wp * omega * COS( rad * rn_ppgphi0 ) / ra 99 114 WHERE( ABS(gphit) <= zjety ) 100 pssh(:,:) = - rn_uzonal / grav * ( ff_t(:,:)* gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 )101 ELSEWHERE 102 pssh(:,:) = - rn_uzonal / grav * ( ff_t(:,:)* SIGN(zjety, gphit(:,:)) * 1.e3 &115 pssh(:,:) = - rn_uzonal / grav * ( zf0 * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 116 ELSEWHERE 117 pssh(:,:) = - rn_uzonal / grav * ( zf0 * SIGN(zjety, gphit(:,:)) * 1.e3 & 103 118 & + 0.5 * zbeta * zjety * zjety * 1.e6 ) 104 119 END WHERE … … 109 124 pts(:,:,jpk,jp_sal) = 0. 110 125 DO jk=1, jpkm1 111 pts(:,:,jk,jp_sal) = gphit(:,:) 126 WHERE( ABS(gphit) <= zjety ) 127 !!$ WHERE( ABS(gphit) <= zjety*0.5 .AND. ABS(glamt) <= zjety*0.5 ) ! for a square of salt 128 pts(:,:,jk,jp_sal) = 35. 129 ELSEWHERE 130 pts(:,:,jk,jp_sal) = 30. 131 END WHERE 112 132 END DO 113 133 ! velocities: … … 134 154 WHERE( ABS(gphit) <= zjety ) 135 155 pssh(:,:) = - SIGN(rn_uzonal, gphit(:,:)) / grav & 136 & * ( ff_t(:,:)* gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 )156 & * ( zf0 * gphit(:,:) * 1.e3 + 0.5 * zbeta * gphit(:,:) * gphit(:,:) * 1.e6 ) 137 157 ELSEWHERE 138 158 pssh(:,:) = - SIGN(rn_uzonal, gphit(:,:)) / grav & 139 & * ( ff_t(:,:)* SIGN(zjety, gphit(:,:)) * 1.e3 + 0.5 * zbeta * zjety * zjety * 1.e6 )159 & * ( zf0 * SIGN(zjety, gphit(:,:)) * 1.e3 + 0.5 * zbeta * zjety * zjety * 1.e6 ) 140 160 END WHERE 141 161 END SELECT … … 143 163 pts(:,:,:,jp_tem) = 10._wp 144 164 ! salinity: 145 pts(:,:,:,jp_sal) = 2.146 DO jk=1, jpkm1 147 WHERE( ABS(gphiv) <= zjety ) pts(:,:,jk,jp_sal) = 2. + SIGN(1.,gphiv(:,:))165 pts(:,:,:,jp_sal) = 30. 166 DO jk=1, jpkm1 167 WHERE( ABS(gphiv) <= zjety ) pts(:,:,jk,jp_sal) = 30. + SIGN(1.,gphiv(:,:)) 148 168 END DO 149 169 ! velocities: … … 176 196 ! salinity: 177 197 DO jk=1, jpkm1 178 pts(:,:,jk,jp_sal) = gphit(:,:)198 pts(:,:,jk,jp_sal) = pssh(:,:) 179 199 END DO 180 200 ! velocities: … … 210 230 zf0 = 2._wp * omega * SIN( rad * rn_ppgphi0 ) 211 231 zumax = rn_vtxmax * SIGN(1._wp, zf0) ! Here Anticyclonic: set zumax=-1 for cyclonic 212 zlambda = SQRT(2._wp)*rn_lambda ! Horizontal scale in meters232 zlambda = SQRT(2._wp)*rn_lambda*1.e3 ! Horizontal scale in meters 213 233 zn2 = 3.e-3**2 214 234 zH = 0.5_wp * 5000._wp … … 281 301 282 302 IF (ln_sshnoise) THEN 303 CALL RANDOM_SEED() 283 304 CALL RANDOM_NUMBER(zrandom) 284 305 pssh(:,:) = pssh(:,:) + ( 0.1 * zrandom(:,:) - 0.05 ) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/usrdef_nam.F90
r13286 r14037 50 50 LOGICAL , PUBLIC :: ln_sshnoise=.false. ! add random noise on initial ssh 51 51 REAL(wp), PUBLIC :: rn_lambda = 50. ! gaussian lambda 52 INTEGER , PUBLIC :: nn_perio = 0 ! periodicity of the channel (0=closed, 1=E-W) 52 53 53 54 !!---------------------------------------------------------------------- … … 79 80 !! 80 81 NAMELIST/namusr_def/ rn_domszx, rn_domszy, rn_domszz, rn_dx, rn_dy, rn_dz, rn_0xratio, rn_0yratio & 81 & , nn_fcase, rn_ppgphi0, rn_ vtxmax, rn_uzonal, rn_ujetszx, rn_ujetszy&82 & , rn_ u10, rn_windszx, rn_windszy, rn_uofac&83 & , nn_botcase, nn_initcase, ln_sshnoise, rn_lambda 82 & , nn_fcase, rn_ppgphi0, rn_u10, rn_windszx, rn_windszy & !!, rn_uofac & 83 & , rn_vtxmax, rn_uzonal, rn_ujetszx, rn_ujetszy & 84 & , nn_botcase, nn_initcase, ln_sshnoise, rn_lambda, nn_perio 84 85 !!---------------------------------------------------------------------- 85 86 ! … … 148 149 WRITE(numout,*) ' add random noise on initial ssh ln_sshnoise= ', ln_sshnoise 149 150 WRITE(numout,*) ' Gaussian lambda parameter rn_lambda = ', rn_lambda 150 WRITE(numout,*) ' ' 151 WRITE(numout,*) ' Lateral boundary condition of the global domain' 152 WRITE(numout,*) ' EW_CANAL : closed basin jperio = ', kperio 151 WRITE(numout,*) ' Periodicity of the basin nn_perio = ', nn_perio 153 152 ENDIF 153 ! ! Set the lateral boundary condition of the global domain 154 kperio = nn_perio ! EW_CANAL configuration : closed basin 154 155 ! 155 156 END SUBROUTINE usr_def_nam -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/usrdef_sbc.F90
r12740 r14037 17 17 USE sbc_oce ! Surface boundary condition: ocean fields 18 18 USE phycst ! physical constants 19 USE usrdef_nam, ONLY : rn_u10, rn_uofac, rn_windszy 19 USE usrdef_nam, ONLY : rn_u10, rn_uofac, rn_windszy, rn_windszx 20 20 ! 21 21 USE in_out_manager ! I/O manager … … 69 69 ! 70 70 utau(:,:) = 0._wp 71 IF( rn_u10 /= 0. .AND. rn_windszy > 0. ) THEN72 WHERE( ABS(gphit) <= rn_windszy/2. ) utau(:,:) = zrhocd * rn_u10 * rn_u1073 ENDIF74 71 vtau(:,:) = 0._wp 75 72 taum(:,:) = 0._wp … … 81 78 qsr (:,:) = 0._wp 82 79 ! 80 ENDIF 81 82 IF( rn_u10 /= 0. .AND. rn_windszy > 0. ) THEN 83 IF( nyear == 1 .AND. nmonth == 1 .AND. nday <= 10 ) THEN 84 WHERE( ABS(gphit) <= rn_windszy/2. .AND. ABS(glamt) <= rn_windszx/2. ) utau(:,:) = zrhocd * rn_u10 * rn_u10 85 ELSE 86 utau(:,:) = 0. 87 ENDIF 83 88 ENDIF 84 89 -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CANAL/MY_SRC/usrdef_zgr.F90
r12740 r14037 197 197 zmaxlam = MAXVAL(glamt) 198 198 CALL mpp_max( 'usrdef_zgr', zmaxlam ) ! max over the global domain 199 zscl = rpi / zmaxlam200 z2d(:,:) = 0.5 * ( 1. - COS( glamt(:,:) * zscl ))201 z2d(:,:) = REAL(jpkm1 - NINT( 0. 75 * REAL(jpkm1,wp) * z2d(:,:) ), wp)199 zscl = 0.5 * rpi / zmaxlam 200 z2d(:,:) = COS( glamt(:,:) * zscl ) 201 z2d(:,:) = REAL(jpkm1 - NINT( 0.5 * REAL(jpkm1,wp) * z2d(:,:) ), wp) 202 202 END SELECT 203 203 ! -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CPL_OASIS/EXPREF/context_nemo.xml
r12663 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CPL_OASIS/EXPREF/file_def_nemo-ice.xml
r12663 r14037 53 53 <field field_ref="normstr" name="normstr" /> 54 54 <field field_ref="sheastr" name="sheastr" /> 55 <field field_ref="isig1" name="isig1" /> 56 <field field_ref="isig2" name="isig2" /> 57 <field field_ref="isig3" name="isig3" /> 55 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 56 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 58 57 59 58 <!-- heat fluxes --> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/CPL_OASIS/EXPREF/namelist_cfg
r12663 r14037 254 254 !! !! 255 255 !! namdrg top/bottom drag coefficient (default: NO selection) 256 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)257 !! namdrg_bot bottom friction (ln_ OFF=F)256 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 257 !! namdrg_bot bottom friction (ln_drg_OFF=F) 258 258 !! nambbc bottom temperature boundary condition (default: OFF) 259 259 !! nambbl bottom boundary layer scheme (default: OFF) … … 448 448 !! !! 449 449 !! namtrd dynamics and/or tracer trends (default: OFF) 450 !! namptr Poleward Transport Diagnostics (default: OFF)451 450 !! namhsb Heat and salt budgets (default: OFF) 452 451 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_cfg
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_cfg_120pts
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_cfg_240pts
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_cfg_60pts
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg
r10535 r14037 88 88 !------------------------------------------------------------------------------ 89 89 ln_iceini = .true. ! activate ice initialization (T) or not (F) 90 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_60pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg_120pts
r10431 r14037 88 88 !------------------------------------------------------------------------------ 89 89 ln_iceini = .true. ! activate ice initialization (T) or not (F) 90 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_120pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg_240pts
r10431 r14037 88 88 !------------------------------------------------------------------------------ 89 89 ln_iceini = .true. ! activate ice initialization (T) or not (F) 90 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_240pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/EXPREF/namelist_ice_cfg_60pts
r10431 r14037 88 88 !------------------------------------------------------------------------------ 89 89 ln_iceini = .true. ! activate ice initialization (T) or not (F) 90 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)90 nn_iceini_file = 1 ! netcdf file provided for initialization 91 91 92 92 sn_hti = 'initice_60pts' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV1D/MY_SRC/usrdef_sbc.F90
r12377 r14037 107 107 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 108 108 !! 109 INTEGER :: jl 109 110 REAL(wp) :: zfr1, zfr2 ! local variables 110 111 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 112 REAL(wp), DIMENSION(jpi,jpj) :: ztri 111 113 !!--------------------------------------------------------------------- 112 114 ! … … 141 143 142 144 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 143 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm144 z fr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1145 cloud_fra(:,:) = pp_cldf 146 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 145 147 ! 146 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 147 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 148 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 149 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 150 ELSEWHERE ! zero when hs>0 151 qtr_ice_top(:,:,:) = 0._wp 152 END WHERE 153 148 DO jl = 1, jpl 149 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 150 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 151 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 152 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 153 ELSEWHERE ! zero when hs>0 154 qtr_ice_top(:,:,jl) = 0._wp 155 END WHERE 156 ENDDO 157 158 154 159 END SUBROUTINE usrdef_sbc_ice_flx 155 160 -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV2D/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV2D/EXPREF/file_def_nemo-ice.xml
r10516 r14037 55 55 <field field_ref="normstr" name="normstr" /> 56 56 <field field_ref="sheastr" name="sheastr" /> 57 <field field_ref="isig1" name="isig1" /> 58 <field field_ref="isig2" name="isig2" /> 59 <field field_ref="isig3" name="isig3" /> 57 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 58 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 60 59 61 60 <!-- heat fluxes --> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV2D/EXPREF/namelist_cfg
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV2D/EXPREF/namelist_ice_cfg
r10535 r14037 86 86 !------------------------------------------------------------------------------ 87 87 ln_iceini = .true. ! activate ice initialization (T) or not (F) 88 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)88 nn_iceini_file = 1 ! netcdf file provided for initialization 89 89 90 90 sn_hti = 'initice' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_ADV2D/MY_SRC/usrdef_sbc.F90
r12377 r14037 18 18 USE sbc_ice ! Surface boundary condition: ice fields 19 19 USE phycst ! physical constants 20 USE ice, ONLY : at_i_b, a_i_b20 USE ice, ONLY : jpl, at_i_b, a_i_b 21 21 USE icethd_dh ! for CALL ice_thd_snwblow 22 22 ! … … 107 107 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 108 108 !! 109 INTEGER :: jl 109 110 REAL(wp) :: zfr1, zfr2 ! local variables 110 111 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 112 REAL(wp), DIMENSION(jpi,jpj) :: ztri 111 113 !!--------------------------------------------------------------------- 112 114 ! … … 141 143 142 144 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 143 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm144 z fr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1145 cloud_fra(:,:) = pp_cldf 146 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 145 147 ! 146 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 147 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 148 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 149 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 150 ELSEWHERE ! zero when hs>0 151 qtr_ice_top(:,:,:) = 0._wp 152 END WHERE 153 148 DO jl = 1, jpl 149 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 150 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 151 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 152 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 153 ELSEWHERE ! zero when hs>0 154 qtr_ice_top(:,:,jl) = 0._wp 155 END WHERE 156 ENDDO 157 158 154 159 END SUBROUTINE usrdef_sbc_ice_flx 155 160 -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_AGRIF/EXPREF/1_namelist_cfg
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_AGRIF/EXPREF/context_nemo.xml
r12377 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_AGRIF/EXPREF/file_def_nemo-ice.xml
r11159 r14037 53 53 <field field_ref="normstr" name="normstr" /> 54 54 <field field_ref="sheastr" name="sheastr" /> 55 <field field_ref="isig1" name="isig1" /> 56 <field field_ref="isig2" name="isig2" /> 57 <field field_ref="isig3" name="isig3" /> 55 <field field_ref="sig1_pnorm" name="sig1_pnorm"/> 56 <field field_ref="sig2_pnorm" name="sig2_pnorm"/> 58 57 59 58 <!-- heat fluxes --> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_AGRIF/EXPREF/namelist_cfg
r12489 r14037 106 106 !! !! 107 107 !! namdrg top/bottom drag coefficient (default: NO selection) 108 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)109 !! namdrg_bot bottom friction (ln_ OFF=F)108 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 109 !! namdrg_bot bottom friction (ln_drg_OFF=F) 110 110 !! nambbc bottom temperature boundary condition (default: OFF) 111 111 !! nambbl bottom boundary layer scheme (default: OFF) … … 115 115 &namdrg ! top/bottom drag coefficient (default: NO selection) 116 116 !----------------------------------------------------------------------- 117 ln_ OFF = .true. ! free-slip : Cd = 0117 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 118 118 / 119 119 !!====================================================================== … … 197 197 !! !! 198 198 !! namtrd dynamics and/or tracer trends (default: OFF) 199 !! namptr Poleward Transport Diagnostics (default: OFF)200 199 !! namhsb Heat and salt budgets (default: OFF) 201 200 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_AGRIF/EXPREF/namelist_ice_cfg
r10535 r14037 86 86 !------------------------------------------------------------------------------ 87 87 ln_iceini = .true. ! activate ice initialization (T) or not (F) 88 ln_iceini_file = .true. ! netcdf file provided for initialization (T) or not (F)88 nn_iceini_file = 1 ! netcdf file provided for initialization 89 89 90 90 sn_hti = 'initice' , -12 ,'hti' , .false. , .true., 'yearly' , '' , '', '' -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ICE_AGRIF/MY_SRC/usrdef_sbc.F90
r12377 r14037 107 107 REAL(wp), DIMENSION(:,:,:), INTENT(in) :: phi ! ice thickness 108 108 !! 109 INTEGER :: jl 109 110 REAL(wp) :: zfr1, zfr2 ! local variables 110 111 REAL(wp), DIMENSION(jpi,jpj) :: zsnw ! snw distribution after wind blowing 112 REAL(wp), DIMENSION(jpi,jpj) :: ztri 111 113 !!--------------------------------------------------------------------- 112 114 ! … … 141 143 142 144 ! --- shortwave radiation transmitted below the surface (W/m2, see Grenfell Maykut 77) --- ! 143 zfr1 = ( 0.18 * ( 1.0 - cldf_ice ) + 0.35 * cldf_ice ) ! transmission when hi>10cm144 z fr2 = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) ! zfr2 such that zfr1 + zfr2 to equal 1145 cloud_fra(:,:) = pp_cldf 146 ztri(:,:) = 0.18 * ( 1.0 - cloud_fra(:,:) ) + 0.35 * cloud_fra(:,:) ! surface transmission when hi>10cm 145 147 ! 146 WHERE ( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 147 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * ( zfr1 + zfr2 * ( 1._wp - phi(:,:,:) * 10._wp ) ) 148 ELSEWHERE( phs(:,:,:) <= 0._wp .AND. phi(:,:,:) >= 0.1_wp ) ! constant (zfr1) when hi>10cm 149 qtr_ice_top(:,:,:) = qsr_ice(:,:,:) * zfr1 150 ELSEWHERE ! zero when hs>0 151 qtr_ice_top(:,:,:) = 0._wp 152 END WHERE 148 DO jl = 1, jpl 149 WHERE ( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) < 0.1_wp ) ! linear decrease from hi=0 to 10cm 150 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ( ztri(:,:) + ( 1._wp - ztri(:,:) ) * ( 1._wp - phi(:,:,jl) * 10._wp ) ) 151 ELSEWHERE( phs(:,:,jl) <= 0._wp .AND. phi(:,:,jl) >= 0.1_wp ) ! constant (ztri) when hi>10cm 152 qtr_ice_top(:,:,jl) = qsr_ice(:,:,jl) * ztri(:,:) 153 ELSEWHERE ! zero when hs>0 154 qtr_ice_top(:,:,jl) = 0._wp 155 END WHERE 156 ENDDO 153 157 154 158 END SUBROUTINE usrdef_sbc_ice_flx -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/EXPREF/namelist_cfg
r12905 r14037 261 261 !! !! 262 262 !! namdrg top/bottom drag coefficient (default: NO selection) 263 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)264 !! namdrg_bot bottom friction (ln_ OFF=F)263 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 264 !! namdrg_bot bottom friction (ln_drg_OFF=F) 265 265 !! nambbc bottom temperature boundary condition (default: OFF) 266 266 !! nambbl bottom boundary layer scheme (default: OFF) … … 273 273 / 274 274 !----------------------------------------------------------------------- 275 &namdrg_top ! TOP friction (ln_ OFF =F & ln_isfcav=T)275 &namdrg_top ! TOP friction (ln_drg_OFF =F & ln_isfcav=T) 276 276 !----------------------------------------------------------------------- 277 277 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 279 279 / 280 280 !----------------------------------------------------------------------- 281 &namdrg_bot ! BOTTOM friction (ln_ OFF =F)281 &namdrg_bot ! BOTTOM friction (ln_drg_OFF =F) 282 282 !----------------------------------------------------------------------- 283 283 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 311 311 ! 312 312 ! ! S-EOS coefficients (ln_seos=T): 313 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS313 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 314 314 ! ! L-EOS coefficients (ln_seos=T): 315 ! ! rd(T,S,Z)*r au0 = rau0*(-a0*dT+b0*dS)315 ! ! rd(T,S,Z)*rho0 = rho0*(-a0*dT+b0*dS) 316 316 rn_a0 = 3.7330e-5 ! thermal expension coefficient 317 317 rn_b0 = 7.8430e-4 ! saline expension coefficient … … 461 461 !! !! 462 462 !! namtrd dynamics and/or tracer trends (default: OFF) 463 !! namptr Poleward Transport Diagnostics (default: OFF)464 463 !! namhsb Heat and salt budgets (default: OFF) 465 464 !! namdiu Cool skin and warm layer models (default: OFF) … … 478 477 / 479 478 !----------------------------------------------------------------------- 480 &namptr ! Poleward Transport Diagnostic (default: OFF)481 !-----------------------------------------------------------------------482 /483 !-----------------------------------------------------------------------484 479 &namhsb ! Heat and salt budgets (default: OFF) 485 480 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/dtatsd.F90
r13295 r14037 18 18 USE phycst ! physical constants 19 19 USE dom_oce ! ocean space and time domain 20 USE domain, ONLY : dom_tile 20 21 USE fldread ! read input fields 21 22 ! … … 163 164 INTEGER , INTENT(in ) :: kt ! ocean time-step 164 165 CHARACTER(LEN=3) , INTENT(in ) :: cddta ! dmp or ini 165 REAL(wp), DIMENSION( jpi,jpj,jpk,jpts), INTENT( out) :: ptsd ! T & S data166 REAL(wp), DIMENSION(A2D(nn_hls),jpk,jpts), INTENT( out) :: ptsd ! T & S data 166 167 ! 167 168 INTEGER :: ji, jj, jk, jl, jkk ! dummy loop indicies 168 169 INTEGER :: ik, il0, il1, ii0, ii1, ij0, ij1 ! local integers 170 INTEGER :: itile 169 171 REAL(wp):: zl, zi ! local scalars 170 172 REAL(wp), DIMENSION(jpk) :: ztp, zsp ! 1D workspace 171 173 !!---------------------------------------------------------------------- 172 174 ! 175 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only for the full domain 176 itile = ntile 177 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) ! Use full domain 178 179 SELECT CASE(cddta) 180 CASE('ini') 181 CALL fld_read( kt, 1, sf_tsdini ) !== read T & S data at kt time step ==! 182 CASE('dmp') 183 CALL fld_read( kt, 1, sf_tsddmp ) !== read T & S data at kt time step ==! 184 CASE DEFAULT 185 CALL ctl_stop('STOP', 'dta_tsd: cddta case unknown') 186 END SELECT 187 188 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = itile ) ! Revert to tile domain 189 ENDIF 190 ! 173 191 SELECT CASE(cddta) 174 CASE('ini') 175 CALL fld_read( kt, 1, sf_tsdini ) !== read T & S data at kt time step ==! 176 ptsd(:,:,:,jp_tem) = sf_tsdini(jp_tem)%fnow(:,:,:) ! NO mask 177 ptsd(:,:,:,jp_sal) = sf_tsdini(jp_sal)%fnow(:,:,:) 192 CASE('ini') 193 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 194 ptsd(ji,jj,jk,jp_tem) = sf_tsdini(jp_tem)%fnow(ji,jj,jk) ! NO mask 195 ptsd(ji,jj,jk,jp_sal) = sf_tsdini(jp_sal)%fnow(ji,jj,jk) 196 END_3D 178 197 CASE('dmp') 179 CALL fld_read( kt, 1, sf_tsddmp ) !== read T & S data at kt time step ==! 180 ptsd(:,:,:,jp_tem) = sf_tsddmp(jp_tem)%fnow(:,:,:) ! NO mask 181 ptsd(:,:,:,jp_sal) = sf_tsddmp(jp_sal)%fnow(:,:,:) 198 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 199 ptsd(ji,jj,jk,jp_tem) = sf_tsddmp(jp_tem)%fnow(ji,jj,jk) ! NO mask 200 ptsd(ji,jj,jk,jp_sal) = sf_tsddmp(jp_sal)%fnow(ji,jj,jk) 201 END_3D 182 202 CASE DEFAULT 183 203 CALL ctl_stop('STOP', 'dta_tsd: cddta case unknown') … … 186 206 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! 187 207 ! 188 IF( kt == nit000 .AND. lwp )THEN 189 WRITE(numout,*) 190 WRITE(numout,*) 'dta_tsd: interpolates T & S data onto the s- or mixed s-z-coordinate mesh' 191 ENDIF 192 ! 193 DO_2D( 1, 1, 1, 1 ) 208 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile 209 IF( kt == nit000 .AND. lwp )THEN 210 WRITE(numout,*) 211 WRITE(numout,*) 'dta_tsd: interpolates T & S data onto the s- or mixed s-z-coordinate mesh' 212 ENDIF 213 ENDIF 214 ! 215 DO_2D( 1, 1, 1, 1 ) ! vertical interpolation of T & S 194 216 DO jk = 1, jpk ! determines the intepolated T-S profiles at each (i,j) points 195 217 zl = gdept_0(ji,jj,jk) … … 220 242 ELSE !== z- or zps- coordinate ==! 221 243 ! 222 ptsd(:,:,:,jp_tem) = ptsd(:,:,:,jp_tem) * tmask(:,:,:) ! Mask 223 ptsd(:,:,:,jp_sal) = ptsd(:,:,:,jp_sal) * tmask(:,:,:) 244 DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 245 ptsd(ji,jj,jk,jp_tem) = ptsd(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) ! Mask 246 ptsd(ji,jj,jk,jp_sal) = ptsd(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 247 END_3D 224 248 ! 225 249 IF( ln_zps ) THEN ! zps-coordinate (partial steps) interpolation at the last ocean level -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/eosbn2.F90
r13295 r14037 39 39 !!---------------------------------------------------------------------- 40 40 USE dom_oce ! ocean space and time domain 41 USE domutl, ONLY : is_tile 41 42 USE phycst ! physical constants 42 43 USE stopar ! Stochastic T/S fluctuations … … 55 56 ! !! * Interface 56 57 INTERFACE eos 57 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d 58 MODULE PROCEDURE eos_insitu, eos_insitu_pot, eos_insitu_2d, eos_insitu_pot_2d 58 59 END INTERFACE 59 60 ! … … 182 183 !! * Substitutions 183 184 # include "do_loop_substitute.h90" 185 # include "domzgr_substitute.h90" 184 186 !!---------------------------------------------------------------------- 185 187 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 190 192 191 193 SUBROUTINE eos_insitu( pts, prd, pdep ) 194 !! 195 REAL(wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 196 ! ! 2 : salinity [psu] 197 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: prd ! in situ density [-] 198 REAL(wp), DIMENSION(:,:,:) , INTENT(in ) :: pdep ! depth [m] 199 !! 200 CALL eos_insitu_t( pts, is_tile(pts), prd, is_tile(prd), pdep, is_tile(pdep) ) 201 END SUBROUTINE eos_insitu 202 203 SUBROUTINE eos_insitu_t( pts, ktts, prd, ktrd, pdep, ktdep ) 192 204 !!---------------------------------------------------------------------- 193 205 !! *** ROUTINE eos_insitu *** … … 227 239 !! TEOS-10 Manual, 2010 228 240 !!---------------------------------------------------------------------- 229 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 241 INTEGER , INTENT(in ) :: ktts, ktrd, ktdep 242 REAL(wp), DIMENSION(A2D_T(ktts) ,JPK,JPTS), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 230 243 ! ! 2 : salinity [psu] 231 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT( out) :: prd ! in situ density [-]232 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT(in ) :: pdep ! depth [m]244 REAL(wp), DIMENSION(A2D_T(ktrd) ,JPK ), INTENT( out) :: prd ! in situ density [-] 245 REAL(wp), DIMENSION(A2D_T(ktdep),JPK ), INTENT(in ) :: pdep ! depth [m] 233 246 ! 234 247 INTEGER :: ji, jj, jk ! dummy loop indices … … 311 324 IF( ln_timing ) CALL timing_stop('eos-insitu') 312 325 ! 313 END SUBROUTINE eos_insitu 326 END SUBROUTINE eos_insitu_t 314 327 315 328 316 329 SUBROUTINE eos_insitu_pot( pts, prd, prhop, pdep ) 330 !! 331 REAL(wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 332 ! ! 2 : salinity [psu] 333 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: prd ! in situ density [-] 334 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: prhop ! potential density (surface referenced) 335 REAL(wp), DIMENSION(:,:,:) , INTENT(in ) :: pdep ! depth [m] 336 !! 337 CALL eos_insitu_pot_t( pts, is_tile(pts), prd, is_tile(prd), prhop, is_tile(prhop), pdep, is_tile(pdep) ) 338 END SUBROUTINE eos_insitu_pot 339 340 341 SUBROUTINE eos_insitu_pot_t( pts, ktts, prd, ktrd, prhop, ktrhop, pdep, ktdep ) 317 342 !!---------------------------------------------------------------------- 318 343 !! *** ROUTINE eos_insitu_pot *** … … 327 352 !! 328 353 !!---------------------------------------------------------------------- 329 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 354 INTEGER , INTENT(in ) :: ktts, ktrd, ktrhop, ktdep 355 REAL(wp), DIMENSION(A2D_T(ktts) ,JPK,JPTS), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 330 356 ! ! 2 : salinity [psu] 331 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT( out) :: prd ! in situ density [-]332 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT( out) :: prhop ! potential density (surface referenced)333 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT(in ) :: pdep ! depth [m]357 REAL(wp), DIMENSION(A2D_T(ktrd) ,JPK ), INTENT( out) :: prd ! in situ density [-] 358 REAL(wp), DIMENSION(A2D_T(ktrhop),JPK ), INTENT( out) :: prhop ! potential density (surface referenced) 359 REAL(wp), DIMENSION(A2D_T(ktdep) ,JPK ), INTENT(in ) :: pdep ! depth [m] 334 360 ! 335 361 INTEGER :: ji, jj, jk, jsmp ! dummy loop indices … … 481 507 IF( ln_timing ) CALL timing_stop('eos-pot') 482 508 ! 483 END SUBROUTINE eos_insitu_pot 509 END SUBROUTINE eos_insitu_pot_t 484 510 485 511 486 512 SUBROUTINE eos_insitu_2d( pts, pdep, prd ) 513 !! 514 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 515 ! ! 2 : salinity [psu] 516 REAL(wp), DIMENSION(:,:) , INTENT(in ) :: pdep ! depth [m] 517 REAL(wp), DIMENSION(:,:) , INTENT( out) :: prd ! in situ density 518 !! 519 CALL eos_insitu_2d_t( pts, is_tile(pts), pdep, is_tile(pdep), prd, is_tile(prd) ) 520 END SUBROUTINE eos_insitu_2d 521 522 523 SUBROUTINE eos_insitu_2d_t( pts, ktts, pdep, ktdep, prd, ktrd ) 487 524 !!---------------------------------------------------------------------- 488 525 !! *** ROUTINE eos_insitu_2d *** … … 495 532 !! 496 533 !!---------------------------------------------------------------------- 497 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 534 INTEGER , INTENT(in ) :: ktts, ktdep, ktrd 535 REAL(wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 498 536 ! ! 2 : salinity [psu] 499 REAL(wp), DIMENSION( jpi,jpj), INTENT(in ) :: pdep ! depth [m]500 REAL(wp), DIMENSION( jpi,jpj), INTENT( out) :: prd ! in situ density537 REAL(wp), DIMENSION(A2D_T(ktdep) ), INTENT(in ) :: pdep ! depth [m] 538 REAL(wp), DIMENSION(A2D_T(ktrd) ), INTENT( out) :: prd ! in situ density 501 539 ! 502 540 INTEGER :: ji, jj, jk ! dummy loop indices … … 583 621 IF( ln_timing ) CALL timing_stop('eos2d') 584 622 ! 585 END SUBROUTINE eos_insitu_2d 623 END SUBROUTINE eos_insitu_2d_t 624 625 626 SUBROUTINE eos_insitu_pot_2d( pts, prhop ) 627 !!---------------------------------------------------------------------- 628 !! *** ROUTINE eos_insitu_pot *** 629 !! 630 !! ** Purpose : Compute the in situ density (ratio rho/rho0) and the 631 !! potential volumic mass (Kg/m3) from potential temperature and 632 !! salinity fields using an equation of state selected in the 633 !! namelist. 634 !! 635 !! ** Action : 636 !! - prhop, the potential volumic mass (Kg/m3) 637 !! 638 !!---------------------------------------------------------------------- 639 REAL(wp), DIMENSION(jpi,jpj,jpts), INTENT(in ) :: pts ! 1 : potential temperature [Celsius] 640 ! ! 2 : salinity [psu] 641 REAL(wp), DIMENSION(jpi,jpj ), INTENT( out) :: prhop ! potential density (surface referenced) 642 ! 643 INTEGER :: ji, jj, jk, jsmp ! dummy loop indices 644 INTEGER :: jdof 645 REAL(wp) :: zt , zh , zstemp, zs , ztm ! local scalars 646 REAL(wp) :: zn , zn0, zn1, zn2, zn3 ! - - 647 REAL(wp), DIMENSION(:), ALLOCATABLE :: zn0_sto, zn_sto, zsign ! local vectors 648 !!---------------------------------------------------------------------- 649 ! 650 IF( ln_timing ) CALL timing_start('eos-pot') 651 ! 652 SELECT CASE ( neos ) 653 ! 654 CASE( np_teos10, np_eos80 ) !== polynomial TEOS-10 / EOS-80 ==! 655 ! 656 DO_2D( 1, 1, 1, 1 ) 657 ! 658 zt = pts (ji,jj,jp_tem) * r1_T0 ! temperature 659 zs = SQRT( ABS( pts(ji,jj,jp_sal) + rdeltaS ) * r1_S0 ) ! square root salinity 660 ztm = tmask(ji,jj,1) ! tmask 661 ! 662 zn0 = (((((EOS060*zt & 663 & + EOS150*zs+EOS050)*zt & 664 & + (EOS240*zs+EOS140)*zs+EOS040)*zt & 665 & + ((EOS330*zs+EOS230)*zs+EOS130)*zs+EOS030)*zt & 666 & + (((EOS420*zs+EOS320)*zs+EOS220)*zs+EOS120)*zs+EOS020)*zt & 667 & + ((((EOS510*zs+EOS410)*zs+EOS310)*zs+EOS210)*zs+EOS110)*zs+EOS010)*zt & 668 & + (((((EOS600*zs+EOS500)*zs+EOS400)*zs+EOS300)*zs+EOS200)*zs+EOS100)*zs+EOS000 669 ! 670 ! 671 prhop(ji,jj) = zn0 * ztm ! potential density referenced at the surface 672 ! 673 END_2D 674 675 CASE( np_seos ) !== simplified EOS ==! 676 ! 677 DO_2D( 1, 1, 1, 1 ) 678 zt = pts (ji,jj,jp_tem) - 10._wp 679 zs = pts (ji,jj,jp_sal) - 35._wp 680 ztm = tmask(ji,jj,1) 681 ! ! potential density referenced at the surface 682 zn = - rn_a0 * ( 1._wp + 0.5_wp*rn_lambda1*zt ) * zt & 683 & + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs & 684 & - rn_nu * zt * zs 685 prhop(ji,jj) = ( rho0 + zn ) * ztm 686 ! 687 END_2D 688 ! 689 CASE( np_leos ) !== ISOMIP EOS ==! 690 ! 691 DO_2D( 1, 1, 1, 1 ) 692 ! 693 zt = pts (ji,jj,jp_tem) - (-1._wp) 694 zs = pts (ji,jj,jp_sal) - 34.2_wp 695 !zh = pdep (ji,jj) ! depth at the partial step level 696 ! 697 zn = rho0 * ( - rn_a0 * zt + rn_b0 * zs ) 698 ! 699 prhop(ji,jj) = zn * r1_rho0 ! unmasked in situ density anomaly 700 ! 701 END_2D 702 ! 703 END SELECT 704 ! 705 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab2d_1=prhop, clinfo1=' eos-pot: ' ) 706 ! 707 IF( ln_timing ) CALL timing_stop('eos-pot') 708 ! 709 END SUBROUTINE eos_insitu_pot_2d 586 710 587 711 588 712 SUBROUTINE rab_3d( pts, pab, Kmm ) 713 !! 714 INTEGER , INTENT(in ) :: Kmm ! time level index 715 REAL(wp), DIMENSION(:,:,:,:), INTENT(in ) :: pts ! pot. temperature & salinity 716 REAL(wp), DIMENSION(:,:,:,:), INTENT( out) :: pab ! thermal/haline expansion ratio 717 !! 718 CALL rab_3d_t( pts, is_tile(pts), pab, is_tile(pab), Kmm ) 719 END SUBROUTINE rab_3d 720 721 722 SUBROUTINE rab_3d_t( pts, ktts, pab, ktab, Kmm ) 589 723 !!---------------------------------------------------------------------- 590 724 !! *** ROUTINE rab_3d *** … … 597 731 !!---------------------------------------------------------------------- 598 732 INTEGER , INTENT(in ) :: Kmm ! time level index 599 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature & salinity 600 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT( out) :: pab ! thermal/haline expansion ratio 733 INTEGER , INTENT(in ) :: ktts, ktab 734 REAL(wp), DIMENSION(A2D_T(ktts),JPK,JPTS), INTENT(in ) :: pts ! pot. temperature & salinity 735 REAL(wp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT( out) :: pab ! thermal/haline expansion ratio 601 736 ! 602 737 INTEGER :: ji, jj, jk ! dummy loop indices … … 705 840 IF( ln_timing ) CALL timing_stop('rab_3d') 706 841 ! 707 END SUBROUTINE rab_3d 842 END SUBROUTINE rab_3d_t 708 843 709 844 710 845 SUBROUTINE rab_2d( pts, pdep, pab, Kmm ) 846 !! 847 INTEGER , INTENT(in ) :: Kmm ! time level index 848 REAL(wp), DIMENSION(:,:,:), INTENT(in ) :: pts ! pot. temperature & salinity 849 REAL(wp), DIMENSION(:,:) , INTENT(in ) :: pdep ! depth [m] 850 REAL(wp), DIMENSION(:,:,:), INTENT( out) :: pab ! thermal/haline expansion ratio 851 !! 852 CALL rab_2d_t(pts, is_tile(pts), pdep, is_tile(pdep), pab, is_tile(pab), Kmm) 853 END SUBROUTINE rab_2d 854 855 856 SUBROUTINE rab_2d_t( pts, ktts, pdep, ktdep, pab, ktab, Kmm ) 711 857 !!---------------------------------------------------------------------- 712 858 !! *** ROUTINE rab_2d *** … … 717 863 !!---------------------------------------------------------------------- 718 864 INTEGER , INTENT(in ) :: Kmm ! time level index 719 REAL(wp), DIMENSION(jpi,jpj,jpts) , INTENT(in ) :: pts ! pot. temperature & salinity 720 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: pdep ! depth [m] 721 REAL(wp), DIMENSION(jpi,jpj,jpts) , INTENT( out) :: pab ! thermal/haline expansion ratio 865 INTEGER , INTENT(in ) :: ktts, ktdep, ktab 866 REAL(wp), DIMENSION(A2D_T(ktts),JPTS), INTENT(in ) :: pts ! pot. temperature & salinity 867 REAL(wp), DIMENSION(A2D_T(ktdep) ), INTENT(in ) :: pdep ! depth [m] 868 REAL(wp), DIMENSION(A2D_T(ktab),JPTS), INTENT( out) :: pab ! thermal/haline expansion ratio 722 869 ! 723 870 INTEGER :: ji, jj, jk ! dummy loop indices … … 828 975 IF( ln_timing ) CALL timing_stop('rab_2d') 829 976 ! 830 END SUBROUTINE rab_2d 977 END SUBROUTINE rab_2d_t 831 978 832 979 … … 941 1088 942 1089 SUBROUTINE bn2( pts, pab, pn2, Kmm ) 1090 !! 1091 INTEGER , INTENT(in ) :: Kmm ! time level index 1092 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature and salinity [Celsius,psu] 1093 REAL(wp), DIMENSION(:,:,:,:) , INTENT(in ) :: pab ! thermal/haline expansion coef. [Celsius-1,psu-1] 1094 REAL(wp), DIMENSION(:,:,:) , INTENT( out) :: pn2 ! Brunt-Vaisala frequency squared [1/s^2] 1095 !! 1096 CALL bn2_t( pts, pab, is_tile(pab), pn2, is_tile(pn2), Kmm ) 1097 END SUBROUTINE bn2 1098 1099 1100 SUBROUTINE bn2_t( pts, pab, ktab, pn2, ktn2, Kmm ) 943 1101 !!---------------------------------------------------------------------- 944 1102 !! *** ROUTINE bn2 *** … … 955 1113 !!---------------------------------------------------------------------- 956 1114 INTEGER , INTENT(in ) :: Kmm ! time level index 1115 INTEGER , INTENT(in ) :: ktab, ktn2 957 1116 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: pts ! pot. temperature and salinity [Celsius,psu] 958 REAL(wp), DIMENSION( jpi,jpj,jpk,jpts), INTENT(in ) :: pab ! thermal/haline expansion coef. [Celsius-1,psu-1]959 REAL(wp), DIMENSION( jpi,jpj,jpk), INTENT( out) :: pn2 ! Brunt-Vaisala frequency squared [1/s^2]1117 REAL(wp), DIMENSION(A2D_T(ktab),JPK,JPTS), INTENT(in ) :: pab ! thermal/haline expansion coef. [Celsius-1,psu-1] 1118 REAL(wp), DIMENSION(A2D_T(ktn2),JPK ), INTENT( out) :: pn2 ! Brunt-Vaisala frequency squared [1/s^2] 960 1119 ! 961 1120 INTEGER :: ji, jj, jk ! dummy loop indices … … 965 1124 IF( ln_timing ) CALL timing_start('bn2') 966 1125 ! 967 DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 1126 DO_3D( 1, 1, 1, 1, 2, jpkm1 ) ! interior points only (2=< jk =< jpkm1 ); surface and bottom value set to zero one for all in istate.F90 968 1127 zrw = ( gdepw(ji,jj,jk ,Kmm) - gdept(ji,jj,jk,Kmm) ) & 969 1128 & / ( gdept(ji,jj,jk-1,Kmm) - gdept(ji,jj,jk,Kmm) ) … … 981 1140 IF( ln_timing ) CALL timing_stop('bn2') 982 1141 ! 983 END SUBROUTINE bn2 1142 END SUBROUTINE bn2_t 984 1143 985 1144 … … 1042 1201 1043 1202 SUBROUTINE eos_fzp_2d( psal, ptf, pdep ) 1203 !! 1204 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: psal ! salinity [psu] 1205 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ), OPTIONAL :: pdep ! depth [m] 1206 REAL(wp), DIMENSION(:,:) , INTENT(out ) :: ptf ! freezing temperature [Celsius] 1207 !! 1208 CALL eos_fzp_2d_t( psal, ptf, is_tile(ptf), pdep ) 1209 END SUBROUTINE eos_fzp_2d 1210 1211 1212 SUBROUTINE eos_fzp_2d_t( psal, ptf, kttf, pdep ) 1044 1213 !!---------------------------------------------------------------------- 1045 1214 !! *** ROUTINE eos_fzp *** … … 1053 1222 !! Reference : UNESCO tech. papers in the marine science no. 28. 1978 1054 1223 !!---------------------------------------------------------------------- 1224 INTEGER , INTENT(in ) :: kttf 1055 1225 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: psal ! salinity [psu] 1056 1226 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ), OPTIONAL :: pdep ! depth [m] 1057 REAL(wp), DIMENSION( jpi,jpj), INTENT(out ) :: ptf ! freezing temperature [Celsius]1227 REAL(wp), DIMENSION(A2D_T(kttf)), INTENT(out ) :: ptf ! freezing temperature [Celsius] 1058 1228 ! 1059 1229 INTEGER :: ji, jj ! dummy loop indices … … 1088 1258 END SELECT 1089 1259 ! 1090 END SUBROUTINE eos_fzp_2d 1260 END SUBROUTINE eos_fzp_2d_t 1091 1261 1092 1262 … … 1723 1893 ! 1724 1894 CASE( np_leos ) !== Linear ISOMIP EOS ==! 1895 1896 r1_S0 = 0.875_wp/35.16504_wp ! Used to convert CT in potential temperature when using bulk formulae (eos_pt_from_ct) 1897 1725 1898 IF(lwp) THEN 1726 1899 WRITE(numout,*) … … 1731 1904 WRITE(numout,*) ' saline cont. coef. rn_b0 = ', rn_b0 1732 1905 ENDIF 1906 l_useCT = .TRUE. ! Use conservative temperature 1733 1907 ! 1734 1908 CASE DEFAULT !== ERROR in neos ==! -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/isf_oce.F90
r12077 r14037 75 75 ! 76 76 ! 2.1 -------- ice shelf cavity parameter -------------- 77 LOGICAL , PUBLIC :: l_isfoasis 77 LOGICAL , PUBLIC :: l_isfoasis = .FALSE. 78 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: risfload !: ice shelf load 79 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fwfisf_oasis -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/isfcavgam.F90
r12905 r14037 30 30 PUBLIC isfcav_gammats 31 31 32 # include "domzgr_substitute.h90" 32 33 !!---------------------------------------------------------------------- 33 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/isfstp.F90
r12905 r14037 13 13 !! isfstp : compute iceshelf melt and heat flux 14 14 !!---------------------------------------------------------------------- 15 !16 15 USE isf_oce ! isf variables 17 16 USE isfload, ONLY: isf_load ! ice shelf load … … 21 20 USE isfcpl , ONLY: isfcpl_rst_write, isfcpl_init ! isf variables 22 21 23 USE dom_oce, ONLY: ht, e3t, ln_isfcav, ln_linssh ! ocean space and time domain 22 USE dom_oce ! ocean space and time domain 23 USE oce , ONLY: ssh ! sea surface height 24 24 USE domvvl, ONLY: ln_vvl_zstar ! zstar logical 25 25 USE zdfdrg, ONLY: r_Cdmin_top, r_ke0_top ! vertical physics: top/bottom drag coef. … … 31 31 32 32 IMPLICIT NONE 33 34 33 PRIVATE 35 34 36 35 PUBLIC isf_stp, isf_init, isf_nam ! routine called in sbcmod and divhor 37 36 37 !! * Substitutions 38 # include "domzgr_substitute.h90" 38 39 !!---------------------------------------------------------------------- 39 40 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 41 42 !! Software governed by the CeCILL license (see ./LICENSE) 42 43 !!---------------------------------------------------------------------- 44 43 45 CONTAINS 44 46 … … 60 62 INTEGER, INTENT(in) :: kt ! ocean time step 61 63 INTEGER, INTENT(in) :: Kmm ! ocean time level index 64 !!---------------------------------------------------------------------- 65 INTEGER :: jk ! loop index 66 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t ! e3t 62 67 !!--------------------------------------------------------------------- 63 68 ! … … 78 83 ! 1.2: compute misfkb, rhisf_tbl, rfrac (deepest level, thickness, fraction of deepest cell affected by tbl) 79 84 rhisf_tbl_cav(:,:) = rn_htbl * mskisf_cav(:,:) 80 CALL isf_tbl_lvl(ht, e3t(:,:,:,Kmm), misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav) 85 DO jk = 1, jpk 86 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 87 END DO 88 CALL isf_tbl_lvl(ht(:,:), ze3t, misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav) 81 89 ! 82 90 ! 1.3: compute ice shelf melt … … 100 108 ! by simplicity, we assume the top level where param applied do not change with time (done in init part) 101 109 rhisf_tbl_par(:,:) = rhisf0_tbl_par(:,:) 102 CALL isf_tbl_lvl(ht, e3t(:,:,:,Kmm), misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par) 110 DO jk = 1, jpk 111 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 112 END DO 113 CALL isf_tbl_lvl(ht(:,:), ze3t, misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par) 103 114 ! 104 115 ! 2.3: compute ice shelf melt -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/istate.F90
r13295 r14037 24 24 USE dom_oce ! ocean space and time domain 25 25 USE daymod ! calendar 26 USE divhor ! horizontal divergence (div_hor routine)27 26 USE dtatsd ! data temperature and salinity (dta_tsd routine) 28 27 USE dtauvd ! data: U & V current (dta_uvd routine) … … 35 34 USE lib_mpp ! MPP library 36 35 USE restart ! restart 36 #if defined key_agrif 37 USE agrif_oce_interp 38 USE agrif_oce 39 #endif 37 40 38 41 IMPLICIT NONE … … 43 46 !! * Substitutions 44 47 # include "do_loop_substitute.h90" 48 # include "domzgr_substitute.h90" 45 49 !!---------------------------------------------------------------------- 46 50 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 59 63 ! 60 64 INTEGER :: ji, jj, jk ! dummy loop indices 65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept ! 3D table !!st patch to use gdept subtitute 61 66 !!gm see comment further down 62 67 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace … … 70 75 !!gm Why not include in the first call of dta_tsd ? 71 76 !!gm probably associated with the use of internal damping... 72 77 CALL dta_tsd_init ! Initialisation of T & S input data 73 78 !!gm to be moved in usrdef of C1D case 74 79 ! IF( lk_c1d ) CALL dta_uvd_init ! Initialization of U & V input data … … 84 89 #endif 85 90 91 #if defined key_agrif 92 IF ( (.NOT.Agrif_root()).AND.ln_init_chfrpar ) THEN 93 numror = 0 ! define numror = 0 -> no restart file to read 94 ln_1st_euler = .true. ! Set time-step indicator at nit000 (euler forward) 95 CALL day_init 96 CALL agrif_istate( Kbb, Kmm, Kaa ) ! Interp from parent 97 ! 98 ts (:,:,:,:,Kmm) = ts (:,:,:,:,Kbb) 99 ssh (:,:,Kmm) = ssh(:,:,Kbb) 100 uu (:,:,:,Kmm) = uu (:,:,:,Kbb) 101 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 102 ELSE 103 #endif 86 104 IF( ln_rstart ) THEN ! Restart from a file 87 105 ! ! ------------------- … … 100 118 ! 101 119 ssh(:,:,Kbb) = 0._wp ! set the ocean at rest 120 uu (:,:,:,Kbb) = 0._wp 121 vv (:,:,:,Kbb) = 0._wp 122 ! 102 123 IF( ll_wd ) THEN 103 124 ssh(:,:,Kbb) = -ssh_ref ! Added in 30 here for bathy that adds 30 as Iterative test CEOD … … 111 132 END_2D 112 133 ENDIF 113 uu (:,:,:,Kbb) = 0._wp 114 vv (:,:,:,Kbb) = 0._wp 115 ! 134 ! 116 135 ELSE ! user defined initial T and S 117 CALL usr_def_istate( gdept(:,:,:,Kbb), tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb) ) 136 DO jk = 1, jpk 137 zgdept(:,:,jk) = gdept(:,:,jk,Kbb) 138 END DO 139 CALL usr_def_istate( zgdept, tmask, ts(:,:,:,:,Kbb), uu(:,:,:,Kbb), vv(:,:,:,Kbb), ssh(:,:,Kbb) ) 118 140 ENDIF 119 141 ts (:,:,:,:,Kmm) = ts (:,:,:,:,Kbb) ! set now values from to before ones … … 121 143 uu (:,:,:,Kmm) = uu (:,:,:,Kbb) 122 144 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 123 hdiv(:,:,jpk) = 0._wp ! bottom divergence set one for 0 to zero at jpk level124 CALL div_hor( 0, Kbb, Kmm ) ! compute interior hdiv value125 !!gm hdiv(:,:,:) = 0._wp126 145 127 146 !!gm POTENTIAL BUG : 128 147 !!gm ISSUE : if ssh(:,:,Kbb) /= 0 then, in non linear free surface, the e3._n, e3._b should be recomputed 129 !! as well as gdept and gdepw.... !!!!!148 !! as well as gdept_ and gdepw_.... !!!!! 130 149 !! ===>>>> probably a call to domvvl initialisation here.... 131 150 … … 151 170 ! 152 171 ENDIF 172 #if defined key_agrif 173 ENDIF 174 #endif 153 175 ! 154 176 ! Initialize "now" and "before" barotropic velocities: -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/sbcfwb.F90
r13286 r14037 17 17 USE dom_oce ! ocean space and time domain 18 18 USE sbc_oce ! surface ocean boundary condition 19 USE isf_oce 19 USE isf_oce , ONLY : fwfisf_cav, fwfisf_par, ln_isfcpl, ln_isfcpl_cons, risfcpl_cons_ssh ! ice shelf melting contribution 20 20 USE sbc_ice , ONLY : snwice_mass, snwice_mass_b, snwice_fmass 21 21 USE phycst ! physical constants … … 71 71 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ztmsk_tospread, zerp_cor ! - - 72 72 REAL(wp) ,DIMENSION(1) :: z_fwfprv 73 COMPLEX( wp),DIMENSION(1) :: y_fwfnow73 COMPLEX(dp),DIMENSION(1) :: y_fwfnow 74 74 !!---------------------------------------------------------------------- 75 75 ! … … 95 95 snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass 96 96 snwice_mass (:,:) = 0.e0 97 snwice_fmass (:,:) = 0.e0 97 98 #endif 98 99 ! … … 205 206 ! 206 207 !!gm ===>>>> lbc_lnk should be useless as all the computation is done over the whole domain ! 207 CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1. )208 CALL lbc_lnk( 'sbcfwb', zerp_cor, 'T', 1.0_wp ) 208 209 ! 209 210 emp(:,:) = emp(:,:) + zerp_cor(:,:) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP+/MY_SRC/tradmp.F90
r13295 r14037 95 95 ! 96 96 INTEGER :: ji, jj, jk, jn ! dummy loop indices 97 REAL(wp), DIMENSION( jpi,jpj,jpk,jpts) :: zts_dta97 REAL(wp), DIMENSION(A2D(nn_hls),jpk,jpts) :: zts_dta 98 98 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ztrdts 99 99 !!---------------------------------------------------------------------- -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/ISOMIP/EXPREF/namelist_cfg
r12489 r14037 227 227 !! !! 228 228 !! namdrg top/bottom drag coefficient (default: NO selection) 229 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)230 !! namdrg_bot bottom friction (ln_ OFF=F)229 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 230 !! namdrg_bot bottom friction (ln_drg_OFF=F) 231 231 !! nambbc bottom temperature boundary condition (default: OFF) 232 232 !! nambbl bottom boundary layer scheme (default: OFF) … … 236 236 &namdrg ! top/bottom drag coefficient (default: NO selection) 237 237 !----------------------------------------------------------------------- 238 ln_ OFF = .false.! free-slip : Cd = 0 (F => fill namdrg_bot238 ln_drg_OFF = .false. ! free-slip : Cd = 0 (F => fill namdrg_bot 239 239 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 240 240 ln_non_lin = .true. ! non-linear drag: Cd = Cd0 |U| … … 244 244 / 245 245 !----------------------------------------------------------------------- 246 &namdrg_top ! TOP friction (ln_ OFF =F & ln_isfcav=T)246 &namdrg_top ! TOP friction (ln_drg_OFF =F & ln_isfcav=T) 247 247 !----------------------------------------------------------------------- 248 248 rn_Cd0 = 2.5e-3 ! drag coefficient [-] … … 255 255 / 256 256 !----------------------------------------------------------------------- 257 &namdrg_bot ! BOTTOM friction (ln_ OFF =F)257 &namdrg_bot ! BOTTOM friction (ln_drg_OFF =F) 258 258 !----------------------------------------------------------------------- 259 259 rn_Cd0 = 1.e-3 ! drag coefficient [-] … … 423 423 !! !! 424 424 !! namtrd dynamics and/or tracer trends (default: OFF) 425 !! namptr Poleward Transport Diagnostics (default: OFF)426 425 !! namhsb Heat and salt budgets (default: OFF) 427 426 !! namdiu Cool skin and warm layer models (default: OFF) … … 438 437 / 439 438 !----------------------------------------------------------------------- 440 &namptr ! Poleward Transport Diagnostic (default: OFF)441 !-----------------------------------------------------------------------442 /443 !-----------------------------------------------------------------------444 439 &namhsb ! Heat and salt budgets (default: OFF) 445 440 !----------------------------------------------------------------------- -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_cen2_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_ubs_cfg
r12489 r14037 110 110 !! !! 111 111 !! namdrg top/bottom drag coefficient (default: NO selection) 112 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)113 !! namdrg_bot bottom friction (ln_ OFF=F)112 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 113 !! namdrg_bot bottom friction (ln_drg_OFF=F) 114 114 !! nambbc bottom temperature boundary condition (default: OFF) 115 115 !! nambbl bottom boundary layer scheme (default: OFF) … … 119 119 &namdrg ! top/bottom drag coefficient (default: NO selection) 120 120 !----------------------------------------------------------------------- 121 ln_ OFF = .true. ! free-slip : Cd = 0121 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 122 122 / 123 123 !!====================================================================== … … 137 137 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 138 138 ! ! S-EOS coefficients (nn_eos=1): 139 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS139 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 140 140 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 141 141 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) … … 271 271 !! !! 272 272 !! namtrd dynamics and/or tracer trends (default: OFF) 273 !! namptr Poleward Transport Diagnostics (default: OFF)274 273 !! namhsb Heat and salt budgets (default: OFF) 275 274 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_eenH_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_een_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ene_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ens_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_cen2_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_ubs_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_eenH_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_een_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ene_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ens_cfg
r12489 r14037 65 65 &namdrg ! top/bottom drag coefficient (default: NO selection) 66 66 !----------------------------------------------------------------------- 67 ln_ OFF = .true. ! free-slip : Cd = 067 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 68 68 / 69 69 !----------------------------------------------------------------------- … … 72 72 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 73 73 ! ! S-EOS coefficients (nn_eos=1): 74 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS74 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 75 75 rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 76 76 rn_b0 = 0. ! saline expension coefficient (nn_eos= 1) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_sco_FCT2_flux_cen-ahm1000_cfg
r12489 r14037 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 6120 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_sco_FCT2_flux_ubs_cfg
r12489 r14037 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 1080 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF= .true. ! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_cen-ahm1000_cfg
r12489 r14037 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 6120 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_ubs_cfg
r12489 r14037 21 21 nn_it000 = 1 ! first time step 22 22 nn_itend = 6120 ! here 17h of simulation (=6120 time-step) 23 !nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions24 23 nn_istate = 0 ! output the initial state (1) or not (0) 25 24 nn_stock = 1080 ! frequency of creation of a restart file (modulo referenced to 1) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_zps_FCT2_flux_ubs_cfg
r12489 r14037 20 20 cn_exp = "OVF_zps_FCT2_flux_ubs" ! experience name 21 21 nn_it000 = 1 ! first time step 22 !nn_itend = 6120 ! here 17h of simulation (=6120 time-step)23 22 nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions 24 23 nn_istate = 0 ! output the initial state (1) or not (0) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_flux_ubs_cfg
r12489 r14037 105 105 !! !! 106 106 !! namdrg top/bottom drag coefficient (default: NO selection) 107 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)108 !! namdrg_bot bottom friction (ln_ OFF=F)107 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 108 !! namdrg_bot bottom friction (ln_drg_OFF=F) 109 109 !! nambbc bottom temperature boundary condition (default: OFF) 110 110 !! nambbl bottom boundary layer scheme (default: OFF) … … 114 114 &namdrg ! top/bottom drag coefficient (default: NO selection) 115 115 !----------------------------------------------------------------------- 116 ln_ OFF= .true. ! free-slip : Cd = 0 (F => fill namdrg_bot116 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 117 117 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 118 118 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 136 136 !----------------------------------------------------------------------- 137 137 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 138 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS138 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 139 139 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 140 140 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 289 289 !! !! 290 290 !! namtrd dynamics and/or tracer trends (default: OFF) 291 !! namptr Poleward Transport Diagnostics (default: OFF)292 291 !! namhsb Heat and salt budgets (default: OFF) 293 292 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_vect_een_cfg
r12489 r14037 20 20 cn_exp = "OVF_zps_FCT4_vect_een" ! experience name 21 21 nn_it000 = 1 ! first time step 22 !nn_itend = 6120 ! here 17h of simulation (=6120 time-step)23 22 nn_itend = 5760 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions 24 23 nn_istate = 0 ! output the initial state (1) or not (0) … … 71 70 &namdrg ! top/bottom drag coefficient (default: NO selection) 72 71 !----------------------------------------------------------------------- 73 ln_ OFF = .true.! free-slip : Cd = 0 (F => fill namdrg_bot72 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 74 73 ln_lin = .false. ! linear drag: Cd = Cd0 Uc0 & namdrg_top) 75 74 ln_non_lin = .false. ! non-linear drag: Cd = Cd0 |U| … … 82 81 !----------------------------------------------------------------------- 83 82 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 84 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS83 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 85 84 rn_a0 = 0.2 ! thermal expension coefficient (for simplified equation of state) 86 85 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/EXPREF/namelist_coare3p6-noskin_cfg
r13108 r14037 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/EXPREF/namelist_coare3p6_cfg
r13108 r14037 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/EXPREF/namelist_ecmwf-noskin_cfg
r13108 r14037 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/EXPREF/namelist_ecmwf_cfg
r13108 r14037 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/EXPREF/namelist_ncar_cfg
r13108 r14037 201 201 !! !! 202 202 !! namdrg top/bottom drag coefficient (default: NO selection) 203 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)204 !! namdrg_bot bottom friction (ln_ OFF=F)203 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 204 !! namdrg_bot bottom friction (ln_drg_OFF=F) 205 205 !! nambbc bottom temperature boundary condition (default: OFF) 206 206 !! nambbl bottom boundary layer scheme (default: OFF) … … 250 250 !! !! 251 251 !! namtrd dynamics and/or tracer trends (default: OFF) 252 !! namptr Poleward Transport Diagnostics (default: OFF)253 252 !! namhsb Heat and salt budgets (default: OFF) 254 253 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/EXPREF/plot_station_asf.py
r13264 r14037 1 #!/usr/bin/env python 1 #!/usr/bin/env python3 2 2 # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- 3 3 4 # Post-diagnostic of STATION_ASF / L. Brodeau, 20 194 # Post-diagnostic of STATION_ASF / L. Brodeau, 2020 5 5 6 6 import sys 7 7 from os import path as path 8 #from string import replace9 8 import math 10 9 import numpy as nmp 11 #import scipy.signal as signal12 10 from netCDF4 import Dataset 13 11 import matplotlib as mpl … … 15 13 import matplotlib.pyplot as plt 16 14 import matplotlib.dates as mdates 17 #from string import find18 #import warnings19 #warnings.filterwarnings("ignore")20 #import time21 22 #import barakuda_plot as bp23 #import barakuda_tool as bt24 25 reload(sys)26 sys.setdefaultencoding('utf8')27 15 28 16 cy1 = '2018' ; # First year … … 68 56 narg = len(sys.argv) 69 57 if narg != 2: 70 print 'Usage: '+sys.argv[0]+' <DIR_OUT_SASF>'; sys.exit(0)58 print('Usage: '+sys.argv[0]+' <DIR_OUT_SASF>'); sys.exit(0) 71 59 cdir_data = sys.argv[1] 72 60 … … 78 66 def chck4f(cf): 79 67 cmesg = 'ERROR: File '+cf+' does not exist !!!' 80 if not path.exists(cf): print cmesg; sys.exit(0)68 if not path.exists(cf): print(cmesg); sys.exit(0) 81 69 82 70 ###cf_in = nmp.empty((), dtype="S10") … … 176 164 rmlt = 10.**(int(romagn)) / 2. 177 165 yrng = math.copysign( math.ceil(abs(rmax)/rmlt)*rmlt , rmax) 178 #print 'yrng = ', yrng ; #sys.exit(0)179 166 180 167 fig = plt.figure(num = 10+jv, figsize=size_fig, facecolor='w', edgecolor='k') … … 225 212 rmlt = 10.**(int(romagn)) / 2. 226 213 yrng = math.copysign( math.ceil(abs(rmax)/rmlt)*rmlt , rmax) 227 print 'yrng = ', yrng ; #sys.exit(0) 228 229 230 231 214 215 232 216 for ja in range(nb_algos-1): 233 217 -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/STATION_ASF/MY_SRC/stpctl.F90
r13136 r14037 47 47 !! 48 48 !! ** Method : - Save the time step in numstp 49 !! - Print it each 50 time steps50 49 !! - Stop the run IF problem encountered by setting nstop > 0 51 50 !! Problems checked: wind stress module max larger than 5 N/m^2 … … 66 65 REAL(wp) :: zzz ! local real 67 66 REAL(wp), DIMENSION(4) :: zmax, zmaxlocal 68 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns 67 LOGICAL :: ll_wrtstp, ll_colruns, ll_wrtruns, ll_0oce 69 68 LOGICAL, DIMENSION(jpi,jpj) :: llmsk 70 69 CHARACTER(len=20) :: clname … … 110 109 ! !== test of local extrema ==! 111 110 ! !== done by all processes at every time step ==! 112 llmsk(:,:) = tmask(:,:,1) == 1._wp 113 IF( COUNT( llmsk(:,:) ) > 0 ) THEN ! avoid huge values sent back for land processors... 114 zmax(1) = MAXVAL( taum(:,:) , mask = llmsk ) ! max wind stress module 115 zmax(2) = MAXVAL( ABS( qns(:,:) ) , mask = llmsk ) ! max non-solar heat flux 116 zmax(3) = MAXVAL( ABS( emp(:,:) ) , mask = llmsk ) ! max E-P 117 ELSE 118 IF( ll_colruns ) THEN ! default value: must not be kept when calling mpp_max -> must be as small as possible 119 zmax(1:3) = -HUGE(1._wp) 120 ELSE ! default value: must not give true for any of the tests bellow (-> avoid manipulating HUGE...) 121 zmax(1:3) = 0._wp 122 ENDIF 123 ENDIF 124 zmax(4) = REAL( nstop, wp ) ! stop indicator 111 ! 112 llmsk( 1:Nis1,:) = .FALSE. ! exclude halos from the checked region 113 llmsk(Nie1: jpi,:) = .FALSE. 114 llmsk(:, 1:Njs1) = .FALSE. 115 llmsk(:,Nje1: jpj) = .FALSE. 116 ! 117 llmsk(Nis0:Nie0,Njs0:Nje0) = tmask(Nis0:Nie0,Njs0:Nje0,1) == 1._wp ! test only the inner domain 118 ! 119 ll_0oce = .NOT. ANY( llmsk(:,:) ) ! no ocean point in the inner domain? 120 ! 121 zmax(1) = MAXVAL( taum(:,:) , mask = llmsk ) ! max wind stress module 122 zmax(2) = MAXVAL( ABS( qns(:,:) ), mask = llmsk ) ! max non-solar heat flux 123 zmax(3) = MAXVAL( ABS( emp(:,:) ), mask = llmsk ) ! max E-P 124 zmax(4) = REAL( nstop, wp ) ! stop indicator 125 ! 125 126 ! !== get global extrema ==! 126 127 ! !== done by all processes if writting run.stat ==! … … 129 130 CALL mpp_max( "stpctl", zmax ) ! max over the global domain 130 131 nstop = NINT( zmax(4) ) ! update nstop indicator (now sheared among all local domains) 131 ENDIF 132 ELSE 133 ! if no ocean point: MAXVAL returns -HUGE => we must overwrite this value to avoid error handling bellow. 134 IF( ll_0oce ) zmax(1:3) = 0._wp ! default "valid" values... 135 ENDIF 136 ! !== error handling ==! 132 137 ! !== write "run.stat" files ==! 133 138 ! !== done only by 1st subdomain at writting timestep ==! 134 139 IF( ll_wrtruns ) THEN 135 140 WRITE(numrun,9500) kt, zmax(1), zmax(2), zmax(3) 136 istatus = NF90_PUT_VAR( nrunid, nvarid(1), (/ zmax(1)/), (/kt/), (/1/) )137 istatus = NF90_PUT_VAR( nrunid, nvarid(2), (/ zmax(2)/), (/kt/), (/1/) )138 istatus = NF90_PUT_VAR( nrunid, nvarid(3), (/ zmax(3)/), (/kt/), (/1/) )141 DO ji = 1, 3 142 istatus = NF90_PUT_VAR( nrunid, nvarid(ji), (/zmax(ji)/), (/kt/), (/1/) ) 143 END DO 139 144 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 140 145 END IF … … 153 158 IF( lwm .AND. kt /= nitend ) istatus = NF90_CLOSE(nrunid) 154 159 ! get global loc on the min/max 155 CALL mpp_maxloc( 'stpctl', taum(:,:) , tmask(:,:,1), zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F156 CALL mpp_maxloc( 'stpctl',ABS( qns(:,:) ), tmask(:,:,1), zzz, iloc(1:2,2) )157 CALL mpp_minloc( 'stpctl',ABS( emp(:,:) ), tmask(:,:,1), zzz, iloc(1:2,3) )160 CALL mpp_maxloc( 'stpctl', taum(:,:) , llmsk, zzz, iloc(1:2,1) ) ! mpp_maxloc ok if mask = F 161 CALL mpp_maxloc( 'stpctl',ABS( qns(:,:) ), llmsk, zzz, iloc(1:2,2) ) 162 CALL mpp_minloc( 'stpctl',ABS( emp(:,:) ), llmsk, zzz, iloc(1:2,3) ) 158 163 ! find which subdomain has the max. 159 164 iareamin(:) = jpnij+1 ; iareamax(:) = 0 ; iareasum(:) = 0 … … 168 173 ELSE ! find local min and max locations: 169 174 ! if we are here, this means that the subdomain contains some oce points -> no need to test the mask used in maxloc 170 iloc(1:2,1) = MAXLOC( taum(:,:) , mask = llmsk ) + (/ nimpp - 1, njmpp - 1/) 171 iloc(1:2,2) = MAXLOC( ABS( qns(:,:) ), mask = llmsk ) + (/ nimpp - 1, njmpp - 1/) 172 iloc(1:2,3) = MINLOC( ABS( emp(:,:) ), mask = llmsk ) + (/ nimpp - 1, njmpp - 1/) 175 iloc(1:2,1) = MAXLOC( taum(:,:) , mask = llmsk ) 176 iloc(1:2,2) = MAXLOC( ABS( qns(:,:) ), mask = llmsk ) 177 iloc(1:2,3) = MINLOC( ABS( emp(:,:) ), mask = llmsk ) 178 DO ji = 1, 3 ! local domain indices ==> global domain indices, excluding halos 179 iloc(1:2,ji) = (/ mig0(iloc(1,ji)), mjg0(iloc(2,ji)) /) 180 END DO 173 181 iareamin(:) = narea ; iareamax(:) = narea ; iareasum(:) = 1 ! this is local information 174 182 ENDIF -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/VORTEX/EXPREF/1_context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/VORTEX/EXPREF/1_namelist_cfg
r13216 r14037 105 105 !! !! 106 106 !! namdrg top/bottom drag coefficient (default: NO selection) 107 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)108 !! namdrg_bot bottom friction (ln_ OFF=F)107 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 108 !! namdrg_bot bottom friction (ln_drg_OFF=F) 109 109 !! nambbc bottom temperature boundary condition (default: OFF) 110 110 !! nambbl bottom boundary layer scheme (default: OFF) … … 114 114 &namdrg ! top/bottom drag coefficient (default: NO selection) 115 115 !----------------------------------------------------------------------- 116 ln_ OFF = .true. ! free-slip : Cd = 0116 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 117 117 / 118 118 !!====================================================================== … … 131 131 !----------------------------------------------------------------------- 132 132 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 133 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS133 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 134 134 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 135 135 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 266 266 !! !! 267 267 !! namtrd dynamics and/or tracer trends (default: OFF) 268 !! namptr Poleward Transport Diagnostics (default: OFF)269 268 !! namhsb Heat and salt budgets (default: OFF) 270 269 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/VORTEX/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/VORTEX/EXPREF/namelist_cfg
r12489 r14037 99 99 !! !! 100 100 !! namdrg top/bottom drag coefficient (default: NO selection) 101 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)102 !! namdrg_bot bottom friction (ln_ OFF=F)101 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 102 !! namdrg_bot bottom friction (ln_drg_OFF=F) 103 103 !! nambbc bottom temperature boundary condition (default: OFF) 104 104 !! nambbl bottom boundary layer scheme (default: OFF) … … 108 108 &namdrg ! top/bottom drag coefficient (default: NO selection) 109 109 !----------------------------------------------------------------------- 110 ln_ OFF = .true. ! free-slip : Cd = 0110 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 111 111 / 112 112 !!====================================================================== … … 125 125 !----------------------------------------------------------------------- 126 126 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 127 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS127 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 128 128 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 129 129 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 259 259 !! !! 260 260 !! namtrd dynamics and/or tracer trends (default: OFF) 261 !! namptr Poleward Transport Diagnostics (default: OFF)262 261 !! namhsb Heat and salt budgets (default: OFF) 263 262 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/VORTEX/MY_SRC/domvvl.F90
r13295 r14037 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 11 !! 4.x ! 2020-02 (G. Madec, S. Techene) introduce ssh to h0 ratio 11 12 !!---------------------------------------------------------------------- 12 13 13 !!----------------------------------------------------------------------14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness15 !! dom_vvl_sf_nxt : Compute next vertical scale factors16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another18 !! dom_vvl_rst : read/write restart file19 !! dom_vvl_ctl : Check the vvl options20 !!----------------------------------------------------------------------21 14 USE oce ! ocean dynamics and tracers 22 15 USE phycst ! physical constant … … 36 29 PRIVATE 37 30 38 PUBLIC dom_vvl_init ! called by domain.F9039 PUBLIC dom_vvl_zgr ! called by isfcpl.F9040 PUBLIC dom_vvl_sf_nxt ! called by step.F9041 PUBLIC dom_vvl_sf_update ! called by step.F9042 PUBLIC dom_vvl_interpol ! called by dynnxt.F9043 44 31 ! !!* Namelist nam_vvl 45 32 LOGICAL , PUBLIC :: ln_vvl_zstar = .FALSE. ! zstar vertical coordinate … … 63 50 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 64 51 52 #if defined key_qco 53 !!---------------------------------------------------------------------- 54 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordonate 55 !!---------------------------------------------------------------------- 56 #else 57 !!---------------------------------------------------------------------- 58 !! Default key Old management of time varying vertical coordinate 59 !!---------------------------------------------------------------------- 60 61 !!---------------------------------------------------------------------- 62 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 63 !! dom_vvl_sf_nxt : Compute next vertical scale factors 64 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 65 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 66 !! dom_vvl_rst : read/write restart file 67 !! dom_vvl_ctl : Check the vvl options 68 !!---------------------------------------------------------------------- 69 70 PUBLIC dom_vvl_init ! called by domain.F90 71 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 72 PUBLIC dom_vvl_sf_nxt ! called by step.F90 73 PUBLIC dom_vvl_sf_update ! called by step.F90 74 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 75 65 76 !! * Substitutions 66 77 # include "do_loop_substitute.h90" … … 135 146 ! 136 147 END SUBROUTINE dom_vvl_init 137 ! 148 149 138 150 SUBROUTINE dom_vvl_zgr(Kbb, Kmm, Kaa) 139 151 !!---------------------------------------------------------------------- … … 261 273 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN 262 274 IF( nn_cfg == 3 ) THEN ! ORCA2: Suppress ztilde in the Foxe Basin for ORCA2 263 ii0 = 103 ; ii1 = 111264 ij0 = 128 ; ij1 = 135 ;275 ii0 = 103 + nn_hls - 1 ; ii1 = 111 + nn_hls - 1 276 ij0 = 128 + nn_hls ; ij1 = 135 + nn_hls 265 277 frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.0_wp 266 278 frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0_wp / rn_Dt … … 268 280 ENDIF 269 281 ENDIF 270 ENDIF271 !272 IF(lwxios) THEN273 ! define variables in restart file when writing with XIOS274 CALL iom_set_rstw_var_active('e3t_b')275 CALL iom_set_rstw_var_active('e3t_n')276 ! ! ----------------------- !277 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases !278 ! ! ----------------------- !279 CALL iom_set_rstw_var_active('tilde_e3t_b')280 CALL iom_set_rstw_var_active('tilde_e3t_n')281 END IF282 ! ! -------------!283 IF( ln_vvl_ztilde ) THEN ! z_tilde case !284 ! ! ------------ !285 CALL iom_set_rstw_var_active('hdiv_lf')286 ENDIF287 !288 282 ENDIF 289 283 ! … … 322 316 LOGICAL :: ll_do_bclinic ! local logical 323 317 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 324 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 318 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ze3t 319 LOGICAL , DIMENSION(:,:,:), ALLOCATABLE :: llmsk 325 320 !!---------------------------------------------------------------------- 326 321 ! … … 435 430 ! Maximum deformation control 436 431 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 437 ze3t(:,:,jpk) = 0._wp 438 DO jk = 1, jpkm1 439 ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 440 END DO 441 z_tmax = MAXVAL( ze3t(:,:,:) ) 442 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 443 z_tmin = MINVAL( ze3t(:,:,:) ) 444 CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 432 ALLOCATE( ze3t(jpi,jpj,jpk), llmsk(jpi,jpj,jpk) ) 433 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 434 ze3t(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) / e3t_0(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 435 END_3D 436 ! 437 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 438 llmsk(Nie1: jpi,:,:) = .FALSE. 439 llmsk(:, 1:Njs1,:) = .FALSE. 440 llmsk(:,Nje1: jpj,:) = .FALSE. 441 ! 442 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 443 z_tmax = MAXVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 444 z_tmin = MINVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 445 445 ! - ML - test: for the moment, stop simulation for too large e3_t variations 446 446 IF( ( z_tmax > rn_zdef_max ) .OR. ( z_tmin < - rn_zdef_max ) ) THEN 447 IF( lk_mpp ) THEN 448 CALL mpp_maxloc( 'domvvl', ze3t, tmask, z_tmax, ijk_max ) 449 CALL mpp_minloc( 'domvvl', ze3t, tmask, z_tmin, ijk_min ) 450 ELSE 451 ijk_max = MAXLOC( ze3t(:,:,:) ) 452 ijk_max(1) = mig0_oldcmp(ijk_max(1)) 453 ijk_max(2) = mjg0_oldcmp(ijk_max(2)) 454 ijk_min = MINLOC( ze3t(:,:,:) ) 455 ijk_min(1) = mig0_oldcmp(ijk_min(1)) 456 ijk_min(2) = mjg0_oldcmp(ijk_min(2)) 457 ENDIF 447 CALL mpp_maxloc( 'domvvl', ze3t, llmsk, z_tmax, ijk_max ) 448 CALL mpp_minloc( 'domvvl', ze3t, llmsk, z_tmin, ijk_min ) 458 449 IF (lwp) THEN 459 450 WRITE(numout, *) 'MAX( tilde_e3t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax … … 464 455 ENDIF 465 456 ENDIF 457 DEALLOCATE( ze3t, llmsk ) 466 458 ! - ML - end test 467 459 ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below … … 793 785 IF( ln_rstart ) THEN !* Read the restart file 794 786 CALL rst_read_open ! open the restart file if necessary 795 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) , ldxios = lrxios)787 CALL iom_get( numror, jpdom_auto, 'sshn' , ssh(:,:,Kmm) ) 796 788 ! 797 789 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 806 798 ! 807 799 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 808 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)809 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)800 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 801 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 810 802 ! needed to restart if land processor not computed 811 803 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 821 813 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 822 814 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 823 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lrxios)815 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb) ) 824 816 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 825 817 l_1st_euler = .true. … … 828 820 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 829 821 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 830 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lrxios)822 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm) ) 831 823 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 832 824 l_1st_euler = .true. … … 853 845 ! ! ----------------------- ! 854 846 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 855 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lrxios)856 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lrxios)847 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:) ) 848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:) ) 857 849 ELSE ! one at least array is missing 858 850 tilde_e3t_b(:,:,:) = 0.0_wp … … 863 855 ! ! ------------ ! 864 856 IF( id5 > 0 ) THEN ! required array exists 865 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lrxios)857 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:) ) 866 858 ELSE ! array is missing 867 859 hdiv_lf(:,:,:) = 0.0_wp … … 937 929 ! ! =================== 938 930 IF(lwp) WRITE(numout,*) '---- dom_vvl_rst ----' 939 IF( lwxios ) CALL iom_swap( cwxios_context )940 931 ! ! --------- ! 941 932 ! ! all cases ! 942 933 ! ! --------- ! 943 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) , ldxios = lwxios)944 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) , ldxios = lwxios)934 CALL iom_rstput( kt, nitrst, numrow, 'e3t_b', e3t(:,:,:,Kbb) ) 935 CALL iom_rstput( kt, nitrst, numrow, 'e3t_n', e3t(:,:,:,Kmm) ) 945 936 ! ! ----------------------- ! 946 937 IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN ! z_tilde and layer cases ! 947 938 ! ! ----------------------- ! 948 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:) , ldxios = lwxios)949 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:) , ldxios = lwxios)939 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_b', tilde_e3t_b(:,:,:)) 940 CALL iom_rstput( kt, nitrst, numrow, 'tilde_e3t_n', tilde_e3t_n(:,:,:)) 950 941 END IF 951 942 ! ! -------------! 952 943 IF( ln_vvl_ztilde ) THEN ! z_tilde case ! 953 944 ! ! ------------ ! 954 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:) , ldxios = lwxios)945 CALL iom_rstput( kt, nitrst, numrow, 'hdiv_lf', hdiv_lf(:,:,:)) 955 946 ENDIF 956 947 ! 957 IF( lwxios ) CALL iom_swap( cxios_context )958 948 ENDIF 959 949 ! … … 1030 1020 END SUBROUTINE dom_vvl_ctl 1031 1021 1022 #endif 1023 1032 1024 !!====================================================================== 1033 1025 END MODULE domvvl -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/WAD/EXPREF/context_nemo.xml
r12276 r14037 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/WAD/EXPREF/namelist_cfg
r12489 r14037 200 200 !! !! 201 201 !! namdrg top/bottom drag coefficient (default: NO selection) 202 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)203 !! namdrg_bot bottom friction (ln_ OFF=F)202 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 203 !! namdrg_bot bottom friction (ln_drg_OFF=F) 204 204 !! nambbc bottom temperature boundary condition (default: OFF) 205 205 !! nambbl bottom boundary layer scheme (default: OFF) … … 253 253 ! 254 254 ! ! S-EOS coefficients (ln_seos=T): 255 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS255 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 256 256 rn_a0 = 1.6550e-1 ! thermal expension coefficient (nn_eos= 1) 257 257 rn_b0 = 7.6554e-1 ! saline expension coefficient (nn_eos= 1) … … 263 263 !!org GYRE rn_alpha = 2.0e-4 ! thermal expension coefficient (nn_eos= 1 or 2) 264 264 !!org GYRE rn_beta = 7.7e-4 ! saline expension coefficient (nn_eos= 2) 265 !!org caution now a0 = alpha / r au0 with rau0 = 1026265 !!org caution now a0 = alpha / rho0 with rho0 = 1026 266 266 / 267 267 !----------------------------------------------------------------------- … … 417 417 !! !! 418 418 !! namtrd dynamics and/or tracer trends (default: OFF) 419 !! namptr Poleward Transport Diagnostics (default: OFF)420 419 !! namhsb Heat and salt budgets (default: OFF) 421 420 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_r13333_KERNEL-08_techene_gm_HPG_SPG/tests/demo_cfgs.txt
r13207 r14037 12 12 STATION_ASF OCE 13 13 CPL_OASIS OCE TOP ICE NST 14 C1D_ASICS OCE 15 ICE_RHEO OCE SAS ICE
Note: See TracChangeset
for help on using the changeset viewer.