Changeset 11993 for NEMO/trunk/src/TOP/PISCES
- Timestamp:
- 2019-11-28T11:20:53+01:00 (4 years ago)
- Location:
- NEMO/trunk/src/TOP/PISCES/P4Z
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/TOP/PISCES/P4Z/p4zflx.F90
r11989 r11993 160 160 zfld = zfco2 * chemc(ji,jj,1) * zkgco2(ji,jj) ! (mol/L) * (m/s) 161 161 zflu = zh2co3(ji,jj) * zkgco2(ji,jj) ! (mol/L) (m/s) ? 162 oce_co2(ji,jj) = ( zfld - zflu ) * tmask(ji,jj,1)162 oce_co2(ji,jj) = ( zfld - zflu ) * rfact2 * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000. 163 163 ! compute the trend 164 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + oce_co2(ji,jj) * rfact2 / e3t_n(ji,jj,1)164 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) * rfact2 / e3t_n(ji,jj,1) * tmask(ji,jj,1) 165 165 166 166 ! Compute O2 flux … … 174 174 IF( iom_use("tcflx") .OR. iom_use("tcflxcum") .OR. kt == nitrst & 175 175 & .OR. (ln_check_mass .AND. kt == nitend) ) & 176 t_oce_co2_flx = glob_sum( 'p4zflx', oce_co2(:,:) * e1e2t(:,:) * 1000.) ! Total Flux of Carbon176 t_oce_co2_flx = glob_sum( 'p4zflx', oce_co2(:,:) ) ! Total Flux of Carbon 177 177 t_oce_co2_flx_cum = t_oce_co2_flx_cum + t_oce_co2_flx ! Cumulative Total Flux of Carbon 178 178 ! t_atm_co2_flx = glob_sum( 'p4zflx', satmco2(:,:) * e1e2t(:,:) ) ! Total atmospheric pCO2 … … 186 186 187 187 IF( lk_iomput .AND. knt == nrdttrc ) THEN 188 CALL iom_put( "AtmCo2" , satmco2(:,:) * tmask(:,:,1) ) ! Atmospheric CO2 concentration189 !190 188 ALLOCATE( zw2d(jpi,jpj) ) 191 189 IF( iom_use( "Cflx" ) ) THEN 192 zw2d(:,:) = oce_co2(:,:) * 1000. ! conversion in molC/m2/s190 zw2d(:,:) = oce_co2(:,:) / e1e2t(:,:) * rfact2r 193 191 CALL iom_put( "Cflx" , zw2d ) 194 192 ENDIF 195 193 IF( iom_use( "Oflx" ) ) THEN 196 zw2d(:,:) = zoflx(:,:) * 1000 .194 zw2d(:,:) = zoflx(:,:) * 1000 * tmask(:,:,1) 197 195 CALL iom_put( "Oflx" , zw2d ) 198 196 ENDIF … … 205 203 CALL iom_put( "Dpco2" , zw2d ) 206 204 ENDIF 207 IF( iom_use( "pCO2sea" ) ) THEN208 zw2d(:,:) = ( zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1)209 CALL iom_put( "pCO2sea" , zw2d )210 ENDIF211 212 205 IF( iom_use( "Dpo2" ) ) THEN 213 206 zw2d(:,:) = ( atcox * patm(:,:) - atcox * trb(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) 214 207 CALL iom_put( "Dpo2" , zw2d ) 215 208 ENDIF 216 CALL iom_put( "tcflx" , t_oce_co2_flx 217 CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum ) ! molC209 CALL iom_put( "tcflx" , t_oce_co2_flx * rfact2r ) ! molC/s 210 CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum ) ! molC 218 211 ! 219 212 DEALLOCATE( zw2d ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zsms.F90
r11989 r11993 35 35 INTEGER :: numco2, numnut, numnit ! logical unit for co2 budget 36 36 REAL(wp) :: alkbudget, no3budget, silbudget, ferbudget, po4budget 37 REAL(wp) :: xfact , xfact1, xfact2, xfact337 REAL(wp) :: xfact1, xfact2, xfact3 38 38 39 39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnegtr ! Array used to indicate negative tracer values … … 63 63 REAL(wp) :: ztra 64 64 CHARACTER (len=25) :: charout 65 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d66 REAL(wp), ALLOCATABLE, DIMENSION(:,:,: ) :: zw3d67 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrdt ! 4D workspace68 69 65 !!--------------------------------------------------------------------- 70 66 ! … … 89 85 rfact = r2dttrc 90 86 ! 91 ! trends computation initialisation92 IF( l_trdtrc ) THEN93 ALLOCATE( ztrdt(jpi,jpj,jpk,jp_pisces) ) !* store now fields before applying the Asselin filter94 ztrdt(:,:,:,:) = trn(:,:,:,:)95 ENDIF96 !97 98 87 IF( ( ln_top_euler .AND. kt == nittrc000 ) .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + nn_dttrc ) ) THEN 99 88 rfactr = 1. / rfact … … 101 90 rfact2r = 1. / rfact2 102 91 xstep = rfact2 / rday ! Time step duration for biology 103 xfact = 1.e+3 * rfact2r104 92 IF(lwp) WRITE(numout,*) 105 93 IF(lwp) WRITE(numout,*) ' Passive Tracer time step rfact = ', rfact, ' rdt = ', rdt … … 146 134 END DO 147 135 ! 148 IF( iom_use( 'INTdtAlk' ) .OR. iom_use( 'INTdtDIC' ) .OR. iom_use( 'INTdtFer' ) .OR. &149 & iom_use( 'INTdtDIN' ) .OR. iom_use( 'INTdtDIP' ) .OR. iom_use( 'INTdtSil' ) ) THEN150 !151 ALLOCATE( zw3d(jpi,jpj,jpk), zw2d(jpi,jpj) )152 zw3d(:,:,jpk) = 0.153 DO jk = 1, jpkm1154 zw3d(:,:,jk) = xnegtr(:,:,jk) * xfact * e3t_n(:,:,jk) * tmask(:,:,jk)155 ENDDO156 !157 zw2d(:,:) = 0.158 DO jk = 1, jpkm1159 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jptal)160 ENDDO161 CALL iom_put( 'INTdtAlk', zw2d )162 !163 zw2d(:,:) = 0.164 DO jk = 1, jpkm1165 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jpdic)166 ENDDO167 CALL iom_put( 'INTdtDIC', zw2d )168 !169 zw2d(:,:) = 0.170 DO jk = 1, jpkm1171 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * rno3 * ( tra(:,:,jk,jpno3) + tra(:,:,jk,jpnh4) )172 ENDDO173 CALL iom_put( 'INTdtDIN', zw2d )174 !175 zw2d(:,:) = 0.176 DO jk = 1, jpkm1177 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * po4r * tra(:,:,jk,jppo4)178 ENDDO179 CALL iom_put( 'INTdtDIP', zw2d )180 !181 zw2d(:,:) = 0.182 DO jk = 1, jpkm1183 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jpfer)184 ENDDO185 CALL iom_put( 'INTdtFer', zw2d )186 !187 zw2d(:,:) = 0.188 DO jk = 1, jpkm1189 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jpsil)190 ENDDO191 CALL iom_put( 'INTdtSil', zw2d )192 !193 DEALLOCATE( zw3d, zw2d )194 ENDIF195 !196 136 DO jn = jp_pcs0, jp_pcs1 197 137 tra(:,:,:,jn) = 0._wp … … 204 144 ENDIF 205 145 END DO 146 206 147 ! 207 148 IF( l_trdtrc ) THEN 208 149 DO jn = jp_pcs0, jp_pcs1 209 ztrdt(:,:,:,jn) = ( trb(:,:,:,jn) - ztrdt(:,:,:,jn) ) * rfact2r 210 CALL trd_trc( ztrdt(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 150 CALL trd_trc( tra(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 211 151 END DO 212 DEALLOCATE( ztrdt )213 152 END IF 214 153 #endif
Note: See TracChangeset
for help on using the changeset viewer.