- Timestamp:
- 2020-04-08T21:37:59+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev _r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF5 ^/vendors/AGRIF/dev@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 9 # SETTE 10 ^/utils/CI/sette@HEAD sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/DIA/diaar5.F90
r12680 r12724 32 32 REAL(wp) :: vol0 ! ocean volume (interior domain) 33 33 REAL(wp) :: area_tot ! total ocean surface (interior domain) 34 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,: ) :: area ! cell surface (interior domain)35 34 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,: ) :: thick0 ! ocean thickness (interior domain) 36 35 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sn0 ! initial salinity … … 55 54 !!---------------------------------------------------------------------- 56 55 ! 57 ALLOCATE( area(jpi,jpj),thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc )56 ALLOCATE( thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 58 57 ! 59 58 CALL mpp_sum ( 'diaar5', dia_ar5_alloc ) … … 91 90 ALLOCATE( zrhd(jpi,jpj,jpk) , zrhop(jpi,jpj,jpk) ) 92 91 ALLOCATE( ztsn(jpi,jpj,jpk,jpts) ) 93 zarea_ssh(:,:) = area(:,:) * ssh(:,:,Kmm)94 ENDIF 95 ! 96 CALL iom_put( 'e2u' , e2u (:,:) )97 CALL iom_put( 'e1v' , e1v (:,:) )98 CALL iom_put( 'areacello', area(:,:) )92 zarea_ssh(:,:) = e1e2t(:,:) * ssh(:,:,Kmm) 93 ENDIF 94 ! 95 CALL iom_put( 'e2u' , e2u (:,:) ) 96 CALL iom_put( 'e1v' , e1v (:,:) ) 97 CALL iom_put( 'areacello', e1e2t(:,:) ) 99 98 ! 100 99 IF( iom_use( 'volcello' ) .OR. iom_use( 'masscello' ) ) THEN 101 100 zrhd(:,:,jpk) = 0._wp ! ocean volume ; rhd is used as workspace 102 101 DO jk = 1, jpkm1 103 zrhd(:,:,jk) = area(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk)102 zrhd(:,:,jk) = e1e2t(:,:) * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 104 103 END DO 105 104 DO jk = 1, jpk 106 z3d(:,:,jk) = r au0 * e3t(:,:,jk,Kmm) * tmask(:,:,jk)105 z3d(:,:,jk) = rho0 * e3t(:,:,jk,Kmm) * tmask(:,:,jk) 107 106 END DO 108 107 CALL iom_put( 'volcello' , zrhd(:,:,:) ) ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 … … 155 154 END IF 156 155 ! 157 zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )156 zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) ) 158 157 zssh_steric = - zarho / area_tot 159 158 CALL iom_put( 'sshthster', zssh_steric ) … … 181 180 END IF 182 181 ! 183 zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )182 zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) ) 184 183 zssh_steric = - zarho / area_tot 185 184 CALL iom_put( 'sshsteric', zssh_steric ) 186 185 ! ! ocean bottom pressure 187 zztmp = r au0 * grav * 1.e-4_wp ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa186 zztmp = rho0 * grav * 1.e-4_wp ! recover pressure from pressure anomaly and cover to dbar = 1.e4 Pa 188 187 zbotpres(:,:) = zztmp * ( zbotpres(:,:) + ssh(:,:,Kmm) + thick0(:,:) ) 189 188 CALL iom_put( 'botpres', zbotpres ) … … 195 194 ztsn(:,:,:,:) = 0._wp ! ztsn(:,:,1,jp_tem/sal) is used here as 2D Workspace for temperature & salinity 196 195 DO_3D_11_11( 1, jpkm1 ) 197 zztmp = area(ji,jj) * e3t(ji,jj,jk,Kmm)196 zztmp = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) 198 197 ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * ts(ji,jj,jk,jp_tem,Kmm) 199 198 ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * ts(ji,jj,jk,jp_sal,Kmm) … … 217 216 ztemp = glob_sum( 'diaar5', ztsn(:,:,1,jp_tem) ) 218 217 zsal = glob_sum( 'diaar5', ztsn(:,:,1,jp_sal) ) 219 zmass = r au0 * ( zarho + zvol )218 zmass = rho0 * ( zarho + zvol ) 220 219 ! 221 220 CALL iom_put( 'masstot', zmass ) … … 241 240 z2d(:,:) = 0._wp 242 241 DO jk = 1, jpkm1 243 z2d(:,:) = z2d(:,:) + area(:,:) * e3t(:,:,jk,Kmm) * ztpot(:,:,jk)242 z2d(:,:) = z2d(:,:) + e1e2t(:,:) * e3t(:,:,jk,Kmm) * ztpot(:,:,jk) 244 243 END DO 245 244 ztemp = glob_sum( 'diaar5', z2d(:,:) ) … … 248 247 ! 249 248 IF( iom_use( 'ssttot' ) ) THEN ! Output potential temperature in case we use TEOS-10 250 zsst = glob_sum( 'diaar5', area(:,:) * ztpot(:,:,1) )249 zsst = glob_sum( 'diaar5', e1e2t(:,:) * ztpot(:,:,1) ) 251 250 CALL iom_put( 'ssttot', zsst / area_tot ) 252 251 ENDIF … … 255 254 z2d(:,:) = 0._wp 256 255 DO_3D_11_11( 1, jpkm1 ) 257 z2d(ji,jj) = z2d(ji,jj) + r au0 * e3t(ji,jj,jk,Kmm) * ztpot(ji,jj,jk)256 z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) * ztpot(ji,jj,jk) 258 257 END_3D 259 258 CALL iom_put( 'tosmint_pot', z2d ) … … 263 262 ELSE 264 263 IF( iom_use('ssttot') ) THEN ! Output sst in case we use EOS-80 265 zsst = glob_sum( 'diaar5', area(:,:) * ts(:,:,1,jp_tem,Kmm) )264 zsst = glob_sum( 'diaar5', e1e2t(:,:) * ts(:,:,1,jp_tem,Kmm) ) 266 265 CALL iom_put('ssttot', zsst / area_tot ) 267 266 ENDIF … … 289 288 ELSE 290 289 DO_3D_11_11( 1, jpk ) 291 zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * r au0 * e3w(ji,jj,jk,Kmm)290 zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rho0 * e3w(ji,jj,jk,Kmm) 292 291 END_3D 293 292 ENDIF … … 329 328 CALL lbc_lnk( 'diaar5', z2d, 'U', -1. ) 330 329 IF( cptr == 'adv' ) THEN 331 IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , r au0_rcp * z2d ) ! advective heat transport in i-direction332 IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , r au0 * z2d ) ! advective salt transport in i-direction330 IF( ktra == jp_tem ) CALL iom_put( 'uadv_heattr' , rho0_rcp * z2d ) ! advective heat transport in i-direction 331 IF( ktra == jp_sal ) CALL iom_put( 'uadv_salttr' , rho0 * z2d ) ! advective salt transport in i-direction 333 332 ENDIF 334 333 IF( cptr == 'ldf' ) THEN 335 IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , r au0_rcp * z2d ) ! diffusive heat transport in i-direction336 IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , r au0 * z2d ) ! diffusive salt transport in i-direction334 IF( ktra == jp_tem ) CALL iom_put( 'udiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in i-direction 335 IF( ktra == jp_sal ) CALL iom_put( 'udiff_salttr' , rho0 * z2d ) ! diffusive salt transport in i-direction 337 336 ENDIF 338 337 ! … … 343 342 CALL lbc_lnk( 'diaar5', z2d, 'V', -1. ) 344 343 IF( cptr == 'adv' ) THEN 345 IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , r au0_rcp * z2d ) ! advective heat transport in j-direction346 IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , r au0 * z2d ) ! advective salt transport in j-direction344 IF( ktra == jp_tem ) CALL iom_put( 'vadv_heattr' , rho0_rcp * z2d ) ! advective heat transport in j-direction 345 IF( ktra == jp_sal ) CALL iom_put( 'vadv_salttr' , rho0 * z2d ) ! advective salt transport in j-direction 347 346 ENDIF 348 347 IF( cptr == 'ldf' ) THEN 349 IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , r au0_rcp * z2d ) ! diffusive heat transport in j-direction350 IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , r au0 * z2d ) ! diffusive salt transport in j-direction348 IF( ktra == jp_tem ) CALL iom_put( 'vdiff_heattr' , rho0_rcp * z2d ) ! diffusive heat transport in j-direction 349 IF( ktra == jp_sal ) CALL iom_put( 'vdiff_salttr' , rho0 * z2d ) ! diffusive salt transport in j-direction 351 350 ENDIF 352 351 … … 379 378 IF( dia_ar5_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 380 379 381 area(:,:) = e1e2t(:,:) 382 area_tot = glob_sum( 'diaar5', area(:,:) ) 380 area_tot = glob_sum( 'diaar5', e1e2t(:,:) ) 383 381 384 382 ALLOCATE( zvol0(jpi,jpj) ) … … 387 385 DO_3D_11_11( 1, jpkm1 ) 388 386 idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 389 zvol0 (ji,jj) = zvol0 (ji,jj) + idep * area(ji,jj)387 zvol0 (ji,jj) = zvol0 (ji,jj) + idep * e1e2t(ji,jj) 390 388 thick0(ji,jj) = thick0(ji,jj) + idep 391 389 END_3D
Note: See TracChangeset
for help on using the changeset viewer.