Changeset 12622
- Timestamp:
- 2020-03-27T20:55:44+01:00 (5 years ago)
- Location:
- NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaar5.F90
r12377 r12622 40 40 !! * Substitutions 41 41 # include "do_loop_substitute.h90" 42 # include "domzgr_substitute.h90" 42 43 !!---------------------------------------------------------------------- 43 44 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 78 79 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zarea_ssh , zbotpres ! 2D workspace 79 80 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zpe, z2d ! 2D workspace 80 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zrhd , zrhop, ztpot 81 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zrhd , zrhop, ztpot, ze3t ! 3D workspace 81 82 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztsn ! 4D workspace 82 83 … … 102 103 zrhd(:,:,jk) = area(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 103 104 END DO 105 DO jk = 1, jpk 106 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 107 END DO 104 108 CALL iom_put( 'volcello' , zrhd(:,:,:) ) ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 105 CALL iom_put( 'masscello' , rau0 * e3t(:,:,:,Kmm) * tmask(:,:,:) ) ! ocean mass109 CALL iom_put( 'masscello' , rau0 * ze3t(:,:,:) * tmask(:,:,:) ) ! ocean mass 106 110 ENDIF 107 111 ! -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diacfl.F90
r12377 r12622 34 34 !! * Substitutions 35 35 # include "do_loop_substitute.h90" 36 # include "domzgr_substitute.h90" 36 37 !!---------------------------------------------------------------------- 37 38 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diadct.F90
r12377 r12622 95 95 !! Software governed by the CeCILL license (see ./LICENSE) 96 96 !!---------------------------------------------------------------------- 97 # include "domzgr_substitute.h90" 98 97 99 CONTAINS 98 100 … … 1119 1121 !! | | | interpolation between ptab(I,J,K) and ptab(I,J,K+1) 1120 1122 !! | | | zbis = 1121 !! | | | [ e3w (I+1,J,K)*ptab(I,J,K) + ( e3w(I,J,K) - e3w(I+1,J,K) ) * ptab(I,J,K-1) ]1122 !! | | | /[ e3w (I+1,J,K) + e3w(I,J,K) - e3w(I+1,J,K) ]1123 !! | | | [ e3w_n(I+1,J,K)*ptab(I,J,K) + ( e3w_n(I,J,K) - e3w_n(I+1,J,K) ) * ptab(I,J,K-1) ] 1124 !! | | | /[ e3w_n(I+1,J,K) + e3w_n(I,J,K) - e3w_n(I+1,J,K) ] 1123 1125 !! | | | 1124 1126 !! | | | 2. Horizontal interpolation: compute value at U/V point … … 1212 1214 ELSE ! full step or partial step case 1213 1215 1214 ze3t = e3t(ii2,ij2,kk,Kmm) - e3t(ii1,ij1,kk,Kmm) 1215 zwgt1 = ( e3w(ii2,ij2,kk,Kmm) - e3w(ii1,ij1,kk,Kmm) ) / e3w(ii2,ij2,kk,Kmm) 1216 zwgt2 = ( e3w(ii1,ij1,kk,Kmm) - e3w(ii2,ij2,kk,Kmm) ) / e3w(ii1,ij1,kk,Kmm) 1216 ze3t = e3t(ii2,ij2,kk,Kmm) - e3t(ii1,ij1,kk,Kmm) 1217 zwgt1 = ( e3w(ii2,ij2,kk,Kmm) - e3w(ii1,ij1,kk,Kmm) ) & 1218 & / e3w(ii2,ij2,kk,Kmm) 1219 zwgt2 = ( e3w(ii1,ij1,kk,Kmm) - e3w(ii2,ij2,kk,Kmm) ) & 1220 & / e3w(ii1,ij1,kk,Kmm) 1217 1221 1218 1222 IF(kk .NE. 1)THEN -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diahsb.F90
r12377 r12622 55 55 !! Software governed by the CeCILL license (see ./LICENSE) 56 56 !!---------------------------------------------------------------------- 57 # include "domzgr_substitute.h90" 58 57 59 CONTAINS 58 60 … … 156 158 ! 157 159 DO jk = 1, jpkm1 ! volume variation (calculated with scale factors) 158 zwrk(:,:,jk) = surf(:,:)*e3t(:,:,jk,Kmm)*tmask(:,:,jk) - surf_ini(:,:)*e3t_ini(:,:,jk)*tmask_ini(:,:,jk) 160 zwrk(:,:,jk) = surf(:,:) * e3t(:,:,jk,Kmm)*tmask(:,:,jk) & 161 & - surf_ini(:,:) * e3t_ini(:,:,jk )*tmask_ini(:,:,jk) 159 162 END DO 160 163 zdiff_v2 = glob_sum_full( 'diahsb', zwrk(:,:,:) ) ! glob_sum_full needed as tmask and tmask_ini could be different 161 164 DO jk = 1, jpkm1 ! heat content variation 162 zwrk(:,:,jk) = ( surf(:,:)*e3t(:,:,jk,Kmm)*ts(:,:,jk,jp_tem,Kmm) - surf_ini(:,:)*hc_loc_ini(:,:,jk) ) 165 zwrk(:,:,jk) = ( surf(:,:)*e3t(:,:,jk,Kmm)*ts(:,:,jk,jp_tem,Kmm) & 166 & - surf_ini(:,:)*hc_loc_ini(:,:,jk) ) 163 167 END DO 164 168 zdiff_hc = glob_sum_full( 'diahsb', zwrk(:,:,:) ) 165 169 DO jk = 1, jpkm1 ! salt content variation 166 zwrk(:,:,jk) = ( surf(:,:)*e3t(:,:,jk,Kmm)*ts(:,:,jk,jp_sal,Kmm) - surf_ini(:,:)*sc_loc_ini(:,:,jk) ) 170 zwrk(:,:,jk) = ( surf(:,:)*e3t(:,:,jk,Kmm)*ts(:,:,jk,jp_sal,Kmm) & 171 & - surf_ini(:,:)*sc_loc_ini(:,:,jk) ) 167 172 END DO 168 173 zdiff_sc = glob_sum_full( 'diahsb', zwrk(:,:,:) ) … … 287 292 DO jk = 1, jpk 288 293 ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 289 e3t_ini (:,:,jk) = e3t(:,:,jk,Kmm) *tmask(:,:,jk) ! initial vertical scale factors294 e3t_ini (:,:,jk) = e3t(:,:,jk,Kmm)*tmask(:,:,jk) ! initial vertical scale factors 290 295 tmask_ini (:,:,jk) = tmask(:,:,jk) ! initial mask 291 hc_loc_ini(:,:,jk) = ts(:,:,jk,jp_tem,Kmm) * e3t(:,:,jk,Kmm) *tmask(:,:,jk) ! initial heat content292 sc_loc_ini(:,:,jk) = ts(:,:,jk,jp_sal,Kmm) * e3t(:,:,jk,Kmm) *tmask(:,:,jk) ! initial salt content296 hc_loc_ini(:,:,jk) = ts(:,:,jk,jp_tem,Kmm)*e3t(:,:,jk,Kmm)*tmask(:,:,jk) ! initial heat content 297 sc_loc_ini(:,:,jk) = ts(:,:,jk,jp_sal,Kmm)*e3t(:,:,jk,Kmm)*tmask(:,:,jk) ! initial salt content 293 298 END DO 294 299 frc_v = 0._wp ! volume trend due to forcing -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diahth.F90
r12377 r12622 42 42 !! * Substitutions 43 43 # include "do_loop_substitute.h90" 44 # include "domzgr_substitute.h90" 44 45 !!---------------------------------------------------------------------- 45 46 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 361 362 ik = ilevel(ji,jj) 362 363 zthick(ji,jj) = pdep - zthick(ji,jj) ! remaining thickness to reach depht pdep 363 phtc(ji,jj) = phtc(ji,jj) + pt(ji,jj,ik+1) * MIN( e3t(ji,jj,ik+1,Kmm), zthick(ji,jj) ) & 364 phtc(ji,jj) = phtc(ji,jj) & 365 & + pt (ji,jj,ik+1) * MIN( e3t(ji,jj,ik+1,Kmm), zthick(ji,jj) ) & 364 366 * tmask(ji,jj,ik+1) 365 367 END_2D -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaptr.F90
r12377 r12622 62 62 !! * Substitutions 63 63 # include "do_loop_substitute.h90" 64 # include "domzgr_substitute.h90" 64 65 !!---------------------------------------------------------------------- 65 66 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diawri.F90
r12377 r12622 85 85 !! * Substitutions 86 86 # include "do_loop_substitute.h90" 87 # include "domzgr_substitute.h90" 87 88 !!---------------------------------------------------------------------- 88 89 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 120 121 REAL(wp):: zztmp2, zztmpy ! - - 121 122 REAL(wp), DIMENSION(jpi,jpj) :: z2d ! 2D workspace 122 REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d ! 3D workspace123 REAL(wp), DIMENSION(jpi,jpj,jpk) :: z3d, ze3t, ze3u, ze3v, ze3w ! 3D workspace 123 124 !!---------------------------------------------------------------------- 124 125 ! … … 136 137 CALL iom_put("e3v_0", e3v_0(:,:,:) ) 137 138 ! 138 CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 139 CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 140 CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 141 CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 139 DO jk = 1, jpk 140 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 141 ze3u(:,:,jk) = e3u(:,:,jk,Kmm) 142 ze3v(:,:,jk) = e3v(:,:,jk,Kmm) 143 ze3w(:,:,jk) = e3w(:,:,jk,Kmm) 144 END DO 145 ! 146 CALL iom_put( "e3t" , ze3t(:,:,:) ) 147 CALL iom_put( "e3u" , ze3u(:,:,:) ) 148 CALL iom_put( "e3v" , ze3v(:,:,:) ) 149 CALL iom_put( "e3w" , ze3w(:,:,:) ) 142 150 IF( iom_use("e3tdef") ) & 143 CALL iom_put( "e3tdef" , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 )151 CALL iom_put( "e3tdef" , ( ( ze3t(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) !!st r3t 144 152 145 153 IF( ll_wd ) THEN … … 410 418 ! 411 419 REAL(wp), DIMENSION(jpi,jpj) :: zw2d ! 2D workspace 412 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d ! 3D workspace420 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d, ze3t ! 3D workspace 413 421 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d_abl ! ABL 3D workspace 414 422 !!---------------------------------------------------------------------- … … 450 458 it = kt 451 459 itmod = kt - nit000 + 1 460 461 ! store e3t for subsitute 462 DO jk = 1, jpk 463 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 464 END DO 452 465 453 466 … … 564 577 DEALLOCATE(zw3d_abl) 565 578 ENDIF 579 ! 566 580 567 581 ! Declare all the output fields as NETCDF variables … … 573 587 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 574 588 IF( .NOT.ln_linssh ) THEN 575 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t (:,:,:,Kmm)589 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t n 576 590 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 577 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t (:,:,:,Kmm)591 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t n 578 592 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 579 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t (:,:,:,Kmm)593 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t n 580 594 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 581 595 ENDIF … … 761 775 762 776 IF( .NOT.ln_linssh ) THEN 763 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! heat content764 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! salt content777 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T ) ! heat content 778 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T ) ! salt content 765 779 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface heat content 766 780 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity content … … 772 786 ENDIF 773 787 IF( .NOT.ln_linssh ) THEN 774 zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2775 CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm), ndim_T , ndex_T ) ! level thickness788 zw3d(:,:,:) = ( ( ze3t(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 789 CALL histwrite( nid_T, "vovvle3t", it, ze3t (:,:,:) , ndim_T , ndex_T ) ! level thickness 776 790 CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T ) ! t-point depth 777 791 CALL histwrite( nid_T, "vovvldef", it, zw3d , ndim_T , ndex_T ) ! level thickness deformation … … 913 927 !! 914 928 INTEGER :: inum, jk 929 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t ! 3D workspace 915 930 !!---------------------------------------------------------------------- 916 931 ! … … 919 934 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ and forcing fields file created ' 920 935 IF(lwp) WRITE(numout,*) ' and named :', cdfile_name, '...nc' 936 937 DO jk = 1, jpk 938 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 939 END DO 921 940 922 941 #if defined key_si3 … … 975 994 IF( .NOT.ln_linssh ) THEN 976 995 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm) ) ! T-cell depth 977 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm) ) ! T-cell thickness996 CALL iom_rstput( 0, 0, inum, 'vovvle3t', ze3t(:,:,:) ) ! T-cell thickness 978 997 END IF 979 998 IF( ln_wave .AND. ln_sdw ) THEN -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/dynzad.F90
r12377 r12622 29 29 !! * Substitutions 30 30 # include "do_loop_substitute.h90" 31 # include "domzgr_substitute.h90" 31 32 !!---------------------------------------------------------------------- 32 33 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 95 96 ! 96 97 DO_3D_00_00( 1, jpkm1 ) 97 puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) / e3u(ji,jj,jk,Kmm) 98 pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) / e3v(ji,jj,jk,Kmm) 98 puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) - ( zwuw(ji,jj,jk) + zwuw(ji,jj,jk+1) ) * r1_e1e2u(ji,jj) & 99 & / e3u(ji,jj,jk,Kmm) 100 pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) - ( zwvw(ji,jj,jk) + zwvw(ji,jj,jk+1) ) * r1_e1e2v(ji,jj) & 101 & / e3v(ji,jj,jk,Kmm) 99 102 END_3D 100 103 -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/sshwzv.F90
r12590 r12622 317 317 z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 318 318 ! 2*rdt and not r2dt (for restartability) 319 Cu_adv(ji,jj,jk) = 2._wp * rdt * ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) ) & 320 & + ( MAX( e2u(ji ,jj)*e3u(ji ,jj,jk,Kmm)*uu(ji ,jj,jk,Kmm) + un_td(ji ,jj,jk), 0._wp ) - & 321 & MIN( e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm)*uu(ji-1,jj,jk,Kmm) + un_td(ji-1,jj,jk), 0._wp ) ) & 322 & * r1_e1e2t(ji,jj) & 323 & + ( MAX( e1v(ji,jj )*e3v(ji,jj ,jk,Kmm)*vv(ji,jj ,jk,Kmm) + vn_td(ji,jj ,jk), 0._wp ) - & 324 & MIN( e1v(ji,jj-1)*e3v(ji,jj-1,jk,Kmm)*vv(ji,jj-1,jk,Kmm) + vn_td(ji,jj-1,jk), 0._wp ) ) & 325 & * r1_e1e2t(ji,jj) & 326 & ) * z1_e3t 319 Cu_adv(ji,jj,jk) = 2._wp * rdt * & 320 & ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) ) & 321 & + ( MAX( e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 322 & * uu (ji ,jj,jk,Kmm) + un_td(ji ,jj,jk), 0._wp ) - & 323 & MIN( e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 324 & * uu (ji-1,jj,jk,Kmm) + un_td(ji-1,jj,jk), 0._wp ) ) & 325 & * r1_e1e2t(ji ,jj) & 326 & + ( MAX( e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) & 327 & * vv (ji,jj ,jk,Kmm) + vn_td(ji,jj ,jk), 0._wp ) - & 328 & MIN( e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 329 & * vv (ji,jj-1,jk,Kmm) + vn_td(ji,jj-1,jk), 0._wp ) ) & 330 & * r1_e1e2t(ji,jj ) & 331 & ) * z1_e3t 327 332 END_3D 328 333 ELSE … … 330 335 z1_e3t = 1._wp / e3t(ji,jj,jk,Kmm) 331 336 ! 2*rdt and not r2dt (for restartability) 332 Cu_adv(ji,jj,jk) = 2._wp * rdt * ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) ) & 333 & + ( MAX( e2u(ji ,jj)*e3u(ji ,jj,jk,Kmm)*uu(ji ,jj,jk,Kmm), 0._wp ) - & 334 & MIN( e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm)*uu(ji-1,jj,jk,Kmm), 0._wp ) ) & 335 & * r1_e1e2t(ji,jj) & 336 & + ( MAX( e1v(ji,jj )*e3v(ji,jj ,jk,Kmm)*vv(ji,jj ,jk,Kmm), 0._wp ) - & 337 & MIN( e1v(ji,jj-1)*e3v(ji,jj-1,jk,Kmm)*vv(ji,jj-1,jk,Kmm), 0._wp ) ) & 338 & * r1_e1e2t(ji,jj) & 339 & ) * z1_e3t 337 Cu_adv(ji,jj,jk) = 2._wp * rdt * & 338 & ( ( MAX( ww(ji,jj,jk) , 0._wp ) - MIN( ww(ji,jj,jk+1) , 0._wp ) ) & 339 & + ( MAX( e2u(ji ,jj)*e3u(ji ,jj,jk,Kmm)*uu(ji ,jj,jk,Kmm), 0._wp ) - & 340 & MIN( e2u(ji-1,jj)*e3u(ji-1,jj,jk,Kmm)*uu(ji-1,jj,jk,Kmm), 0._wp ) ) & 341 & * r1_e1e2t(ji,jj) & 342 & + ( MAX( e1v(ji,jj )*e3v(ji,jj ,jk,Kmm)*vv(ji,jj ,jk,Kmm), 0._wp ) - & 343 & MIN( e1v(ji,jj-1)*e3v(ji,jj-1,jk,Kmm)*vv(ji,jj-1,jk,Kmm), 0._wp ) ) & 344 & * r1_e1e2t(ji,jj) & 345 & ) * z1_e3t 340 346 END_3D 341 347 ENDIF -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DYN/wet_dry.F90
r12377 r12622 33 33 !! * Substitutions 34 34 # include "do_loop_substitute.h90" 35 # include "domzgr_substitute.h90" 35 36 !!---------------------------------------------------------------------- 36 37 !! critical depths,filters, limiters,and masks for Wetting and Drying -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/FLO/flo4rk.F90
r12377 r12622 26 26 REAL(wp), DIMENSION (3) :: scoef1 = (/ 0.5 , 0.5 , 1.0 /) ! 27 27 28 # include "domzgr_substitute.h90" 28 29 !!---------------------------------------------------------------------- 29 30 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/FLO/floblk.F90
r12590 r12622 113 113 ! compute the transport across the mesh where the float is. 114 114 !!bug (gm) change e3t into e3. but never checked 115 zsurfx(1) = e2u(iiloc(jfl)-1,ijloc(jfl) ) & 116 & * e3u(iiloc(jfl)-1,ijloc(jfl) ,-ikl(jfl),Kmm) 117 zsurfx(2) = e2u(iiloc(jfl) ,ijloc(jfl) ) & 118 & * e3u(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 119 zsurfy(1) = e1v(iiloc(jfl) ,ijloc(jfl)-1) & 120 & * e3v(iiloc(jfl) ,ijloc(jfl)-1,-ikl(jfl),Kmm) 121 zsurfy(2) = e1v(iiloc(jfl) ,ijloc(jfl) ) & 122 & * e3v(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 115 zsurfx(1) = & 116 & e2u(iiloc(jfl)-1,ijloc(jfl) ) & 117 & * e3u(iiloc(jfl)-1,ijloc(jfl) ,-ikl(jfl),Kmm) 118 zsurfx(2) = & 119 & e2u(iiloc(jfl) ,ijloc(jfl) ) & 120 & * e3u(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 121 zsurfy(1) = & 122 & e1v(iiloc(jfl) ,ijloc(jfl)-1) & 123 & * e3v(iiloc(jfl) ,ijloc(jfl)-1,-ikl(jfl),Kmm) 124 zsurfy(2) = & 125 & e1v(iiloc(jfl) ,ijloc(jfl) ) & 126 & * e3v(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 123 127 124 128 ! for a isobar float zsurfz is put to zero. The vertical velocity will be zero too. -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isfcavgam.F90
r12077 r12622 29 29 ! 30 30 PUBLIC isfcav_gammats 31 31 32 # include "domzgr_substitute.h90" 32 33 !!---------------------------------------------------------------------- 33 34 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isfcpl.F90
r12616 r12622 145 145 !!---------------------------------------------------------------------- 146 146 ! 147 DO jk = 1, jpk m1147 DO jk = 1, jpk 148 148 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 149 149 ze3u(:,:,jk) = e3u(:,:,jk,Kmm) … … 419 419 ! 1.1: get volume flux before coupling (>0 out) 420 420 DO_2D_00_00 421 zqvolb(ji,jj,jk) = ( e2u(ji,jj) * ze3u_b(ji,jj,jk) * uu(ji,jj,jk,Kmm) - e2u(ji-1,jj ) * ze3u_b(ji-1,jj ,jk) * uu(ji-1,jj ,jk,Kmm) & 422 & + e1v(ji,jj) * ze3v_b(ji,jj,jk) * vv(ji,jj,jk,Kmm) - e1v(ji ,jj-1) * ze3v_b(ji ,jj-1,jk) * vv(ji ,jj-1,jk,Kmm) ) & 423 & * ztmask_b(ji,jj,jk) 421 zqvolb(ji,jj,jk) = & 422 & ( e2u(ji ,jj ) * ze3u_b(ji ,jj ,jk) * uu(ji ,jj ,jk,Kmm) & 423 & - e2u(ji-1,jj ) * ze3u_b(ji-1,jj ,jk) * uu(ji-1,jj ,jk,Kmm) & 424 & + e1v(ji ,jj ) * ze3v_b(ji ,jj ,jk) * vv(ji ,jj ,jk,Kmm) & 425 & - e1v(ji ,jj-1) * ze3v_b(ji ,jj-1,jk) * vv(ji ,jj-1,jk,Kmm) ) & 426 & * ztmask_b(ji,jj,jk) 424 427 END_2D 425 428 ! … … 431 434 ! compute volume flux divergence after coupling 432 435 DO_2D_00_00 433 zqvoln(ji,jj,jk) = ( e2u(ji ,jj ) * e3u(ji ,jj ,jk,Kmm) * uu(ji ,jj ,jk,Kmm) & 434 & - e2u(ji-1,jj ) * e3u(ji-1,jj ,jk,Kmm) * uu(ji-1,jj ,jk,Kmm) & 435 & + e1v(ji ,jj ) * e3v(ji ,jj ,jk,Kmm) * vv(ji ,jj ,jk,Kmm) & 436 & - e1v(ji ,jj-1) * e3v(ji ,jj-1,jk,Kmm) * vv(ji ,jj-1,jk,Kmm) ) & 437 & * tmask(ji,jj,jk) 436 zqvoln(ji,jj,jk) = & 437 & ( e2u(ji ,jj ) * e3u(ji ,jj ,jk,Kmm) * uu(ji ,jj ,jk,Kmm) & 438 & - e2u(ji-1,jj ) * e3u(ji-1,jj ,jk,Kmm) * uu(ji-1,jj ,jk,Kmm) & 439 & + e1v(ji ,jj ) * e3v(ji ,jj ,jk,Kmm) * vv(ji ,jj ,jk,Kmm) & 440 & - e1v(ji ,jj-1) * e3v(ji ,jj-1,jk,Kmm) * vv(ji ,jj-1,jk,Kmm) ) & 441 & * tmask(ji,jj,jk) 438 442 END_2D 439 443 ! … … 544 548 545 549 ! volume diff 546 zdvol = e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) - ze3t_b(ji,jj,jk) * ztmask_b(ji,jj,jk) 550 zdvol = e3t (ji,jj,jk,Kmm) * tmask (ji,jj,jk) & 551 & - ze3t_b(ji,jj,jk ) * ztmask_b(ji,jj,jk) 547 552 548 553 ! heat diff 549 zdtem = ts 554 zdtem = ts(ji,jj,jk,jp_tem,Kmm) * e3t(ji,jj,jk,Kmm) * tmask (ji,jj,jk) & 550 555 - zt_b(ji,jj,jk) * ze3t_b(ji,jj,jk) * ztmask_b(ji,jj,jk) 551 556 -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isfload.F90
r12340 r12622 13 13 USE isf_oce, ONLY: cn_isfload, rn_isfload_T, rn_isfload_S ! ice shelf variables 14 14 15 USE dom_oce , ONLY: e3w, gdept, risfdep, mikt! vertical scale factor15 USE dom_oce ! vertical scale factor 16 16 USE eosbn2 , ONLY: eos ! eos routine 17 17 … … 26 26 !! * Substitutions 27 27 # include "do_loop_substitute.h90" 28 # include "domzgr_substitute.h90" 28 29 29 30 CONTAINS … … 99 100 ! 100 101 ! top layer of the ice shelf 101 pisfload(ji,jj) = pisfload(ji,jj) + (znad + zrhd(ji,jj,1) ) * e3w(ji,jj,1,Kmm) 102 pisfload(ji,jj) = pisfload(ji,jj) + (znad + zrhd(ji,jj,1) ) & 103 & * e3w(ji,jj,1,Kmm) 102 104 ! 103 105 ! core layers of the ice shelf 104 106 DO jk = 2, ikt-1 105 pisfload(ji,jj) = pisfload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) * e3w(ji,jj,jk,Kmm) 107 pisfload(ji,jj) = pisfload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) & 108 & * e3w(ji,jj,jk,Kmm) 106 109 END DO 107 110 ! -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isfstp.F90
r12616 r12622 83 83 ! 1.2: compute misfkb, rhisf_tbl, rfrac (deepest level, thickness, fraction of deepest cell affected by tbl) 84 84 rhisf_tbl_cav(:,:) = rn_htbl * mskisf_cav(:,:) 85 DO jk = 1, jpk m185 DO jk = 1, jpk 86 86 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 87 87 END DO … … 108 108 ! by simplicity, we assume the top level where param applied do not change with time (done in init part) 109 109 rhisf_tbl_par(:,:) = rhisf0_tbl_par(:,:) 110 DO jk = 1, jpk m1110 DO jk = 1, jpk 111 111 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 112 112 END DO -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ISF/isftbl.F90
r12616 r12622 67 67 zhtbl = phtbl 68 68 ! 69 DO jk = 1, jpk m169 DO jk = 1, jpk 70 70 ze3u(:,:,jk) = e3u(:,:,jk,Kmm) 71 71 END DO … … 88 88 zhtbl = phtbl 89 89 ! 90 DO jk = 1, jpk m190 DO jk = 1, jpk 91 91 ze3v(:,:,jk) = e3v(:,:,jk,Kmm) 92 92 END DO … … 107 107 ! 108 108 ! compute tbl property at T point 109 DO jk = 1, jpk m1109 DO jk = 1, jpk 110 110 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 111 111 END DO -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/LDF/ldfslp.F90
r12377 r12622 75 75 !! * Substitutions 76 76 # include "do_loop_substitute.h90" 77 # include "domzgr_substitute.h90" 77 78 !!---------------------------------------------------------------------- 78 79 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 198 199 ! ! max slope = 1/2 * e3 / e1 199 200 IF (ln_zps .AND. jk==mbku(ji,jj)) & 200 zbu = MIN( zbu, - z1_slpmax * ABS( zau ) , - 2._wp * e1u(ji,jj) / e3u(ji,jj,jk,Kmm)* ABS( zau ) ) 201 zbu = MIN( zbu, - z1_slpmax * ABS( zau ) , & 202 & - 2._wp * e1u(ji,jj) / e3u(ji,jj,jk,Kmm)* ABS( zau ) ) 201 203 IF (ln_zps .AND. jk==mbkv(ji,jj)) & 202 zbv = MIN( zbv, - z1_slpmax * ABS( zav ) , - 2._wp * e2v(ji,jj) / e3v(ji,jj,jk,Kmm)* ABS( zav ) ) 204 zbv = MIN( zbv, - z1_slpmax * ABS( zav ) , & 205 & - 2._wp * e2v(ji,jj) / e3v(ji,jj,jk,Kmm)* ABS( zav ) ) 203 206 ! ! uslp and vslp output in zwz and zww, resp. 204 207 zfi = MAX( omlmask(ji,jj,jk), omlmask(ji+1,jj,jk) ) 205 208 zfj = MAX( omlmask(ji,jj,jk), omlmask(ji,jj+1,jk) ) 206 209 ! thickness of water column between surface and level k at u/v point 207 zdepu = 0.5_wp * ( ( gdept (ji,jj,jk,Kmm) + gdept (ji+1,jj,jk,Kmm) ) & 208 - 2 * MAX( risfdep(ji,jj), risfdep(ji+1,jj) ) - e3u(ji,jj,miku(ji,jj),Kmm) ) 209 zdepv = 0.5_wp * ( ( gdept (ji,jj,jk,Kmm) + gdept (ji,jj+1,jk,Kmm) ) & 210 - 2 * MAX( risfdep(ji,jj), risfdep(ji,jj+1) ) - e3v(ji,jj,mikv(ji,jj),Kmm) ) 210 zdepu = 0.5_wp * ( ( gdept (ji,jj,jk,Kmm) + gdept (ji+1,jj,jk,Kmm) ) & 211 & - 2 * MAX( risfdep(ji,jj), risfdep(ji+1,jj) ) & 212 & - e3u(ji,jj,miku(ji,jj),Kmm) ) 213 zdepv = 0.5_wp * ( ( gdept (ji,jj,jk,Kmm) + gdept (ji,jj+1,jk,Kmm) ) & 214 & - 2 * MAX( risfdep(ji,jj), risfdep(ji,jj+1) ) & 215 & - e3v(ji,jj,mikv(ji,jj),Kmm) ) 211 216 ! 212 217 zwz(ji,jj,jk) = ( ( 1._wp - zfi) * zau / ( zbu - zeps ) & -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/LDF/ldftra.F90
r12377 r12622 95 95 !! * Substitutions 96 96 # include "do_loop_substitute.h90" 97 # include "domzgr_substitute.h90" 97 98 !!---------------------------------------------------------------------- 98 99 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/SBC/fldread.F90
r12377 r12622 127 127 !! * Substitutions 128 128 # include "do_loop_substitute.h90" 129 # include "domzgr_substitute.h90" 129 130 !!---------------------------------------------------------------------- 130 131 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 617 618 zcoef = ( umask(ji,jj,jk) - wumask(ji,jj,jk) ) 618 619 zdhalf(jk) = zdhalf(jk-1) + e3u(ji,jj,jk-1,Kmm) 619 zdepth(jk) = 620 & 620 zdepth(jk) = zcoef * ( zdhalf(jk ) + 0.5_wp * e3uw(ji,jj,jk,Kmm)) & 621 & + (1._wp-zcoef) * ( zdepth(jk-1) + e3uw(ji,jj,jk,Kmm)) 621 622 END DO 622 623 CASE(3) ! depth of V points: we must not use gdept_n as we don't want to do a communication … … 631 632 zcoef = ( vmask(ji,jj,jk) - wvmask(ji,jj,jk) ) 632 633 zdhalf(jk) = zdhalf(jk-1) + e3v(ji,jj,jk-1,Kmm) 633 zdepth(jk) = 634 &+ (1._wp-zcoef) * ( zdepth(jk-1) + e3vw(ji,jj,jk,Kmm))634 zdepth(jk) = zcoef * ( zdhalf(jk ) + 0.5_wp * e3vw(ji,jj,jk,Kmm)) & 635 + (1._wp-zcoef) * ( zdepth(jk-1) + e3vw(ji,jj,jk,Kmm)) 635 636 END DO 636 637 END SELECT -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/SBC/sbcwave.F90
r12377 r12622 73 73 !! * Substitutions 74 74 # include "do_loop_substitute.h90" 75 # include "domzgr_substitute.h90" 75 76 !!---------------------------------------------------------------------- 76 77 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 207 208 & - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * usd(ji-1,jj,jk) & 208 209 & + e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) * vsd(ji,jj ,jk) & 209 & - e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * vsd(ji,jj-1,jk) ) * r1_e1e2t(ji,jj) 210 & - e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * vsd(ji,jj-1,jk) ) & 211 & * r1_e1e2t(ji,jj) 210 212 END_3D 211 213 ! -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/eosbn2.F90
r12377 r12622 180 180 !! * Substitutions 181 181 # include "do_loop_substitute.h90" 182 # include "domzgr_substitute.h90" 182 183 !!---------------------------------------------------------------------- 183 184 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_iso.F90
r12606 r12622 173 173 IF( ln_traldf_blp ) THEN ! bilaplacian operator 174 174 DO_3D_10_10( 2, jpkm1 ) 175 akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk) & 176 & * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) & 177 & / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 175 akz(ji,jj,jk) = 16._wp & 176 & * ah_wslp2 (ji,jj,jk) & 177 & * ( akz (ji,jj,jk) & 178 & + ah_wslp2(ji,jj,jk) & 179 & / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 178 180 END_3D 179 181 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_triad.F90
r12606 r12622 184 184 IF( ln_traldf_blp ) THEN ! bilaplacian operator 185 185 DO_3D_10_10( 2, jpkm1 ) 186 akz(ji,jj,jk) = & 187 & 16._wp * ah_wslp2(ji,jj,jk) & 188 & * ( akz(ji,jj,jk) & 189 & + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 186 akz(ji,jj,jk) = 16._wp & 187 & * ah_wslp2 (ji,jj,jk) & 188 & * ( akz (ji,jj,jk) & 189 & + ah_wslp2(ji,jj,jk) & 190 & / ( e3w (ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) ) ) 190 191 END_3D 191 192 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/zpshde.F90
r12377 r12622 32 32 !! * Substitutions 33 33 # include "do_loop_substitute.h90" 34 # include "domzgr_substitute.h90" 34 35 !!---------------------------------------------------------------------- 35 36 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 65 66 !! ___ | | | ___ | | | 66 67 !! 67 !! case 1-> e3w(i+1 ) >= e3w(i) ( and e3w(j+1) >= e3w(j) ) then68 !! t~ = t(i+1,j ,k) + (e3w(i+1 ) - e3w(i)) * dk(Ti+1)/e3w(i+1)69 !! ( t~ = t(i ,j+1,k) + (e3w( j+1) - e3w(j)) * dk(Tj+1)/e3w(j+1) )68 !! case 1-> e3w(i+1,:,:,Kmm) >= e3w(i,:,:,Kmm) ( and e3w(:,j+1,:,Kmm) >= e3w(:,j,:,Kmm) ) then 69 !! t~ = t(i+1,j ,k) + (e3w(i+1,j,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Ti+1)/e3w(i+1,j,k,Kmm) 70 !! ( t~ = t(i ,j+1,k) + (e3w(i,j+1,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Tj+1)/e3w(i,j+1,k,Kmm) ) 70 71 !! or 71 !! case 2-> e3w(i+1 ) <= e3w(i) ( and e3w(j+1) <= e3w(j) ) then72 !! t~ = t(i,j,k) + (e3w(i ) - e3w(i+1)) * dk(Ti)/e3w(i)73 !! ( t~ = t(i,j,k) + (e3w( j) - e3w(j+1)) * dk(Tj)/e3w(j) )72 !! case 2-> e3w(i+1,:,:,Kmm) <= e3w(i,:,:,Kmm) ( and e3w(:,j+1,:,Kmm) <= e3w(:,j,:,Kmm) ) then 73 !! t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i+1,j,k,Kmm)) * dk(Ti)/e3w(i,j,k,Kmm) 74 !! ( t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i,j+1,k,Kmm)) * dk(Tj)/e3w(i,j,k,Kmm) ) 74 75 !! Idem for di(s) and dj(s) 75 76 !! … … 109 110 iku = mbku(ji,jj) ; ikum1 = MAX( iku - 1 , 1 ) ! last and before last ocean level at u- & v-points 110 111 ikv = mbkv(ji,jj) ; ikvm1 = MAX( ikv - 1 , 1 ) ! if level first is a p-step, ik.m1=1 111 !!gm BUG ? when applied to before fields, e3w(:,:, :,Kbb) should be used....112 !!gm BUG ? when applied to before fields, e3w(:,:,k,Kbb) should be used.... 112 113 ze3wu = e3w(ji+1,jj ,iku,Kmm) - e3w(ji,jj,iku,Kmm) 113 114 ze3wv = e3w(ji ,jj+1,ikv,Kmm) - e3w(ji,jj,ikv,Kmm) … … 214 215 !! ___ | | | ___ | | | 215 216 !! 216 !! case 1-> e3w(i+1 ) >= e3w(i) ( and e3w(j+1) >= e3w(j) ) then217 !! t~ = t(i+1,j ,k) + (e3w(i+1 ) - e3w(i)) * dk(Ti+1)/e3w(i+1)218 !! ( t~ = t(i ,j+1,k) + (e3w( j+1) - e3w(j)) * dk(Tj+1)/e3w(j+1) )217 !! case 1-> e3w(i+1,j,k,Kmm) >= e3w(i,j,k,Kmm) ( and e3w(i,j+1,k,Kmm) >= e3w(i,j,k,Kmm) ) then 218 !! t~ = t(i+1,j ,k) + (e3w(i+1,j ,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Ti+1)/e3w(i+1,j ,k,Kmm) 219 !! ( t~ = t(i ,j+1,k) + (e3w(i ,j+1,k,Kmm) - e3w(i,j,k,Kmm)) * dk(Tj+1)/e3w(i ,j+1,k,Kmm) ) 219 220 !! or 220 !! case 2-> e3w(i+1 ) <= e3w(i) ( and e3w(j+1) <= e3w(j) ) then221 !! t~ = t(i,j,k) + (e3w(i ) - e3w(i+1)) * dk(Ti)/e3w(i)222 !! ( t~ = t(i,j,k) + (e3w( j) - e3w(j+1)) * dk(Tj)/e3w(j) )221 !! case 2-> e3w(i+1,j,k,Kmm) <= e3w(i,j,k,Kmm) ( and e3w(i,j+1,k,Kmm) <= e3w(i,j,k,Kmm) ) then 222 !! t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i+1,j ,k,Kmm)) * dk(Ti)/e3w(i,j,k,Kmm) 223 !! ( t~ = t(i,j,k) + (e3w(i,j,k,Kmm) - e3w(i ,j+1,k,Kmm)) * dk(Tj)/e3w(i,j,k,Kmm) ) 223 224 !! Idem for di(s) and dj(s) 224 225 !! … … 356 357 ! (ISF) case partial step top and bottom in adjacent cell in vertical 357 358 ! cannot used e3w because if 2 cell water column, we have ps at top and bottom 358 ! in this case e3w(i,j ) - e3w(i,j+1) is not the distance between Tj~ and Tj359 ! in this case e3w(i,j,k,Kmm) - e3w(i,j+1,k,Kmm) is not the distance between Tj~ and Tj 359 360 ! the only common depth between cells (i,j) and (i,j+1) is gdepw_0 360 361 ze3wu = gdept(ji,jj,iku,Kmm) - gdept(ji+1,jj,iku,Kmm) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRD/trddyn.F90
r12377 r12622 37 37 !! * Substitutions 38 38 # include "do_loop_substitute.h90" 39 # include "domzgr_substitute.h90" 39 40 !!---------------------------------------------------------------------- 40 41 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRD/trdvor.F90
r12377 r12622 57 57 !! * Substitutions 58 58 # include "do_loop_substitute.h90" 59 # include "domzgr_substitute.h90" 59 60 !!---------------------------------------------------------------------- 60 61 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 192 193 DO jj = 1, jpjm1 193 194 vortrd(ji,jj,ktrd) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 194 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) 195 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 196 & / ( e1f(ji,jj) * e2f(ji,jj) ) 195 197 END DO 196 198 END DO … … 268 270 DO jj = 1, jpjm1 269 271 vortrd(ji,jj,jpvor_bev) = ( zvbet(ji+1,jj) - zvbet(ji,jj) & 270 & - ( zubet(ji,jj+1) - zubet(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) 272 & - ( zubet(ji,jj+1) - zubet(ji,jj) ) ) & 273 & / ( e1f(ji,jj) * e2f(ji,jj) ) 271 274 END DO 272 275 END DO … … 283 286 DO jj=1,jpjm1 284 287 vortrd(ji,jj,ktrd) = ( zvdpvor(ji+1,jj) - zvdpvor(ji,jj) & 285 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) 288 & - ( zudpvor(ji,jj+1) - zudpvor(ji,jj) ) ) & 289 & / ( e1f(ji,jj) * e2f(ji,jj) ) 286 290 END DO 287 291 END DO … … 345 349 DO jj = 1, jpjm1 346 350 vor_avr(ji,jj) = ( ( zvv(ji+1,jj) - zvv(ji,jj) ) & 347 & - ( zuu(ji,jj+1) - zuu(ji,jj) ) ) / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 351 & - ( zuu(ji,jj+1) - zuu(ji,jj) ) ) & 352 & / ( e1f(ji,jj) * e2f(ji,jj) ) * fmask(ji,jj,1) 348 353 END DO 349 354 END DO -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfddm.F90
r12377 r12622 94 94 DO_2D_11_11 95 95 zrw = ( gdepw(ji,jj,jk ,Kmm) - gdept(ji,jj,jk,Kmm) ) & 96 !!gm please, use e3w (:,:,:,Kmm)below96 !!gm please, use e3w at Kmm below 97 97 & / ( gdept(ji,jj,jk-1,Kmm) - gdept(ji,jj,jk,Kmm) ) 98 98 ! -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfgls.F90
r12616 r12622 105 105 !! * Substitutions 106 106 # include "do_loop_substitute.h90" 107 # include "domzgr_substitute.h90" 107 108 !!---------------------------------------------------------------------- 108 109 !! NEMO/OCE 4.0 , NEMO Consortium (2018) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfiwm.F90
r12377 r12622 50 50 !! * Substitutions 51 51 # include "do_loop_substitute.h90" 52 # include "domzgr_substitute.h90" 52 53 !!---------------------------------------------------------------------- 53 54 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 93 94 !! 2. Pycnocline-intensified low-mode dissipation 94 95 !! zemx_iwm(z) = ( epyc_iwm / rau0 ) * ( sqrt(rn2(z))^nn_zpyc ) 95 !! / SUM( sqrt(rn2(z))^nn_zpyc * e3w (z) )96 !! / SUM( sqrt(rn2(z))^nn_zpyc * e3w[z) ) 96 97 !! where epyc_iwm is a map of available power, and nn_zpyc 97 98 !! is the chosen stratification-dependence of the internal wave … … 99 100 !! 3. WKB-height dependent high mode dissipation 100 101 !! zemx_iwm(z) = ( ebot_iwm / rau0 ) * rn2(z) * EXP(-z_wkb(z)/hbot_iwm) 101 !! / SUM( rn2(z) * EXP(-z_wkb(z)/hbot_iwm) * e3w (z) )102 !! / SUM( rn2(z) * EXP(-z_wkb(z)/hbot_iwm) * e3w[z) ) 102 103 !! where hbot_iwm is the characteristic length scale of the WKB bottom 103 104 !! intensification, ebot_iwm is a map of available power, and z_wkb is the 104 105 !! WKB-stretched height above bottom defined as 105 !! z_wkb(z) = H * SUM( sqrt(rn2(z'>=z)) * e3w (z'>=z) )106 !! / SUM( sqrt(rn2(z')) * e3w (z') )106 !! z_wkb(z) = H * SUM( sqrt(rn2(z'>=z)) * e3w[z'>=z) ) 107 !! / SUM( sqrt(rn2(z')) * e3w[z') ) 107 108 !! 108 109 !! - update the model vertical eddy viscosity and diffusivity: … … 177 178 zfact(:,:) = 0._wp 178 179 DO jk = 2, jpkm1 ! part independent of the level 179 zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk) 180 zfact(:,:) = & 181 & zfact(:,:) + & 182 & e3w(:,:,jk,Kmm) * SQRT( MAX( 0._wp, rn2(:,:,jk) ) ) * wmask(:,:,jk) 180 183 END DO 181 184 ! -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfmxl.F90
r12377 r12622 100 100 DO_3D_11_11( nlb10, jpkm1 ) 101 101 ikt = mbkt(ji,jj) 102 hmlp(ji,jj) = hmlp(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 102 hmlp(ji,jj) = & 103 & hmlp(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 103 104 IF( hmlp(ji,jj) < zN2_c ) nmln(ji,jj) = MIN( jk , ikt ) + 1 ! Mixed layer level 104 105 END_3D -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfosm.F90
r12616 r12622 596 596 zwb_ent(ji,jj) = 0._wp 597 597 ENDIF 598 inhml = & 599 & MAX( INT( zari * zhbl(ji,jj) / e3t(ji,jj,ibld(ji,jj),Kmm) ), & 600 & 1 ) 598 inhml = MAX( INT( zari * zhbl(ji,jj) & 599 & / e3t(ji,jj,ibld(ji,jj),Kmm) ), 1 ) 601 600 imld(ji,jj) = MAX( ibld(ji,jj) - inhml, 1) 602 601 zhml(ji,jj) = gdepw(ji,jj,imld(ji,jj),Kmm) … … 612 611 IF ( zdb_bl(ji,jj) > 0._wp ) THEN 613 612 ! pycnocline thickness set by stratification - use same relationship as for neutral conditions. 614 zari = MIN( 4.5 * ( zvstr(ji,jj)**2 ) & 615 & / ( zdb_bl(ji,jj) * zhbl(ji,jj) ) + 0.01 , 0.2 ) 616 inhml = & 617 & MAX( INT( zari * zhbl(ji,jj) / e3t(ji,jj,ibld(ji,jj),Kmm) ), & 618 & 1 ) 613 zari = MIN( 4.5 * ( zvstr(ji,jj)**2 ) & 614 & / ( zdb_bl(ji,jj) * zhbl(ji,jj) ) + 0.01 , 0.2 ) 615 inhml = MAX( INT( zari * zhbl(ji,jj) & 616 & / e3t(ji,jj,ibld(ji,jj),Kmm) ), 1 ) 619 617 imld(ji,jj) = MAX( ibld(ji,jj) - inhml, 1) 620 618 zhml(ji,jj) = gdepw(ji,jj,imld(ji,jj),Kmm) -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdfsh2.F90
r12377 r12622 24 24 !! * Substitutions 25 25 # include "do_loop_substitute.h90" 26 # include "domzgr_substitute.h90" 26 27 !!---------------------------------------------------------------------- 27 28 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 62 63 zsh2u(ji,jj) = ( p_avm(ji+1,jj,jk) + p_avm(ji,jj,jk) ) & 63 64 & * ( uu(ji,jj,jk-1,Kmm) - uu(ji,jj,jk,Kmm) ) & 64 & * ( uu(ji,jj,jk-1,Kbb) - uu(ji,jj,jk,Kbb) ) / ( e3uw(ji,jj,jk,Kmm) * e3uw(ji,jj,jk,Kbb) ) * wumask(ji,jj,jk) 65 & * ( uu(ji,jj,jk-1,Kbb) - uu(ji,jj,jk,Kbb) ) & 66 & / ( e3uw(ji,jj,jk ,Kmm) * e3uw(ji,jj,jk,Kbb) ) & 67 & * wumask(ji,jj,jk) 65 68 zsh2v(ji,jj) = ( p_avm(ji,jj+1,jk) + p_avm(ji,jj,jk) ) & 66 69 & * ( vv(ji,jj,jk-1,Kmm) - vv(ji,jj,jk,Kmm) ) & 67 & * ( vv(ji,jj,jk-1,Kbb) - vv(ji,jj,jk,Kbb) ) / ( e3vw(ji,jj,jk,Kmm) * e3vw(ji,jj,jk,Kbb) ) * wvmask(ji,jj,jk) 70 & * ( vv(ji,jj,jk-1,Kbb) - vv(ji,jj,jk,Kbb) ) & 71 & / ( e3vw(ji,jj,jk ,Kmm) * e3vw(ji,jj,jk,Kbb) ) & 72 & * wvmask(ji,jj,jk) 68 73 END_2D 69 74 DO_2D_00_00 -
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ZDF/zdftke.F90
r12616 r12622 261 261 ! 262 262 ! !* total energy produce by LC : cumulative sum over jk 263 zpelc(:,:,1) = 263 zpelc(:,:,1) = MAX( rn2b(:,:,1), 0._wp ) * gdepw(:,:,1,Kmm) * e3w(:,:,1,Kmm) 264 264 DO jk = 2, jpk 265 zpelc(:,:,jk) = zpelc(:,:,jk-1) + MAX( rn2b(:,:,jk), 0._wp ) * gdepw(:,:,jk,Kmm) * e3w(:,:,jk,Kmm) 265 zpelc(:,:,jk) = zpelc(:,:,jk-1) + & 266 & MAX( rn2b(:,:,jk), 0._wp ) * gdepw(:,:,jk,Kmm) * e3w(:,:,jk,Kmm) 266 267 END DO 267 268 ! !* finite Langmuir Circulation depth … … 317 318 ! ! eddy coefficient (ensure numerical stability) 318 319 zzd_up = zcof * MAX( p_avm(ji,jj,jk+1) + p_avm(ji,jj,jk ) , 2.e-5_wp ) & ! upper diagonal 319 & / ( e3t(ji,jj,jk ,Kmm) * e3w(ji,jj,jk ,Kmm) ) 320 & / ( e3t(ji,jj,jk ,Kmm) & 321 & * e3w(ji,jj,jk ,Kmm) ) 320 322 zzd_lw = zcof * MAX( p_avm(ji,jj,jk ) + p_avm(ji,jj,jk-1) , 2.e-5_wp ) & ! lower diagonal 321 & / ( e3t(ji,jj,jk-1,Kmm) * e3w(ji,jj,jk ,Kmm) ) 323 & / ( e3t(ji,jj,jk-1,Kmm) & 324 & * e3w(ji,jj,jk ,Kmm) ) 322 325 ! 323 326 zd_up(ji,jj,jk) = zzd_up ! Matrix (zdiag, zd_up, zd_lw) … … 483 486 CASE ( 2 ) ! |dk[xml]| bounded by e3t : 484 487 DO_3D_00_00( 2, jpkm1 ) 485 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 488 zmxlm(ji,jj,jk) = & 489 & MIN( zmxlm(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 486 490 END_3D 487 491 DO_3DS_00_00( jpkm1, 2, -1 ) … … 493 497 CASE ( 3 ) ! lup and ldown, |dk[xml]| bounded by e3t : 494 498 DO_3D_00_00( 2, jpkm1 ) 495 zmxld(ji,jj,jk) = MIN( zmxld(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 499 zmxld(ji,jj,jk) = & 500 & MIN( zmxld(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 496 501 END_3D 497 502 DO_3DS_00_00( jpkm1, 2, -1 ) 498 zmxlm(ji,jj,jk) = MIN( zmxlm(ji,jj,jk+1) + e3t(ji,jj,jk+1,Kmm), zmxlm(ji,jj,jk) ) 503 zmxlm(ji,jj,jk) = & 504 & MIN( zmxlm(ji,jj,jk+1) + e3t(ji,jj,jk+1,Kmm), zmxlm(ji,jj,jk) ) 499 505 END_3D 500 506 DO_3D_00_00( 2, jpkm1 )
Note: See TracChangeset
for help on using the changeset viewer.