Changeset 12631
- Timestamp:
- 2020-03-31T10:55:26+02:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/releases/r4.0/r4.0-HEAD/src/OCE/DIA/diaar5.F90
r12276 r12631 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 … … 54 53 !!---------------------------------------------------------------------- 55 54 ! 56 ALLOCATE( area(jpi,jpj),thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc )55 ALLOCATE( thick0(jpi,jpj) , sn0(jpi,jpj,jpk) , STAT=dia_ar5_alloc ) 57 56 ! 58 57 CALL mpp_sum ( 'diaar5', dia_ar5_alloc ) … … 89 88 ALLOCATE( zrhd(jpi,jpj,jpk) , zrhop(jpi,jpj,jpk) ) 90 89 ALLOCATE( ztsn(jpi,jpj,jpk,jpts) ) 91 zarea_ssh(:,:) = area(:,:) * sshn(:,:)92 ENDIF 93 ! 94 CALL iom_put( 'e2u' , e2u (:,:) )95 CALL iom_put( 'e1v' , e1v (:,:) )96 CALL iom_put( 'areacello', area(:,:) )90 zarea_ssh(:,:) = e1e2t(:,:) * sshn(:,:) 91 ENDIF 92 ! 93 CALL iom_put( 'e2u' , e2u (:,:) ) 94 CALL iom_put( 'e1v' , e1v (:,:) ) 95 CALL iom_put( 'areacello', e1e2t(:,:) ) 97 96 ! 98 97 IF( iom_use( 'volcello' ) .OR. iom_use( 'masscello' ) ) THEN 99 98 zrhd(:,:,jpk) = 0._wp ! ocean volume ; rhd is used as workspace 100 99 DO jk = 1, jpkm1 101 zrhd(:,:,jk) = area(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk)100 zrhd(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 102 101 END DO 103 102 CALL iom_put( 'volcello' , zrhd(:,:,:) ) ! WARNING not consistent with CMIP DR where volcello is at ca. 2000 … … 152 151 END IF 153 152 ! 154 zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )153 zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) ) 155 154 zssh_steric = - zarho / area_tot 156 155 CALL iom_put( 'sshthster', zssh_steric ) … … 178 177 END IF 179 178 ! 180 zarho = glob_sum( 'diaar5', area(:,:) * zbotpres(:,:) )179 zarho = glob_sum( 'diaar5', e1e2t(:,:) * zbotpres(:,:) ) 181 180 zssh_steric = - zarho / area_tot 182 181 CALL iom_put( 'sshsteric', zssh_steric ) … … 194 193 DO jj = 1, jpj 195 194 DO ji = 1, jpi 196 zztmp = area(ji,jj) * e3t_n(ji,jj,jk)195 zztmp = e1e2t(ji,jj) * e3t_n(ji,jj,jk) 197 196 ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * tsn(ji,jj,jk,jp_tem) 198 197 ztsn(ji,jj,1,jp_sal) = ztsn(ji,jj,1,jp_sal) + zztmp * tsn(ji,jj,jk,jp_sal) … … 242 241 z2d(:,:) = 0._wp 243 242 DO jk = 1, jpkm1 244 z2d(:,:) = z2d(:,:) + area(:,:) * e3t_n(:,:,jk) * ztpot(:,:,jk)243 z2d(:,:) = z2d(:,:) + e1e2t(:,:) * e3t_n(:,:,jk) * ztpot(:,:,jk) 245 244 END DO 246 245 ztemp = glob_sum( 'diaar5', z2d(:,:) ) … … 249 248 ! 250 249 IF( iom_use( 'ssttot' ) ) THEN ! Output potential temperature in case we use TEOS-10 251 zsst = glob_sum( 'diaar5', area(:,:) * ztpot(:,:,1) )250 zsst = glob_sum( 'diaar5', e1e2t(:,:) * ztpot(:,:,1) ) 252 251 CALL iom_put( 'ssttot', zsst / area_tot ) 253 252 ENDIF … … 268 267 ELSE 269 268 IF( iom_use('ssttot') ) THEN ! Output sst in case we use EOS-80 270 zsst = glob_sum( 'diaar5', area(:,:) * tsn(:,:,1,jp_tem) )269 zsst = glob_sum( 'diaar5', e1e2t(:,:) * tsn(:,:,1,jp_tem) ) 271 270 CALL iom_put('ssttot', zsst / area_tot ) 272 271 ENDIF … … 400 399 IF( dia_ar5_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'dia_ar5_init : unable to allocate arrays' ) 401 400 402 area(:,:) = e1e2t(:,:) 403 area_tot = glob_sum( 'diaar5', area(:,:) ) 401 area_tot = glob_sum( 'diaar5', e1e2t(:,:) ) 404 402 405 403 ALLOCATE( zvol0(jpi,jpj) ) … … 410 408 DO ji = 1, jpi 411 409 idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 412 zvol0 (ji,jj) = zvol0 (ji,jj) + idep * area(ji,jj)410 zvol0 (ji,jj) = zvol0 (ji,jj) + idep * e1e2t(ji,jj) 413 411 thick0(ji,jj) = thick0(ji,jj) + idep 414 412 END DO
Note: See TracChangeset
for help on using the changeset viewer.