- Timestamp:
- 2020-02-24T14:00:21+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2
- Files:
-
- 112 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/cfgs/AMM12/EXPREF/namelist_cfg
r12406 r12443 303 303 ln_dynspg_ts = .true. ! split-explicit free surface 304 304 ln_bt_auto = .false. ! Number of sub-step defined from: 305 nn_ baro= 30 ! =F : the number of sub-step in rn_Dt seconds305 nn_e = 30 ! =F : the number of sub-step in rn_Dt seconds 306 306 / 307 307 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/cfgs/SHARED/namelist_ref
r12406 r12443 651 651 rn_tide_gamma = 0.7 ! Tidal tilt factor 652 652 ln_scal_load = .false. ! Use scalar approximation for 653 rn_ scal_load = 0.094 ! load potential653 rn_load = 0.094 ! load potential 654 654 ln_read_load = .false. ! Or read load potential from file 655 655 cn_tide_load = 'tide_LOAD_grid_T.nc' ! filename for load potential … … 989 989 ln_bt_av = .true. ! Time filtering of barotropic variables 990 990 nn_bt_flt = 1 ! Time filter choice = 0 None 991 ! ! = 1 Boxcar over nn_ barosub-steps992 ! ! = 2 Boxcar over 2*nn_ baro" "991 ! ! = 1 Boxcar over nn_e sub-steps 992 ! ! = 2 Boxcar over 2*nn_e " " 993 993 ln_bt_auto = .true. ! Number of sub-step defined from: 994 994 rn_bt_cmax = 0.8 ! =T : the Maximum Courant Number allowed 995 nn_ baro= 30 ! =F : the number of sub-step in rn_Dt seconds995 nn_e = 30 ! =F : the number of sub-step in rn_Dt seconds 996 996 rn_bt_alpha = 0. ! Temporal diffusion parameter (if ln_bt_av=F) 997 997 / -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icedia.F90
r12406 r12443 109 109 ! ---------------------------! 110 110 ! they must be kept outside an IF(iom_use) because of the call to dia_rst below 111 z_frc_volbot = r1_r au0 * glob_sum( 'icedia', -( wfx_ice(:,:) + wfx_snw(:,:) + wfx_err_sub(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater flux ice/snow-ocean112 z_frc_voltop = r1_r au0 * glob_sum( 'icedia', -( wfx_sub(:,:) + wfx_spr(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater flux ice/snow-atm113 z_frc_sal = r1_r au0 * glob_sum( 'icedia', - sfx(:,:) * e1e2t(:,:) ) * 1.e-9 ! salt fluxes ice/snow-ocean111 z_frc_volbot = r1_rho0 * glob_sum( 'icedia', -( wfx_ice(:,:) + wfx_snw(:,:) + wfx_err_sub(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater flux ice/snow-ocean 112 z_frc_voltop = r1_rho0 * glob_sum( 'icedia', -( wfx_sub(:,:) + wfx_spr(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater flux ice/snow-atm 113 z_frc_sal = r1_rho0 * glob_sum( 'icedia', - sfx(:,:) * e1e2t(:,:) ) * 1.e-9 ! salt fluxes ice/snow-ocean 114 114 z_frc_tembot = glob_sum( 'icedia', qt_oce_ai(:,:) * e1e2t(:,:) ) * 1.e-20 ! heat on top of ocean (and below ice) 115 115 z_frc_temtop = glob_sum( 'icedia', qt_atm_oi(:,:) * e1e2t(:,:) ) * 1.e-20 ! heat on top of ice-coean … … 137 137 IF( iom_use('ibgvolume') .OR. iom_use('ibgsaltco') .OR. iom_use('ibgheatco') .OR. iom_use('ibgheatfx') ) THEN 138 138 139 zdiff_vol = r1_r au0 * glob_sum( 'icedia', ( rhoi*vt_i(:,:) + rhos*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater trend (km3)140 zdiff_sal = r1_r au0 * glob_sum( 'icedia', ( rhoi*st_i(:,:) - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! salt content trend (km3*pss)139 zdiff_vol = r1_rho0 * glob_sum( 'icedia', ( rhoi*vt_i(:,:) + rhos*vt_s(:,:) - vol_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! freshwater trend (km3) 140 zdiff_sal = r1_rho0 * glob_sum( 'icedia', ( rhoi*st_i(:,:) - sal_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-9 ! salt content trend (km3*pss) 141 141 zdiff_tem = glob_sum( 'icedia', ( et_i(:,:) + et_s(:,:) - tem_loc_ini(:,:) ) * e1e2t(:,:) ) * 1.e-20 ! heat content trend (1.e20 J) 142 142 ! + SUM( qevap_ice * a_i_b, dim=3 ) !! clem: I think this term should not be there (but needs a check) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icedyn_adv_pra.F90
r12377 r12443 687 687 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 688 688 ! 689 zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (r au0-rhoi) * r1_rhos )689 zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (rho0-rhoi) * r1_rhos ) 690 690 ! 691 691 IF( zvs_excess > 0._wp ) THEN ! snow-ice interface deplets below the ocean surface -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icedyn_adv_umx.F90
r12377 r12443 1505 1505 IF ( pv_i(ji,jj,jl) > 0._wp ) THEN 1506 1506 ! 1507 zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (r au0-rhoi) * r1_rhos )1507 zvs_excess = MAX( 0._wp, pv_s(ji,jj,jl) - pv_i(ji,jj,jl) * (rho0-rhoi) * r1_rhos ) 1508 1508 ! 1509 1509 IF( zvs_excess > 0._wp ) THEN ! snow-ice interface deplets below the ocean surface -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icedyn_rhg_evp.F90
r12377 r12443 116 116 INTEGER :: jter ! local integers 117 117 ! 118 REAL(wp) :: zrhoco ! r au0 * rn_cio118 REAL(wp) :: zrhoco ! rho0 * rn_cio 119 119 REAL(wp) :: zdtevp, z1_dtevp ! time step for subcycling 120 120 REAL(wp) :: ecc2, z1_ecc2 ! square of yield ellipse eccenticity … … 213 213 ! 1) define some variables and initialize arrays 214 214 !------------------------------------------------------------------------------! 215 zrhoco = r au0 * rn_cio215 zrhoco = rho0 * rn_cio 216 216 217 217 ! ecc2: square of yield ellipse eccenticrity -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/iceistate.F90
r12377 r12443 371 371 IF( ln_ice_embd ) THEN ! embedded sea-ice: deplete the initial ssh below sea-ice area 372 372 ! 373 ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_r au0374 ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_r au0373 ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_rho0 374 ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_rho0 375 375 ! 376 376 IF( .NOT.ln_linssh ) THEN -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icethd.F90
r12377 r12443 116 116 ELSE ! if no ice dynamics => transmit directly the atmospheric stress to the ocean 117 117 DO_2D_00_00 118 zfric(ji,jj) = r1_r au0 * SQRT( 0.5_wp * &118 zfric(ji,jj) = r1_rho0 * SQRT( 0.5_wp * & 119 119 & ( utau(ji,jj) * utau(ji,jj) + utau(ji-1,jj) * utau(ji-1,jj) & 120 120 & + vtau(ji,jj) * vtau(ji,jj) + vtau(ji,jj-1) * vtau(ji,jj-1) ) ) * tmask(ji,jj,1) … … 141 141 142 142 ! --- Energy needed to bring ocean surface layer until its freezing (mostly<0 but >0 if supercooling, J.m-2) --- ! 143 zqfr = r au0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) * tmask(ji,jj,1) ! both < 0 (t_bo < sst) and > 0 (t_bo > sst)143 zqfr = rho0 * rcp * e3t_m(ji,jj) * ( t_bo(ji,jj) - ( sst_m(ji,jj) + rt0 ) ) * tmask(ji,jj,1) ! both < 0 (t_bo < sst) and > 0 (t_bo > sst) 144 144 zqfr_neg = MIN( zqfr , 0._wp ) ! only < 0 145 145 146 146 ! --- Sensible ocean-to-ice heat flux (mostly>0 but <0 if supercooling, W/m2) 147 147 zfric_u = MAX( SQRT( zfric(ji,jj) ), zfric_umin ) 148 qsb_ice_bot(ji,jj) = rswitch * r au0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2148 qsb_ice_bot(ji,jj) = rswitch * rho0 * rcp * zch * zfric_u * ( ( sst_m(ji,jj) + rt0 ) - t_bo(ji,jj) ) ! W.m-2 149 149 150 150 qsb_ice_bot(ji,jj) = rswitch * MIN( qsb_ice_bot(ji,jj), - zqfr_neg * r1_rdtice / MAX( at_i(ji,jj), epsi10 ) ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icethd_dh.F90
r10786 r12443 76 76 REAL(wp) :: zgrr ! bottom growth rate 77 77 REAL(wp) :: zt_i_new ! bottom formation temperature 78 REAL(wp) :: z1_rho ! 1/(rhos+r au0-rhoi)78 REAL(wp) :: z1_rho ! 1/(rhos+rho0-rhoi) 79 79 80 80 REAL(wp) :: zQm ! enthalpy exchanged with the ocean (J/m2), >0 towards the ocean … … 571 571 ! When snow load excesses Archimede's limit, snow-ice interface goes down under sea-level, 572 572 ! flooding of seawater transforms snow into ice dh_snowice is positive for the ice 573 z1_rho = 1._wp / ( rhos+r au0-rhoi )573 z1_rho = 1._wp / ( rhos+rho0-rhoi ) 574 574 DO ji = 1, npti 575 575 ! 576 dh_snowice(ji) = MAX( 0._wp , ( rhos * h_s_1d(ji) + (rhoi-r au0) * h_i_1d(ji) ) * z1_rho )576 dh_snowice(ji) = MAX( 0._wp , ( rhos * h_s_1d(ji) + (rhoi-rho0) * h_i_1d(ji) ) * z1_rho ) 577 577 578 578 h_i_1d(ji) = h_i_1d(ji) + dh_snowice(ji) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icethd_do.F90
r12377 r12443 141 141 ! Physical constants 142 142 zhicrit = 0.04 ! frazil ice thickness 143 ztwogp = 2. * r au0 / ( grav * 0.3 * ( rau0 - rhoi ) ) ! reduced grav143 ztwogp = 2. * rho0 / ( grav * 0.3 * ( rho0 - rhoi ) ) ! reduced grav 144 144 zsqcd = 1.0 / SQRT( 1.3 * zcai ) ! 1/SQRT(airdensity*drag) 145 145 zgamafr = 0.03 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/iceupdate.F90
r12377 r12443 329 329 ENDIF 330 330 331 zrhoco = r au0 * rn_cio331 zrhoco = rho0 * rn_cio 332 332 ! 333 333 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN !== Ice time-step only ==! (i.e. surface module time-step) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icevar.F90
r12377 r12443 717 717 !! ** Purpose : compute the equivalent ssh in lead when sea ice is embedded 718 718 !! 719 !! ** Method : ssh_lead = ssh + (Mice + Msnow) / r au0719 !! ** Method : ssh_lead = ssh + (Mice + Msnow) / rho0 720 720 !! 721 721 !! ** Reference : Jean-Michel Campin, John Marshall, David Ferreira, … … 747 747 zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 748 748 ! 749 zsnwiceload(:,:) = ( zintn * psnwice_mass(:,:) + zintb * psnwice_mass_b(:,:) ) * r1_r au0749 zsnwiceload(:,:) = ( zintn * psnwice_mass(:,:) + zintb * psnwice_mass_b(:,:) ) * r1_rho0 750 750 ! 751 751 ELSE … … 937 937 ! In case snow load is in excess that would lead to transformation from snow to ice 938 938 ! Then, transfer the snow excess into the ice (different from icethd_dh) 939 zdh = MAX( 0._wp, ( rhos * ph_s(ji,jl) + ( rhoi - r au0 ) * ph_i(ji,jl) ) * r1_rau0 )939 zdh = MAX( 0._wp, ( rhos * ph_s(ji,jl) + ( rhoi - rho0 ) * ph_i(ji,jl) ) * r1_rho0 ) 940 940 ! recompute h_i, h_s avoiding out of bounds values 941 941 ph_i(ji,jl) = MIN( hi_max(jl), ph_i(ji,jl) + zdh ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/ICE/icewri.F90
r12377 r12443 87 87 ! Standard outputs 88 88 !----------------- 89 zrho1 = ( r au0 - rhoi ) * r1_rau0 ; zrho2 = rhos * r1_rau089 zrho1 = ( rho0 - rhoi ) * r1_rho0 ; zrho2 = rhos * r1_rho0 90 90 ! masks 91 91 CALL iom_put( 'icemask' , zmsk00 ) ! ice mask 0% -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_oce_update.F90
r12406 r12443 361 361 ztnu = tabres_child(ji,jj,jk,jn) * e3t(ji,jj,jk,Kmm_a) 362 362 ztno = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 363 ts(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) ) &363 ts(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) ) & 364 364 & * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 365 365 ENDIF … … 432 432 ztnu = tabres(ji,jj,jk,jn) 433 433 ztno = ts(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 434 ts(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) ) &434 ts(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) ) & 435 435 & * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 436 436 ENDIF … … 555 555 zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 556 556 zunu = tabres_child(ji,jj,jk) * e3u(ji,jj,jk,Kmm_a) 557 uu(ji,jj,jk,Kbb_a) = ( zub + atfp * ( zunu - zuno) ) &557 uu(ji,jj,jk,Kbb_a) = ( zub + rn_atfp * ( zunu - zuno) ) & 558 558 & * umask(ji,jj,jk) / e3u(ji,jj,jk,Kbb_a) 559 559 ENDIF … … 601 601 zuno = uu(ji,jj,jk,Kmm_a) * e3u(ji,jj,jk,Krhs_a) 602 602 zunu = tabres(ji,jj,jk,1) 603 uu(ji,jj,jk,Kbb_a) = ( zub + atfp * ( zunu - zuno) ) &603 uu(ji,jj,jk,Kbb_a) = ( zub + rn_atfp * ( zunu - zuno) ) & 604 604 & * umask(ji,jj,jk) / e3u(ji,jj,jk,Kbb_a) 605 605 ENDIF … … 755 755 zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 756 756 zvnu = tabres_child(ji,jj,jk) * e3v(ji,jj,jk,Kmm_a) 757 vv(ji,jj,jk,Kbb_a) = ( zvb + atfp * ( zvnu - zvno) ) &757 vv(ji,jj,jk,Kbb_a) = ( zvb + rn_atfp * ( zvnu - zvno) ) & 758 758 & * vmask(ji,jj,jk) / e3v(ji,jj,jk,Kbb_a) 759 759 ENDIF … … 805 805 zvno = vv(ji,jj,jk,Kmm_a) * e3v(ji,jj,jk,Krhs_a) 806 806 zvnu = tabres(ji,jj,jk,1) 807 vv(ji,jj,jk,Kbb_a) = ( zvb + atfp * ( zvnu - zvno) ) &807 vv(ji,jj,jk,Kbb_a) = ( zvb + rn_atfp * ( zvnu - zvno) ) & 808 808 & * vmask(ji,jj,jk) / e3v(ji,jj,jk,Kbb_a) 809 809 ENDIF … … 909 909 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 910 910 zcorr = (tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu(ji,jj,Krhs_a)) * r1_hu(ji,jj,Kbb_a) 911 uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + atfp * zcorr * umask(ji,jj,1)911 uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + rn_atfp * zcorr * umask(ji,jj,1) 912 912 END IF 913 913 ENDIF … … 975 975 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) THEN ! Add asselin part 976 976 zcorr = (tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv(ji,jj,Krhs_a)) * r1_hv(ji,jj,Kbb_a) 977 vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr * vmask(ji,jj,1)977 vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + rn_atfp * zcorr * vmask(ji,jj,1) 978 978 END IF 979 979 ENDIF … … 1025 1025 DO ji=i1,i2 1026 1026 ssh(ji,jj,Kbb_a) = ssh(ji,jj,Kbb_a) & 1027 & + atfp * ( tabres(ji,jj) - ssh(ji,jj,Kmm_a) ) * tmask(ji,jj,1)1027 & + rn_atfp * ( tabres(ji,jj) - ssh(ji,jj,Kmm_a) ) * tmask(ji,jj,1) 1028 1028 END DO 1029 1029 END DO … … 1119 1119 zcor = rn_Dt * r1_e1e2t(i1 ,jj) * e2u(i1,jj) * (ub2_b(i1,jj)-tabres(i1,jj)) 1120 1120 ssh(i1 ,jj,Kmm_a) = ssh(i1 ,jj,Kmm_a) + zcor 1121 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i1 ,jj,Kbb_a) = ssh(i1 ,jj,Kbb_a) + atfp * zcor1121 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i1 ,jj,Kbb_a) = ssh(i1 ,jj,Kbb_a) + rn_atfp * zcor 1122 1122 END DO 1123 1123 ENDIF … … 1126 1126 zcor = - rn_Dt * r1_e1e2t(i2+1,jj) * e2u(i2,jj) * (ub2_b(i2,jj)-tabres(i2,jj)) 1127 1127 ssh(i2+1,jj,Kmm_a) = ssh(i2+1,jj,Kmm_a) + zcor 1128 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + atfp * zcor1128 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(i2+1,jj,Kbb_a) = ssh(i2+1,jj,Kbb_a) + rn_atfp * zcor 1129 1129 END DO 1130 1130 ENDIF … … 1207 1207 zcor = rn_Dt * r1_e1e2t(ji,j1 ) * e1v(ji,j1 ) * (vb2_b(ji,j1)-tabres(ji,j1)) 1208 1208 ssh(ji,j1 ,Kmm_a) = ssh(ji,j1 ,Kmm_a) + zcor 1209 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j1 ,Kbb_a) = ssh(ji,j1,Kbb_a) + atfp * zcor1209 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j1 ,Kbb_a) = ssh(ji,j1,Kbb_a) + rn_atfp * zcor 1210 1210 END DO 1211 1211 ENDIF … … 1214 1214 zcor = - rn_Dt * r1_e1e2t(ji,j2+1) * e1v(ji,j2 ) * (vb2_b(ji,j2)-tabres(ji,j2)) 1215 1215 ssh(ji,j2+1,Kmm_a) = ssh(ji,j2+1,Kmm_a) + zcor 1216 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + atfp * zcor1216 IF (.NOT.(lk_agrif_fstep.AND.(l_1st_euler))) ssh(ji,j2+1,Kbb_a) = ssh(ji,j2+1,Kbb_a) + rn_atfp * zcor 1217 1217 END DO 1218 1218 ENDIF … … 1364 1364 DO ji=i1,i2 1365 1365 e3t(ji,jj,jk,Kbb_a) = e3t(ji,jj,jk,Kbb_a) & 1366 & + atfp * ( ptab(ji,jj,jk) - e3t(ji,jj,jk,Kmm_a) )1366 & + rn_atfp * ( ptab(ji,jj,jk) - e3t(ji,jj,jk,Kmm_a) ) 1367 1367 END DO 1368 1368 END DO -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/NST/agrif_top_update.F90
r12397 r12443 135 135 ztnu = tabres_child(ji,jj,jk,jn) * e3t(ji,jj,jk,Kmm_a) 136 136 ztno = tr(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 137 tr(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) ) &137 tr(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) ) & 138 138 & * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 139 139 ENDIF … … 209 209 ztnu = tabres(ji,jj,jk,jn) 210 210 ztno = tr(ji,jj,jk,jn,Kmm_a) * e3t(ji,jj,jk,Krhs_a) 211 tr(ji,jj,jk,jn,Kbb_a) = ( ztb + atfp * ( ztnu - ztno) ) &211 tr(ji,jj,jk,jn,Kbb_a) = ( ztb + rn_atfp * ( ztnu - ztno) ) & 212 212 & * tmask(ji,jj,jk) / e3t(ji,jj,jk,Kbb_a) 213 213 ENDIF -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/BDY/bdyice.F90
r11536 r12443 179 179 180 180 ! Then, a) transfer the snow excess into the ice (different from icethd_dh) 181 zdh = MAX( 0._wp, ( rhos * h_s(ji,jj,jl) + ( rhoi - r au0 ) * h_i(ji,jj,jl) ) * r1_rau0 )181 zdh = MAX( 0._wp, ( rhos * h_s(ji,jj,jl) + ( rhoi - rho0 ) * h_i(ji,jj,jl) ) * r1_rho0 ) 182 182 ! Or, b) transfer all the snow into ice (if incoming ice is likely to melt as it comes into a warmer environment) 183 183 !zdh = MAX( 0._wp, h_s(ji,jj,jl) * rhos / rhoi ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/BDY/bdytides.F90
r12406 r12443 297 297 ! Absolute time from model initialization: 298 298 IF( PRESENT(kit) ) THEN 299 z_arg = ( REAL(kt, wp) + ( REAL(kit, wp) + zt_offset - 1. ) / REAL(nn_ baro, wp) ) * rn_Dt299 z_arg = ( REAL(kt, wp) + ( REAL(kit, wp) + zt_offset - 1. ) / REAL(nn_e, wp) ) * rn_Dt 300 300 ELSE 301 301 z_arg = ( REAL(kt, wp) + zt_offset ) * rn_Dt -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/BDY/bdyvol.F90
r12377 r12443 77 77 ! Calculate the cumulate surface Flux z_cflxemp (m3/s) over all the domain 78 78 ! ----------------------------------------------------------------------- 79 IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / r au079 IF ( kc == 1 ) z_cflxemp = glob_sum( 'bdyvol', ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * bdytmask(:,:) * e1e2t(:,:) ) / rho0 80 80 81 81 ! Compute bdy surface each cycle if non linear free surface -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diaar5.F90
r12377 r12443 103 103 END DO 104 104 CALL iom_put( 'volcello' , zrhd(:,:,:) ) ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 105 CALL iom_put( 'masscello' , r au0 * e3t(:,:,:,Kmm) * tmask(:,:,:) ) ! ocean mass105 CALL iom_put( 'masscello' , rho0 * e3t(:,:,:,Kmm) * tmask(:,:,:) ) ! ocean mass 106 106 ENDIF 107 107 ! … … 181 181 CALL iom_put( 'sshsteric', zssh_steric ) 182 182 ! ! ocean bottom pressure 183 zztmp = r au0 * grav * 1.e-4_wp ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa183 zztmp = rho0 * grav * 1.e-4_wp ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 184 184 zbotpres(:,:) = zztmp * ( zbotpres(:,:) + ssh(:,:,Kmm) + thick0(:,:) ) 185 185 CALL iom_put( 'botpres', zbotpres ) … … 213 213 ztemp = glob_sum( 'diaar5', ztsn(:,:,1,jp_tem) ) 214 214 zsal = glob_sum( 'diaar5', ztsn(:,:,1,jp_sal) ) 215 zmass = r au0 * ( zarho + zvol )215 zmass = rho0 * ( zarho + zvol ) 216 216 ! 217 217 CALL iom_put( 'masstot', zmass ) … … 251 251 z2d(:,:) = 0._wp 252 252 DO_3D_11_11( 1, jpkm1 ) 253 z2d(ji,jj) = z2d(ji,jj) + r au0 * e3t(ji,jj,jk,Kmm) * ztpot(ji,jj,jk)253 z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) * ztpot(ji,jj,jk) 254 254 END_3D 255 255 CALL iom_put( 'tosmint_pot', z2d ) … … 285 285 ELSE 286 286 DO_3D_11_11( 1, jpk ) 287 zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * r au0 * e3w(ji,jj,jk,Kmm)287 zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rho0 * e3w(ji,jj,jk,Kmm) 288 288 END_3D 289 289 ENDIF … … 325 325 CALL lbc_lnk( 'diaar5', z2d, 'U', -1. ) 326 326 IF( cptr == 'adv' ) THEN 327 IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , r au0_rcp * z2d ) ! advective heat transport in i-direction328 IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , r au0 * z2d ) ! advective salt transport in i-direction327 IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rho0_rcp * z2d ) ! advective heat transport in i-direction 328 IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , rho0 * z2d ) ! advective salt transport in i-direction 329 329 ENDIF 330 330 IF( cptr == 'ldf' ) THEN 331 IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , r au0_rcp * z2d ) ! diffusive heat transport in i-direction332 IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , r au0 * z2d ) ! diffusive salt transport in i-direction331 IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in i-direction 332 IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , rho0 * z2d ) ! diffusive salt transport in i-direction 333 333 ENDIF 334 334 ! … … 339 339 CALL lbc_lnk( 'diaar5', z2d, 'V', -1. ) 340 340 IF( cptr == 'adv' ) THEN 341 IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , r au0_rcp * z2d ) ! advective heat transport in j-direction342 IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , r au0 * z2d ) ! advective salt transport in j-direction341 IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rho0_rcp * z2d ) ! advective heat transport in j-direction 342 IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , rho0 * z2d ) ! advective salt transport in j-direction 343 343 ENDIF 344 344 IF( cptr == 'ldf' ) THEN 345 IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , r au0_rcp * z2d ) ! diffusive heat transport in j-direction346 IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , r au0 * z2d ) ! diffusive salt transport in j-direction345 IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in j-direction 346 IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , rho0 * z2d ) ! diffusive salt transport in j-direction 347 347 ENDIF 348 348 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diadct.F90
r12377 r12443 676 676 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 677 677 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 678 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*r au0+rau0)678 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0) 679 679 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm) ) * vmask(k%I,k%J,1) 680 680 CASE(2,3) … … 682 682 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 683 683 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 684 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*r au0+rau0)684 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0) 685 685 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 686 686 END SELECT … … 849 849 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 850 850 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 851 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*r au0+rau0)851 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0) 852 852 853 853 CASE(2,3) … … 855 855 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 856 856 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 857 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*r au0+rau0)857 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0) 858 858 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 859 859 END SELECT -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diahsb.F90
r12406 r12443 91 91 ! 1 - Trends due to forcing ! 92 92 ! ------------------------- ! 93 z_frc_trd_v = r1_r au0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) ) ! volume fluxes93 z_frc_trd_v = r1_rho0 * glob_sum( 'diahsb', - ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) * surf(:,:) ) ! volume fluxes 94 94 z_frc_trd_t = glob_sum( 'diahsb', sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes 95 95 z_frc_trd_s = glob_sum( 'diahsb', sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes … … 101 101 & + glob_sum( 'diahsb', ( risf_cav_tsc(:,:,jp_tem) + risf_par_tsc(:,:,jp_tem) ) * surf(:,:) ) 102 102 ! ! Add penetrative solar radiation 103 IF( ln_traqsr ) z_frc_trd_t = z_frc_trd_t + r1_r au0_rcp * glob_sum( 'diahsb', qsr (:,:) * surf(:,:) )103 IF( ln_traqsr ) z_frc_trd_t = z_frc_trd_t + r1_rho0_rcp * glob_sum( 'diahsb', qsr (:,:) * surf(:,:) ) 104 104 ! ! Add geothermal heat flux 105 105 IF( ln_trabbc ) z_frc_trd_t = z_frc_trd_t + glob_sum( 'diahsb', qgh_trd0(:,:) * surf(:,:) ) … … 197 197 198 198 CALL iom_put( 'bgfrcvol' , frc_v * 1.e-9 ) ! vol - surface forcing (km3) 199 CALL iom_put( 'bgfrctem' , frc_t * r au0 * rcp * 1.e-20 ) ! hc - surface forcing (1.e20 J)200 CALL iom_put( 'bgfrchfx' , frc_t * r au0 * rcp / & ! hc - surface forcing (W/m2)199 CALL iom_put( 'bgfrctem' , frc_t * rho0 * rcp * 1.e-20 ) ! hc - surface forcing (1.e20 J) 200 CALL iom_put( 'bgfrchfx' , frc_t * rho0 * rcp / & ! hc - surface forcing (W/m2) 201 201 & ( surf_tot * kt * rn_Dt ) ) 202 202 CALL iom_put( 'bgfrcsal' , frc_s * 1.e-9 ) ! sc - surface forcing (psu*km3) … … 205 205 CALL iom_put( 'bgtemper' , zdiff_hc / zvol_tot ) ! Temperature drift (C) 206 206 CALL iom_put( 'bgsaline' , zdiff_sc / zvol_tot ) ! Salinity drift (PSU) 207 CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * r au0 * rcp ) ! Heat content drift (1.e20 J)208 CALL iom_put( 'bgheatfx' , zdiff_hc * r au0 * rcp / & ! Heat flux drift (W/m2)207 CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * rho0 * rcp ) ! Heat content drift (1.e20 J) 208 CALL iom_put( 'bgheatfx' , zdiff_hc * rho0 * rcp / & ! Heat flux drift (W/m2) 209 209 & ( surf_tot * kt * rn_Dt ) ) 210 210 CALL iom_put( 'bgsaltco' , zdiff_sc * 1.e-9 ) ! Salt content drift (psu*km3) … … 225 225 CALL iom_put( 'bgtemper' , zdiff_hc1 / zvol_tot) ! Heat content drift (C) 226 226 CALL iom_put( 'bgsaline' , zdiff_sc1 / zvol_tot) ! Salt content drift (PSU) 227 CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * r au0 * rcp ) ! Heat content drift (1.e20 J)228 CALL iom_put( 'bgheatfx' , zdiff_hc1 * r au0 * rcp / & ! Heat flux drift (W/m2)227 CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * rho0 * rcp ) ! Heat content drift (1.e20 J) 228 CALL iom_put( 'bgheatfx' , zdiff_hc1 * rho0 * rcp / & ! Heat flux drift (W/m2) 229 229 & ( surf_tot * kt * rn_Dt ) ) 230 230 CALL iom_put( 'bgsaltco' , zdiff_sc1 * 1.e-9 ) ! Salt content drift (psu*km3) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diahth.F90
r12377 r12443 261 261 zzdep = 300. 262 262 CALL dia_hth_htc( Kmm, zzdep, ts(:,:,:,jp_tem,Kmm), htc3 ) 263 CALL iom_put( 'hc300', r au0_rcp * htc3 ) ! vertically integrated heat content (J/m2)263 CALL iom_put( 'hc300', rho0_rcp * htc3 ) ! vertically integrated heat content (J/m2) 264 264 ENDIF 265 265 ! … … 270 270 zzdep = 700. 271 271 CALL dia_hth_htc( Kmm, zzdep, ts(:,:,:,jp_tem,Kmm), htc7 ) 272 CALL iom_put( 'hc700', r au0_rcp * htc7 ) ! vertically integrated heat content (J/m2)272 CALL iom_put( 'hc700', rho0_rcp * htc7 ) ! vertically integrated heat content (J/m2) 273 273 274 274 ENDIF … … 280 280 zzdep = 2000. 281 281 CALL dia_hth_htc( Kmm, zzdep, ts(:,:,:,jp_tem,Kmm), htc20 ) 282 CALL iom_put( 'hc2000', r au0_rcp * htc20 ) ! vertically integrated heat content (J/m2)282 CALL iom_put( 'hc2000', rho0_rcp * htc20 ) ! vertically integrated heat content (J/m2) 283 283 ENDIF 284 284 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diaptr.F90
r12377 r12443 50 50 51 51 REAL(wp) :: rc_sv = 1.e-6_wp ! conversion from m3/s to Sverdrup 52 REAL(wp) :: rc_pwatt = 1.e-15_wp ! conversion from W to PW (further x r au0 x Cp)53 REAL(wp) :: rc_ggram = 1.e-9_wp ! conversion from g to Gg (further x r au0)52 REAL(wp) :: rc_pwatt = 1.e-15_wp ! conversion from W to PW (further x rho0 x Cp) 53 REAL(wp) :: rc_ggram = 1.e-9_wp ! conversion from g to Gg (further x rho0) 54 54 55 55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: btmsk ! T-point basin interior masks … … 346 346 IF( dia_ptr_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dia_ptr_init : unable to allocate arrays' ) 347 347 348 rc_pwatt = rc_pwatt * r au0_rcp ! conversion from K.s-1 to PetaWatt349 rc_ggram = rc_ggram * r au0 ! conversion from m3/s to Gg/s348 rc_pwatt = rc_pwatt * rho0_rcp ! conversion from K.s-1 to PetaWatt 349 rc_ggram = rc_ggram * rho0 ! conversion from m3/s to Gg/s 350 350 351 351 IF( lk_mpp ) CALL mpp_ini_znl( numout ) ! Define MPI communicator for zonal sum -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DIA/diawri.F90
r12406 r12443 173 173 174 174 IF ( iom_use("taubot") ) THEN ! bottom stress 175 zztmp = r au0 * 0.25175 zztmp = rho0 * 0.25 176 176 z2d(:,:) = 0._wp 177 177 DO_2D_00_00 … … 212 212 IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN ! vertical mass transport & its square value 213 213 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 214 z2d(:,:) = r au0 * e1e2t(:,:)214 z2d(:,:) = rho0 * e1e2t(:,:) 215 215 DO jk = 1, jpk 216 216 z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) … … 249 249 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 250 250 END_3D 251 CALL iom_put( "heatc", r au0_rcp * z2d ) ! vertically integrated heat content (J/m2)251 CALL iom_put( "heatc", rho0_rcp * z2d ) ! vertically integrated heat content (J/m2) 252 252 ENDIF 253 253 … … 257 257 z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 258 258 END_3D 259 CALL iom_put( "saltc", r au0 * z2d ) ! vertically integrated salt content (PSU*kg/m2)259 CALL iom_put( "saltc", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 260 260 ENDIF 261 261 ! … … 279 279 z2d(:,:) = 0.e0 280 280 DO jk = 1, jpkm1 281 z3d(:,:,jk) = r au0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk)281 z3d(:,:,jk) = rho0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 282 282 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 283 283 END DO … … 308 308 z3d(:,:,jpk) = 0.e0 309 309 DO jk = 1, jpkm1 310 z3d(:,:,jk) = r au0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk)310 z3d(:,:,jk) = rho0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 311 311 END DO 312 312 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction … … 337 337 END_3D 338 338 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 339 CALL iom_put( "tosmint", r au0 * z2d ) ! Vertical integral of temperature339 CALL iom_put( "tosmint", rho0 * z2d ) ! Vertical integral of temperature 340 340 ENDIF 341 341 IF( iom_use("somint") ) THEN … … 345 345 END_3D 346 346 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 347 CALL iom_put( "somint", r au0 * z2d ) ! Vertical integral of salinity347 CALL iom_put( "somint", rho0 * z2d ) ! Vertical integral of salinity 348 348 ENDIF 349 349 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/dom_oce.F90
r12424 r12443 33 33 LOGICAL , PUBLIC :: ln_linssh !: =T linear free surface ==>> model level are fixed in time 34 34 LOGICAL , PUBLIC :: ln_meshmask !: =T create a mesh-mask file (mesh_mask.nc) 35 REAL(wp), PUBLIC :: rn_Dt !: time step for the dynamics and tracer35 REAL(wp), PUBLIC :: rn_Dt !: time step for the dynamics and tracer 36 36 REAL(wp), PUBLIC :: rn_atfp !: asselin time filter parameter 37 37 LOGICAL , PUBLIC :: ln_1st_euler !: =T start with forward time step or not (=F) … … 49 49 LOGICAL, PUBLIC :: ln_bt_auto !: Set number of barotropic iterations automatically 50 50 INTEGER, PUBLIC :: nn_bt_flt !: Filter choice 51 INTEGER, PUBLIC :: nn_ baro!: Number of barotropic iterations during one baroclinic step (rn_Dt)51 INTEGER, PUBLIC :: nn_e !: Number of barotropic iterations during one baroclinic step (rn_Dt) 52 52 REAL(wp), PUBLIC :: rn_bt_cmax !: Maximum allowed courant number (used if ln_bt_auto=T) 53 53 REAL(wp), PUBLIC :: rn_bt_alpha !: Time stepping diffusion parameter 54 54 55 56 ! !! old non-DOCTOR names still used in the model57 REAL(wp), PUBLIC :: atfp !: asselin time filter parameter58 55 59 56 ! !!! associated variables 60 57 LOGICAL , PUBLIC :: l_1st_euler !: Euler 1st time-step flag (=T if ln_restart=F or ln_1st_euler=T) 61 58 REAL(wp), PUBLIC :: rDt, r1_Dt !: Current model timestep and reciprocal 62 !: = 2 * rn_Dt if leapfrog and l_1st_euler = F63 !: = rn_Dt if leapfrog and l_1st_euler = T64 !: = rn_Dt if RK359 !: rDt = 2 * rn_Dt if leapfrog and l_1st_euler = F 60 !: = rn_Dt if leapfrog and l_1st_euler = T 61 !: = rn_Dt if RK3 65 62 66 63 !!---------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domain.F90
r12424 r12443 408 408 WRITE(numout,*) ' linear free surface (=T) ln_linssh = ', ln_linssh 409 409 WRITE(numout,*) ' create mesh/mask file ln_meshmask = ', ln_meshmask 410 WRITE(numout,*) ' ocean time step rn_Dt = ', rn_Dt410 WRITE(numout,*) ' ocean time step rn_Dt = ', rn_Dt 411 411 WRITE(numout,*) ' asselin time filter parameter rn_atfp = ', rn_atfp 412 412 WRITE(numout,*) ' online coarsening of dynamical fields ln_crs = ', ln_crs 413 413 ENDIF 414 414 ! 415 ! ! conversion DOCTOR names into model names (this should disappear soon)416 atfp = rn_atfp417 415 !! Initialise current model timestep rDt = 2*rn_Dt if MLF or rDt = rn_Dt if RK3 418 416 rDt = 2._wp * rn_Dt -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/domvvl.F90
r12424 r12443 621 621 ELSE 622 622 tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) & 623 & + atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) )623 & + rn_atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 624 624 ENDIF 625 625 tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DOM/phycst.F90
r10068 r12443 39 39 REAL(wp), PUBLIC :: rt0 = 273.15_wp !: freezing point of fresh water [Kelvin] 40 40 41 REAL(wp), PUBLIC :: r au0 !: volumic mass of reference [kg/m3]42 REAL(wp), PUBLIC :: r1_r au0 !: = 1. / rau0 [m3/kg]41 REAL(wp), PUBLIC :: rho0 !: volumic mass of reference [kg/m3] 42 REAL(wp), PUBLIC :: r1_rho0 !: = 1. / rho0 [m3/kg] 43 43 REAL(wp), PUBLIC :: rcp !: ocean specific heat [J/Kelvin] 44 44 REAL(wp), PUBLIC :: r1_rcp !: = 1. / rcp [Kelvin/J] 45 REAL(wp), PUBLIC :: r au0_rcp !: = rau0 * rcp46 REAL(wp), PUBLIC :: r1_r au0_rcp !: = 1. / ( rau0 * rcp )45 REAL(wp), PUBLIC :: rho0_rcp !: = rho0 * rcp 46 REAL(wp), PUBLIC :: r1_rho0_rcp !: = 1. / ( rho0 * rcp ) 47 47 48 48 REAL(wp), PUBLIC :: emic = 0.97_wp !: emissivity of snow or ice (not used?) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynatf.F90
r12424 r12443 87 87 !! arrays to start the next time step: 88 88 !! (puu(Kmm),pvv(Kmm)) = (puu(Kmm),pvv(Kmm)) 89 !! + atfp [ (puu(Kbb),pvv(Kbb)) + (puu(Kaa),pvv(Kaa)) - 2 (puu(Kmm),pvv(Kmm)) ]89 !! + rn_atfp [ (puu(Kbb),pvv(Kbb)) + (puu(Kaa),pvv(Kaa)) - 2 (puu(Kmm),pvv(Kmm)) ] 90 90 !! Note that with flux form advection and non linear free surface, 91 91 !! the time filter is applied on thickness weighted velocity. … … 181 181 ! ! =============! 182 182 DO_3D_11_11( 1, jpkm1 ) 183 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) )184 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) )183 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 184 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + rn_atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 185 185 END_3D 186 186 ! ! ================! … … 191 191 ALLOCATE( ze3t_f(jpi,jpj,jpk), zwfld(jpi,jpj) ) 192 192 DO jk = 1, jpkm1 193 ze3t_f(:,:,jk) = pe3t(:,:,jk,Kmm) + atfp * ( pe3t(:,:,jk,Kbb) - 2._wp * pe3t(:,:,jk,Kmm) + pe3t(:,:,jk,Kaa) )193 ze3t_f(:,:,jk) = pe3t(:,:,jk,Kmm) + rn_atfp * ( pe3t(:,:,jk,Kbb) - 2._wp * pe3t(:,:,jk,Kmm) + pe3t(:,:,jk,Kaa) ) 194 194 END DO 195 195 ! Add volume filter correction: compatibility with tracer advection scheme 196 196 ! => time filter + conservation correction 197 zcoef = atfp * rn_Dt * r1_rau0197 zcoef = rn_atfp * rn_Dt * r1_rho0 198 198 zwfld(:,:) = emp_b(:,:) - emp(:,:) 199 199 IF ( ln_rnf ) zwfld(:,:) = zwfld(:,:) - ( rnf_b(:,:) - rnf(:,:) ) … … 207 207 ! to manage rnf, isf and possibly in the futur icb, tide water glacier (...) 208 208 ! ...(kt, coef, ktop, kbot, hz, fwf_b, fwf) 209 IF ( ln_isf ) CALL isf_dynatf( kt, Kmm, ze3t_f, atfp * rn_Dt )209 IF ( ln_isf ) CALL isf_dynatf( kt, Kmm, ze3t_f, rn_atfp * rn_Dt ) 210 210 ! 211 211 pe3t(:,:,1:jpkm1,Kmm) = ze3t_f(:,:,1:jpkm1) ! filtered scale factor at T-points … … 216 216 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), pe3v(:,:,:,Kmm), 'V' ) 217 217 DO_3D_11_11( 1, jpkm1 ) 218 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) )219 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) )218 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + rn_atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 219 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + rn_atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 220 220 END_3D 221 221 ! … … 234 234 zve3b = pe3v(ji,jj,jk,Kbb) * pvv(ji,jj,jk,Kbb) 235 235 ! 236 puu(ji,jj,jk,Kmm) = ( zue3n + atfp * ( zue3b - 2._wp * zue3n + zue3a ) ) / ze3u_f(ji,jj,jk)237 pvv(ji,jj,jk,Kmm) = ( zve3n + atfp * ( zve3b - 2._wp * zve3n + zve3a ) ) / ze3v_f(ji,jj,jk)236 puu(ji,jj,jk,Kmm) = ( zue3n + rn_atfp * ( zue3b - 2._wp * zue3n + zue3a ) ) / ze3u_f(ji,jj,jk) 237 pvv(ji,jj,jk,Kmm) = ( zve3n + rn_atfp * ( zve3b - 2._wp * zve3n + zve3a ) ) / ze3v_f(ji,jj,jk) 238 238 END_3D 239 239 pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg.F90
r12406 r12443 67 67 !! ln_apr_dyn=T : the atmospheric pressure forcing is applied 68 68 !! as the gradient of the inverse barometer ssh: 69 !! apgu = - 1/r au0 di[apr] = 0.5*grav di[ssh_ib+ssh_ibb]70 !! apgv = - 1/r au0 dj[apr] = 0.5*grav dj[ssh_ib+ssh_ibb]69 !! apgu = - 1/rho0 di[apr] = 0.5*grav di[ssh_ib+ssh_ibb] 70 !! apgv = - 1/rho0 dj[apr] = 0.5*grav dj[ssh_ib+ssh_ibb] 71 71 !! Note that as all external forcing a time averaging over a two rn_Dt 72 72 !! period is used to prevent the divergence of odd and even time step. … … 78 78 ! 79 79 INTEGER :: ji, jj, jk ! dummy loop indices 80 REAL(wp) :: z2dt, zg_2, zintp, zgr au0r, zld ! local scalars80 REAL(wp) :: z2dt, zg_2, zintp, zgrho0r, zld ! local scalars 81 81 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zpice 82 82 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv … … 123 123 ! 124 124 IF (ln_scal_load) THEN 125 zld = rn_ scal_load * grav125 zld = rn_load * grav 126 126 DO_2D_00_00 127 127 spgu(ji,jj) = spgu(ji,jj) + zld * ( pssh(ji+1,jj,Kmm) - pssh(ji,jj,Kmm) ) * r1_e1u(ji,jj) … … 134 134 ALLOCATE( zpice(jpi,jpj) ) 135 135 zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 136 zgr au0r = - grav * r1_rau0137 zpice(:,:) = ( zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:) ) * zgr au0r136 zgrho0r = - grav * r1_rho0 137 zpice(:,:) = ( zintp * snwice_mass(:,:) + ( 1.- zintp ) * snwice_mass_b(:,:) ) * zgrho0r 138 138 DO_2D_00_00 139 139 spgu(ji,jj) = spgu(ji,jj) + ( zpice(ji+1,jj) - zpice(ji,jj) ) * r1_e1u(ji,jj) … … 183 183 NAMELIST/namdyn_spg/ ln_dynspg_exp , ln_dynspg_ts, & 184 184 & ln_bt_fw, ln_bt_av , ln_bt_auto , & 185 & nn_ baro, rn_bt_cmax, nn_bt_flt, rn_bt_alpha185 & nn_e , rn_bt_cmax, nn_bt_flt, rn_bt_alpha 186 186 !!---------------------------------------------------------------------- 187 187 ! … … 222 222 ! 223 223 IF( nspg == np_TS ) THEN ! split-explicit scheme initialisation 224 CALL dyn_spg_ts_init ! do it first: set nn_ baroused to allocate some arrays later on224 CALL dyn_spg_ts_init ! do it first: set nn_e used to allocate some arrays later on 225 225 ENDIF 226 226 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg_exp.F90
r12377 r12443 49 49 !! momentum trend the surface pressure gradient : 50 50 !! (uu(rhs),vv(rhs)) = (uu(rhs),vv(rhs)) + (spgu,spgv) 51 !! where spgu = -1/r au0 d/dx(ps) = -g/e1u di( ssh(now) )52 !! spgv = -1/r au0 d/dy(ps) = -g/e2v dj( ssh(now) )51 !! where spgu = -1/rho0 d/dx(ps) = -g/e1u di( ssh(now) ) 52 !! spgv = -1/rho0 d/dy(ps) = -g/e2v dj( ssh(now) ) 53 53 !! 54 54 !! ** Action : (puu(:,:,:,Krhs),pvv(:,:,:,Krhs)) trend of horizontal velocity increased by -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynspg_ts.F90
r12424 r12443 72 72 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_adv , vn_adv !: Advection vel. at "now" barocl. step 73 73 ! 74 INTEGER, SAVE :: icycle ! Number of barotropic sub-steps for each internal step nn_ baro <= 2.5 nn_baro75 REAL(wp),SAVE :: r dtbt! Barotropic time step74 INTEGER, SAVE :: icycle ! Number of barotropic sub-steps for each internal step nn_e <= 2.5 nn_e 75 REAL(wp),SAVE :: rDt_e ! Barotropic time step 76 76 ! 77 77 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: wgtbtp1, wgtbtp2 ! 1st & 2nd weights used in time filtering of barotropic fields … … 102 102 ierr(:) = 0 103 103 ! 104 ALLOCATE( wgtbtp1(3*nn_ baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT=ierr(1) )104 ALLOCATE( wgtbtp1(3*nn_e), wgtbtp2(3*nn_e), zwz(jpi,jpj), STAT=ierr(1) ) 105 105 IF( ln_dynvor_een .OR. ln_dynvor_eeT ) & 106 106 & ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , ftsw(jpi,jpj) , ftse(jpi,jpj), STAT=ierr(2) ) … … 185 185 ll_fw_start = .FALSE. 186 186 ! ! time offset in steps for bdy data update 187 IF( .NOT.ln_bt_fw ) THEN ; noffset = - nn_ baro187 IF( .NOT.ln_bt_fw ) THEN ; noffset = - nn_e 188 188 ELSE ; noffset = 0 189 189 ENDIF … … 303 303 IF( ln_bt_fw ) THEN ! Add wind forcing 304 304 DO_2D_00_00 305 zu_frc(ji,jj) = zu_frc(ji,jj) + r1_r au0 * utau(ji,jj) * r1_hu(ji,jj,Kmm)306 zv_frc(ji,jj) = zv_frc(ji,jj) + r1_r au0 * vtau(ji,jj) * r1_hv(ji,jj,Kmm)305 zu_frc(ji,jj) = zu_frc(ji,jj) + r1_rho0 * utau(ji,jj) * r1_hu(ji,jj,Kmm) 306 zv_frc(ji,jj) = zv_frc(ji,jj) + r1_rho0 * vtau(ji,jj) * r1_hv(ji,jj,Kmm) 307 307 END_2D 308 308 ELSE 309 zztmp = r1_r au0 * r1_2309 zztmp = r1_rho0 * r1_2 310 310 DO_2D_00_00 311 311 zu_frc(ji,jj) = zu_frc(ji,jj) + zztmp * ( utau_b(ji,jj) + utau(ji,jj) ) * r1_hu(ji,jj,Kmm) … … 320 320 ! ! --------------------------------------------------- ! 321 321 IF (ln_bt_fw) THEN ! FORWARD integration: use kt+1/2 fluxes (NOW+1/2) 322 zssh_frc(:,:) = r1_r au0 * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) )322 zssh_frc(:,:) = r1_rho0 * ( emp(:,:) - rnf(:,:) + fwfisf_cav(:,:) + fwfisf_par(:,:) ) 323 323 ELSE ! CENTRED integration: use kt-1/2 + kt+1/2 fluxes (NOW) 324 zztmp = r1_r au0 * r1_2324 zztmp = r1_rho0 * r1_2 325 325 zssh_frc(:,:) = zztmp * ( emp(:,:) + emp_b(:,:) & 326 326 & - rnf(:,:) - rnf_b(:,:) & … … 429 429 ! Update tide potential at the beginning of current time substep 430 430 IF( ln_tide_pot .AND. ln_tide ) THEN 431 zt0substep = REAL(nsec_day, wp) - 0.5_wp*rn_Dt + (jn + noffset - 1) * rn_Dt / REAL(nn_ baro, wp)431 zt0substep = REAL(nsec_day, wp) - 0.5_wp*rn_Dt + (jn + noffset - 1) * rn_Dt / REAL(nn_e, wp) 432 432 CALL upd_tide(zt0substep, Kmm) 433 433 END IF … … 495 495 IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) CALL agrif_dyn_ts_flux( jn, zhU, zhV ) 496 496 #endif 497 IF( ln_wd_il ) CALL wad_lmt_bt(zhU, zhV, sshn_e, zssh_frc, r dtbt) !!gm wad_lmt_bt use of lbc_lnk on zhU, zhV497 IF( ln_wd_il ) CALL wad_lmt_bt(zhU, zhV, sshn_e, zssh_frc, rDt_e) !!gm wad_lmt_bt use of lbc_lnk on zhU, zhV 498 498 499 499 IF( ln_wd_dl ) THEN ! un_e and vn_e are set to zero at faces where … … 510 510 DO_2D_00_00 511 511 zhdiv = ( zhU(ji,jj) - zhU(ji-1,jj) + zhV(ji,jj) - zhV(ji,jj-1) ) * r1_e1e2t(ji,jj) 512 ssha_e(ji,jj) = ( sshn_e(ji,jj) - r dtbt* ( zssh_frc(ji,jj) + zhdiv ) ) * ssmask(ji,jj)512 ssha_e(ji,jj) = ( sshn_e(ji,jj) - rDt_e * ( zssh_frc(ji,jj) + zhdiv ) ) * ssmask(ji,jj) 513 513 END_2D 514 514 ! … … 552 552 ! 553 553 ! ! Surface pressure gradient 554 zldg = ( 1._wp - rn_ scal_load ) * grav ! local factor554 zldg = ( 1._wp - rn_load ) * grav ! local factor 555 555 DO_2D_00_00 556 556 zu_spg(ji,jj) = - zldg * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) … … 600 600 DO_2D_00_00 601 601 ua_e(ji,jj) = ( un_e(ji,jj) & 602 & + r dtbt* ( zu_spg(ji,jj) &602 & + rDt_e * ( zu_spg(ji,jj) & 603 603 & + zu_trd(ji,jj) & 604 604 & + zu_frc(ji,jj) ) & … … 606 606 607 607 va_e(ji,jj) = ( vn_e(ji,jj) & 608 & + r dtbt* ( zv_spg(ji,jj) &608 & + rDt_e * ( zv_spg(ji,jj) & 609 609 & + zv_trd(ji,jj) & 610 610 & + zv_frc(ji,jj) ) & … … 625 625 ! 626 626 ua_e(ji,jj) = ( hu_e (ji,jj) * un_e (ji,jj) & 627 & + r dtbt* ( zhu_bck * zu_spg (ji,jj) & !627 & + rDt_e * ( zhu_bck * zu_spg (ji,jj) & ! 628 628 & + zhup2_e(ji,jj) * zu_trd (ji,jj) & ! 629 629 & + hu(ji,jj,Kmm) * zu_frc (ji,jj) ) ) * z1_hu 630 630 ! 631 631 va_e(ji,jj) = ( hv_e (ji,jj) * vn_e (ji,jj) & 632 & + r dtbt* ( zhv_bck * zv_spg (ji,jj) & !632 & + rDt_e * ( zhv_bck * zv_spg (ji,jj) & ! 633 633 & + zhvp2_e(ji,jj) * zv_trd (ji,jj) & ! 634 634 & + hv(ji,jj,Kmm) * zv_frc (ji,jj) ) ) * z1_hv … … 638 638 IF ( ll_wd ) THEN ! revert to explicit for bit comparison tests in non wad runs 639 639 DO_2D_00_00 640 ua_e(ji,jj) = ua_e(ji,jj) /(1.0 - r dtbt* zCdU_u(ji,jj) * hur_e(ji,jj))641 va_e(ji,jj) = va_e(ji,jj) /(1.0 - r dtbt* zCdU_v(ji,jj) * hvr_e(ji,jj))640 ua_e(ji,jj) = ua_e(ji,jj) /(1.0 - rDt_e * zCdU_u(ji,jj) * hur_e(ji,jj)) 641 va_e(ji,jj) = va_e(ji,jj) /(1.0 - rDt_e * zCdU_v(ji,jj) * hvr_e(ji,jj)) 642 642 END_2D 643 643 ENDIF … … 707 707 zvn_save = vn_adv(ji,jj) 708 708 ! ! apply the previously computed correction 709 un_adv(ji,jj) = r1_2 * ( ub2_b(ji,jj) + zun_save - atfp * un_bf(ji,jj) )710 vn_adv(ji,jj) = r1_2 * ( vb2_b(ji,jj) + zvn_save - atfp * vn_bf(ji,jj) )709 un_adv(ji,jj) = r1_2 * ( ub2_b(ji,jj) + zun_save - rn_atfp * un_bf(ji,jj) ) 710 vn_adv(ji,jj) = r1_2 * ( vb2_b(ji,jj) + zvn_save - rn_atfp * vn_bf(ji,jj) ) 711 711 ! ! Update corrective fluxes for next time step 712 un_bf(ji,jj) = atfp * un_bf(ji,jj) + ( zun_save - ub2_b(ji,jj) )713 vn_bf(ji,jj) = atfp * vn_bf(ji,jj) + ( zvn_save - vb2_b(ji,jj) )712 un_bf(ji,jj) = rn_atfp * un_bf(ji,jj) + ( zun_save - ub2_b(ji,jj) ) 713 vn_bf(ji,jj) = rn_atfp * vn_bf(ji,jj) + ( zvn_save - vb2_b(ji,jj) ) 714 714 ! ! Save integrated transport for next computation 715 715 ub2_b(ji,jj) = zun_save … … 809 809 LOGICAL, INTENT(in) :: ll_fw ! forward time splitting =.true. 810 810 INTEGER, INTENT(inout) :: jpit ! cycle length 811 REAL(wp), DIMENSION(3*nn_ baro), INTENT(inout) :: zwgt1, & ! Primary weights811 REAL(wp), DIMENSION(3*nn_e), INTENT(inout) :: zwgt1, & ! Primary weights 812 812 zwgt2 ! Secondary weights 813 813 … … 821 821 ! Set time index when averaged value is requested 822 822 IF (ll_fw) THEN 823 jic = nn_ baro823 jic = nn_e 824 824 ELSE 825 jic = 2 * nn_ baro825 jic = 2 * nn_e 826 826 ENDIF 827 827 … … 829 829 IF (ll_av) THEN 830 830 ! Define simple boxcar window for primary weights 831 ! (width = nn_ baro, centered around jic)831 ! (width = nn_e, centered around jic) 832 832 SELECT CASE ( nn_bt_flt ) 833 833 CASE( 0 ) ! No averaging … … 835 835 jpit = jic 836 836 837 CASE( 1 ) ! Boxcar, width = nn_ baro838 DO jn = 1, 3*nn_ baro839 za1 = ABS(float(jn-jic))/float(nn_ baro)837 CASE( 1 ) ! Boxcar, width = nn_e 838 DO jn = 1, 3*nn_e 839 za1 = ABS(float(jn-jic))/float(nn_e) 840 840 IF (za1 < 0.5_wp) THEN 841 841 zwgt1(jn) = 1._wp … … 844 844 ENDDO 845 845 846 CASE( 2 ) ! Boxcar, width = 2 * nn_ baro847 DO jn = 1, 3*nn_ baro848 za1 = ABS(float(jn-jic))/float(nn_ baro)846 CASE( 2 ) ! Boxcar, width = 2 * nn_e 847 DO jn = 1, 3*nn_e 848 za1 = ABS(float(jn-jic))/float(nn_e) 849 849 IF (za1 < 1._wp) THEN 850 850 zwgt1(jn) = 1._wp … … 976 976 977 977 ! Estimate number of iterations to satisfy a max courant number= rn_bt_cmax 978 IF( ln_bt_auto ) nn_ baro= CEILING( rn_Dt / rn_bt_cmax * zcmax)978 IF( ln_bt_auto ) nn_e = CEILING( rn_Dt / rn_bt_cmax * zcmax) 979 979 980 r dtbt = rn_Dt / REAL( nn_baro, wp )981 zcmax = zcmax * r dtbt980 rDt_e = rn_Dt / REAL( nn_e , wp ) 981 zcmax = zcmax * rDt_e 982 982 ! Print results 983 983 IF(lwp) WRITE(numout,*) … … 985 985 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 986 986 IF( ln_bt_auto ) THEN 987 IF(lwp) WRITE(numout,*) ' ln_ts_auto =.true. Automatically set nn_ baro'987 IF(lwp) WRITE(numout,*) ' ln_ts_auto =.true. Automatically set nn_e ' 988 988 IF(lwp) WRITE(numout,*) ' Max. courant number allowed: ', rn_bt_cmax 989 989 ELSE 990 IF(lwp) WRITE(numout,*) ' ln_ts_auto=.false.: Use nn_ baro in namelist nn_baro = ', nn_baro990 IF(lwp) WRITE(numout,*) ' ln_ts_auto=.false.: Use nn_e in namelist nn_e = ', nn_e 991 991 ENDIF 992 992 993 993 IF(ln_bt_av) THEN 994 IF(lwp) WRITE(numout,*) ' ln_bt_av =.true. ==> Time averaging over nn_ barotime steps is on '994 IF(lwp) WRITE(numout,*) ' ln_bt_av =.true. ==> Time averaging over nn_e time steps is on ' 995 995 ELSE 996 996 IF(lwp) WRITE(numout,*) ' ln_bt_av =.false. => No time averaging of barotropic variables ' … … 1012 1012 SELECT CASE ( nn_bt_flt ) 1013 1013 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' Dirac' 1014 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = nn_ baro'1015 CASE( 2 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = 2*nn_ baro'1014 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = nn_e' 1015 CASE( 2 ) ; IF(lwp) WRITE(numout,*) ' Boxcar: width = 2*nn_e' 1016 1016 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1, or 2' ) 1017 1017 END SELECT 1018 1018 ! 1019 1019 IF(lwp) WRITE(numout,*) ' ' 1020 IF(lwp) WRITE(numout,*) ' nn_ baro = ', nn_baro1021 IF(lwp) WRITE(numout,*) ' Barotropic time step [s] is :', r dtbt1020 IF(lwp) WRITE(numout,*) ' nn_e = ', nn_e 1021 IF(lwp) WRITE(numout,*) ' Barotropic time step [s] is :', rDt_e 1022 1022 IF(lwp) WRITE(numout,*) ' Maximum Courant number is :', zcmax 1023 1023 ! … … 1031 1031 ENDIF 1032 1032 IF( zcmax>0.9_wp ) THEN 1033 CALL ctl_stop( 'dynspg_ts ERROR: Maximum Courant number is greater than 0.9: Inc. nn_ baro!' )1033 CALL ctl_stop( 'dynspg_ts ERROR: Maximum Courant number is greater than 0.9: Inc. nn_e !' ) 1034 1034 ENDIF 1035 1035 ! … … 1430 1430 ! 1431 1431 IF( ln_wd_il ) THEN ! W/D : use the "clipped" bottom friction !!gm explain WHY, please ! 1432 zztmp = -1._wp / r dtbt1432 zztmp = -1._wp / rDt_e 1433 1433 DO_2D_00_00 1434 1434 pu_RHSi(ji,jj) = pu_RHSi(ji,jj) + zu_i(ji,jj) * wdrampu(ji,jj) * MAX( & -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/dynzdf.F90
r12424 r12443 261 261 ze3ua = ( 1._wp - r_vvl ) * e3u(ji,jj,1,Kmm) + r_vvl * e3u(ji,jj,1,Kaa) 262 262 puu(ji,jj,1,Kaa) = puu(ji,jj,1,Kaa) + rDt * 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 263 & / ( ze3ua * r au0 ) * umask(ji,jj,1)263 & / ( ze3ua * rho0 ) * umask(ji,jj,1) 264 264 END_2D 265 265 DO_3D_00_00( 2, jpkm1 ) … … 385 385 ze3va = ( 1._wp - r_vvl ) * e3v(ji,jj,1,Kmm) + r_vvl * e3v(ji,jj,1,Kaa) 386 386 pvv(ji,jj,1,Kaa) = pvv(ji,jj,1,Kaa) + rDt * 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 387 & / ( ze3va * r au0 ) * vmask(ji,jj,1)387 & / ( ze3va * rho0 ) * vmask(ji,jj,1) 388 388 END_2D 389 389 DO_3D_00_00( 2, jpkm1 ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/sshwzv.F90
r12424 r12443 88 88 ENDIF 89 89 ! 90 zcoef = 0.5_wp * r1_r au090 zcoef = 0.5_wp * r1_rho0 91 91 92 92 ! !------------------------------! … … 222 222 !! ** Method : - apply Asselin time fiter to now ssh (excluding the forcing 223 223 !! from the filter, see Leclair and Madec 2010) and swap : 224 !! pssh(:,:,Kmm) = pssh(:,:,Kaa) + atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) )225 !! - atfp * rn_Dt * ( emp_b - emp ) / rau0224 !! pssh(:,:,Kmm) = pssh(:,:,Kaa) + rn_atfp * ( pssh(:,:,Kbb) -2 pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 225 !! - rn_atfp * rn_Dt * ( emp_b - emp ) / rho0 226 226 !! 227 227 !! ** action : - pssh(:,:,Kmm) time filtered … … 246 246 IF ( .NOT.( l_1st_euler ) ) THEN ! Only do time filtering for leapfrog timesteps 247 247 ! ! filtered "now" field 248 pssh(:,:,Kmm) = pssh(:,:,Kmm) + atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) )248 pssh(:,:,Kmm) = pssh(:,:,Kmm) + rn_atfp * ( pssh(:,:,Kbb) - 2 * pssh(:,:,Kmm) + pssh(:,:,Kaa) ) 249 249 IF( .NOT.ln_linssh ) THEN ! "now" <-- with forcing removed 250 zcoef = atfp * rn_Dt * r1_rau0250 zcoef = rn_atfp * rn_Dt * r1_rho0 251 251 pssh(:,:,Kmm) = pssh(:,:,Kmm) - zcoef * ( emp_b(:,:) - emp (:,:) & 252 252 & - rnf_b(:,:) + rnf (:,:) & … … 255 255 256 256 ! ice sheet coupling 257 IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:)257 IF ( ln_isf .AND. ln_isfcpl .AND. kt == nit000+1) pssh(:,:,Kbb) = pssh(:,:,Kbb) - rn_atfp * rn_Dt * ( risfcpl_ssh(:,:) - 0.0 ) * ssmask(:,:) 258 258 259 259 ENDIF -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/DYN/wet_dry.F90
r12377 r12443 270 270 271 271 272 SUBROUTINE wad_lmt_bt( zflxu, zflxv, sshn_e, zssh_frc, r dtbt)272 SUBROUTINE wad_lmt_bt( zflxu, zflxv, sshn_e, zssh_frc, rDt_e ) 273 273 !!---------------------------------------------------------------------- 274 274 !! *** ROUTINE wad_lmt *** … … 280 280 !! ** Action : - calculate flux limiter and W/D flag 281 281 !!---------------------------------------------------------------------- 282 REAL(wp) , INTENT(in ) :: r dtbt! ocean time-step index282 REAL(wp) , INTENT(in ) :: rDt_e ! ocean time-step index 283 283 REAL(wp), DIMENSION(:,:), INTENT(inout) :: zflxu, zflxv, sshn_e, zssh_frc 284 284 ! … … 299 299 zdepwd = 50._wp ! maximum depth that ocean cells can have W/D processes 300 300 ! 301 z2dt = r dtbt301 z2dt = rDt_e 302 302 ! 303 303 zflxp(:,:) = 0._wp -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/FLO/flowri.F90
r12406 r12443 122 122 ztem(jfl) = ts(iafloc,ibfloc,icfl,jp_tem,Kmm) 123 123 zsal (jfl) = ts(iafloc,ibfloc,icfl,jp_sal,Kmm) 124 zrho (jfl) = (rhd(iafloc,ibfloc,icfl)+1)*r au0124 zrho (jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rho0 125 125 126 126 ENDIF … … 142 142 ztem(jfl) = ts(iafloc,ibfloc,icfl,jp_tem,Kmm) 143 143 zsal(jfl) = ts(iafloc,ibfloc,icfl,jp_sal,Kmm) 144 zrho(jfl) = (rhd(iafloc,ibfloc,icfl)+1)*r au0144 zrho(jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rho0 145 145 146 146 ENDIF -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/IOM/restart.F90
r12406 r12443 262 262 IF ( ln_diurnal_only ) THEN 263 263 IF(lwp) WRITE( numout, * ) & 264 & "rst_read:- ln_diurnal_only set, setting rhop=r au0"265 rhop = r au0264 & "rst_read:- ln_diurnal_only set, setting rhop=rho0" 265 rhop = rho0 266 266 CALL iom_get( numror, jpdom_autoglo, 'tn' , w3d, ldxios = lrxios ) 267 267 ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfcav.F90
r12343 r12443 24 24 USE oce , ONLY: ts ! ocean tracers 25 25 USE par_oce , ONLY: jpi,jpj ! ocean space and time domain 26 USE phycst , ONLY: grav,r au0,rau0_rcp,r1_rau0_rcp ! physical constants26 USE phycst , ONLY: grav,rho0,rho0_rcp,r1_rho0_rcp ! physical constants 27 27 USE eosbn2 , ONLY: ln_teos10 ! use ln_teos10 or not 28 28 ! … … 85 85 ! 86 86 ! initialisation 87 IF (TRIM(cn_gammablk) == 'vel_stab' ) zqoce_b (:,:) = ptsc(:,:,jp_tem) * r au0_rcp ! last time step total heat fluxes (to speed up convergence)87 IF (TRIM(cn_gammablk) == 'vel_stab' ) zqoce_b (:,:) = ptsc(:,:,jp_tem) * rho0_rcp ! last time step total heat fluxes (to speed up convergence) 88 88 ! 89 89 ! compute ice shelf melting … … 142 142 ! 143 143 ! set temperature content 144 ptsc(:,:,jp_tem) = - zqh(:,:) * r1_r au0_rcp144 ptsc(:,:,jp_tem) = - zqh(:,:) * r1_rho0_rcp 145 145 ! 146 146 ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) … … 215 215 risf_lamb1 =-0.0564_wp 216 216 risf_lamb2 = 0.0773_wp 217 risf_lamb3 =-7.8633e-8 * grav * r au0217 risf_lamb3 =-7.8633e-8 * grav * rho0 218 218 ELSE ! linearisation from table 4 (Asay-Davis et al., 2015) 219 219 risf_lamb1 =-0.0573_wp 220 220 risf_lamb2 = 0.0832_wp 221 risf_lamb3 =-7.5300e-8 * grav * r au0221 risf_lamb3 =-7.5300e-8 * grav * rho0 222 222 ENDIF 223 223 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfcavmlt.F90
r12340 r12443 17 17 18 18 USE dom_oce ! ocean space and time domain 19 USE phycst , ONLY: rcp, r au0, rau0_rcp ! physical constants19 USE phycst , ONLY: rcp, rho0, rho0_rcp ! physical constants 20 20 USE eosbn2 , ONLY: eos_fzp ! equation of state 21 21 … … 161 161 ! 162 162 ! compute ocean-ice heat flux and then derive fwf assuming that ocean heat flux equal latent heat 163 pqfwf(:,:) = - pgt(:,:) * r au0_rcp * zthd(:,:) / rLfusisf ! fresh water flux ( > 0 out )163 pqfwf(:,:) = - pgt(:,:) * rho0_rcp * zthd(:,:) / rLfusisf ! fresh water flux ( > 0 out ) 164 164 pqoce(:,:) = - pqfwf(:,:) * rLfusisf ! ocea-ice flux ( > 0 out ) 165 165 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux ( > 0 out ) … … 213 213 ! 214 214 ! compute coeficient to solve the 2nd order equation 215 zeps1 = r au0_rcp * pgt(ji,jj)216 zeps2 = rLfusisf * r au0 * pgs(ji,jj)215 zeps1 = rho0_rcp * pgt(ji,jj) 216 zeps2 = rLfusisf * rho0 * pgs(ji,jj) 217 217 zeps3 = rhoisf * rcpisf * rkappa / MAX(risfdep(ji,jj),zeps) 218 218 zeps4 = risf_lamb2 + risf_lamb3 * risfdep(ji,jj) … … 238 238 ! 239 239 ! compute the upward water and heat flux (eq. 24 and eq. 26) 240 pqfwf(ji,jj) = r au0 * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux (> 0 out)241 pqoce(ji,jj) = r au0_rcp * pgt(ji,jj) * zthd (ji,jj) ! ocean-ice heat flux (> 0 out)240 pqfwf(ji,jj) = rho0 * pgs(ji,jj) * ( zsfrz - pstbl(ji,jj) ) / MAX(zsfrz,zeps) ! fresh water flux (> 0 out) 241 pqoce(ji,jj) = rho0_rcp * pgt(ji,jj) * zthd (ji,jj) ! ocean-ice heat flux (> 0 out) 242 242 pqhc (ji,jj) = rcp * pqfwf(ji,jj) * ztfrz(ji,jj) ! heat content flux (> 0 out) 243 243 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfdynatf.F90
r12406 r12443 13 13 USE isf_oce 14 14 15 USE phycst , ONLY: r1_r au0 ! physical constant15 USE phycst , ONLY: r1_rho0 ! physical constant 16 16 USE dom_oce, ONLY: tmask, ssmask, ht, e3t, r1_e1e2t ! time and space domain 17 17 … … 39 39 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pe3t_f ! time filtered scale factor to be corrected 40 40 ! 41 REAL(wp) , INTENT(in ) :: pcoef ! atfp * rn_Dt * r1_rau041 REAL(wp) , INTENT(in ) :: pcoef ! rn_atfp * rn_Dt * r1_rho0 42 42 !!-------------------------------------------------------------------- 43 43 INTEGER :: jk ! loop index … … 70 70 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: pfrac, phtbl ! fraction of bottom cell included in tbl, tbl thickness 71 71 REAL(wp), DIMENSION(jpi,jpj) , INTENT(in ) :: pfwf , pfwf_b ! now/before fwf 72 REAL(wp), INTENT(in ) :: pcoef ! atfp * rn_Dt * r1_rau072 REAL(wp), INTENT(in ) :: pcoef ! rn_atfp * rn_Dt * r1_rho0 73 73 !!---------------------------------------------------------------------- 74 74 INTEGER :: ji,jj,jk … … 77 77 ! 78 78 ! compute fwf conservation correction 79 zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / ( ht(:,:) + 1._wp - ssmask(:,:) ) * r1_r au079 zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / ( ht(:,:) + 1._wp - ssmask(:,:) ) * r1_rho0 80 80 ! 81 81 ! add the increment -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfhdiv.F90
r12340 r12443 16 16 17 17 USE dom_oce ! time and space domain 18 USE phycst , ONLY: r1_r au0 ! physical constant18 USE phycst , ONLY: r1_rho0 ! physical constant 19 19 USE in_out_manager ! 20 20 … … 96 96 ! 97 97 ! compute integrated divergence correction 98 zhdiv(:,:) = 0.5_wp * ( pfwf(:,:) + pfwf_b(:,:) ) * r1_r au0 / phtbl(:,:)98 zhdiv(:,:) = 0.5_wp * ( pfwf(:,:) + pfwf_b(:,:) ) * r1_rho0 / phtbl(:,:) 99 99 ! 100 100 ! update divergence at each level affected by ice shelf top boundary layer -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfpar.F90
r12077 r12443 24 24 USE dom_oce , ONLY: bathy ! ocean space and time domain 25 25 USE par_oce , ONLY: jpi,jpj ! ocean space and time domain 26 USE phycst , ONLY: r1_r au0_rcp ! physical constants26 USE phycst , ONLY: r1_rho0_rcp ! physical constants 27 27 ! 28 28 USE in_out_manager ! I/O manager … … 88 88 ! 89 89 ! set temperature content 90 ptsc(:,:,jp_tem) = zqh(:,:) * r1_r au0_rcp90 ptsc(:,:,jp_tem) = zqh(:,:) * r1_rho0_rcp 91 91 ! 92 92 ! write restart variables (qoceisf, qhcisf, fwfisf for now and before) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ISF/isfparmlt.F90
r12077 r12443 13 13 USE dom_oce ! ocean space and time domain 14 14 USE oce , ONLY: ts ! ocean dynamics and tracers 15 USE phycst , ONLY: rcp, r au0 ! physical constants15 USE phycst , ONLY: rcp, rho0 ! physical constants 16 16 USE eosbn2 , ONLY: eos_fzp ! equation of state 17 17 … … 148 148 ! 149 149 ! 2. ------------Net heat flux and fresh water flux due to the ice shelf 150 pqoce(:,:) = r au0 * rcp * rn_gammat0 * risfLeff(:,:) * e1t(:,:) * ( ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:)150 pqoce(:,:) = rho0 * rcp * rn_gammat0 * risfLeff(:,:) * e1t(:,:) * ( ztavg(:,:) - ztfrz(:,:) ) * r1_e1e2t(:,:) 151 151 pqfwf(:,:) = - pqoce(:,:) / rLfusisf ! derived from the latent heat flux 152 152 pqhc (:,:) = pqfwf(:,:) * ztfrz(:,:) * rcp ! heat content flux -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/LDF/ldftra.F90
r12377 r12443 820 820 ! 821 821 IF( iom_use('weiv_masstr') ) THEN ! vertical mass transport & its square value 822 zw2d(:,:) = r au0 * e1e2t(:,:)822 zw2d(:,:) = rho0 * e1e2t(:,:) 823 823 DO jk = 1, jpk 824 824 zw3d(:,:,jk) = zw3d(:,:,jk) * zw2d(:,:) … … 830 830 zw3d(:,:,:) = 0.e0 831 831 DO jk = 1, jpkm1 832 zw3d(:,:,jk) = r au0 * ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) )832 zw3d(:,:,jk) = rho0 * ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) ) 833 833 END DO 834 834 CALL iom_put( "ueiv_masstr", zw3d ) ! mass transport in i-direction 835 835 ENDIF 836 836 ! 837 zztmp = 0.5_wp * r au0 * rcp837 zztmp = 0.5_wp * rho0 * rcp 838 838 IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 839 839 zw2d(:,:) = 0._wp … … 853 853 zw3d(:,:,:) = 0.e0 854 854 DO jk = 1, jpkm1 855 zw3d(:,:,jk) = r au0 * ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) )855 zw3d(:,:,jk) = rho0 * ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) ) 856 856 END DO 857 857 CALL iom_put( "veiv_masstr", zw3d ) ! mass transport in i-direction -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/SBC/fldread.F90
r12406 r12443 172 172 ! Note that all varibles starting by nsec_* are shifted time by +1/2 time step to be centrered 173 173 IF( PRESENT(kit) ) THEN ! ignore kn_fsbc in this case 174 isecsbc = nsec_year + nsec1jan000 + NINT( ( REAL( kit,wp) + zt_offset ) * rn_Dt / REAL(nn_ baro,wp) )174 isecsbc = nsec_year + nsec1jan000 + NINT( ( REAL( kit,wp) + zt_offset ) * rn_Dt / REAL(nn_e,wp) ) 175 175 ELSE ! middle of sbc time step 176 176 ! note: we use kn_fsbc-1 because nsec_year is defined at the middle of the current time step -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/SBC/sbcapr.F90
r12377 r12443 36 36 37 37 REAL(wp) :: tarea ! whole domain mean masked ocean surface 38 REAL(wp) :: r1_grau ! = 1.e0 / (grav * r au0)38 REAL(wp) :: r1_grau ! = 1.e0 / (grav * rho0) 39 39 40 40 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_apr ! structure of input fields (file informations, fields read) … … 98 98 ENDIF 99 99 ! 100 r1_grau = 1.e0 / (grav * r au0) !* constant for optimization100 r1_grau = 1.e0 / (grav * rho0) !* constant for optimization 101 101 ! 102 102 ! !* control check -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/SBC/sbccpl.F90
r12406 r12443 193 193 194 194 REAL(wp) :: rpref = 101000._wp ! reference atmospheric pressure[N/m2] 195 REAL(wp) :: r1_grau ! = 1.e0 / (grav * r au0)195 REAL(wp) :: r1_grau ! = 1.e0 / (grav * rho0) 196 196 197 197 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:) :: nrcvinfo ! OASIS info argument … … 1250 1250 IF( kt /= nit000 ) ssh_ibb(:,:) = ssh_ib(:,:) !* Swap of ssh_ib fields 1251 1251 1252 r1_grau = 1.e0 / (grav * r au0) !* constant for optimization1252 r1_grau = 1.e0 / (grav * rho0) !* constant for optimization 1253 1253 ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_grau ! equivalent ssh (inverse barometer) 1254 1254 apr (:,:) = frcv(jpr_mslp)%z3(:,:,1) !atmospheric pressure -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/SBC/sbcfwb.F90
r12406 r12443 130 130 a_fwb_b = a_fwb ! mean sea level taking into account the ice+snow 131 131 ! sum over the global domain 132 a_fwb = glob_sum( 'sbcfwb', e1e2t(:,:) * ( ssh(:,:,Kmm) + snwice_mass(:,:) * r1_r au0 ) )132 a_fwb = glob_sum( 'sbcfwb', e1e2t(:,:) * ( ssh(:,:,Kmm) + snwice_mass(:,:) * r1_rho0 ) ) 133 133 a_fwb = a_fwb * 1.e+3 / ( area * rday * 365. ) ! convert in Kg/m3/s = mm/s 134 134 !!gm ! !!bug 365d year -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/SBC/sbcice_cice.F90
r12377 r12443 13 13 USE dom_oce ! ocean space and time domain 14 14 USE domvvl 15 USE phycst, only : rcp, r au0, r1_rau0, rhos, rhoi15 USE phycst, only : rcp, rho0, r1_rho0, rhos, rhoi 16 16 USE in_out_manager ! I/O manager 17 17 USE iom, ONLY : iom_put,iom_use ! I/O manager library !!Joakim edit … … 228 228 IF( .NOT.ln_rstart ) THEN 229 229 IF( ln_ice_embd ) THEN ! embedded sea-ice: deplete the initial ssh below sea-ice area 230 ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_r au0231 ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_r au0230 ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_rho0 231 ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_rho0 232 232 233 233 !!gm This should be put elsewhere.... (same remark for limsbc) … … 417 417 ! Freezing/melting potential 418 418 ! Calculated over NEMO leapfrog timestep (hence 2*dt) 419 nfrzmlt(:,:) = r au0 * rcp * e3t_m(:,:) * ( Tocnfrz-sst_m(:,:) ) / ( 2.0*dt )419 nfrzmlt(:,:) = rho0 * rcp * e3t_m(:,:) * ( Tocnfrz-sst_m(:,:) ) / ( 2.0*dt ) 420 420 421 421 ztmp(:,:) = nfrzmlt(:,:) … … 450 450 zintb = REAL( nn_fsbc + 1 ) / REAL( nn_fsbc ) * 0.5_wp 451 451 ! 452 zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_r au0452 zpice(:,:) = ssh_m(:,:) + ( zintn * snwice_mass(:,:) + zintb * snwice_mass_b(:,:) ) * r1_rho0 453 453 ! 454 454 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/SBC/sbcrnf.F90
r12377 r12443 137 137 ! ! set temperature & salinity content of runoffs 138 138 IF( ln_rnf_tem ) THEN ! use runoffs temperature data 139 rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_r au0139 rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rho0 140 140 CALL eos_fzp( sss_m(:,:), ztfrz(:,:) ) 141 141 WHERE( sf_t_rnf(1)%fnow(:,:,1) == -999._wp ) ! if missing data value use SST as runoffs temperature 142 rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_r au0142 rnf_tsc(:,:,jp_tem) = sst_m(:,:) * rnf(:,:) * r1_rho0 143 143 END WHERE 144 144 ELSE ! use SST as runoffs temperature 145 145 !CEOD River is fresh water so must at least be 0 unless we consider ice 146 rnf_tsc(:,:,jp_tem) = MAX( sst_m(:,:), 0.0_wp ) * rnf(:,:) * r1_r au0146 rnf_tsc(:,:,jp_tem) = MAX( sst_m(:,:), 0.0_wp ) * rnf(:,:) * r1_rho0 147 147 ENDIF 148 148 ! ! use runoffs salinity data 149 IF( ln_rnf_sal ) rnf_tsc(:,:,jp_sal) = ( sf_s_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_r au0149 IF( ln_rnf_sal ) rnf_tsc(:,:,jp_sal) = ( sf_s_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rho0 150 150 ! ! else use S=0 for runoffs (done one for all in the init) 151 151 CALL iom_put( 'runoffs' , rnf(:,:) ) ! output runoff mass flux 152 IF( iom_use('hflx_rnf_cea') ) CALL iom_put( 'hflx_rnf_cea', rnf_tsc(:,:,jp_tem) * r au0 * rcp ) ! output runoff sensible heat (W/m2)152 IF( iom_use('hflx_rnf_cea') ) CALL iom_put( 'hflx_rnf_cea', rnf_tsc(:,:,jp_tem) * rho0 * rcp ) ! output runoff sensible heat (W/m2) 153 153 ENDIF 154 154 ! … … 210 210 DO_2D_11_11 211 211 DO jk = 1, nk_rnf(ji,jj) 212 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_r au0 / h_rnf(ji,jj)212 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) 213 213 END DO 214 214 END_2D … … 221 221 ! ! apply the runoff input flow 222 222 DO jk = 1, nk_rnf(ji,jj) 223 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_r au0 / h_rnf(ji,jj)223 phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) 224 224 END DO 225 225 END_2D … … 227 227 ELSE !== runoff put only at the surface ==! 228 228 h_rnf (:,:) = e3t (:,:,1,Kmm) ! update h_rnf to be depth of top box 229 phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_r au0 / e3t(:,:,1,Kmm)229 phdivn(:,:,1) = phdivn(:,:,1) - ( rnf(:,:) + rnf_b(:,:) ) * zfact * r1_rho0 / e3t(:,:,1,Kmm) 230 230 ENDIF 231 231 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TDE/tide_mod.F90
r12406 r12443 64 64 INTEGER , PUBLIC :: nb_harmo !: Number of active tidal components 65 65 REAL(wp), PUBLIC :: rn_tide_ramp_dt !: 66 REAL(wp), PUBLIC :: rn_ scal_load !:66 REAL(wp), PUBLIC :: rn_load !: 67 67 CHARACTER(lc), PUBLIC :: cn_tide_load !: 68 68 REAL(wp) :: rn_tide_gamma ! Tidal tilt factor … … 124 124 NAMELIST/nam_tide/ln_tide, nn_tide_var, ln_tide_dia, ln_tide_pot, rn_tide_gamma, & 125 125 & ln_scal_load, ln_read_load, cn_tide_load, & 126 & ln_tide_ramp, rn_ scal_load, rn_tide_ramp_dt, &126 & ln_tide_ramp, rn_load, rn_tide_ramp_dt, & 127 127 & sn_tide_cnames 128 128 !!---------------------------------------------------------------------- … … 153 153 WRITE(numout,*) ' Read load potential from file ln_read_load = ', ln_read_load 154 154 WRITE(numout,*) ' Apply ramp on tides at startup ln_tide_ramp = ', ln_tide_ramp 155 WRITE(numout,*) ' Fraction of SSH used in scal. approx. rn_ scal_load = ', rn_scal_load155 WRITE(numout,*) ' Fraction of SSH used in scal. approx. rn_load = ', rn_load 156 156 WRITE(numout,*) ' Duration (days) of ramp rn_tide_ramp_dt = ', rn_tide_ramp_dt 157 157 ENDIF 158 158 ELSE 159 rn_ scal_load = 0._wp159 rn_load = 0._wp 160 160 161 161 IF(lwp) WRITE(numout,*) … … 193 193 IF( nb_harmo == 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 194 194 ! 195 IF (.NOT.ln_scal_load ) rn_ scal_load = 0._wp195 IF (.NOT.ln_scal_load ) rn_load = 0._wp 196 196 ! 197 197 ALLOCATE( amp_pot(jpi,jpj,nb_harmo), & … … 754 754 ! 755 755 IF( ln_tide_dia ) THEN ! Output total tidal potential (incl. load potential) 756 IF ( iom_use( "tide_pot" ) ) CALL iom_put( "tide_pot", pot_astro(:,:) + rn_ scal_load * ssh(:,:,Kmm) )756 IF ( iom_use( "tide_pot" ) ) CALL iom_put( "tide_pot", pot_astro(:,:) + rn_load * ssh(:,:,Kmm) ) 757 757 END IF 758 758 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/eosbn2.F90
r12377 r12443 191 191 !! *** ROUTINE eos_insitu *** 192 192 !! 193 !! ** Purpose : Compute the in situ density (ratio rho/r au0) from193 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from 194 194 !! potential temperature and salinity using an equation of state 195 195 !! selected in the nameos namelist 196 196 !! 197 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - r au0 ) / rau0197 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - rho0 ) / rho0 198 198 !! with prd in situ density anomaly no units 199 199 !! t TEOS10: CT or EOS80: PT Celsius … … 201 201 !! z depth meters 202 202 !! rho in situ density kg/m^3 203 !! r au0 reference density kg/m^3203 !! rho0 reference density kg/m^3 204 204 !! 205 205 !! ln_teos10 : polynomial TEOS-10 equation of state is used for rho(t,s,z). … … 210 210 !! 211 211 !! ln_seos : simplified equation of state 212 !! prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / r au0212 !! prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rho0 213 213 !! linear case function of T only: rn_alpha<>0, other coefficients = 0 214 214 !! linear eos function of T and S: rn_alpha and rn_beta<>0, other coefficients=0 … … 267 267 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 268 268 ! 269 prd(ji,jj,jk) = ( zn * r1_r au0 - 1._wp ) * ztm ! density anomaly (masked)269 prd(ji,jj,jk) = ( zn * r1_rho0 - 1._wp ) * ztm ! density anomaly (masked) 270 270 ! 271 271 END_3D … … 283 283 & - rn_nu * zt * zs 284 284 ! 285 prd(ji,jj,jk) = zn * r1_r au0 * ztm ! density anomaly (masked)285 prd(ji,jj,jk) = zn * r1_rho0 * ztm ! density anomaly (masked) 286 286 END_3D 287 287 ! … … 299 299 !! *** ROUTINE eos_insitu_pot *** 300 300 !! 301 !! ** Purpose : Compute the in situ density (ratio rho/r au0) and the301 !! ** Purpose : Compute the in situ density (ratio rho/rho0) and the 302 302 !! potential volumic mass (Kg/m3) from potential temperature and 303 303 !! salinity fields using an equation of state selected in the … … 379 379 prhop(ji,jj,jk) = prhop(ji,jj,jk) + zn0_sto(jsmp) ! potential density referenced at the surface 380 380 ! 381 prd(ji,jj,jk) = prd(ji,jj,jk) + ( zn_sto(jsmp) * r1_r au0 - 1._wp ) ! density anomaly (masked)381 prd(ji,jj,jk) = prd(ji,jj,jk) + ( zn_sto(jsmp) * r1_rho0 - 1._wp ) ! density anomaly (masked) 382 382 END DO 383 383 prhop(ji,jj,jk) = 0.5_wp * prhop(ji,jj,jk) * ztm / nn_sto_eos … … 419 419 prhop(ji,jj,jk) = zn0 * ztm ! potential density referenced at the surface 420 420 ! 421 prd(ji,jj,jk) = ( zn * r1_r au0 - 1._wp ) * ztm ! density anomaly (masked)421 prd(ji,jj,jk) = ( zn * r1_rho0 - 1._wp ) * ztm ! density anomaly (masked) 422 422 END_3D 423 423 ENDIF … … 434 434 & + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs & 435 435 & - rn_nu * zt * zs 436 prhop(ji,jj,jk) = ( r au0 + zn ) * ztm436 prhop(ji,jj,jk) = ( rho0 + zn ) * ztm 437 437 ! ! density anomaly (masked) 438 438 zn = zn - ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zh 439 prd(ji,jj,jk) = zn * r1_r au0 * ztm439 prd(ji,jj,jk) = zn * r1_rho0 * ztm 440 440 ! 441 441 END_3D … … 454 454 !! *** ROUTINE eos_insitu_2d *** 455 455 !! 456 !! ** Purpose : Compute the in situ density (ratio rho/r au0) from456 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from 457 457 !! potential temperature and salinity using an equation of state 458 458 !! selected in the nameos namelist. * 2D field case … … 508 508 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 509 509 ! 510 prd(ji,jj) = zn * r1_r au0 - 1._wp ! unmasked in situ density anomaly510 prd(ji,jj) = zn * r1_rho0 - 1._wp ! unmasked in situ density anomaly 511 511 ! 512 512 END_2D … … 524 524 & - rn_nu * zt * zs 525 525 ! 526 prd(ji,jj) = zn * r1_r au0 ! unmasked in situ density anomaly526 prd(ji,jj) = zn * r1_rho0 ! unmasked in situ density anomaly 527 527 ! 528 528 END_2D … … 588 588 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 589 589 ! 590 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm590 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm 591 591 ! 592 592 ! beta … … 609 609 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 610 610 ! 611 pab(ji,jj,jk,jp_sal) = zn / zs * r1_r au0 * ztm611 pab(ji,jj,jk,jp_sal) = zn / zs * r1_rho0 * ztm 612 612 ! 613 613 END_3D … … 622 622 ! 623 623 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 624 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm ! alpha624 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm ! alpha 625 625 ! 626 626 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 627 pab(ji,jj,jk,jp_sal) = zn * r1_r au0 * ztm ! beta627 pab(ji,jj,jk,jp_sal) = zn * r1_rho0 * ztm ! beta 628 628 ! 629 629 END_3D … … 694 694 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 695 695 ! 696 pab(ji,jj,jp_tem) = zn * r1_r au0696 pab(ji,jj,jp_tem) = zn * r1_rho0 697 697 ! 698 698 ! beta … … 715 715 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 716 716 ! 717 pab(ji,jj,jp_sal) = zn / zs * r1_r au0717 pab(ji,jj,jp_sal) = zn / zs * r1_rho0 718 718 ! 719 719 ! … … 729 729 ! 730 730 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 731 pab(ji,jj,jp_tem) = zn * r1_r au0 ! alpha731 pab(ji,jj,jp_tem) = zn * r1_rho0 ! alpha 732 732 ! 733 733 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 734 pab(ji,jj,jp_sal) = zn * r1_r au0 ! beta734 pab(ji,jj,jp_sal) = zn * r1_rho0 ! beta 735 735 ! 736 736 END_2D … … 799 799 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 800 800 ! 801 pab(jp_tem) = zn * r1_r au0801 pab(jp_tem) = zn * r1_rho0 802 802 ! 803 803 ! beta … … 820 820 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 821 821 ! 822 pab(jp_sal) = zn / zs * r1_r au0822 pab(jp_sal) = zn / zs * r1_rho0 823 823 ! 824 824 ! … … 831 831 ! 832 832 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 833 pab(jp_tem) = zn * r1_r au0 ! alpha833 pab(jp_tem) = zn * r1_rho0 ! alpha 834 834 ! 835 835 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 836 pab(jp_sal) = zn * r1_r au0 ! beta836 pab(jp_sal) = zn * r1_rho0 ! beta 837 837 ! 838 838 CASE DEFAULT … … 1052 1052 !! ** Method : PE is defined analytically as the vertical 1053 1053 !! primitive of EOS times -g integrated between 0 and z>0. 1054 !! pen is the nonlinear bsq-PE anomaly: pen = ( PE - r au0 gz ) / rau0 gz - rd1054 !! pen is the nonlinear bsq-PE anomaly: pen = ( PE - rho0 gz ) / rho0 gz - rd 1055 1055 !! = 1/z * /int_0^z rd dz - rd 1056 1056 !! where rd is the density anomaly (see eos_rhd function) 1057 1057 !! ab_pe are partial derivatives of PE anomaly with respect to T and S: 1058 !! ab_pe(1) = - 1/(r au0 gz) * dPE/dT + drd/dT = - d(pen)/dT1059 !! ab_pe(2) = 1/(r au0 gz) * dPE/dS + drd/dS = d(pen)/dS1058 !! ab_pe(1) = - 1/(rho0 gz) * dPE/dT + drd/dT = - d(pen)/dT 1059 !! ab_pe(2) = 1/(rho0 gz) * dPE/dS + drd/dS = d(pen)/dS 1060 1060 !! 1061 1061 !! ** Action : - pen : PE anomaly given at T-points … … 1103 1103 zn = ( zn2 * zh + zn1 ) * zh + zn0 1104 1104 ! 1105 ppen(ji,jj,jk) = zn * zh * r1_r au0 * ztm1105 ppen(ji,jj,jk) = zn * zh * r1_rho0 * ztm 1106 1106 ! 1107 1107 ! alphaPE non-linear anomaly … … 1118 1118 zn = ( zn2 * zh + zn1 ) * zh + zn0 1119 1119 ! 1120 pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_r au0 * ztm1120 pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rho0 * ztm 1121 1121 ! 1122 1122 ! betaPE non-linear anomaly … … 1133 1133 zn = ( zn2 * zh + zn1 ) * zh + zn0 1134 1134 ! 1135 pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_r au0 * ztm1135 pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rho0 * ztm 1136 1136 ! 1137 1137 END_3D … … 1144 1144 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 1145 1145 ztm = tmask(ji,jj,jk) ! tmask 1146 zn = 0.5_wp * zh * r1_r au0 * ztm1146 zn = 0.5_wp * zh * r1_rho0 * ztm 1147 1147 ! ! Potential Energy 1148 1148 ppen(ji,jj,jk) = ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zn … … 1186 1186 IF(lwm) WRITE( numond, nameos ) 1187 1187 ! 1188 r au0 = 1026._wp !: volumic mass of reference [kg/m3]1188 rho0 = 1026._wp !: volumic mass of reference [kg/m3] 1189 1189 rcp = 3991.86795711963_wp !: heat capacity [J/K] 1190 1190 ! … … 1598 1598 WRITE(numout,*) ' ==>>> use of simplified eos: ' 1599 1599 WRITE(numout,*) ' rhd(dT=T-10,dS=S-35,Z) = [-a0*(1+lambda1/2*dT+mu1*Z)*dT ' 1600 WRITE(numout,*) ' + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / r au0'1600 WRITE(numout,*) ' + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rho0' 1601 1601 WRITE(numout,*) ' with the following coefficients :' 1602 1602 WRITE(numout,*) ' thermal exp. coef. rn_a0 = ', rn_a0 … … 1617 1617 END SELECT 1618 1618 ! 1619 r au0_rcp = rau0 * rcp1620 r1_r au0 = 1._wp / rau01619 rho0_rcp = rho0 * rcp 1620 r1_rho0 = 1._wp / rho0 1621 1621 r1_rcp = 1._wp / rcp 1622 r1_r au0_rcp = 1._wp / rau0_rcp1622 r1_rho0_rcp = 1._wp / rho0_rcp 1623 1623 ! 1624 1624 IF(lwp) THEN … … 1635 1635 IF(lwp) WRITE(numout,*) 1636 1636 IF(lwp) WRITE(numout,*) ' Associated physical constant' 1637 IF(lwp) WRITE(numout,*) ' volumic mass of reference r au0 = ', rau0 , ' kg/m^3'1638 IF(lwp) WRITE(numout,*) ' 1. / r au0 r1_rau0 = ', r1_rau0, ' m^3/kg'1637 IF(lwp) WRITE(numout,*) ' volumic mass of reference rho0 = ', rho0 , ' kg/m^3' 1638 IF(lwp) WRITE(numout,*) ' 1. / rho0 r1_rho0 = ', r1_rho0, ' m^3/kg' 1639 1639 IF(lwp) WRITE(numout,*) ' ocean specific heat rcp = ', rcp , ' J/Kelvin' 1640 IF(lwp) WRITE(numout,*) ' r au0 * rcp rau0_rcp = ', rau0_rcp1641 IF(lwp) WRITE(numout,*) ' 1. / ( r au0 * rcp ) r1_rau0_rcp = ', r1_rau0_rcp1640 IF(lwp) WRITE(numout,*) ' rho0 * rcp rho0_rcp = ', rho0_rcp 1641 IF(lwp) WRITE(numout,*) ' 1. / ( rho0 * rcp ) r1_rho0_rcp = ', r1_rho0_rcp 1642 1642 ! 1643 1643 END SUBROUTINE eos_init -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traadv_fct.F90
r12377 r12443 20 20 USE diaptr ! poleward transport diagnostics 21 21 USE diaar5 ! AR5 diagnostics 22 USE phycst , ONLY : r au0_rcp22 USE phycst , ONLY : rho0_rcp 23 23 USE zdf_oce , ONLY : ln_zad_Aimp 24 24 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traatf.F90
r12424 r12443 214 214 ztd = pt(ji,jj,jk,jn,Kaa) - 2._wp * ztn + pt(ji,jj,jk,jn,Kbb) ! time laplacian on tracers 215 215 ! 216 pt(ji,jj,jk,jn,Kmm) = ztn + atfp * ztd ! pt <-- filtered pt216 pt(ji,jj,jk,jn,Kmm) = ztn + rn_atfp * ztd ! pt <-- filtered pt 217 217 END_3D 218 218 ! … … 229 229 !! 230 230 !! ** Method : - Apply a thickness weighted Asselin time filter on now fields. 231 !! pt(Kmm) = ( e3t(Kmm)*pt(Kmm) + atfp*[ e3t(Kbb)*pt(Kbb) - 2 e3t(Kmm)*pt(Kmm) + e3t_a*pt(Kaa) ] )232 !! /( e3t(Kmm) + atfp*[ e3t(Kbb) - 2 e3t(Kmm) + e3t(Kaa) ] )231 !! pt(Kmm) = ( e3t(Kmm)*pt(Kmm) + rn_atfp*[ e3t(Kbb)*pt(Kbb) - 2 e3t(Kmm)*pt(Kmm) + e3t_a*pt(Kaa) ] ) 232 !! /( e3t(Kmm) + rn_atfp*[ e3t(Kbb) - 2 e3t(Kmm) + e3t(Kaa) ] ) 233 233 !! 234 234 !! ** Action : - pt(Kmm) ready for the next time step … … 272 272 ENDIF 273 273 zfact = 1._wp / p2dt 274 zfact1 = atfp * p2dt275 zfact2 = zfact1 * r1_r au0274 zfact1 = rn_atfp * p2dt 275 zfact2 = zfact1 * r1_rho0 276 276 DO jn = 1, kjpt 277 277 DO_3D_00_00( 1, jpkm1 ) … … 287 287 ztc_d = ztc_a - 2. * ztc_n + ztc_b 288 288 ! 289 ze3t_f = ze3t_n + atfp * ze3t_d290 ztc_f = ztc_n + atfp * ztc_d289 ze3t_f = ze3t_n + rn_atfp * ze3t_d 290 ztc_f = ztc_n + rn_atfp * ztc_d 291 291 ! 292 292 ! Add asselin correction on scale factors: -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/trabbc.F90
r12377 r12443 66 66 !! ocean bottom can be computed once and is added to the temperature 67 67 !! trend juste above the bottom at each time step: 68 !! ta = ta + Qsf / (r au0 rcp e3T) for k= mbkt68 !! ta = ta + Qsf / (rho0 rcp e3T) for k= mbkt 69 69 !! Where Qsf is the geothermal heat flux. 70 70 !! … … 102 102 ENDIF 103 103 ! 104 CALL iom_put ( "hfgeou" , r au0_rcp * qgh_trd0(:,:) )104 CALL iom_put ( "hfgeou" , rho0_rcp * qgh_trd0(:,:) ) 105 105 IF(sn_cfctl%l_prtctl) CALL prt_ctl( tab3d_1=pts(:,:,:,jp_tem,Krhs), clinfo1=' bbc - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 106 106 ! … … 162 162 CASE ( 1 ) !* constant flux 163 163 IF(lwp) WRITE(numout,*) ' ==>>> constant heat flux = ', rn_geoflx_cst 164 qgh_trd0(:,:) = r1_r au0_rcp * rn_geoflx_cst164 qgh_trd0(:,:) = r1_rho0_rcp * rn_geoflx_cst 165 165 ! 166 166 CASE ( 2 ) !* variable geothermal heat flux : read the geothermal fluxes in mW/m2 … … 179 179 180 180 CALL fld_read( nit000, 1, sf_qgh ) ! Read qgh data 181 qgh_trd0(:,:) = r1_r au0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2181 qgh_trd0(:,:) = r1_rho0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2 182 182 ! 183 183 CASE DEFAULT -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/tramle.F90
r12377 r12443 41 41 42 42 REAL(wp) :: r5_21 = 5.e0 / 21.e0 ! factor used in mle streamfunction computation 43 REAL(wp) :: rb_c ! ML buoyancy criteria = g rho_c /r au0 where rho_c is defined in zdfmld43 REAL(wp) :: rb_c ! ML buoyancy criteria = g rho_c /rho0 where rho_c is defined in zdfmld 44 44 REAL(wp) :: rc_f ! MLE coefficient (= rn_ce / (5 km * fo) ) in nn_mle=1 case 45 45 … … 112 112 zc = e3t(ji,jj,jk,Kmm) * REAL( MIN( MAX( 0, inml_mle(ji,jj)-jk ) , 1 ) ) ! zc being 0 outside the ML t-points 113 113 zmld(ji,jj) = zmld(ji,jj) + zc 114 zbm (ji,jj) = zbm (ji,jj) + zc * (r au0 - rhop(ji,jj,jk) ) * r1_rau0114 zbm (ji,jj) = zbm (ji,jj) + zc * (rho0 - rhop(ji,jj,jk) ) * r1_rho0 115 115 zn2 (ji,jj) = zn2 (ji,jj) + zc * (rn2(ji,jj,jk)+rn2(ji,jj,jk+1))*0.5_wp 116 116 END_3D … … 273 273 IF( ln_mle ) THEN ! MLE initialisation 274 274 ! 275 rb_c = grav * rn_rho_c_mle /r au0 ! Mixed Layer buoyancy criteria275 rb_c = grav * rn_rho_c_mle /rho0 ! Mixed Layer buoyancy criteria 276 276 IF(lwp) WRITE(numout,*) 277 277 IF(lwp) WRITE(numout,*) ' ML buoyancy criteria = ', rb_c, ' m/s2 ' -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/traqsr.F90
r12397 r12443 87 87 !! I(k) = Qsr*( rn_abs*EXP(z(k)/rn_si0) + (1.-rn_abs)*EXP(z(k)/rn_si1) ) 88 88 !! The temperature trend associated with the solar radiation penetration 89 !! is given by : zta = 1/e3t dk[ I ] / (r au0*Cp)89 !! is given by : zta = 1/e3t dk[ I ] / (rho0*Cp) 90 90 !! At the bottom, boudary condition for the radiation is no flux : 91 91 !! all heat which has not been absorbed in the above levels is put … … 155 155 ! 156 156 DO jk = 1, nksr 157 qsr_hc(:,:,jk) = r1_r au0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) )157 qsr_hc(:,:,jk) = r1_rho0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 158 158 END DO 159 159 ! … … 227 227 ! 228 228 DO_3D_00_00( 1, nksr ) 229 qsr_hc(ji,jj,jk) = r1_r au0_rcp * ( zea(ji,jj,jk) - zea(ji,jj,jk+1) )229 qsr_hc(ji,jj,jk) = r1_rho0_rcp * ( zea(ji,jj,jk) - zea(ji,jj,jk+1) ) 230 230 END_3D 231 231 ! … … 234 234 CASE( np_2BD ) !== 2-bands fluxes ==! 235 235 ! 236 zz0 = rn_abs * r1_r au0_rcp ! surface equi-partition in 2-bands237 zz1 = ( 1. - rn_abs ) * r1_r au0_rcp236 zz0 = rn_abs * r1_rho0_rcp ! surface equi-partition in 2-bands 237 zz1 = ( 1. - rn_abs ) * r1_rho0_rcp 238 238 DO_3D_00_00( 1, nksr ) 239 239 zc0 = zz0 * EXP( -gdepw(ji,jj,jk ,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk ,Kmm)*xsi1r ) … … 252 252 ! sea-ice: store the 1st ocean level attenuation coefficient 253 253 DO_2D_00_00 254 IF( qsr(ji,jj) /= 0._wp ) THEN ; fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_r au0_rcp * qsr(ji,jj) )254 IF( qsr(ji,jj) /= 0._wp ) THEN ; fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rho0_rcp * qsr(ji,jj) ) 255 255 ELSE ; fraqsr_1lev(ji,jj) = 1._wp 256 256 ENDIF … … 262 262 zetot(:,:,nksr+1:jpk) = 0._wp ! below ~400m set to zero 263 263 DO jk = nksr, 1, -1 264 zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) * r au0_rcp264 zetot(:,:,jk) = zetot(:,:,jk+1) + qsr_hc(:,:,jk) * rho0_rcp 265 265 END DO 266 266 CALL iom_put( 'qsr3d', zetot ) ! 3D distribution of shortwave Radiation -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRA/trasbc.F90
r12377 r12443 124 124 ! !== Now sbc tracer content fields ==! 125 125 DO_2D_01_00 126 sbc_tsc(ji,jj,jp_tem) = r1_r au0_rcp * qns(ji,jj) ! non solar heat flux127 sbc_tsc(ji,jj,jp_sal) = r1_r au0 * sfx(ji,jj) ! salt flux due to freezing/melting126 sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj) ! non solar heat flux 127 sbc_tsc(ji,jj,jp_sal) = r1_rho0 * sfx(ji,jj) ! salt flux due to freezing/melting 128 128 END_2D 129 129 IF( ln_linssh ) THEN !* linear free surface 130 130 DO_2D_01_00 131 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_r au0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm)132 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_r au0 * emp(ji,jj) * pts(ji,jj,1,jp_sal,Kmm)131 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm) 132 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_sal,Kmm) 133 133 END_2D 134 134 IF( iom_use('emp_x_sst') ) CALL iom_put( "emp_x_sst", emp (:,:) * pts(:,:,1,jp_tem,Kmm) ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trddyn.F90
r12377 r12443 140 140 ! ! wind stress trends 141 141 ALLOCATE( z2dx(jpi,jpj) , z2dy(jpi,jpj) ) 142 z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u(:,:,1,Kmm) * r au0 )143 z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v(:,:,1,Kmm) * r au0 )142 z2dx(:,:) = ( utau_b(:,:) + utau(:,:) ) / ( e3u(:,:,1,Kmm) * rho0 ) 143 z2dy(:,:) = ( vtau_b(:,:) + vtau(:,:) ) / ( e3v(:,:,1,Kmm) * rho0 ) 144 144 CALL iom_put( "utrd_tau", z2dx ) 145 145 CALL iom_put( "vtrd_tau", z2dy ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdglo.F90
r12377 r12443 76 76 INTEGER :: ji, jj, jk ! dummy loop indices 77 77 INTEGER :: ikbu, ikbv ! local integers 78 REAL(wp):: zvm, zvt, zvs, z1_2r au0 ! local scalars78 REAL(wp):: zvm, zvt, zvs, z1_2rho0 ! local scalars 79 79 REAL(wp), DIMENSION(jpi,jpj) :: ztswu, ztswv, z2dx, z2dy ! 2D workspace 80 80 !!---------------------------------------------------------------------- … … 125 125 ! 126 126 IF( ktrd == jpdyn_zdf ) THEN ! zdf trend: compute separately the surface forcing trend 127 z1_2r au0 = 0.5_wp / rau0127 z1_2rho0 = 0.5_wp / rho0 128 128 DO_2D_10_10 129 129 zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk) & 130 & * z1_2r au0 * e1e2u(ji,jj)130 & * z1_2rho0 * e1e2u(ji,jj) 131 131 zvs = ( vtau_b(ji,jj) + vtau(ji,jj) ) * tmask_i(ji,jj+1) * tmask_i(ji,jj) * vmask(ji,jj,jk) & 132 & * z1_2r au0 * e1e2v(ji,jj)132 & * z1_2rho0 * e1e2v(ji,jj) 133 133 umo(jpdyn_tau) = umo(jpdyn_tau) + zvt 134 134 vmo(jpdyn_tau) = vmo(jpdyn_tau) + zvs … … 141 141 ! ! 142 142 ! IF( ln_drgimp ) THEN ! implicit drag case: compute separately the bottom friction 143 ! z1_2r au0 = 0.5_wp / rau0143 ! z1_2rho0 = 0.5_wp / rho0 144 144 ! DO jj = 1, jpjm1 145 145 ! DO ji = 1, jpim1 … … 203 203 CALL eos( ts(:,:,:,:,Kmm), rhd, rhop ) ! now potential density 204 204 205 zcof = 0.5_wp / r au0 ! Density flux at w-point205 zcof = 0.5_wp / rho0 ! Density flux at w-point 206 206 zkz(:,:,1) = 0._wp 207 207 DO jk = 2, jpk … … 209 209 END DO 210 210 211 zcof = 0.5_wp / r au0 ! Density flux at u and v-points211 zcof = 0.5_wp / rho0 ! Density flux at u and v-points 212 212 DO_3D_10_10( 1, jpkm1 ) 213 213 zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) * uu(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) … … 347 347 9546 FORMAT(' 0 < horizontal diffusion : ', e20.13) 348 348 9547 FORMAT(' 0 < vertical diffusion : ', e20.13) 349 9548 FORMAT(' pressure gradient u2 = - 1/r au0 u.dz(rhop) : ', e20.13, ' u.dz(rhop) =', e20.13)349 9548 FORMAT(' pressure gradient u2 = - 1/rho0 u.dz(rhop) : ', e20.13, ' u.dz(rhop) =', e20.13) 350 350 ! 351 351 ! Save potential to kinetic energy conversion for next time step -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdken.F90
r12377 r12443 102 102 zke(:,1, : ) = 0._wp 103 103 DO_3D_01_01( 1, jpkm1 ) 104 zke(ji,jj,jk) = 0.5_wp * r au0 *( uu(ji ,jj,jk,Kmm) * putrd(ji ,jj,jk) * bu(ji ,jj,jk) &104 zke(ji,jj,jk) = 0.5_wp * rho0 *( uu(ji ,jj,jk,Kmm) * putrd(ji ,jj,jk) * bu(ji ,jj,jk) & 105 105 & + uu(ji-1,jj,jk,Kmm) * putrd(ji-1,jj,jk) * bu(ji-1,jj,jk) & 106 106 & + vv(ji,jj ,jk,Kmm) * pvtrd(ji,jj ,jk) * bv(ji,jj ,jk) & … … 123 123 zke2d(1,:) = 0._wp ; zke2d(:,1) = 0._wp 124 124 DO_2D_01_01 125 zke2d(ji,jj) = r1_r au0 * 0.5_wp * ( z2dx(ji,jj) + z2dx(ji-1,jj) &125 zke2d(ji,jj) = r1_rho0 * 0.5_wp * ( z2dx(ji,jj) + z2dx(ji-1,jj) & 126 126 & + z2dy(ji,jj) + z2dy(ji,jj-1) ) * r1_bt(ji,jj,1) 127 127 END_2D … … 207 207 ! 208 208 ! Local constant initialization 209 zcoef = - r au0 * grav * 0.5_wp209 zcoef = - rho0 * grav * 0.5_wp 210 210 211 211 ! Surface value (also valid in partial step case) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/TRD/trdvor.F90
r12406 r12443 105 105 ztswu(:,:) = 0.e0 ; ztswv(:,:) = 0.e0 106 106 DO_2D_00_00 107 ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * r au0 )108 ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * r au0 )107 ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rho0 ) 108 ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rho0 ) 109 109 END_2D 110 110 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ZDF/zdfgls.F90
r12406 r12443 170 170 ! 171 171 ! surface friction 172 ustar2_surf(ji,jj) = r1_r au0 * taum(ji,jj) * tmask(ji,jj,1)172 ustar2_surf(ji,jj) = r1_rho0 * taum(ji,jj) * tmask(ji,jj,1) 173 173 ! 174 174 !!gm Rq we may add here r_ke0(_top/_bot) ? ==>> think about that... -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ZDF/zdfiwm.F90
r12377 r12443 87 87 !! This is divided into three components: 88 88 !! 1. Bottom-intensified low-mode dissipation at critical slopes 89 !! zemx_iwm(z) = ( ecri_iwm / r au0 ) * EXP( -(H-z)/hcri_iwm )89 !! zemx_iwm(z) = ( ecri_iwm / rho0 ) * EXP( -(H-z)/hcri_iwm ) 90 90 !! / ( 1. - EXP( - H/hcri_iwm ) ) * hcri_iwm 91 91 !! where hcri_iwm is the characteristic length scale of the bottom 92 92 !! intensification, ecri_iwm a map of available power, and H the ocean depth. 93 93 !! 2. Pycnocline-intensified low-mode dissipation 94 !! zemx_iwm(z) = ( epyc_iwm / r au0 ) * ( sqrt(rn2(z))^nn_zpyc )94 !! zemx_iwm(z) = ( epyc_iwm / rho0 ) * ( sqrt(rn2(z))^nn_zpyc ) 95 95 !! / SUM( sqrt(rn2(z))^nn_zpyc * e3w(z) ) 96 96 !! where epyc_iwm is a map of available power, and nn_zpyc … … 98 98 !! energy dissipation. 99 99 !! 3. WKB-height dependent high mode dissipation 100 !! zemx_iwm(z) = ( ebot_iwm / r au0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm)100 !! zemx_iwm(z) = ( ebot_iwm / rho0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm) 101 101 !! / SUM( rn2(z) * EXP(-z_wkb(z)/hbot_iwm) * e3w(z) ) 102 102 !! where hbot_iwm is the characteristic length scale of the WKB bottom … … 151 151 DO_2D_11_11 152 152 zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) ! depth of the ocean 153 zfact(ji,jj) = r au0 * ( 1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) ) )153 zfact(ji,jj) = rho0 * ( 1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) ) ) 154 154 IF( zfact(ji,jj) /= 0._wp ) zfact(ji,jj) = ecri_iwm(ji,jj) / zfact(ji,jj) 155 155 END_2D … … 181 181 ! 182 182 DO_2D_11_11 183 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( r au0 * zfact(ji,jj) )183 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 184 184 END_2D 185 185 ! … … 196 196 ! 197 197 DO_2D_11_11 198 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( r au0 * zfact(ji,jj) )198 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 199 199 END_2D 200 200 ! … … 243 243 ! 244 244 DO_2D_11_11 245 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = ebot_iwm(ji,jj) / ( r au0 * zfact(ji,jj) )245 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = ebot_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 246 246 END_2D 247 247 ! … … 255 255 ! Calculate molecular kinematic viscosity 256 256 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts(:,:,:,jp_tem,Kmm) + 0.00694_wp * ts(:,:,:,jp_tem,Kmm) * ts(:,:,:,jp_tem,Kmm) & 257 & + 0.02305_wp * ts(:,:,:,jp_sal,Kmm) ) * tmask(:,:,:) * r1_r au0257 & + 0.02305_wp * ts(:,:,:,jp_sal,Kmm) ) * tmask(:,:,:) * r1_rho0 258 258 DO jk = 2, jpkm1 259 259 znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) … … 293 293 END_3D 294 294 CALL mpp_sum( 'zdfiwm', zztmp ) 295 zztmp = r au0 * zztmp ! Global integral of rauo * Kz * N^2 = power contributing to mixing295 zztmp = rho0 * zztmp ! Global integral of rauo * Kz * N^2 = power contributing to mixing 296 296 ! 297 297 IF(lwp) THEN … … 337 337 !* output useful diagnostics: Kz*N^2 , 338 338 !!gm Kz*N2 should take into account the ratio avs/avt if it is used.... (see diaar5) 339 ! vertical integral of r au0 * Kz * N^2 , energy density (zemx_iwm)339 ! vertical integral of rho0 * Kz * N^2 , energy density (zemx_iwm) 340 340 IF( iom_use("bflx_iwm") .OR. iom_use("pcmap_iwm") ) THEN 341 341 ALLOCATE( z2d(jpi,jpj) , z3d(jpi,jpj,jpk) ) … … 345 345 z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 346 346 END DO 347 z2d(:,:) = r au0 * z2d(:,:)347 z2d(:,:) = rho0 * z2d(:,:) 348 348 CALL iom_put( "bflx_iwm", z3d ) 349 349 CALL iom_put( "pcmap_iwm", z2d ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ZDF/zdfmxl.F90
r12377 r12443 97 97 nmln(:,:) = nlb10 ! Initialization to the number of w ocean point 98 98 hmlp(:,:) = 0._wp ! here hmlp used as a dummy variable, integrating vertically N^2 99 zN2_c = grav * rho_c * r1_r au0 ! convert density criteria into N^2 criteria99 zN2_c = grav * rho_c * r1_rho0 ! convert density criteria into N^2 criteria 100 100 DO_3D_11_11( nlb10, jpkm1 ) 101 101 ikt = mbkt(ji,jj) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ZDF/zdfosm.F90
r12406 r12443 300 300 DO_2D_00_00 301 301 ! Surface downward irradiance (so always +ve) 302 zrad0(ji,jj) = qsr(ji,jj) * r1_r au0_rcp302 zrad0(ji,jj) = qsr(ji,jj) * r1_rho0_rcp 303 303 ! Downwards irradiance at base of boundary layer 304 304 zradh(ji,jj) = zrad0(ji,jj) * ( zz0 * EXP( -hbl(ji,jj)/rn_si0 ) + zz1 * EXP( -hbl(ji,jj)/rn_si1) ) … … 312 312 zbeta = rab_n(ji,jj,1,jp_sal) 313 313 ! Upwards surface Temperature flux for non-local term 314 zwth0(ji,jj) = - qns(ji,jj) * r1_r au0_rcp * tmask(ji,jj,1)314 zwth0(ji,jj) = - qns(ji,jj) * r1_rho0_rcp * tmask(ji,jj,1) 315 315 ! Upwards surface salinity flux for non-local term 316 zws0(ji,jj) = - ( ( emp(ji,jj)-rnf(ji,jj) ) * ts(ji,jj,1,jp_sal,Kmm) + sfx(ji,jj) ) * r1_r au0 * tmask(ji,jj,1)316 zws0(ji,jj) = - ( ( emp(ji,jj)-rnf(ji,jj) ) * ts(ji,jj,1,jp_sal,Kmm) + sfx(ji,jj) ) * r1_rho0 * tmask(ji,jj,1) 317 317 ! Non radiative upwards surface buoyancy flux 318 318 zwb0(ji,jj) = grav * zthermal * zwth0(ji,jj) - grav * zbeta * zws0(ji,jj) … … 324 324 zwbav(ji,jj) = grav * zthermal * zwthav(ji,jj) - grav * zbeta * zwsav(ji,jj) 325 325 ! Surface upward velocity fluxes 326 zuw0(ji,jj) = -utau(ji,jj) * r1_r au0 * tmask(ji,jj,1)327 zvw0(ji,jj) = -vtau(ji,jj) * r1_r au0 * tmask(ji,jj,1)326 zuw0(ji,jj) = -utau(ji,jj) * r1_rho0 * tmask(ji,jj,1) 327 zvw0(ji,jj) = -vtau(ji,jj) * r1_rho0 * tmask(ji,jj,1) 328 328 ! Friction velocity (zustar), at T-point : LMD94 eq. 2 329 329 zustar(ji,jj) = MAX( SQRT( SQRT( zuw0(ji,jj) * zuw0(ji,jj) + zvw0(ji,jj) * zvw0(ji,jj) ) ), 1.0e-8 ) … … 1250 1250 IF ( iom_use("us_x") ) CALL iom_put( "us_x", tmask(:,:,1)*zustke*zcos_wind ) ! x surface Stokes drift 1251 1251 IF ( iom_use("us_y") ) CALL iom_put( "us_y", tmask(:,:,1)*zustke*zsin_wind ) ! y surface Stokes drift 1252 IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*r au0*tmask(:,:,1)*zustar**2*zustke )1252 IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*zustar**2*zustke ) 1253 1253 ! Stokes drift read in from sbcwave (=2). 1254 1254 CASE(2) 1255 1255 IF ( iom_use("us_x") ) CALL iom_put( "us_x", ut0sd ) ! x surface Stokes drift 1256 1256 IF ( iom_use("us_y") ) CALL iom_put( "us_y", vt0sd ) ! y surface Stokes drift 1257 IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*r au0*tmask(:,:,1)*zustar**2* &1257 IF ( iom_use("wind_wave_abs_power") ) CALL iom_put( "wind_wave_abs_power", 1000.*rho0*tmask(:,:,1)*zustar**2* & 1258 1258 & SQRT(ut0sd**2 + vt0sd**2 ) ) 1259 1259 END SELECT … … 1271 1271 IF ( iom_use("zwstrl") ) CALL iom_put( "zwstrl", tmask(:,:,1)*zwstrl ) ! Langmuir velocity scale 1272 1272 IF ( iom_use("zustar") ) CALL iom_put( "zustar", tmask(:,:,1)*zustar ) ! friction velocity scale 1273 IF ( iom_use("wind_power") ) CALL iom_put( "wind_power", 1000.*r au0*tmask(:,:,1)*zustar**3 ) ! BL depth internal to zdf_osm routine1274 IF ( iom_use("wind_wave_power") ) CALL iom_put( "wind_wave_power", 1000.*r au0*tmask(:,:,1)*zustar**2*zustke )1273 IF ( iom_use("wind_power") ) CALL iom_put( "wind_power", 1000.*rho0*tmask(:,:,1)*zustar**3 ) ! BL depth internal to zdf_osm routine 1274 IF ( iom_use("wind_wave_power") ) CALL iom_put( "wind_wave_power", 1000.*rho0*tmask(:,:,1)*zustar**2*zustke ) 1275 1275 IF ( iom_use("zhbl") ) CALL iom_put( "zhbl", tmask(:,:,1)*zhbl ) ! BL depth internal to zdf_osm routine 1276 1276 IF ( iom_use("zhml") ) CALL iom_put( "zhml", tmask(:,:,1)*zhml ) ! ML depth internal to zdf_osm routine … … 1500 1500 imld_rst(:,:) = nlb10 ! Initialization to the number of w ocean point 1501 1501 hbl(:,:) = 0._wp ! here hbl used as a dummy variable, integrating vertically N^2 1502 zN2_c = grav * rho_c * r1_r au0 ! convert density criteria into N^2 criteria1502 zN2_c = grav * rho_c * r1_rho0 ! convert density criteria into N^2 criteria 1503 1503 ! 1504 1504 hbl(:,:) = 0._wp ! here hbl used as a dummy variable, integrating vertically N^2 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ZDF/zdfric.F90
r12377 r12443 174 174 ! 175 175 DO_2D_00_00 176 zustar = SQRT( taum(ji,jj) * r1_r au0 )176 zustar = SQRT( taum(ji,jj) * r1_rho0 ) 177 177 zhek = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall ) ! Ekman depth 178 178 zh_ekm(ji,jj) = MAX( rn_mldmin , MIN( zhek , rn_mldmax ) ) ! set allowed range -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/ZDF/zdftke.F90
r12406 r12443 206 206 !!-------------------------------------------------------------------- 207 207 ! 208 zbbrau = rn_ebb / r au0 ! Local constant initialisation208 zbbrau = rn_ebb / rho0 ! Local constant initialisation 209 209 zfact1 = -.5_wp * rn_Dt 210 210 zfact2 = 1.5_wp * rn_Dt * rn_ediss … … 228 228 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 229 229 ! 230 ! en(bot) = (ebb0/r au0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin)230 ! en(bot) = (ebb0/rho0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 231 231 ! where ebb0 does not includes surface wave enhancement (i.e. ebb0=3.75) 232 232 ! Note that stress averaged is done using an wet-only calculation of u and v at t-point like in zdfsh2 … … 237 237 zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 238 238 zmskv = ( 2. - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) 239 ! ! where 0.001875 = (rn_ebb0/r au0) * 0.5 = 3.75*0.5/1000. (CAUTION CdU<0)239 ! ! where 0.001875 = (rn_ebb0/rho0) * 0.5 = 3.75*0.5/1000. (CAUTION CdU<0) 240 240 zebot = - 0.001875_wp * rCdU_bot(ji,jj) * SQRT( ( zmsku*( uu(ji,jj,mbkt(ji,jj),Kbb)+uu(ji-1,jj,mbkt(ji,jj),Kbb) ) )**2 & 241 241 & + ( zmskv*( vv(ji,jj,mbkt(ji,jj),Kbb)+vv(ji,jj-1,mbkt(ji,jj),Kbb) ) )**2 ) … … 246 246 zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 247 247 zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) 248 ! ! where 0.001875 = (rn_ebb0/r au0) * 0.5 = 3.75*0.5/1000. (CAUTION CdU<0)248 ! ! where 0.001875 = (rn_ebb0/rho0) * 0.5 = 3.75*0.5/1000. (CAUTION CdU<0) 249 249 zetop = - 0.001875_wp * rCdU_top(ji,jj) * SQRT( ( zmsku*( uu(ji,jj,mikt(ji,jj),Kbb)+uu(ji-1,jj,mikt(ji,jj),Kbb) ) )**2 & 250 250 & + ( zmskv*( vv(ji,jj,mikt(ji,jj),Kbb)+vv(ji,jj-1,mikt(ji,jj),Kbb) ) )**2 ) … … 439 439 zmxld(:,:,:) = rmxl_min 440 440 ! 441 IF( ln_mxl0 ) THEN ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(r au0*g)442 zraug = vkarmn * 2.e5_wp / ( r au0 * grav )441 IF( ln_mxl0 ) THEN ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rho0*g) 442 zraug = vkarmn * 2.e5_wp / ( rho0 * grav ) 443 443 DO_2D_00_00 444 444 zmxlm(ji,jj,1) = MAX( rn_mxl0, zraug * taum(ji,jj) * tmask(ji,jj,1) ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OCE/oce.F90
r12377 r12443 28 28 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rn2b , rn2 !: brunt-vaisala frequency**2 [s-2] 29 29 ! 30 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhd !: in situ density anomalie rhd=(rho-r au0)/rau0 [no units]30 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhd !: in situ density anomalie rhd=(rho-rho0)/rho0 [no units] 31 31 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhop !: potential volumic mass [kg/m3] 32 32 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: Cu_adv !: vertical Courant number (adaptive-implicit) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/OFF/dtadyn.F90
r12406 r12443 546 546 ENDIF 547 547 548 ssh(:,:,Kmm) = ssh(:,:,Kmm) + atfp * ( ssh(:,:,Kbb) - 2 * ssh(:,:,Kmm) + ssh(:,:,Kaa))548 ssh(:,:,Kmm) = ssh(:,:,Kmm) + rn_atfp * ( ssh(:,:,Kbb) - 2 * ssh(:,:,Kmm) + ssh(:,:,Kaa)) 549 549 550 550 !! Do we also need to time filter e3t?? … … 629 629 END DO 630 630 ! ! Sea surface elevation time-stepping 631 pssha(:,:) = ( psshb(:,:) - z2dt * ( r1_r au0 * pemp(:,:) + zhdiv(:,:) ) ) * ssmask(:,:)631 pssha(:,:) = ( psshb(:,:) - z2dt * ( r1_rho0 * pemp(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 632 632 ! ! 633 633 ! ! After acale factors at t-points ( z_star coordinate ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/PISCES/P2Z/p2zexp.F90
r12406 r12443 122 122 DO_2D_11_11 123 123 zsedpocd = zsedpoca(ji,jj) - 2. * sedpocn(ji,jj) + sedpocb(ji,jj) ! time laplacian on tracers 124 sedpocb(ji,jj) = sedpocn(ji,jj) + atfp * zsedpocd ! sedpocb <-- filtered sedpocn124 sedpocb(ji,jj) = sedpocn(ji,jj) + rn_atfp * zsedpocd ! sedpocb <-- filtered sedpocn 125 125 sedpocn(ji,jj) = zsedpoca(ji,jj) ! sedpocn <-- sedpoca 126 126 END_2D -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/TRP/trcatf.F90
r12397 r12443 71 71 !! the divergence of two consecutive time-steps and tr arrays 72 72 !! to prepare the next time_step: 73 !! (tr(Kmm)) = (tr(Kmm)) + atfp [ (tr(Kbb)) + (tr(Kaa)) - 2 (tr(Kmm)) ]73 !! (tr(Kmm)) = (tr(Kmm)) + rn_atfp [ (tr(Kbb)) + (tr(Kaa)) - 2 (tr(Kmm)) ] 74 74 !! 75 75 !! … … 200 200 !! /( e3t(:,:,:,Kmm) + rbcp*[ e3t(:,:,:,Kbb) - 2 e3t(:,:,:,Kmm) + e3t(:,:,:,Kaa) ] ) 201 201 !! ztm = 0 otherwise 202 !! tb = ( e3t_n*tn + atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] )203 !! /( e3t(:,:,:,Kmm) + atfp*[ e3t(:,:,:,Kbb) - 2 e3t(:,:,:,Kmm) + e3t(:,:,:,Kaa) ] )202 !! tb = ( e3t_n*tn + rn_atfp*[ e3t_b*tb - 2 e3t_n*tn + e3t_a*ta ] ) 203 !! /( e3t(:,:,:,Kmm) + rn_atfp*[ e3t(:,:,:,Kbb) - 2 e3t(:,:,:,Kmm) + e3t(:,:,:,Kaa) ] ) 204 204 !! tn = ta 205 205 !! ta = zt (NB: reset to 0 after eos_bn2 call) … … 222 222 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 223 223 IF( .NOT. ln_linssh ) THEN 224 rfact1 = atfp * rdttrc225 rfact2 = rfact1 / r au0224 rfact1 = rn_atfp * rdttrc 225 rfact2 = rfact1 / rho0 226 226 ENDIF 227 227 ! … … 241 241 ztc_d = ztc_a - 2. * ztc_n + ztc_b 242 242 ! 243 ze3t_f = ze3t_n + atfp * ze3t_d244 ztc_f = ztc_n + atfp * ztc_d243 ze3t_f = ze3t_n + rn_atfp * ze3t_d 244 ztc_f = ztc_n + rn_atfp * ztc_d 245 245 ! 246 246 IF( .NOT. ln_linssh .AND. jk == mikt(ji,jj) ) THEN ! first level -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/TRP/trcsbc.F90
r12377 r12443 121 121 DO jn = 1, jptra 122 122 DO_2D_01_00 123 sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_r au0 * ptr(ji,jj,1,jn,Kmm)123 sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) 124 124 END_2D 125 125 END DO … … 129 129 DO jn = 1, jptra 130 130 DO_2D_01_00 131 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_r au0 * ptr(ji,jj,1,jn,Kmm)131 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) 132 132 END_2D 133 133 END DO … … 145 145 ztfx = zftra ! net tracer flux 146 146 ! 147 zdtra = r1_r au0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * ptr(ji,jj,1,jn,Kmm) )147 zdtra = r1_rho0 * ( ztfx + ( zsfx(ji,jj) + fmmflx(ji,jj) ) * ptr(ji,jj,1,jn,Kmm) ) 148 148 IF ( zdtra < 0. ) THEN 149 149 zdtra = MAX(zdtra, -ptr(ji,jj,1,jn,Kmm) * e3t(ji,jj,1,Kmm) / r2dttrc ) ! avoid negative concentrations to arise -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/oce_trc.F90
r12377 r12443 39 39 USE oce , ONLY : ts => ts !: 4D array contaning ( tn, sn ) 40 40 USE oce , ONLY : rhop => rhop !: potential volumic mass (kg m-3) 41 USE oce , ONLY : rhd => rhd !: in situ density anomalie rhd=(rho-r au0)/rau0 (no units)41 USE oce , ONLY : rhd => rhd !: in situ density anomalie rhd=(rho-rho0)/rho0 (no units) 42 42 USE oce , ONLY : hdiv => hdiv !: horizontal divergence (1/s) 43 43 USE oce , ONLY : ssh => ssh !: sea surface height at t-point [m] -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/src/TOP/trcbc.F90
r12377 r12443 416 416 DO_2D_01_00 417 417 DO jk = 1, nk_rnf(ji,jj) 418 zrnf = (rnf(ji,jj) + rnf_b(ji,jj)) * 0.5_wp * r1_r au0 / h_rnf(ji,jj)418 zrnf = (rnf(ji,jj) + rnf_b(ji,jj)) * 0.5_wp * r1_rho0 / h_rnf(ji,jj) 419 419 ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + (ptr(ji,jj,jk,jn,Kmm) * zrnf) 420 420 END DO -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/BENCH/EXPREF/namelist_cfg_orca025_like
r12406 r12443 189 189 ln_dynspg_ts = .true. ! split-explicit free surface 190 190 ln_bt_auto = .false. ! Number of sub-step defined from: 191 nn_ baro= 30 ! =F : the number of sub-step in rn_Dt seconds191 nn_e = 30 ! =F : the number of sub-step in rn_Dt seconds 192 192 / 193 193 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/BENCH/EXPREF/namelist_cfg_orca12_like
r12406 r12443 188 188 ln_dynspg_ts = .true. ! split-explicit free surface 189 189 ln_bt_auto = .false. ! Number of sub-step defined from: 190 nn_ baro= 30 ! =F : the number of sub-step in rn_Dt seconds190 nn_e = 30 ! =F : the number of sub-step in rn_Dt seconds 191 191 / 192 192 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/BENCH/EXPREF/namelist_cfg_orca1_like
r12406 r12443 188 188 ln_dynspg_ts = .true. ! split-explicit free surface 189 189 ln_bt_auto = .false. ! Number of sub-step defined from: 190 nn_ baro= 30 ! =F : the number of sub-step in rn_Dt seconds190 nn_e = 30 ! =F : the number of sub-step in rn_Dt seconds 191 191 / 192 192 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/BENCH/MY_SRC/diawri.F90
r12377 r12443 169 169 170 170 IF ( iom_use("taubot") ) THEN ! bottom stress 171 zztmp = r au0 * 0.25171 zztmp = rho0 * 0.25 172 172 z2d(:,:) = 0._wp 173 173 DO jj = 2, jpjm1 … … 214 214 IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN ! vertical mass transport & its square value 215 215 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 216 z2d(:,:) = r au0 * e1e2t(:,:)216 z2d(:,:) = rho0 * e1e2t(:,:) 217 217 DO jk = 1, jpk 218 218 z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) … … 257 257 END DO 258 258 END DO 259 CALL iom_put( "heatc", r au0_rcp * z2d ) ! vertically integrated heat content (J/m2)259 CALL iom_put( "heatc", rho0_rcp * z2d ) ! vertically integrated heat content (J/m2) 260 260 ENDIF 261 261 … … 269 269 END DO 270 270 END DO 271 CALL iom_put( "saltc", r au0 * z2d ) ! vertically integrated salt content (PSU*kg/m2)271 CALL iom_put( "saltc", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 272 272 ENDIF 273 273 ! … … 295 295 z2d(:,:) = 0.e0 296 296 DO jk = 1, jpkm1 297 z3d(:,:,jk) = r au0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk)297 z3d(:,:,jk) = rho0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 298 298 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 299 299 END DO … … 332 332 z3d(:,:,jpk) = 0.e0 333 333 DO jk = 1, jpkm1 334 z3d(:,:,jk) = r au0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk)334 z3d(:,:,jk) = rho0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 335 335 END DO 336 336 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction … … 373 373 END DO 374 374 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 375 CALL iom_put( "tosmint", r au0 * z2d ) ! Vertical integral of temperature375 CALL iom_put( "tosmint", rho0 * z2d ) ! Vertical integral of temperature 376 376 ENDIF 377 377 IF( iom_use("somint") ) THEN … … 385 385 END DO 386 386 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 387 CALL iom_put( "somint", r au0 * z2d ) ! Vertical integral of salinity387 CALL iom_put( "somint", rho0 * z2d ) ! Vertical integral of salinity 388 388 ENDIF 389 389 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/BENCH/MY_SRC/zdfiwm.F90
r12377 r12443 85 85 !! This is divided into three components: 86 86 !! 1. Bottom-intensified low-mode dissipation at critical slopes 87 !! zemx_iwm(z) = ( ecri_iwm / r au0 ) * EXP( -(H-z)/hcri_iwm )87 !! zemx_iwm(z) = ( ecri_iwm / rho0 ) * EXP( -(H-z)/hcri_iwm ) 88 88 !! / ( 1. - EXP( - H/hcri_iwm ) ) * hcri_iwm 89 89 !! where hcri_iwm is the characteristic length scale of the bottom 90 90 !! intensification, ecri_iwm a map of available power, and H the ocean depth. 91 91 !! 2. Pycnocline-intensified low-mode dissipation 92 !! zemx_iwm(z) = ( epyc_iwm / r au0 ) * ( sqrt(rn2(z))^nn_zpyc )92 !! zemx_iwm(z) = ( epyc_iwm / rho0 ) * ( sqrt(rn2(z))^nn_zpyc ) 93 93 !! / SUM( sqrt(rn2(z))^nn_zpyc * e3w(z) ) 94 94 !! where epyc_iwm is a map of available power, and nn_zpyc … … 96 96 !! energy dissipation. 97 97 !! 3. WKB-height dependent high mode dissipation 98 !! zemx_iwm(z) = ( ebot_iwm / r au0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm)98 !! zemx_iwm(z) = ( ebot_iwm / rho0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm) 99 99 !! / SUM( rn2(z) * EXP(-z_wkb(z)/hbot_iwm) * e3w(z) ) 100 100 !! where hbot_iwm is the characteristic length scale of the WKB bottom … … 150 150 DO ji = 1, jpi 151 151 zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1) ! depth of the ocean 152 zfact(ji,jj) = r au0 * ( 1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) ) )152 zfact(ji,jj) = rho0 * ( 1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) ) ) 153 153 IF( zfact(ji,jj) /= 0._wp ) zfact(ji,jj) = ecri_iwm(ji,jj) / zfact(ji,jj) 154 154 END DO … … 179 179 DO jj = 1, jpj 180 180 DO ji = 1, jpi 181 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( r au0 * zfact(ji,jj) )181 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 182 182 END DO 183 183 END DO … … 196 196 DO jj= 1, jpj 197 197 DO ji = 1, jpi 198 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( r au0 * zfact(ji,jj) )198 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 199 199 END DO 200 200 END DO … … 246 246 DO jj = 1, jpj 247 247 DO ji = 1, jpi 248 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = ebot_iwm(ji,jj) / ( r au0 * zfact(ji,jj) )248 IF( zfact(ji,jj) /= 0 ) zfact(ji,jj) = ebot_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 249 249 END DO 250 250 END DO … … 259 259 ! Calculate molecular kinematic viscosity 260 260 znu_t(:,:,:) = 1.e-4_wp * ( 17.91_wp - 0.53810_wp * ts(:,:,:,jp_tem,Kmm) + 0.00694_wp * ts(:,:,:,jp_tem,Kmm) * ts(:,:,:,jp_tem,Kmm) & 261 & + 0.02305_wp * ts(:,:,:,jp_sal,Kmm) ) * tmask(:,:,:) * r1_r au0261 & + 0.02305_wp * ts(:,:,:,jp_sal,Kmm) ) * tmask(:,:,:) * r1_rho0 262 262 DO jk = 2, jpkm1 263 263 znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) … … 305 305 END DO 306 306 CALL mpp_sum( 'zdfiwm', zztmp ) 307 zztmp = r au0 * zztmp ! Global integral of rauo * Kz * N^2 = power contributing to mixing307 zztmp = rho0 * zztmp ! Global integral of rauo * Kz * N^2 = power contributing to mixing 308 308 ! 309 309 IF(lwp) THEN … … 349 349 !* output useful diagnostics: Kz*N^2 , 350 350 !!gm Kz*N2 should take into account the ratio avs/avt if it is used.... (see diaar5) 351 ! vertical integral of r au0 * Kz * N^2 , energy density (zemx_iwm)351 ! vertical integral of rho0 * Kz * N^2 , energy density (zemx_iwm) 352 352 IF( iom_use("bflx_iwm") .OR. iom_use("pcmap_iwm") ) THEN 353 353 ALLOCATE( z2d(jpi,jpj) , z3d(jpi,jpj,jpk) ) … … 357 357 z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 358 358 END DO 359 z2d(:,:) = r au0 * z2d(:,:)359 z2d(:,:) = rho0 * z2d(:,:) 360 360 CALL iom_put( "bflx_iwm", z3d ) 361 361 CALL iom_put( "pcmap_iwm", z2d ) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/EXPREF/namelist_cfg
r12406 r12443 208 208 ln_bt_av = .true. ! Time filtering of barotropic variables 209 209 nn_bt_flt = 1 ! Time filter choice = 0 None 210 ! ! = 1 Boxcar over nn_ barosub-steps211 ! ! = 2 Boxcar over 2*nn_ baro" "210 ! ! = 1 Boxcar over nn_e sub-steps 211 ! ! = 2 Boxcar over 2*nn_e " " 212 212 ln_bt_auto = .false. ! Number of sub-step defined from: 213 nn_ baro= 24 ! =F : the number of sub-step in rn_Dt seconds213 nn_e = 24 ! =F : the number of sub-step in rn_Dt seconds 214 214 / 215 215 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/diawri.F90
r12406 r12443 169 169 170 170 IF ( iom_use("taubot") ) THEN ! bottom stress 171 zztmp = r au0 * 0.25171 zztmp = rho0 * 0.25 172 172 z2d(:,:) = 0._wp 173 173 DO jj = 2, jpjm1 … … 212 212 IF( iom_use('w_masstr') .OR. iom_use('w_masstr2') ) THEN ! vertical mass transport & its square value 213 213 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 214 z2d(:,:) = r au0 * e1e2t(:,:)214 z2d(:,:) = rho0 * e1e2t(:,:) 215 215 DO jk = 1, jpk 216 216 z3d(:,:,jk) = ww(:,:,jk) * z2d(:,:) … … 272 272 END DO 273 273 END DO 274 CALL iom_put( "heatc", r au0_rcp * z2d ) ! vertically integrated heat content (J/m2)274 CALL iom_put( "heatc", rho0_rcp * z2d ) ! vertically integrated heat content (J/m2) 275 275 ENDIF 276 276 … … 284 284 END DO 285 285 END DO 286 CALL iom_put( "saltc", r au0 * z2d ) ! vertically integrated salt content (PSU*kg/m2)286 CALL iom_put( "saltc", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 287 287 ENDIF 288 288 ! … … 296 296 END DO 297 297 END DO 298 CALL iom_put( "salt2c", r au0 * z2d ) ! vertically integrated salt content (PSU*kg/m2)298 CALL iom_put( "salt2c", rho0 * z2d ) ! vertically integrated salt content (PSU*kg/m2) 299 299 ENDIF 300 300 ! … … 395 395 z2d(:,:) = 0.e0 396 396 DO jk = 1, jpkm1 397 z3d(:,:,jk) = r au0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk)397 z3d(:,:,jk) = rho0 * uu(:,:,jk,Kmm) * e2u(:,:) * e3u(:,:,jk,Kmm) * umask(:,:,jk) 398 398 z2d(:,:) = z2d(:,:) + z3d(:,:,jk) 399 399 END DO … … 432 432 z3d(:,:,jpk) = 0.e0 433 433 DO jk = 1, jpkm1 434 z3d(:,:,jk) = r au0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk)434 z3d(:,:,jk) = rho0 * vv(:,:,jk,Kmm) * e1v(:,:) * e3v(:,:,jk,Kmm) * vmask(:,:,jk) 435 435 END DO 436 436 CALL iom_put( "v_masstr", z3d ) ! mass transport in j-direction … … 473 473 END DO 474 474 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 475 CALL iom_put( "tosmint", r au0 * z2d ) ! Vertical integral of temperature475 CALL iom_put( "tosmint", rho0 * z2d ) ! Vertical integral of temperature 476 476 ENDIF 477 477 IF( iom_use("somint") ) THEN … … 485 485 END DO 486 486 CALL lbc_lnk( 'diawri', z2d, 'T', -1. ) 487 CALL iom_put( "somint", r au0 * z2d ) ! Vertical integral of salinity487 CALL iom_put( "somint", rho0 * z2d ) ! Vertical integral of salinity 488 488 ENDIF 489 489 -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/domvvl.F90
r12424 r12443 609 609 ELSE 610 610 tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) & 611 & + atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) )611 & + rn_atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 612 612 ENDIF 613 613 tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/CANAL/MY_SRC/usrdef_istate.F90
r10425 r12443 218 218 ! 219 219 zr_lambda2 = 1._wp / zlambda**2 220 zP0 = r au0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp)220 zP0 = rho0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 221 221 ! 222 222 DO jj=1, jpj … … 225 225 zy = gphit(ji,jj) * 1.e3 226 226 ! Surface pressure: P(x,y,z) = F(z) * Psurf(x,y) 227 zpsurf = zP0 * EXP(-(zx**2+zy**2)*zr_lambda2) - r au0 * ff_t(ji,jj) * rn_uzonal * zy227 zpsurf = zP0 * EXP(-(zx**2+zy**2)*zr_lambda2) - rho0 * ff_t(ji,jj) * rn_uzonal * zy 228 228 ! Sea level: 229 229 pssh(ji,jj) = 0. … … 231 231 zdt = pssh(ji,jj) 232 232 zdzF = (1._wp - EXP(zdt-zH)) / (zH - 1._wp + EXP(-zH)) ! F'(z) 233 zrho1 = r au0 * (1._wp + zn2*zdt/grav) - zdzF * zpsurf / grav ! -1/g Dz(P) = -1/g * F'(z) * Psurf(x,y)233 zrho1 = rho0 * (1._wp + zn2*zdt/grav) - zdzF * zpsurf / grav ! -1/g Dz(P) = -1/g * F'(z) * Psurf(x,y) 234 234 pssh(ji,jj) = zpsurf / (zrho1*grav) * ptmask(ji,jj,1) ! ssh = Psurf / (Rho*g) 235 235 END DO … … 237 237 DO jk=1,jpk 238 238 zdt = pdept(ji,jj,jk) 239 zrho1 = r au0 * (1._wp + zn2*zdt/grav)239 zrho1 = rho0 * (1._wp + zn2*zdt/grav) 240 240 IF (zdt < zH) THEN 241 241 zdzF = (1._wp-EXP(zdt-zH)) / (zH-1._wp + EXP(-zH)) ! F'(z) 242 242 zrho1 = zrho1 - zdzF * zpsurf / grav ! -1/g Dz(P) = -1/g * F'(z) * Psurf(x,y) 243 243 ENDIF 244 ! pts(ji,jj,jk,jp_tem) = (20._wp + (r au0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk)245 pts(ji,jj,jk,jp_tem) = (10._wp + (r au0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk)244 ! pts(ji,jj,jk,jp_tem) = (20._wp + (rho0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk) 245 pts(ji,jj,jk,jp_tem) = (10._wp + (rho0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk) 246 246 END DO 247 247 END DO … … 261 261 IF (zdu < zH) THEN 262 262 zf = (zH-1._wp-zdu+EXP(zdu-zH)) / (zH-1._wp+EXP(-zH)) 263 zdyPs = - za * zy * EXP(-(zx**2+zy**2)*zr_lambda2) - r au0 * ff_t(ji,jj) * rn_uzonal264 pu(ji,jj,jk) = - zf / ( r au0 * ff_t(ji,jj) ) * zdyPs * ptmask(ji,jj,jk) * ptmask(ji+1,jj,jk)263 zdyPs = - za * zy * EXP(-(zx**2+zy**2)*zr_lambda2) - rho0 * ff_t(ji,jj) * rn_uzonal 264 pu(ji,jj,jk) = - zf / ( rho0 * ff_t(ji,jj) ) * zdyPs * ptmask(ji,jj,jk) * ptmask(ji+1,jj,jk) 265 265 ELSE 266 266 pu(ji,jj,jk) = 0._wp … … 279 279 zf = (zH-1._wp-zdv+EXP(zdv-zH)) / (zH-1._wp+EXP(-zH)) 280 280 zdxPs = - za * zx * EXP(-(zx**2+zy**2)*zr_lambda2) 281 pv(ji,jj,jk) = zf / ( r au0 * ff_f(ji,jj) ) * zdxPs * ptmask(ji,jj,jk) * ptmask(ji,jj+1,jk)281 pv(ji,jj,jk) = zf / ( rho0 * ff_f(ji,jj) ) * zdxPs * ptmask(ji,jj,jk) * ptmask(ji,jj+1,jk) 282 282 ELSE 283 283 pv(ji,jj,jk) = 0._wp -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/ISOMIP+/MY_SRC/eosbn2.F90
r12353 r12443 191 191 !! *** ROUTINE eos_insitu *** 192 192 !! 193 !! ** Purpose : Compute the in situ density (ratio rho/r au0) from193 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from 194 194 !! potential temperature and salinity using an equation of state 195 195 !! selected in the nameos namelist 196 196 !! 197 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - r au0 ) / rau0197 !! ** Method : prd(t,s,z) = ( rho(t,s,z) - rho0 ) / rho0 198 198 !! with prd in situ density anomaly no units 199 199 !! t TEOS10: CT or EOS80: PT Celsius … … 201 201 !! z depth meters 202 202 !! rho in situ density kg/m^3 203 !! r au0 reference density kg/m^3203 !! rho0 reference density kg/m^3 204 204 !! 205 205 !! ln_teos10 : polynomial TEOS-10 equation of state is used for rho(t,s,z). … … 210 210 !! 211 211 !! ln_seos : simplified equation of state 212 !! prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / r au0212 !! prd(t,s,z) = ( -a0*(1+lambda/2*(T-T0)+mu*z+nu*(S-S0))*(T-T0) + b0*(S-S0) ) / rho0 213 213 !! linear case function of T only: rn_alpha<>0, other coefficients = 0 214 214 !! linear eos function of T and S: rn_alpha and rn_beta<>0, other coefficients=0 … … 216 216 !! 217 217 !! ln_leos : linear ISOMIP equation of state 218 !! prd(t,s,z) = ( -a0*(T-T0) + b0*(S-S0) ) / r au0218 !! prd(t,s,z) = ( -a0*(T-T0) + b0*(S-S0) ) / rho0 219 219 !! setup for ISOMIP linear eos 220 220 !! … … 273 273 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 274 274 ! 275 prd(ji,jj,jk) = ( zn * r1_r au0 - 1._wp ) * ztm ! density anomaly (masked)275 prd(ji,jj,jk) = ( zn * r1_rho0 - 1._wp ) * ztm ! density anomaly (masked) 276 276 ! 277 277 END DO … … 293 293 & - rn_nu * zt * zs 294 294 ! 295 prd(ji,jj,jk) = zn * r1_r au0 * ztm ! density anomaly (masked)295 prd(ji,jj,jk) = zn * r1_rho0 * ztm ! density anomaly (masked) 296 296 END DO 297 297 END DO … … 308 308 ztm = tmask(ji,jj,jk) 309 309 ! 310 zn = r au0 * ( - rn_a0 * zt + rn_b0 * zs )310 zn = rho0 * ( - rn_a0 * zt + rn_b0 * zs ) 311 311 ! 312 prd(ji,jj,jk) = zn * r1_r au0 * ztm ! density anomaly (masked)312 prd(ji,jj,jk) = zn * r1_rho0 * ztm ! density anomaly (masked) 313 313 END DO 314 314 END DO … … 328 328 !! *** ROUTINE eos_insitu_pot *** 329 329 !! 330 !! ** Purpose : Compute the in situ density (ratio rho/r au0) and the330 !! ** Purpose : Compute the in situ density (ratio rho/rho0) and the 331 331 !! potential volumic mass (Kg/m3) from potential temperature and 332 332 !! salinity fields using an equation of state selected in the … … 410 410 prhop(ji,jj,jk) = prhop(ji,jj,jk) + zn0_sto(jsmp) ! potential density referenced at the surface 411 411 ! 412 prd(ji,jj,jk) = prd(ji,jj,jk) + ( zn_sto(jsmp) * r1_r au0 - 1._wp ) ! density anomaly (masked)412 prd(ji,jj,jk) = prd(ji,jj,jk) + ( zn_sto(jsmp) * r1_rho0 - 1._wp ) ! density anomaly (masked) 413 413 END DO 414 414 prhop(ji,jj,jk) = 0.5_wp * prhop(ji,jj,jk) * ztm / nn_sto_eos … … 454 454 prhop(ji,jj,jk) = zn0 * ztm ! potential density referenced at the surface 455 455 ! 456 prd(ji,jj,jk) = ( zn * r1_r au0 - 1._wp ) * ztm ! density anomaly (masked)456 prd(ji,jj,jk) = ( zn * r1_rho0 - 1._wp ) * ztm ! density anomaly (masked) 457 457 END DO 458 458 END DO … … 473 473 & + rn_b0 * ( 1._wp - 0.5_wp*rn_lambda2*zs ) * zs & 474 474 & - rn_nu * zt * zs 475 prhop(ji,jj,jk) = ( r au0 + zn ) * ztm475 prhop(ji,jj,jk) = ( rho0 + zn ) * ztm 476 476 ! ! density anomaly (masked) 477 477 zn = zn - ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zh 478 prd(ji,jj,jk) = zn * r1_r au0 * ztm478 prd(ji,jj,jk) = zn * r1_rho0 * ztm 479 479 ! 480 480 END DO … … 492 492 ztm = tmask(ji,jj,jk) 493 493 ! ! potential density referenced at the surface 494 zn = r au0 * ( - rn_a0 * zt + rn_b0 * zs )495 prhop(ji,jj,jk) = ( r au0 + zn ) * ztm494 zn = rho0 * ( - rn_a0 * zt + rn_b0 * zs ) 495 prhop(ji,jj,jk) = ( rho0 + zn ) * ztm 496 496 ! ! density anomaly (masked) 497 prd(ji,jj,jk) = zn * r1_r au0 * ztm497 prd(ji,jj,jk) = zn * r1_rho0 * ztm 498 498 ! 499 499 END DO … … 514 514 !! *** ROUTINE eos_insitu_2d *** 515 515 !! 516 !! ** Purpose : Compute the in situ density (ratio rho/r au0) from516 !! ** Purpose : Compute the in situ density (ratio rho/rho0) from 517 517 !! potential temperature and salinity using an equation of state 518 518 !! selected in the nameos namelist. * 2D field case … … 569 569 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 570 570 ! 571 prd(ji,jj) = zn * r1_r au0 - 1._wp ! unmasked in situ density anomaly571 prd(ji,jj) = zn * r1_rho0 - 1._wp ! unmasked in situ density anomaly 572 572 ! 573 573 END DO … … 589 589 & - rn_nu * zt * zs 590 590 ! 591 prd(ji,jj) = zn * r1_r au0 ! unmasked in situ density anomaly591 prd(ji,jj) = zn * r1_rho0 ! unmasked in situ density anomaly 592 592 ! 593 593 END DO … … 605 605 zh = pdep (ji,jj) ! depth at the partial step level 606 606 ! 607 zn = r au0 * ( - rn_a0 * zt + rn_b0 * zs )608 ! 609 prd(ji,jj) = zn * r1_r au0 ! unmasked in situ density anomaly607 zn = rho0 * ( - rn_a0 * zt + rn_b0 * zs ) 608 ! 609 prd(ji,jj) = zn * r1_rho0 ! unmasked in situ density anomaly 610 610 ! 611 611 END DO … … 676 676 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 677 677 ! 678 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm678 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm 679 679 ! 680 680 ! beta … … 697 697 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 698 698 ! 699 pab(ji,jj,jk,jp_sal) = zn / zs * r1_r au0 * ztm699 pab(ji,jj,jk,jp_sal) = zn / zs * r1_rho0 * ztm 700 700 ! 701 701 END DO … … 714 714 ! 715 715 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 716 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm ! alpha716 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm ! alpha 717 717 ! 718 718 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 719 pab(ji,jj,jk,jp_sal) = zn * r1_r au0 * ztm ! beta719 pab(ji,jj,jk,jp_sal) = zn * r1_rho0 * ztm ! beta 720 720 ! 721 721 END DO … … 733 733 ztm = tmask(ji,jj,jk) ! land/sea bottom mask = surf. mask 734 734 ! 735 zn = rn_a0 * r au0736 pab(ji,jj,jk,jp_tem) = zn * r1_r au0 * ztm ! alpha737 ! 738 zn = rn_b0 * r au0739 pab(ji,jj,jk,jp_sal) = zn * r1_r au0 * ztm ! beta735 zn = rn_a0 * rho0 736 pab(ji,jj,jk,jp_tem) = zn * r1_rho0 * ztm ! alpha 737 ! 738 zn = rn_b0 * rho0 739 pab(ji,jj,jk,jp_sal) = zn * r1_rho0 * ztm ! beta 740 740 ! 741 741 END DO … … 809 809 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 810 810 ! 811 pab(ji,jj,jp_tem) = zn * r1_r au0811 pab(ji,jj,jp_tem) = zn * r1_rho0 812 812 ! 813 813 ! beta … … 830 830 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 831 831 ! 832 pab(ji,jj,jp_sal) = zn / zs * r1_r au0832 pab(ji,jj,jp_sal) = zn / zs * r1_rho0 833 833 ! 834 834 ! … … 848 848 ! 849 849 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 850 pab(ji,jj,jp_tem) = zn * r1_r au0 ! alpha850 pab(ji,jj,jp_tem) = zn * r1_rho0 ! alpha 851 851 ! 852 852 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 853 pab(ji,jj,jp_sal) = zn * r1_r au0 ! beta853 pab(ji,jj,jp_sal) = zn * r1_rho0 ! beta 854 854 ! 855 855 END DO … … 867 867 zh = pdep (ji,jj) ! depth at the partial step level 868 868 ! 869 zn = rn_a0 * r au0870 pab(ji,jj,jp_tem) = zn * r1_r au0 ! alpha871 ! 872 zn = rn_b0 * r au0873 pab(ji,jj,jp_sal) = zn * r1_r au0 ! beta869 zn = rn_a0 * rho0 870 pab(ji,jj,jp_tem) = zn * r1_rho0 ! alpha 871 ! 872 zn = rn_b0 * rho0 873 pab(ji,jj,jp_sal) = zn * r1_rho0 ! beta 874 874 ! 875 875 END DO … … 941 941 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 942 942 ! 943 pab(jp_tem) = zn * r1_r au0943 pab(jp_tem) = zn * r1_rho0 944 944 ! 945 945 ! beta … … 962 962 zn = ( ( zn3 * zh + zn2 ) * zh + zn1 ) * zh + zn0 963 963 ! 964 pab(jp_sal) = zn / zs * r1_r au0964 pab(jp_sal) = zn / zs * r1_rho0 965 965 ! 966 966 ! … … 973 973 ! 974 974 zn = rn_a0 * ( 1._wp + rn_lambda1*zt + rn_mu1*zh ) + rn_nu*zs 975 pab(jp_tem) = zn * r1_r au0 ! alpha975 pab(jp_tem) = zn * r1_rho0 ! alpha 976 976 ! 977 977 zn = rn_b0 * ( 1._wp - rn_lambda2*zs - rn_mu2*zh ) - rn_nu*zt 978 pab(jp_sal) = zn * r1_r au0 ! beta978 pab(jp_sal) = zn * r1_rho0 ! beta 979 979 ! 980 980 CASE( np_leos ) !== linear ISOMIP EOS ==! … … 984 984 zh = pdep ! depth at the partial step level 985 985 ! 986 zn = rn_a0 * r au0987 pab(jp_tem) = zn * r1_r au0 ! alpha988 ! 989 zn = rn_b0 * r au0990 pab(jp_sal) = zn * r1_r au0 ! beta986 zn = rn_a0 * rho0 987 pab(jp_tem) = zn * r1_rho0 ! alpha 988 ! 989 zn = rn_b0 * rho0 990 pab(jp_sal) = zn * r1_rho0 ! beta 991 991 ! 992 992 CASE DEFAULT … … 1214 1214 !! ** Method : PE is defined analytically as the vertical 1215 1215 !! primitive of EOS times -g integrated between 0 and z>0. 1216 !! pen is the nonlinear bsq-PE anomaly: pen = ( PE - r au0 gz ) / rau0 gz - rd1216 !! pen is the nonlinear bsq-PE anomaly: pen = ( PE - rho0 gz ) / rho0 gz - rd 1217 1217 !! = 1/z * /int_0^z rd dz - rd 1218 1218 !! where rd is the density anomaly (see eos_rhd function) 1219 1219 !! ab_pe are partial derivatives of PE anomaly with respect to T and S: 1220 !! ab_pe(1) = - 1/(r au0 gz) * dPE/dT + drd/dT = - d(pen)/dT1221 !! ab_pe(2) = 1/(r au0 gz) * dPE/dS + drd/dS = d(pen)/dS1220 !! ab_pe(1) = - 1/(rho0 gz) * dPE/dT + drd/dT = - d(pen)/dT 1221 !! ab_pe(2) = 1/(rho0 gz) * dPE/dS + drd/dS = d(pen)/dS 1222 1222 !! 1223 1223 !! ** Action : - pen : PE anomaly given at T-points … … 1267 1267 zn = ( zn2 * zh + zn1 ) * zh + zn0 1268 1268 ! 1269 ppen(ji,jj,jk) = zn * zh * r1_r au0 * ztm1269 ppen(ji,jj,jk) = zn * zh * r1_rho0 * ztm 1270 1270 ! 1271 1271 ! alphaPE non-linear anomaly … … 1282 1282 zn = ( zn2 * zh + zn1 ) * zh + zn0 1283 1283 ! 1284 pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_r au0 * ztm1284 pab_pe(ji,jj,jk,jp_tem) = zn * zh * r1_rho0 * ztm 1285 1285 ! 1286 1286 ! betaPE non-linear anomaly … … 1297 1297 zn = ( zn2 * zh + zn1 ) * zh + zn0 1298 1298 ! 1299 pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_r au0 * ztm1299 pab_pe(ji,jj,jk,jp_sal) = zn / zs * zh * r1_rho0 * ztm 1300 1300 ! 1301 1301 END DO … … 1312 1312 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 1313 1313 ztm = tmask(ji,jj,jk) ! tmask 1314 zn = 0.5_wp * zh * r1_r au0 * ztm1314 zn = 0.5_wp * zh * r1_rho0 * ztm 1315 1315 ! ! Potential Energy 1316 1316 ppen(ji,jj,jk) = ( rn_a0 * rn_mu1 * zt + rn_b0 * rn_mu2 * zs ) * zn … … 1332 1332 zh = gdept(ji,jj,jk,Kmm) ! depth in meters at t-point 1333 1333 ztm = tmask(ji,jj,jk) ! tmask 1334 zn = 0.5_wp * zh * r1_r au0 * ztm1334 zn = 0.5_wp * zh * r1_rho0 * ztm 1335 1335 ! ! Potential Energy 1336 1336 ppen(ji,jj,jk) = 0. … … 1379 1379 IF(lwm) WRITE( numond, nameos ) 1380 1380 ! 1381 r au0 = 1027.51_wp !: volumic mass of reference [kg/m3]1381 rho0 = 1027.51_wp !: volumic mass of reference [kg/m3] 1382 1382 rcp = 3974.00_wp !: heat capacity [J/K] 1383 1383 ! … … 1793 1793 WRITE(numout,*) ' ==>>> use of simplified eos: ' 1794 1794 WRITE(numout,*) ' rhd(dT=T-10,dS=S-35,Z) = [-a0*(1+lambda1/2*dT+mu1*Z)*dT ' 1795 WRITE(numout,*) ' + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / r au0'1795 WRITE(numout,*) ' + b0*(1+lambda2/2*dT+mu2*Z)*dS - nu*dT*dS] / rho0' 1796 1796 WRITE(numout,*) ' with the following coefficients :' 1797 1797 WRITE(numout,*) ' thermal exp. coef. rn_a0 = ', rn_a0 … … 1810 1810 WRITE(numout,*) 1811 1811 WRITE(numout,*) ' use of linear ISOMIP eos: rhd(dT=T-(-1),dS=S-(34.2),Z) = ' 1812 WRITE(numout,*) ' [ -a0*dT + b0*dS ]/r au0'1812 WRITE(numout,*) ' [ -a0*dT + b0*dS ]/rho0' 1813 1813 WRITE(numout,*) 1814 1814 WRITE(numout,*) ' thermal exp. coef. rn_a0 = ', rn_a0 … … 1822 1822 END SELECT 1823 1823 ! 1824 r au0_rcp = rau0 * rcp1825 r1_r au0 = 1._wp / rau01824 rho0_rcp = rho0 * rcp 1825 r1_rho0 = 1._wp / rho0 1826 1826 r1_rcp = 1._wp / rcp 1827 r1_r au0_rcp = 1._wp / rau0_rcp1827 r1_rho0_rcp = 1._wp / rho0_rcp 1828 1828 ! 1829 1829 IF(lwp) THEN … … 1840 1840 IF(lwp) WRITE(numout,*) 1841 1841 IF(lwp) WRITE(numout,*) ' Associated physical constant' 1842 IF(lwp) WRITE(numout,*) ' volumic mass of reference r au0 = ', rau0 , ' kg/m^3'1843 IF(lwp) WRITE(numout,*) ' 1. / r au0 r1_rau0 = ', r1_rau0, ' m^3/kg'1842 IF(lwp) WRITE(numout,*) ' volumic mass of reference rho0 = ', rho0 , ' kg/m^3' 1843 IF(lwp) WRITE(numout,*) ' 1. / rho0 r1_rho0 = ', r1_rho0, ' m^3/kg' 1844 1844 IF(lwp) WRITE(numout,*) ' ocean specific heat rcp = ', rcp , ' J/Kelvin' 1845 IF(lwp) WRITE(numout,*) ' r au0 * rcp rau0_rcp = ', rau0_rcp1846 IF(lwp) WRITE(numout,*) ' 1. / ( r au0 * rcp ) r1_rau0_rcp = ', r1_rau0_rcp1845 IF(lwp) WRITE(numout,*) ' rho0 * rcp rho0_rcp = ', rho0_rcp 1846 IF(lwp) WRITE(numout,*) ' 1. / ( rho0 * rcp ) r1_rho0_rcp = ', r1_rho0_rcp 1847 1847 ! 1848 1848 END SUBROUTINE eos_init -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/ISOMIP+/MY_SRC/sbcfwb.F90
r12406 r12443 122 122 ! avoid the model to blow up for large ssh drop (isomip OCEAN3 with melt switch off and uniform T/S) 123 123 IF (ln_isfcpl .AND. ln_isfcpl_cons) THEN 124 z_fwf = z_fwf + glob_sum( 'sbcfwb', e1e2t(:,:) * risfcpl_cons_ssh(:,:) * r au0 )124 z_fwf = z_fwf + glob_sum( 'sbcfwb', e1e2t(:,:) * risfcpl_cons_ssh(:,:) * rho0 ) 125 125 END IF 126 126 ! … … 155 155 a_fwb_b = a_fwb ! mean sea level taking into account the ice+snow 156 156 ! sum over the global domain 157 a_fwb = glob_sum( 'sbcfwb', e1e2t(:,:) * ( ssh(:,:,Kmm) + snwice_mass(:,:) * r1_r au0 ) )157 a_fwb = glob_sum( 'sbcfwb', e1e2t(:,:) * ( ssh(:,:,Kmm) + snwice_mass(:,:) * r1_rho0 ) ) 158 158 a_fwb = a_fwb * 1.e+3 / ( area * rday * 365. ) ! convert in Kg/m3/s = mm/s 159 159 !!gm ! !!bug 365d year -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_cen2_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_flux_ubs_cfg
r12406 r12443 216 216 ln_bt_av = .true. ! Time filtering of barotropic variables 217 217 nn_bt_flt = 1 ! Time filter choice = 0 None 218 ! ! = 1 Boxcar over nn_ barosub-steps219 ! ! = 2 Boxcar over 2*nn_ baro" "218 ! ! = 1 Boxcar over nn_e sub-steps 219 ! ! = 2 Boxcar over 2*nn_e " " 220 220 ln_bt_auto = .true. ! Number of sub-step defined from: 221 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds221 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 222 222 / 223 223 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_eenH_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_een_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ene_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT2_vect_ens_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_cen2_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_flux_ubs_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_eenH_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_een_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ene_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/EXPREF/namelist_FCT4_vect_ens_cfg
r12406 r12443 144 144 ln_bt_av = .true. ! Time filtering of barotropic variables 145 145 nn_bt_flt = 1 ! Time filter choice = 0 None 146 ! ! = 1 Boxcar over nn_ barosub-steps147 ! ! = 2 Boxcar over 2*nn_ baro" "146 ! ! = 1 Boxcar over nn_e sub-steps 147 ! ! = 2 Boxcar over 2*nn_e " " 148 148 ln_bt_auto = .true. ! Number of sub-step defined from: 149 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds149 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 150 150 / 151 151 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/LOCK_EXCHANGE/MY_SRC/usrdef_istate.F90
r10074 r12443 60 60 ! 61 61 ! rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 62 ! rho = r au0 - rn_a0 * (T-10)62 ! rho = rho0 - rn_a0 * (T-10) 63 63 ! delta_T = 25 degrees ==>> delta_rho = 25 * rn_a0 = 5 kg/m3 64 64 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_sco_FCT2_flux_cen-ahm1000_cfg
r12406 r12443 155 155 ln_bt_av = .true. ! Time filtering of barotropic variables 156 156 nn_bt_flt = 1 ! Time filter choice = 0 None 157 ! ! = 1 Boxcar over nn_ barosub-steps158 ! ! = 2 Boxcar over 2*nn_ baro" "157 ! ! = 1 Boxcar over nn_e sub-steps 158 ! ! = 2 Boxcar over 2*nn_e " " 159 159 ln_bt_auto = .true. ! Number of sub-step defined from: 160 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds160 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 161 161 / 162 162 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_sco_FCT2_flux_ubs_cfg
r12406 r12443 155 155 ln_bt_av = .true. ! Time filtering of barotropic variables 156 156 nn_bt_flt = 1 ! Time filter choice = 0 None 157 ! ! = 1 Boxcar over nn_ barosub-steps158 ! ! = 2 Boxcar over 2*nn_ baro" "157 ! ! = 1 Boxcar over nn_e sub-steps 158 ! ! = 2 Boxcar over 2*nn_e " " 159 159 ln_bt_auto = .true. ! Number of sub-step defined from: 160 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds160 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 161 161 / 162 162 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_cen-ahm1000_cfg
r12406 r12443 155 155 ln_bt_av = .true. ! Time filtering of barotropic variables 156 156 nn_bt_flt = 1 ! Time filter choice = 0 None 157 ! ! = 1 Boxcar over nn_ barosub-steps158 ! ! = 2 Boxcar over 2*nn_ baro" "157 ! ! = 1 Boxcar over nn_e sub-steps 158 ! ! = 2 Boxcar over 2*nn_e " " 159 159 ln_bt_auto = .true. ! Number of sub-step defined from: 160 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds160 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 161 161 / 162 162 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_sco_FCT4_flux_ubs_cfg
r12406 r12443 155 155 ln_bt_av = .true. ! Time filtering of barotropic variables 156 156 nn_bt_flt = 1 ! Time filter choice = 0 None 157 ! ! = 1 Boxcar over nn_ barosub-steps158 ! ! = 2 Boxcar over 2*nn_ baro" "157 ! ! = 1 Boxcar over nn_e sub-steps 158 ! ! = 2 Boxcar over 2*nn_e " " 159 159 ln_bt_auto = .true. ! Number of sub-step defined from: 160 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds160 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 161 161 / 162 162 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_zps_FCT2_flux_ubs_cfg
r12406 r12443 155 155 ln_bt_av = .true. ! Time filtering of barotropic variables 156 156 nn_bt_flt = 1 ! Time filter choice = 0 None 157 ! ! = 1 Boxcar over nn_ barosub-steps158 ! ! = 2 Boxcar over 2*nn_ baro" "157 ! ! = 1 Boxcar over nn_e sub-steps 158 ! ! = 2 Boxcar over 2*nn_e " " 159 159 ln_bt_auto = .true. ! Number of sub-step defined from: 160 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds160 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 161 161 / 162 162 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_flux_ubs_cfg
r12406 r12443 216 216 ln_bt_av = .true. ! Time filtering of barotropic variables 217 217 nn_bt_flt = 1 ! Time filter choice = 0 None 218 ! ! = 1 Boxcar over nn_ barosub-steps219 ! ! = 2 Boxcar over 2*nn_ baro" "218 ! ! = 1 Boxcar over nn_e sub-steps 219 ! ! = 2 Boxcar over 2*nn_e " " 220 220 ln_bt_auto = .true. ! Number of sub-step defined from: 221 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds221 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 222 222 / 223 223 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/EXPREF/namelist_zps_FCT4_vect_een_cfg
r12406 r12443 155 155 ln_bt_av = .true. ! Time filtering of barotropic variables 156 156 nn_bt_flt = 1 ! Time filter choice = 0 None 157 ! ! = 1 Boxcar over nn_ barosub-steps158 ! ! = 2 Boxcar over 2*nn_ baro" "157 ! ! = 1 Boxcar over nn_e sub-steps 158 ! ! = 2 Boxcar over 2*nn_e " " 159 159 ln_bt_auto = .true. ! Number of sub-step defined from: 160 nn_ baro= 1 ! =F : the number of sub-step in rn_Dt seconds160 nn_e = 1 ! =F : the number of sub-step in rn_Dt seconds 161 161 / 162 162 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/OVERFLOW/MY_SRC/usrdef_istate.F90
r10074 r12443 60 60 ! 61 61 ! rn_a0 = 0.2 ! thermal expension coefficient (nn_eos= 1) 62 ! rho = r au0 - rn_a0 * (T-10)62 ! rho = rho0 - rn_a0 * (T-10) 63 63 ! delta_T = 10 degrees ==>> delta_rho = 10 * rn_a0 = 2 kg/m3 64 64 ! -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/EXPREF/1_namelist_cfg
r12406 r12443 213 213 ln_bt_av = .true. ! Time filtering of barotropic variables 214 214 nn_bt_flt = 1 ! Time filter choice = 0 None 215 ! ! = 1 Boxcar over nn_ barosub-steps216 ! ! = 2 Boxcar over 2*nn_ baro" "215 ! ! = 1 Boxcar over nn_e sub-steps 216 ! ! = 2 Boxcar over 2*nn_e " " 217 217 ln_bt_auto = .false. ! Number of sub-step defined from: 218 nn_ baro= 24 ! =F : the number of sub-step in rn_Dt seconds218 nn_e = 24 ! =F : the number of sub-step in rn_Dt seconds 219 219 / 220 220 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/EXPREF/namelist_cfg
r12406 r12443 204 204 ln_bt_av = .true. ! Time filtering of barotropic variables 205 205 nn_bt_flt = 1 ! Time filter choice = 0 None 206 ! ! = 1 Boxcar over nn_ barosub-steps207 ! ! = 2 Boxcar over 2*nn_ baro" "206 ! ! = 1 Boxcar over nn_e sub-steps 207 ! ! = 2 Boxcar over 2*nn_e " " 208 208 ln_bt_auto = .false. ! Number of sub-step defined from: 209 nn_ baro= 24 ! =F : the number of sub-step in rn_Dt seconds209 nn_e = 24 ! =F : the number of sub-step in rn_Dt seconds 210 210 / 211 211 !----------------------------------------------------------------------- -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/MY_SRC/domvvl.F90
r12424 r12443 637 637 ELSE 638 638 tilde_e3t_b(:,:,:) = tilde_e3t_n(:,:,:) & 639 & + atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) )639 & + rn_atfp * ( tilde_e3t_b(:,:,:) - 2.0_wp * tilde_e3t_n(:,:,:) + tilde_e3t_a(:,:,:) ) 640 640 ENDIF 641 641 tilde_e3t_n(:,:,:) = tilde_e3t_a(:,:,:) -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/VORTEX/MY_SRC/usrdef_istate.F90
r10425 r12443 69 69 zH = 0.5_wp * 5000._wp 70 70 ! 71 zP0 = r au0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp)71 zP0 = rho0 * zf0 * zumax * zlambda * SQRT(EXP(1._wp)/2._wp) 72 72 ! 73 73 ! Sea level: … … 77 77 zx = glamt(ji,jj) * 1.e3 78 78 zy = gphit(ji,jj) * 1.e3 79 zrho1 = r au0 + za * EXP(-(zx**2+zy**2)/zlambda**2)79 zrho1 = rho0 + za * EXP(-(zx**2+zy**2)/zlambda**2) 80 80 pssh(ji,jj) = zP0 * EXP(-(zx**2+zy**2)/zlambda**2)/(zrho1*grav) * ptmask(ji,jj,1) 81 81 END DO … … 89 89 DO jk=1,jpk 90 90 zdt = pdept(ji,jj,jk) 91 zrho1 = r au0 * (1._wp + zn2*zdt/grav)91 zrho1 = rho0 * (1._wp + zn2*zdt/grav) 92 92 IF (zdt < zH) THEN 93 93 zrho1 = zrho1 - zP0 * (1._wp-EXP(zdt-zH)) & 94 94 & * EXP(-(zx**2+zy**2)/zlambda**2) / (grav*(zH -1._wp + exp(-zH))); 95 95 ENDIF 96 pts(ji,jj,jk,jp_tem) = (20._wp + (r au0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk)96 pts(ji,jj,jk,jp_tem) = (20._wp + (rho0-zrho1) / 0.28_wp) * ptmask(ji,jj,jk) 97 97 END DO 98 98 END DO … … 103 103 ! 104 104 ! velocities: 105 za = 2._wp * zP0 / (zf0 * r au0 * zlambda**2)105 za = 2._wp * zP0 / (zf0 * rho0 * zlambda**2) 106 106 DO ji=1, jpim1 107 107 DO jj=1, jpj -
NEMO/branches/2020/KERNEL-03_Storkey_Coward_RK3_stage2/tests/WAD/EXPREF/namelist_cfg
r12406 r12443 344 344 ln_dynspg_ts = .true. ! split-explicit free surface 345 345 ln_bt_auto = .false. ! Number of sub-step defined from: 346 nn_ baro= 12 ! =F : the number of sub-step in rn_Dt seconds346 nn_e = 12 ! =F : the number of sub-step in rn_Dt seconds 347 347 / 348 348 !-----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.