Changeset 12276 for NEMO/trunk/src/TOP/PISCES
- Timestamp:
- 2019-12-20T12:14:26+01:00 (4 years ago)
- Location:
- NEMO/trunk/src/TOP/PISCES/P4Z
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/TOP/PISCES/P4Z/p4zfechem.F90
r11536 r12276 15 15 USE sms_pisces ! PISCES Source Minus Sink variables 16 16 USE p4zche ! chemical model 17 USE p4zsbc ! Boundary conditions from sediments17 USE p4zsbc ! Boundary conditions from sediments 18 18 USE prtctl_trc ! print control for debugging 19 19 USE iom ! I/O manager … … 71 71 IF( ln_timing ) CALL timing_start('p4z_fechem') 72 72 ! 73 zFe3 (:,:,:) = 0.74 zFeL1(:,:,:) = 0.75 zTL1 (:,:,:) = 0.76 73 77 74 ! Total ligand concentration : Ligands can be chosen to be constant or variable … … 209 206 IF( knt == nrdttrc ) THEN 210 207 zrfact2 = 1.e3 * rfact2r ! conversion from mol/L/timestep into mol/m3/s 211 IF( iom_use("Fe3") ) CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 212 IF( iom_use("FeL1") ) CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1 213 IF( iom_use("TL1") ) CALL iom_put("TL1" , zTL1 (:,:,:) * tmask(:,:,:) ) ! TL1 214 IF( iom_use("Totlig") ) CALL iom_put("Totlig" , ztotlig(:,:,:) * tmask(:,:,:) ) ! TL 215 IF( iom_use("Biron") ) CALL iom_put("Biron" , biron (:,:,:) * 1e9 * tmask(:,:,:) ) ! biron 216 IF( iom_use("FESCAV") ) CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 217 IF( iom_use("FECOLL") ) CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 218 IF( iom_use("LGWCOLL")) CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 208 IF( iom_use("Fe3") ) THEN 209 zFe3(:,:,jpk) = 0. ; CALL iom_put("Fe3" , zFe3(:,:,:) * tmask(:,:,:) ) ! Fe3+ 210 ENDIF 211 IF( iom_use("FeL1") ) THEN 212 zFeL1(:,:,jpk) = 0. ; CALL iom_put("FeL1", zFeL1(:,:,:) * tmask(:,:,:) ) ! FeL1 213 ENDIF 214 IF( iom_use("TL1") ) THEN 215 zTL1(:,:,jpk) = 0. ; CALL iom_put("TL1" , zTL1(:,:,:) * tmask(:,:,:) ) ! TL1 216 ENDIF 217 CALL iom_put("Totlig" , ztotlig(:,:,:) * tmask(:,:,:) ) ! TL 218 CALL iom_put("Biron" , biron (:,:,:) * 1e9 * tmask(:,:,:) ) ! biron 219 IF( iom_use("FESCAV") ) THEN 220 zscav3d (:,:,jpk) = 0. ; CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 221 ENDIF 222 IF( iom_use("FECOLL") ) THEN 223 zcoll3d (:,:,jpk) = 0. ; CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 224 ENDIF 225 IF( iom_use("LGWCOLL")) THEN 226 zlcoll3d(:,:,jpk) = 0. ; CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 227 ENDIF 219 228 ENDIF 220 229 ENDIF … … 254 263 ENDIF 255 264 ! 256 REWIND( numnatp_ref ) ! Namelist nampisfer in reference namelist : Pisces iron chemistry265 REWIND( numnatp_ref ) 257 266 READ ( numnatp_ref, nampisfer, IOSTAT = ios, ERR = 901) 258 267 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in reference namelist' ) 259 REWIND( numnatp_cfg ) ! Namelist nampisfer in configuration namelist : Pisces iron chemistry 268 269 REWIND( numnatp_cfg ) 260 270 READ ( numnatp_cfg, nampisfer, IOSTAT = ios, ERR = 902 ) 261 271 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisfer in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zflx.F90
r11993 r12276 80 80 CHARACTER (len=25) :: charout 81 81 REAL(wp), DIMENSION(jpi,jpj) :: zkgco2, zkgo2, zh2co3, zoflx, zpco2atm 82 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zw2d83 82 !!--------------------------------------------------------------------- 84 83 ! … … 160 159 zfld = zfco2 * chemc(ji,jj,1) * zkgco2(ji,jj) ! (mol/L) * (m/s) 161 160 zflu = zh2co3(ji,jj) * zkgco2(ji,jj) ! (mol/L) (m/s) ? 162 oce_co2(ji,jj) = ( zfld - zflu ) * rfact2 * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000.161 oce_co2(ji,jj) = ( zfld - zflu ) * tmask(ji,jj,1) 163 162 ! compute the trend 164 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) * rfact2 / e3t_n(ji,jj,1) * tmask(ji,jj,1)163 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + oce_co2(ji,jj) * rfact2 / e3t_n(ji,jj,1) 165 164 166 165 ! Compute O2 flux … … 174 173 IF( iom_use("tcflx") .OR. iom_use("tcflxcum") .OR. kt == nitrst & 175 174 & .OR. (ln_check_mass .AND. kt == nitend) ) & 176 t_oce_co2_flx = glob_sum( 'p4zflx', oce_co2(:,:) ) ! Total Flux of Carbon175 t_oce_co2_flx = glob_sum( 'p4zflx', oce_co2(:,:) * e1e2t(:,:) * 1000. ) ! Total Flux of Carbon 177 176 t_oce_co2_flx_cum = t_oce_co2_flx_cum + t_oce_co2_flx ! Cumulative Total Flux of Carbon 178 177 ! t_atm_co2_flx = glob_sum( 'p4zflx', satmco2(:,:) * e1e2t(:,:) ) ! Total atmospheric pCO2 … … 186 185 187 186 IF( lk_iomput .AND. knt == nrdttrc ) THEN 188 ALLOCATE( zw2d(jpi,jpj) ) 189 IF( iom_use( "Cflx" ) ) THEN 190 zw2d(:,:) = oce_co2(:,:) / e1e2t(:,:) * rfact2r 191 CALL iom_put( "Cflx" , zw2d ) 192 ENDIF 193 IF( iom_use( "Oflx" ) ) THEN 194 zw2d(:,:) = zoflx(:,:) * 1000 * tmask(:,:,1) 195 CALL iom_put( "Oflx" , zw2d ) 196 ENDIF 197 IF( iom_use( "Kg" ) ) THEN 198 zw2d(:,:) = zkgco2(:,:) * tmask(:,:,1) 199 CALL iom_put( "Kg" , zw2d ) 200 ENDIF 201 IF( iom_use( "Dpco2" ) ) THEN 202 zw2d(:,:) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 203 CALL iom_put( "Dpco2" , zw2d ) 204 ENDIF 205 IF( iom_use( "Dpo2" ) ) THEN 206 zw2d(:,:) = ( atcox * patm(:,:) - atcox * trb(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) 207 CALL iom_put( "Dpo2" , zw2d ) 208 ENDIF 209 CALL iom_put( "tcflx" , t_oce_co2_flx * rfact2r ) ! molC/s 210 CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum ) ! molC 211 ! 212 DEALLOCATE( zw2d ) 187 CALL iom_put( "AtmCo2" , satmco2(:,:) * tmask(:,:,1) ) ! Atmospheric CO2 concentration 188 CALL iom_put( "Cflx" , oce_co2(:,:) * 1000. ) 189 CALL iom_put( "Oflx" , zoflx(:,:) * 1000. ) 190 CALL iom_put( "Kg" , zkgco2(:,:) * tmask(:,:,1) ) 191 CALL iom_put( "Dpco2" , ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 192 CALL iom_put( "pCO2sea" , ( zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 193 CALL iom_put( "Dpo2" , ( atcox * patm(:,:) - atcox * trb(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 194 CALL iom_put( "tcflx" , t_oce_co2_flx ) ! molC/s 195 CALL iom_put( "tcflxcum", t_oce_co2_flx_cum ) ! molC 213 196 ENDIF 214 197 ! … … 239 222 ENDIF 240 223 ! 241 REWIND( numnatp_ref ) ! Namelist nampisext in reference namelist : Pisces atm. conditions224 REWIND( numnatp_ref ) 242 225 READ ( numnatp_ref, nampisext, IOSTAT = ios, ERR = 901) 243 226 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisext in reference namelist' ) 244 REWIND( numnatp_cfg ) ! Namelist nampisext in configuration namelist : Pisces atm. conditions 227 228 REWIND( numnatp_cfg ) 245 229 READ ( numnatp_cfg, nampisext, IOSTAT = ios, ERR = 902 ) 246 230 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisext in configuration namelist' ) … … 320 304 ENDIF 321 305 ! 322 REWIND( numnatp_ref ) ! Namelist nampisatm in reference namelist : Pisces atm. sea level pressure file323 306 READ ( numnatp_ref, nampisatm, IOSTAT = ios, ERR = 901) 324 307 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisatm in reference namelist' ) 325 REWIND( numnatp_cfg ) ! Namelist nampisatm in configuration namelist : Pisces atm. sea level pressure file326 308 READ ( numnatp_cfg, nampisatm, IOSTAT = ios, ERR = 902 ) 327 309 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisatm in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zligand.F90
r11536 r12276 43 43 INTEGER :: ji, jj, jk 44 44 REAL(wp) :: zlgwp, zlgwpr, zlgwr, zlablgw 45 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zrligprod 46 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 45 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zligprod 47 46 CHARACTER (len=25) :: charout 48 47 !!--------------------------------------------------------------------- … … 69 68 zligrem(ji,jj,jk) = zlgwr 70 69 zligpr(ji,jj,jk) = zlgwpr 71 z rligprod(ji,jj,jk)= zlgwp70 zligprod(ji,jj,jk) = zlgwp 72 71 ! 73 72 END DO … … 78 77 ! --------------------------------- 79 78 IF( lk_iomput .AND. knt == nrdttrc ) THEN 80 ALLOCATE( zw3d(jpi,jpj,jpk) )81 79 IF( iom_use( "LIGREM" ) ) THEN 82 zw3d(:,:,:) = zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 83 CALL iom_put( "LIGREM", zw3d ) 80 zligrem(:,:,jpk) = 0. ; CALL iom_put( "LIGREM", zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 84 81 ENDIF 85 82 IF( iom_use( "LIGPR" ) ) THEN 86 zw3d(:,:,:) = zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 87 CALL iom_put( "LIGPR", zw3d ) 83 zligpr(:,:,jpk) = 0. ; CALL iom_put( "LIGPR" , zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 88 84 ENDIF 89 85 IF( iom_use( "LPRODR" ) ) THEN 90 zw3d(:,:,:) = zrligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 91 CALL iom_put( "LPRODR", zw3d ) 86 zligprod(:,:,jpk) = 0. ; CALL iom_put( "LPRODR", zligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 92 87 ENDIF 93 DEALLOCATE( zw3d )94 88 ENDIF 95 89 ! … … 125 119 WRITE(numout,*) '~~~~~~~~~~~~~~~' 126 120 ENDIF 127 REWIND( numnatp_ref ) ! Namelist nampislig in reference namelist : Pisces remineralization 121 122 REWIND( numnatp_ref ) 128 123 READ ( numnatp_ref, nampislig, IOSTAT = ios, ERR = 901) 129 124 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislig in reference namelist' ) 130 REWIND( numnatp_cfg ) ! Namelist nampislig in configuration namelist : Pisces remineralization 125 126 REWIND( numnatp_cfg ) 131 127 READ ( numnatp_cfg, nampislig, IOSTAT = ios, ERR = 902 ) 132 128 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislig in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zlim.F90
r11536 r12276 215 215 ! 216 216 IF( lk_iomput .AND. knt == nrdttrc ) THEN ! save output diagnostics 217 IF( iom_use( "xfracal" ) )CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) ) ! euphotic layer deptht218 IF( iom_use( "LNnut" ) )CALL iom_put( "LNnut" , xlimphy(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term219 IF( iom_use( "LDnut" ) )CALL iom_put( "LDnut" , xlimdia(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term220 IF( iom_use( "LNFe" ) )CALL iom_put( "LNFe" , xlimnfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term221 IF( iom_use( "LDFe" ) )CALL iom_put( "LDFe" , xlimdfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term217 CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) ) ! euphotic layer deptht 218 CALL iom_put( "LNnut" , xlimphy(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 219 CALL iom_put( "LDnut" , xlimdia(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 220 CALL iom_put( "LNFe" , xlimnfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 221 CALL iom_put( "LDFe" , xlimdfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 222 222 ENDIF 223 223 ! … … 252 252 ENDIF 253 253 ! 254 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters254 REWIND( numnatp_ref ) 255 255 READ ( numnatp_ref, namp4zlim, IOSTAT = ios, ERR = 901) 256 256 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zlim in reference namelist' ) 257 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters 257 258 REWIND( numnatp_cfg ) 258 259 READ ( numnatp_cfg, namp4zlim, IOSTAT = ios, ERR = 902 ) 259 260 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zlim in configuration namelist' ) … … 284 285 ENDIF 285 286 ! 286 nitrfac (:,:,:) = 0._wp 287 nitrfac (:,:,jpk) = 0._wp 288 nitrfac2(:,:,jpk) = 0._wp 289 xfracal (:,:,jpk) = 0._wp 290 xlimphy (:,:,jpk) = 0._wp 291 xlimdia (:,:,jpk) = 0._wp 292 xlimnfe (:,:,jpk) = 0._wp 293 xlimdfe (:,:,jpk) = 0._wp 287 294 ! 288 295 END SUBROUTINE p4z_lim_init -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zlys.F90
r11536 r12276 64 64 IF( ln_timing ) CALL timing_start('p4z_lys') 65 65 ! 66 zco3 (:,:,:) = 0.67 zcaldiss(:,:,:) = 0.68 66 zhinit (:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 69 67 ! … … 123 121 124 122 IF( lk_iomput .AND. knt == nrdttrc ) THEN 125 IF( iom_use( "PH" ) ) CALL iom_put( "PH" , -1. * LOG10( MAX( hi(:,:,:), rtrn ) ) * tmask(:,:,:) ) 126 IF( iom_use( "CO3" ) ) CALL iom_put( "CO3" , zco3(:,:,:) * 1.e+3 * tmask(:,:,:) ) 127 IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3 * tmask(:,:,:) ) 128 IF( iom_use( "DCAL" ) ) CALL iom_put( "DCAL" , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 123 CALL iom_put( "PH" , -1. * LOG10( MAX( hi(:,:,:), rtrn ) ) * tmask(:,:,:) ) 124 IF( iom_use( "CO3" ) ) THEN 125 zco3(:,:,jpk) = 0. ; CALL iom_put( "CO3" , zco3(:,:,:) * 1.e+3 * tmask(:,:,:) ) 126 ENDIF 127 IF( iom_use( "CO3sat" ) ) THEN 128 zco3sat(:,:,jpk) = 0. ; CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3 * tmask(:,:,:) ) 129 ENDIF 130 IF( iom_use( "DCAL" ) ) THEN 131 zcaldiss(:,:,jpk) = 0. ; CALL iom_put( "DCAL" , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 132 ENDIF 129 133 ENDIF 130 134 ! … … 162 166 ENDIF 163 167 ! 164 REWIND( numnatp_ref ) ! Namelist nampiscal in reference namelist : Pisces CaCO3 dissolution168 REWIND( numnatp_ref ) 165 169 READ ( numnatp_ref, nampiscal, IOSTAT = ios, ERR = 901) 166 170 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampiscal in reference namelist' ) 167 REWIND( numnatp_cfg ) ! Namelist nampiscal in configuration namelist : Pisces CaCO3 dissolution 171 172 REWIND( numnatp_cfg ) 168 173 READ ( numnatp_cfg, nampiscal, IOSTAT = ios, ERR = 902 ) 169 174 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampiscal in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zmeso.F90
r12232 r12276 224 224 ! 225 225 IF( lk_iomput .AND. knt == nrdttrc ) THEN 226 zgrazing2(:,:,jpk) = 0._wp 227 zfezoo2 (:,:,jpk) = 0._wp 228 CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) ! Total grazing of phyto by zooplankton 229 CALL iom_put( "PCAL" , prodcal (:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) ! Calcite production 230 CALL iom_put( "FEZOO2", zfezoo2 (:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 231 IF( ln_ligand ) THEN 232 zz2ligprod(:,:,jpk) = 0._wp 233 CALL iom_put( "LPRODZ2", zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 226 CALL iom_put( "PCAL" , prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) ! Calcite production 227 IF( iom_use("GRAZ2") ) THEN ! Total grazing of phyto by zooplankton 228 zgrazing2(:,:,jpk) = 0._wp ; CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 229 ENDIF 230 IF( iom_use("FEZOO2") ) THEN 231 zfezoo2 (:,:,jpk) = 0._wp ; CALL iom_put( "FEZOO2", zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 232 ENDIF 233 IF( ln_ligand ) THEN 234 zz2ligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ2", zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 234 235 ENDIF 235 236 ENDIF … … 270 271 ENDIF 271 272 ! 272 REWIND( numnatp_ref ) ! Namelist nampismes in reference namelist : Pisces mesozooplankton273 REWIND( numnatp_ref ) 273 274 READ ( numnatp_ref, namp4zmes, IOSTAT = ios, ERR = 901) 274 275 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist' ) 275 REWIND( numnatp_cfg ) ! Namelist nampismes in configuration namelist : Pisces mesozooplankton 276 277 REWIND( numnatp_cfg ) 276 278 READ ( numnatp_cfg, namp4zmes, IOSTAT = ios, ERR = 902 ) 277 279 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zmicro.F90
r12232 r12276 181 181 ! 182 182 IF( lk_iomput .AND. knt == nrdttrc ) THEN 183 zgrazing(:,:,jpk) = 0._wp 184 zfezoo (:,:,jpk) = 0._wp 185 CALL iom_put( "GRAZ1", zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) ! Total grazing of phyto by zooplankton 186 CALL iom_put( "FEZOO", zfezoo (:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 187 IF( ln_ligand ) THEN 188 zzligprod(:,:,jpk) = 0._wp 189 CALL iom_put( "LPRODZ", zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 183 IF( iom_use("GRAZ1") ) THEN ! Total grazing of phyto by zooplankton 184 zgrazing(:,:,jpk) = 0._wp ; CALL iom_put( "GRAZ1" , zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 185 ENDIF 186 IF( iom_use("FEZOO") ) THEN 187 zfezoo (:,:,jpk) = 0._wp ; CALL iom_put( "FEZOO" , zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 188 ENDIF 189 IF( ln_ligand ) THEN 190 zzligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ", zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)) 190 191 ENDIF 191 192 ENDIF … … 227 228 ENDIF 228 229 ! 229 REWIND( numnatp_ref ) ! Namelist nampiszoo in reference namelist : Pisces microzooplankton230 REWIND( numnatp_ref ) 230 231 READ ( numnatp_ref, namp4zzoo, IOSTAT = ios, ERR = 901) 231 232 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in reference namelist' ) 232 REWIND( numnatp_cfg ) ! Namelist nampiszoo in configuration namelist : Pisces microzooplankton 233 234 REWIND( numnatp_cfg ) 233 235 READ ( numnatp_cfg, namp4zzoo, IOSTAT = ios, ERR = 902 ) 234 236 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zzoo in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zopt.F90
r11536 r12276 71 71 ! 72 72 IF( ln_timing ) CALL timing_start('p4z_opt') 73 IF( ln_p5z ) ALLOCATE( zetmp5(jpi,jpj) )74 73 75 74 IF( knt == 1 .AND. ln_varpar ) CALL p4z_opt_sbc( kt ) … … 133 132 ! 134 133 DO jk = 1, nksrp 135 etot (:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk)134 etot (:,:,jk) = ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 136 135 enano(:,:,jk) = 1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 137 136 ediat(:,:,jk) = 1.62 * ze1(:,:,jk) + 0.74 * ze2(:,:,jk) + 0.63 * ze3(:,:,jk) … … 241 240 ! 242 241 IF( ln_p5z ) THEN 243 zetmp5 (:,:) = 0.e0242 ALLOCATE( zetmp5(jpi,jpj) ) ; zetmp5 (:,:) = 0.e0 244 243 DO jk = 1, nksrp 245 244 DO jj = 1, jpj … … 264 263 END DO 265 264 END DO 266 ENDIF 267 IF( lk_iomput ) THEN 268 IF( knt == nrdttrc ) THEN 269 IF( iom_use( "Heup" ) ) CALL iom_put( "Heup" , heup(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 270 IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 271 IF( iom_use( "PAR" ) ) CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 272 ENDIF 273 ENDIF 274 ! 275 IF( ln_p5z ) DEALLOCATE( zetmp5 ) 265 DEALLOCATE( zetmp5 ) 266 ENDIF 267 ! 268 IF( lk_iomput .AND. knt == nrdttrc ) THEN 269 CALL iom_put( "Heup" , heup(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 270 CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 271 CALL iom_put( "PAR" , emoy(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 272 ENDIF 273 ! 276 274 IF( ln_timing ) CALL timing_stop('p4z_opt') 277 275 ! … … 400 398 WRITE(numout,*) '~~~~~~~~~~~~ ' 401 399 ENDIF 402 REWIND( numnatp_ref ) ! Namelist nampisopt in reference namelist : Pisces attenuation coef. and PAR 400 401 REWIND( numnatp_ref ) 403 402 READ ( numnatp_ref, nampisopt, IOSTAT = ios, ERR = 901) 404 403 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisopt in reference namelist' ) 405 REWIND( numnatp_cfg ) ! Namelist nampisopt in configuration namelist : Pisces attenuation coef. and PAR 404 405 REWIND( numnatp_cfg ) 406 406 READ ( numnatp_cfg, nampisopt, IOSTAT = ios, ERR = 902 ) 407 407 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisopt in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zprod.F90
r11536 r12276 89 89 ! Allocate temporary workspace 90 90 ! 91 zprorcan(:,:, :) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp92 zprofen (:,:, :) = 0._wp ; zysopt (:,:,:) = 0._wp93 zpronewn(:,:, :) = 0._wp ; zpronewd(:,:,:) = 0._wp ; zprdia (:,:,:) = 0._wp94 zprbio (:,:, :) = 0._wp ; zprdch (:,:,:) = 0._wp ; zprnch (:,:,:) = 0._wp95 zmxl_fac(:,:, :) = 0._wp ; zmxl_chl(:,:,:) = 0._wp91 zprorcan(:,:,jpk) = 0._wp ; zprorcad(:,:,jpk) = 0._wp ; zprofed (:,:,jpk) = 0._wp 92 zprofen (:,:,jpk) = 0._wp ; zysopt (:,:,jpk) = 0._wp 93 zpronewn(:,:,jpk) = 0._wp ; zpronewd(:,:,jpk) = 0._wp ; zprdia (:,:,jpk) = 0._wp 94 zprbio (:,:,jpk) = 0._wp ; zprdch (:,:,jpk) = 0._wp ; zprnch (:,:,jpk) = 0._wp 95 zmxl_fac(:,:,jpk) = 0._wp ; zmxl_chl(:,:,jpk) = 0._wp 96 96 97 97 ! Computation of the optimal production … … 320 320 ! 321 321 IF( ln_ligand ) THEN 322 zpligprod1(:,:, :) = 0._wp ; zpligprod2(:,:,:) = 0._wp322 zpligprod1(:,:,jpk) = 0._wp ; zpligprod2(:,:,jpk) = 0._wp 323 323 DO jk = 1, jpkm1 324 324 DO jj = 1, jpj … … 341 341 & tpp = glob_sum( 'p4zprod', ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 342 342 343 IF( lk_iomput ) THEN 344 IF( knt == nrdttrc ) THEN 345 ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 346 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 347 ! 348 IF( iom_use( "PPPHYN" ) .OR. iom_use( "PPPHYD" ) ) THEN 349 zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 350 CALL iom_put( "PPPHYN" , zw3d ) 351 ! 352 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes 353 CALL iom_put( "PPPHYD" , zw3d ) 354 ENDIF 355 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) ) THEN 356 zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 357 CALL iom_put( "PPNEWN" , zw3d ) 358 ! 359 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatomes 360 CALL iom_put( "PPNEWD" , zw3d ) 361 ENDIF 362 IF( iom_use( "PBSi" ) ) THEN 363 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 364 CALL iom_put( "PBSi" , zw3d ) 365 ENDIF 366 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) ) THEN 367 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by nanophyto 368 CALL iom_put( "PFeN" , zw3d ) 369 ! 370 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes 371 CALL iom_put( "PFeD" , zw3d ) 372 ENDIF 373 IF( iom_use( "LPRODP" ) ) THEN 374 zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 375 CALL iom_put( "LPRODP" , zw3d ) 376 ENDIF 377 IF( iom_use( "LDETP" ) ) THEN 378 zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 379 CALL iom_put( "LDETP" , zw3d ) 380 ENDIF 381 IF( iom_use( "Mumax" ) ) THEN 382 zw3d(:,:,:) = zprmaxn(:,:,:) * tmask(:,:,:) ! Maximum growth rate 383 CALL iom_put( "Mumax" , zw3d ) 384 ENDIF 385 IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) ) THEN 386 zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ! Realized growth rate for nanophyto 387 CALL iom_put( "MuN" , zw3d ) 388 ! 389 zw3d(:,:,:) = zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ! Realized growth rate for diatoms 390 CALL iom_put( "MuD" , zw3d ) 391 ENDIF 392 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) ) THEN 393 zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 394 CALL iom_put( "LNlight" , zw3d ) 395 ! 396 zw3d(:,:,:) = zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 397 CALL iom_put( "LDlight" , zw3d ) 398 ENDIF 399 IF( iom_use( "TPP" ) ) THEN 400 zw3d(:,:,:) = ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production 401 CALL iom_put( "TPP" , zw3d ) 402 ENDIF 403 IF( iom_use( "TPNEW" ) ) THEN 404 zw3d(:,:,:) = ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production 405 CALL iom_put( "TPNEW" , zw3d ) 406 ENDIF 407 IF( iom_use( "TPBFE" ) ) THEN 408 zw3d(:,:,:) = ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:) ! total biogenic iron production 409 CALL iom_put( "TPBFE" , zw3d ) 410 ENDIF 411 IF( iom_use( "INTPPPHYN" ) .OR. iom_use( "INTPPPHYD" ) ) THEN 412 zw2d(:,:) = 0. 413 DO jk = 1, jpkm1 414 zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano 415 ENDDO 416 CALL iom_put( "INTPPPHYN" , zw2d ) 417 ! 418 zw2d(:,:) = 0. 419 DO jk = 1, jpkm1 420 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by diatom 421 ENDDO 422 CALL iom_put( "INTPPPHYD" , zw2d ) 423 ENDIF 424 IF( iom_use( "INTPP" ) ) THEN 425 zw2d(:,:) = 0. 426 DO jk = 1, jpkm1 427 zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 428 ENDDO 429 CALL iom_put( "INTPP" , zw2d ) 430 ENDIF 431 IF( iom_use( "INTPNEW" ) ) THEN 432 zw2d(:,:) = 0. 433 DO jk = 1, jpkm1 434 zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod 435 ENDDO 436 CALL iom_put( "INTPNEW" , zw2d ) 437 ENDIF 438 IF( iom_use( "INTPBFE" ) ) THEN ! total biogenic iron production ( vertically integrated ) 439 zw2d(:,:) = 0. 440 DO jk = 1, jpkm1 441 zw2d(:,:) = zw2d(:,:) + ( zprofen(:,:,jk) + zprofed(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bfe prod 442 ENDDO 443 CALL iom_put( "INTPBFE" , zw2d ) 444 ENDIF 445 IF( iom_use( "INTPBSI" ) ) THEN ! total biogenic silica production ( vertically integrated ) 446 zw2d(:,:) = 0. 447 DO jk = 1, jpkm1 448 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * zysopt(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bsi prod 449 ENDDO 450 CALL iom_put( "INTPBSI" , zw2d ) 451 ENDIF 452 IF( iom_use( "tintpp" ) ) CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 453 ! 454 DEALLOCATE( zw2d, zw3d ) 455 ENDIF 343 IF( lk_iomput .AND. knt == nrdttrc ) THEN 344 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 345 ! 346 CALL iom_put( "PPPHYN" , zprorcan(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by nanophyto 347 CALL iom_put( "PPPHYD" , zprorcad(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by diatomes 348 CALL iom_put( "PPNEWN" , zpronewn(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by nanophyto 349 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by diatomes 350 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 351 CALL iom_put( "PFeN" , zprofen(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by nanophyto 352 CALL iom_put( "PFeD" , zprofed(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by diatomes 353 CALL iom_put( "LPRODP" , zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 354 CALL iom_put( "LDETP" , zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 355 CALL iom_put( "Mumax" , zprmaxn(:,:,:) * tmask(:,:,:) ) ! Maximum growth rate 356 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 357 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 358 CALL iom_put( "LNlight" , zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 359 CALL iom_put( "LDlight" , zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ) 360 CALL iom_put( "TPP" , ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ) ! total primary production 361 CALL iom_put( "TPNEW" , ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ) ! total new production 362 CALL iom_put( "TPBFE" , ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:) ) ! total biogenic iron production 363 CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 456 364 ENDIF 457 365 … … 490 398 ENDIF 491 399 ! 492 REWIND( numnatp_ref ) ! Namelist nampisprod in reference namelist : Pisces phytoplankton production400 REWIND( numnatp_ref ) 493 401 READ ( numnatp_ref, namp4zprod, IOSTAT = ios, ERR = 901) 494 402 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zprod in reference namelist' ) 495 REWIND( numnatp_cfg ) ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production 403 404 REWIND( numnatp_cfg ) 496 405 READ ( numnatp_cfg, namp4zprod, IOSTAT = ios, ERR = 902 ) 497 406 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp4zprod in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zrem.F90
r11536 r12276 68 68 REAL(wp), DIMENSION(jpi,jpj ) :: ztempbac 69 69 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, zdepeff, zfebact 70 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d71 70 !!--------------------------------------------------------------------- 72 71 ! … … 274 273 ENDIF 275 274 276 IF( knt == nrdttrc ) THEN 277 zrfact2 = 1.e3 * rfact2r 278 ALLOCATE( zw3d(jpi,jpj,jpk) ) 279 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 275 IF( lk_iomput .AND. knt == nrdttrc ) THEN 276 zrfact2 = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 280 277 ! 281 IF( iom_use( "REMIN" ) ) THEN 282 zw3d(:,:,:) = zolimi(:,:,:) * tmask(:,:,:) * zfact ! Remineralisation rate 283 CALL iom_put( "REMIN" , zw3d ) 278 IF( iom_use( "REMIN" ) ) THEN ! Remineralisation rate 279 zolimi(:,:,jpk) = 0. ; CALL iom_put( "REMIN" , zolimi(:,:,:) * tmask(:,:,:) * zrfact2 ) 284 280 ENDIF 285 IF( iom_use( "DENIT" ) ) THEN286 zw3d(:,:,:) = denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zfact ! Denitrification287 CALL iom_put( "DENIT" , zw3d)281 CALL iom_put( "DENIT" , denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2 ) ! Denitrification 282 IF( iom_use( "BACT" ) ) THEN ! Bacterial biomass 283 zdepbac(:,:,jpk) = 0. ; CALL iom_put( "BACT", zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ) 288 284 ENDIF 289 IF( iom_use( "BACT" ) ) THEN 290 zw3d(:,:,:) = zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ! Bacterial biomass 291 CALL iom_put( "BACT", zw3d ) 292 ENDIF 293 IF( iom_use( "FEBACT" ) ) THEN 294 zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2 ! Bacterial iron consumption 295 CALL iom_put( "FEBACT" , zw3d ) 296 ENDIF 297 ! 298 DEALLOCATE( zw3d ) 285 CALL iom_put( "FEBACT" , zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2 ) 299 286 ENDIF 300 287 ! … … 327 314 ENDIF 328 315 ! 329 REWIND( numnatp_ref ) ! Namelist nampisrem in reference namelist : Pisces remineralization316 REWIND( numnatp_ref ) 330 317 READ ( numnatp_ref, nampisrem, IOSTAT = ios, ERR = 901) 331 318 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisrem in reference namelist' ) 332 REWIND( numnatp_cfg ) ! Namelist nampisrem in configuration namelist : Pisces remineralization 319 320 REWIND( numnatp_cfg ) 333 321 READ ( numnatp_cfg, nampisrem, IOSTAT = ios, ERR = 902 ) 334 322 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisrem in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zsed.F90
r10788 r12276 109 109 tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:) 110 110 ! 111 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironice" )) &111 IF( lk_iomput .AND. knt == nrdttrc ) & 112 112 & CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) ) ! iron flux from ice 113 113 ! … … 143 143 ENDDO 144 144 ! 145 IF( lk_iomput ) THEN 146 IF( knt == nrdttrc ) THEN 147 IF( iom_use( "Irondep" ) ) & 148 & CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron 149 IF( iom_use( "pdust" ) ) & 150 & CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 151 ENDIF 145 IF( lk_iomput .AND. knt == nrdttrc ) THEN 146 CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron 147 CALL iom_put( "pdust" , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 152 148 ENDIF 153 149 DEALLOCATE( zsidep, zpdep, zirondep ) … … 207 203 ENDIF 208 204 ! 209 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "HYDR" )) &205 IF( lk_iomput .AND. knt == nrdttrc ) & 210 206 & CALL iom_put( "HYDR", hydrofe(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! hydrothermal iron input 211 207 ENDIF … … 229 225 tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2 230 226 ! 231 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" )) &227 IF( lk_iomput .AND. knt == nrdttrc ) & 232 228 & CALL iom_put( "Ironsed", ironsed(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! iron inputs from sediments 233 229 ENDIF … … 467 463 IF( knt == nrdttrc ) THEN 468 464 zfact = 1.e+3 * rfact2r ! conversion from molC/l/kt to molN/m3/s 469 IF( iom_use("Nfix" ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) ) ! nitrogen fixation 470 IF( iom_use("INTNFIX") ) THEN ! nitrogen fixation rate in ocean ( vertically integrated ) 471 zwork(:,:) = 0. 472 DO jk = 1, jpkm1 473 zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * e3t_n(:,:,jk) * tmask(:,:,jk) 474 ENDDO 475 CALL iom_put( "INTNFIX" , zwork ) 476 ENDIF 477 IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 478 IF( iom_use("SedSi" ) ) CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) 479 IF( iom_use("SedC" ) ) CALL iom_put( "SedC", zsedc (:,:) * zfact ) 480 IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) 465 CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) ) ! nitrogen fixation 466 CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 467 CALL iom_put( "SedSi", zsedsi (:,:) * zfact ) 468 CALL iom_put( "SedC", zsedc (:,:) * zfact ) 469 CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) 481 470 ENDIF 482 471 ENDIF -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zsink.F90
r10425 r12276 62 62 CHARACTER (len=25) :: charout 63 63 REAL(wp) :: zmax, zfact 64 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d65 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d66 64 !!--------------------------------------------------------------------- 67 65 ! … … 129 127 & t_oce_co2_exp = glob_sum( 'p4zsink', ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * e1e2t(:,:) * tmask(:,:,1) ) 130 128 ! 131 IF( lk_iomput ) THEN 132 IF( knt == nrdttrc ) THEN 133 ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 134 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 135 ! 136 IF( iom_use( "EPC100" ) ) THEN 137 zw2d(:,:) = ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of carbon at 100m 138 CALL iom_put( "EPC100" , zw2d ) 139 ENDIF 140 IF( iom_use( "EPFE100" ) ) THEN 141 zw2d(:,:) = ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of iron at 100m 142 CALL iom_put( "EPFE100" , zw2d ) 143 ENDIF 144 IF( iom_use( "EPCAL100" ) ) THEN 145 zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 146 CALL iom_put( "EPCAL100" , zw2d ) 147 ENDIF 148 IF( iom_use( "EPSI100" ) ) THEN 149 zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 150 CALL iom_put( "EPSI100" , zw2d ) 151 ENDIF 152 IF( iom_use( "EXPC" ) ) THEN 153 zw3d(:,:,:) = ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of carbon in the water column 154 CALL iom_put( "EXPC" , zw3d ) 155 ENDIF 156 IF( iom_use( "EXPFE" ) ) THEN 157 zw3d(:,:,:) = ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of iron 158 CALL iom_put( "EXPFE" , zw3d ) 159 ENDIF 160 IF( iom_use( "EXPCAL" ) ) THEN 161 zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite 162 CALL iom_put( "EXPCAL" , zw3d ) 163 ENDIF 164 IF( iom_use( "EXPSI" ) ) THEN 165 zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 166 CALL iom_put( "EXPSI" , zw3d ) 167 ENDIF 168 IF( iom_use( "tcexp" ) ) CALL iom_put( "tcexp" , t_oce_co2_exp * zfact ) ! molC/s 169 ! 170 DEALLOCATE( zw2d, zw3d ) 171 ENDIF 129 IF( lk_iomput .AND. knt == nrdttrc ) THEN 130 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 131 ! 132 CALL iom_put( "EPC100" , ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ) ! Export of carbon at 100m 133 CALL iom_put( "EPFE100" , ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ) ! Export of iron at 100m 134 CALL iom_put( "EPCAL100", sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ) ! Export of calcite at 100m 135 CALL iom_put( "EPSI100" , sinksil(:,:,ik100) * zfact * tmask(:,:,1) ) ! Export of bigenic silica at 100m 136 CALL iom_put( "EXPC" , ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ) ! Export of carbon in the water column 137 CALL iom_put( "EXPFE" , ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ) ! Export of iron 138 CALL iom_put( "EXPCAL" , sinkcal(:,:,:) * zfact * tmask(:,:,:) ) ! Export of calcite 139 CALL iom_put( "EXPSI" , sinksil(:,:,:) * zfact * tmask(:,:,:) ) ! Export of bigenic silica 140 CALL iom_put( "tcexp" , t_oce_co2_exp * zfact ) ! molC/s 141 ! 172 142 ENDIF 173 143 ! -
NEMO/trunk/src/TOP/PISCES/P4Z/p4zsms.F90
r11993 r12276 35 35 INTEGER :: numco2, numnut, numnit ! logical unit for co2 budget 36 36 REAL(wp) :: alkbudget, no3budget, silbudget, ferbudget, po4budget 37 REAL(wp) :: xfact 1, xfact2, xfact337 REAL(wp) :: xfact, 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(:,: ) :: zw2d 66 REAL(wp), ALLOCATABLE, DIMENSION(:,:,: ) :: zw3d 67 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: ztrdt ! 4D workspace 68 65 69 !!--------------------------------------------------------------------- 66 70 ! … … 85 89 rfact = r2dttrc 86 90 ! 91 ! trends computation initialisation 92 IF( l_trdtrc ) THEN 93 ALLOCATE( ztrdt(jpi,jpj,jpk,jp_pisces) ) !* store now fields before applying the Asselin filter 94 ztrdt(:,:,:,:) = trn(:,:,:,:) 95 ENDIF 96 ! 97 87 98 IF( ( ln_top_euler .AND. kt == nittrc000 ) .OR. ( .NOT.ln_top_euler .AND. kt <= nittrc000 + nn_dttrc ) ) THEN 88 99 rfactr = 1. / rfact … … 90 101 rfact2r = 1. / rfact2 91 102 xstep = rfact2 / rday ! Time step duration for biology 103 xfact = 1.e+3 * rfact2r 92 104 IF(lwp) WRITE(numout,*) 93 105 IF(lwp) WRITE(numout,*) ' Passive Tracer time step rfact = ', rfact, ' rdt = ', rdt … … 134 146 END DO 135 147 ! 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' ) ) THEN 150 ! 151 ALLOCATE( zw3d(jpi,jpj,jpk), zw2d(jpi,jpj) ) 152 zw3d(:,:,jpk) = 0. 153 DO jk = 1, jpkm1 154 zw3d(:,:,jk) = xnegtr(:,:,jk) * xfact * e3t_n(:,:,jk) * tmask(:,:,jk) 155 ENDDO 156 ! 157 zw2d(:,:) = 0. 158 DO jk = 1, jpkm1 159 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jptal) 160 ENDDO 161 CALL iom_put( 'INTdtAlk', zw2d ) 162 ! 163 zw2d(:,:) = 0. 164 DO jk = 1, jpkm1 165 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jpdic) 166 ENDDO 167 CALL iom_put( 'INTdtDIC', zw2d ) 168 ! 169 zw2d(:,:) = 0. 170 DO jk = 1, jpkm1 171 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * rno3 * ( tra(:,:,jk,jpno3) + tra(:,:,jk,jpnh4) ) 172 ENDDO 173 CALL iom_put( 'INTdtDIN', zw2d ) 174 ! 175 zw2d(:,:) = 0. 176 DO jk = 1, jpkm1 177 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * po4r * tra(:,:,jk,jppo4) 178 ENDDO 179 CALL iom_put( 'INTdtDIP', zw2d ) 180 ! 181 zw2d(:,:) = 0. 182 DO jk = 1, jpkm1 183 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jpfer) 184 ENDDO 185 CALL iom_put( 'INTdtFer', zw2d ) 186 ! 187 zw2d(:,:) = 0. 188 DO jk = 1, jpkm1 189 zw2d(:,:) = zw2d(:,:) + zw3d(:,:,jk) * tra(:,:,jk,jpsil) 190 ENDDO 191 CALL iom_put( 'INTdtSil', zw2d ) 192 ! 193 DEALLOCATE( zw3d, zw2d ) 194 ENDIF 195 ! 136 196 DO jn = jp_pcs0, jp_pcs1 137 197 tra(:,:,:,jn) = 0._wp … … 144 204 ENDIF 145 205 END DO 146 147 206 ! 148 207 IF( l_trdtrc ) THEN 149 208 DO jn = jp_pcs0, jp_pcs1 150 CALL trd_trc( tra(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 209 ztrdt(:,:,:,jn) = ( trb(:,:,:,jn) - ztrdt(:,:,:,jn) ) * rfact2r 210 CALL trd_trc( ztrdt(:,:,:,jn), jn, jptra_sms, kt ) ! save trends 151 211 END DO 212 DEALLOCATE( ztrdt ) 152 213 END IF 153 214 #endif -
NEMO/trunk/src/TOP/PISCES/P4Z/p5zlim.F90
r11536 r12276 406 406 ! 407 407 IF( lk_iomput .AND. knt == nrdttrc ) THEN ! save output diagnostics 408 IF( iom_use( "xfracal" ) )CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) ) ! euphotic layer deptht409 IF( iom_use( "LNnut" ) )CALL iom_put( "LNnut" , xlimphy(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term410 IF( iom_use( "LPnut" ) )CALL iom_put( "LPnut" , xlimpic(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term411 IF( iom_use( "LDnut" ) )CALL iom_put( "LDnut" , xlimdia(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term412 IF( iom_use( "LNFe" ) )CALL iom_put( "LNFe" , xlimnfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term413 IF( iom_use( "LPFe" ) )CALL iom_put( "LPFe" , xlimpfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term414 IF( iom_use( "LDFe" ) )CALL iom_put( "LDFe" , xlimdfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term415 IF( iom_use( "SIZEN" ) ) CALL iom_put( "SIZEN" , sizen(:,:,:) * tmask(:,:,:) ) ! Iron limitation term416 IF( iom_use( "SIZEP" ) ) CALL iom_put( "SIZEP" , sizep(:,:,:) * tmask(:,:,:) ) ! Iron limitation term417 IF( iom_use( "SIZED" ) ) CALL iom_put( "SIZED" , sized(:,:,:) * tmask(:,:,:) ) ! Iron limitation term408 CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) ) ! euphotic layer deptht 409 CALL iom_put( "LNnut" , xlimphy(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 410 CALL iom_put( "LPnut" , xlimpic(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 411 CALL iom_put( "LDnut" , xlimdia(:,:,:) * tmask(:,:,:) ) ! Nutrient limitation term 412 CALL iom_put( "LNFe" , xlimnfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 413 CALL iom_put( "LPFe" , xlimpfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 414 CALL iom_put( "LDFe" , xlimdfe(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 415 CALL iom_put( "SIZEN" , sizen (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 416 CALL iom_put( "SIZEP" , sizep (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 417 CALL iom_put( "SIZED" , sized (:,:,:) * tmask(:,:,:) ) ! Iron limitation term 418 418 ENDIF 419 419 ! … … 448 448 !!---------------------------------------------------------------------- 449 449 ! 450 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters450 REWIND( numnatp_ref ) 451 451 READ ( numnatp_ref, namp5zlim, IOSTAT = ios, ERR = 901) 452 452 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampislim in reference namelist' ) 453 453 ! 454 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters454 REWIND( numnatp_cfg ) 455 455 READ ( numnatp_cfg, namp5zlim, IOSTAT = ios, ERR = 902 ) 456 456 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampislim in configuration namelist' ) … … 489 489 ENDIF 490 490 491 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters492 491 READ ( numnatp_ref, namp5zquota, IOSTAT = ios, ERR = 903) 493 492 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisquota in reference namelist' ) 494 493 ! 495 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters496 494 READ ( numnatp_cfg, namp5zquota, IOSTAT = ios, ERR = 904 ) 497 495 904 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampisquota in configuration namelist' ) … … 526 524 zpsiuptk = 2.3 * rno3 527 525 ! 528 nitrfac (:,:,:) = 0._wp 526 nitrfac(:,:,jpk) = 0._wp 527 xfracal(:,:,jpk) = 0._wp 528 xlimphy(:,:,jpk) = 0._wp 529 xlimpic(:,:,jpk) = 0._wp 530 xlimdia(:,:,jpk) = 0._wp 531 xlimnfe(:,:,jpk) = 0._wp 532 xlimpfe(:,:,jpk) = 0._wp 533 xlimdfe(:,:,jpk) = 0._wp 534 sizen (:,:,jpk) = 0._wp 535 sizep (:,:,jpk) = 0._wp 536 sized (:,:,jpk) = 0._wp 529 537 ! 530 538 END SUBROUTINE p5z_lim_init -
NEMO/trunk/src/TOP/PISCES/P4Z/p5zmeso.F90
r11536 r12276 86 86 CHARACTER (len=25) :: charout 87 87 REAL(wp) :: zrfact2, zmetexcess 88 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 89 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zz2ligprod 88 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing2, zfezoo2, zz2ligprod 90 89 91 90 !!--------------------------------------------------------------------- … … 93 92 IF( ln_timing ) CALL timing_start('p5z_meso') 94 93 ! 95 96 zgrazing(:,:,:) = 0._wp97 zfezoo2 (:,:,:) = 0._wp98 !99 IF (ln_ligand) THEN100 ALLOCATE( zz2ligprod(jpi,jpj,jpk) )101 zz2ligprod(:,:,:) = 0._wp102 ENDIF103 94 104 95 zmetexcess = 0.0 … … 224 215 225 216 ! Total grazing ( grazing by microzoo is already computed in p5zmicro ) 226 zgrazing (ji,jj,jk) = zgraztotc217 zgrazing2(ji,jj,jk) = zgraztotc 227 218 228 219 ! Stoichiometruc ratios of the food ingested by zooplanton … … 355 346 END DO 356 347 ! 357 IF( lk_iomput .AND. knt == nrdttrc ) THEN 358 ALLOCATE( zw3d(jpi,jpj,jpk) ) 359 IF( iom_use( "GRAZ2" ) ) THEN 360 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 361 CALL iom_put( "GRAZ2", zw3d ) 348 IF( lk_iomput .AND. knt == nrdttrc ) THEN 349 CALL iom_put( "PCAL" , prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) ! Calcite production 350 IF( iom_use("GRAZ2") ) THEN ! Total grazing of phyto by zooplankton 351 zgrazing2(:,:,jpk) = 0._wp ; CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 362 352 ENDIF 363 IF( iom_use( "PCAL" ) ) THEN 364 zw3d(:,:,:) = prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Calcite production 365 CALL iom_put( "PCAL", zw3d ) 353 IF( iom_use("FEZOO2") ) THEN 354 zfezoo2 (:,:,jpk) = 0._wp ; CALL iom_put( "FEZOO2", zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 366 355 ENDIF 367 IF( iom_use( "FEZOO2" ) ) THEN 368 zw3d(:,:,:) = zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 369 CALL iom_put( "FEZOO2", zw3d ) 356 IF( ln_ligand ) THEN 357 zz2ligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ2", zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 370 358 ENDIF 371 IF( iom_use( "LPRODZ2" ) .AND. ln_ligand ) THEN372 zw3d(:,:,:) = zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)373 CALL iom_put( "LPRODZ2" , zw3d )374 ENDIF375 DEALLOCATE( zw3d )376 359 ENDIF 377 360 ! … … 407 390 !!---------------------------------------------------------------------- 408 391 ! 409 REWIND( numnatp_ref ) ! Namelist nampismes in reference namelist : Pisces mesozooplankton392 REWIND( numnatp_ref ) 410 393 READ ( numnatp_ref, namp5zmes, IOSTAT = ios, ERR = 901) 411 394 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in reference namelist' ) 412 395 ! 413 REWIND( numnatp_cfg ) ! Namelist nampismes in configuration namelist : Pisces mesozooplankton396 REWIND( numnatp_cfg ) 414 397 READ ( numnatp_cfg, namp5zmes, IOSTAT = ios, ERR = 902 ) 415 398 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'nampismes in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p5zmicro.F90
r11536 r12276 84 84 REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz 85 85 REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess 86 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 87 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zzligprod 86 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo, zzligprod 88 87 CHARACTER (len=25) :: charout 89 88 !!--------------------------------------------------------------------- 90 89 ! 91 90 IF( ln_timing ) CALL timing_start('p5z_micro') 92 !93 IF (ln_ligand) THEN94 ALLOCATE( zzligprod(jpi,jpj,jpk) )95 zzligprod(:,:,:) = 0._wp96 ENDIF97 91 ! 98 92 zmetexcess = 0.0 … … 299 293 END DO 300 294 ! 301 IF( lk_iomput ) THEN 302 IF( knt == nrdttrc ) THEN 303 ALLOCATE( zw3d(jpi,jpj,jpk) ) 304 IF( iom_use( "GRAZ1" ) ) THEN 305 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 306 CALL iom_put( "GRAZ1", zw3d ) 307 ENDIF 308 IF( iom_use( "FEZOO" ) ) THEN 309 zw3d(:,:,:) = zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 310 CALL iom_put( "FEZOO", zw3d ) 311 ENDIF 312 IF( iom_use( "LPRODZ" ) .AND. ln_ligand ) THEN 313 zw3d(:,:,:) = zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 314 CALL iom_put( "LPRODZ" , zw3d ) 315 ENDIF 316 DEALLOCATE( zw3d ) 295 IF( lk_iomput .AND. knt == nrdttrc ) THEN 296 IF( iom_use("GRAZ1") ) THEN ! Total grazing of phyto by zooplankton 297 zgrazing(:,:,jpk) = 0._wp ; CALL iom_put( "GRAZ1" , zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 298 ENDIF 299 IF( iom_use("FEZOO") ) THEN 300 zfezoo (:,:,jpk) = 0._wp ; CALL iom_put( "FEZOO" , zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 301 ENDIF 302 IF( ln_ligand ) THEN 303 zzligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ", zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)) 317 304 ENDIF 318 305 ENDIF … … 349 336 !!---------------------------------------------------------------------- 350 337 ! 351 REWIND( numnatp_ref ) ! Namelist nampiszoo in reference namelist : Pisces microzooplankton338 REWIND( numnatp_ref ) 352 339 READ ( numnatp_ref, namp5zzoo, IOSTAT = ios, ERR = 901) 353 340 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zzoo in reference namelist' ) 354 341 ! 355 REWIND( numnatp_cfg ) ! Namelist nampiszoo in configuration namelist : Pisces microzooplankton342 REWIND( numnatp_cfg ) 356 343 READ ( numnatp_cfg, namp5zzoo, IOSTAT = ios, ERR = 902 ) 357 344 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zzoo in configuration namelist' ) -
NEMO/trunk/src/TOP/PISCES/P4Z/p5zprod.F90
r11536 r12276 94 94 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxl_fac, zmxl_chl 95 95 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpligprod1, zpligprod2 96 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d97 REAL(wp), ALLOCATABLE, DIMENSION(:,: ) :: zw2d98 96 !!--------------------------------------------------------------------- 99 97 ! 100 98 IF( ln_timing ) CALL timing_start('p5z_prod') 101 99 ! 102 zprorcan(:,:,:) = 0._wp ; zprorcap(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp 103 zprofed (:,:,:) = 0._wp ; zprofep (:,:,:) = 0._wp ; zprofen (:,:,:) = 0._wp 104 zpronewn(:,:,:) = 0._wp ; zpronewp(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp 105 zproregn(:,:,:) = 0._wp ; zproregp(:,:,:) = 0._wp ; zproregd(:,:,:) = 0._wp 106 zpropo4n(:,:,:) = 0._wp ; zpropo4p(:,:,:) = 0._wp ; zpropo4d(:,:,:) = 0._wp 107 zprdia (:,:,:) = 0._wp ; zprpic (:,:,:) = 0._wp ; zprbio (:,:,:) = 0._wp 108 zprodopn(:,:,:) = 0._wp ; zprodopp(:,:,:) = 0._wp ; zprodopd(:,:,:) = 0._wp 109 zysopt (:,:,:) = 0._wp 110 zrespn (:,:,:) = 0._wp ; zrespp (:,:,:) = 0._wp ; zrespd (:,:,:) = 0._wp 100 zprorcan(:,:,jpk) = 0._wp ; zprorcap(:,:,jpk) = 0._wp ; zprorcad(:,:,jpk) = 0._wp 101 zcroissn(:,:,jpk) = 0._wp ; zcroissp(:,:,jpk) = 0._wp ; zcroissd(:,:,jpk) = 0._wp 102 zprofed (:,:,jpk) = 0._wp ; zprofep (:,:,jpk) = 0._wp ; zprofen (:,:,jpk) = 0._wp 103 zpronewn(:,:,jpk) = 0._wp ; zpronewp(:,:,jpk) = 0._wp ; zpronewd(:,:,jpk) = 0._wp 104 zproregn(:,:,jpk) = 0._wp ; zproregp(:,:,jpk) = 0._wp ; zproregd(:,:,jpk) = 0._wp 105 zpropo4n(:,:,jpk) = 0._wp ; zpropo4p(:,:,jpk) = 0._wp ; zpropo4d(:,:,jpk) = 0._wp 106 zprdia (:,:,jpk) = 0._wp ; zprpic (:,:,jpk) = 0._wp ; zprbio (:,:,jpk) = 0._wp 107 zprodopn(:,:,jpk) = 0._wp ; zprodopp(:,:,jpk) = 0._wp ; zprodopd(:,:,jpk) = 0._wp 108 zysopt (:,:,jpk) = 0._wp 109 zrespn (:,:,jpk) = 0._wp ; zrespp (:,:,jpk) = 0._wp ; zrespd (:,:,jpk) = 0._wp 111 110 112 111 ! Computation of the optimal production … … 444 443 ! 445 444 IF( ln_ligand ) THEN 446 zpligprod1(:,:, :) = 0._wp ; zpligprod2(:,:,:) = 0._wp445 zpligprod1(:,:,jpk) = 0._wp ; zpligprod2(:,:,jpk) = 0._wp 447 446 DO jk = 1, jpkm1 448 447 DO jj = 1, jpj … … 465 464 & tpp = glob_sum( 'p5zprod', ( zprorcan(:,:,:) + zprorcad(:,:,:) + zprorcap(:,:,:) ) * cvol(:,:,:) ) 466 465 467 IF( lk_iomput ) THEN 468 IF( knt == nrdttrc ) THEN 469 ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 470 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 471 ! 472 IF( iom_use( "PPPHYN" ) .OR. iom_use( "PPPHYD" ) .OR. iom_use( "PPPHYP" ) ) THEN 473 zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 474 CALL iom_put( "PPPHYN" , zw3d ) 475 ! 476 zw3d(:,:,:) = zprorcap(:,:,:) * zfact * tmask(:,:,:) ! primary production by picophyto 477 CALL iom_put( "PPPHYP" , zw3d ) 478 ! 479 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes 480 CALL iom_put( "PPPHYD" , zw3d ) 481 ENDIF 482 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) .OR. iom_use( "PPNEWP" ) ) THEN 483 zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 484 CALL iom_put( "PPNEWN" , zw3d ) 485 ! 486 zw3d(:,:,:) = zpronewp(:,:,:) * zfact * tmask(:,:,:) ! new primary production by picophyto 487 CALL iom_put( "PPNEWP" , zw3d ) 488 ! 489 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatomes 490 CALL iom_put( "PPNEWD" , zw3d ) 491 ENDIF 492 IF( iom_use( "PBSi" ) ) THEN 493 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 494 CALL iom_put( "PBSi" , zw3d ) 495 ENDIF 496 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) .OR. iom_use( "PFeP" ) ) THEN 497 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by nanophyto 498 CALL iom_put( "PFeN" , zw3d ) 499 ! 500 zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by picophyto 501 CALL iom_put( "PFeP" , zw3d ) 502 ! 503 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes 504 CALL iom_put( "PFeD" , zw3d ) 505 ENDIF 506 IF( iom_use( "LPRODP" ) ) THEN 507 zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 508 CALL iom_put( "LPRODP" , zw3d ) 509 ENDIF 510 IF( iom_use( "LDETP" ) ) THEN 511 zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 512 CALL iom_put( "LDETP" , zw3d ) 513 ENDIF 514 IF( iom_use( "Mumax" ) ) THEN 515 zw3d(:,:,:) = zprmaxn(:,:,:) * tmask(:,:,:) ! Maximum growth rate 516 CALL iom_put( "Mumax" , zw3d ) 517 ENDIF 518 IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) .OR. iom_use( "MuP" ) ) THEN 519 zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ! Realized growth rate for nanophyto 520 CALL iom_put( "MuN" , zw3d ) 521 ! 522 zw3d(:,:,:) = zprpic(:,:,:) * xlimpic(:,:,:) * tmask(:,:,:) ! Realized growth rate for picophyto 523 CALL iom_put( "MuP" , zw3d ) 524 ! 525 zw3d(:,:,:) = zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ! Realized growth rate for diatoms 526 CALL iom_put( "MuD" , zw3d ) 527 ENDIF 528 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) .OR. iom_use( "LPlight" ) ) THEN 529 zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 530 CALL iom_put( "LNlight" , zw3d ) 531 ! 532 zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 533 CALL iom_put( "LPlight" , zw3d ) 534 ! 535 zw3d(:,:,:) = zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 536 CALL iom_put( "LDlight" , zw3d ) 537 ENDIF 538 IF( iom_use( "MunetN" ) .OR. iom_use( "MunetD" ) .OR. iom_use( "MunetP" ) ) THEN 539 zw3d(:,:,:) = zcroissn(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for nanophyto 540 CALL iom_put( "MunetN" , zw3d ) 541 ! 542 zw3d(:,:,:) = zcroissp(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for picophyto 543 CALL iom_put( "MunetP" , zw3d ) 544 ! 545 zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatomes 546 CALL iom_put( "MunetD" , zw3d ) 547 ! 548 ENDIF 549 550 IF( iom_use( "tintpp" ) ) CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 551 ! 552 DEALLOCATE( zw2d, zw3d ) 553 ENDIF 466 IF( lk_iomput .AND. knt == nrdttrc ) THEN 467 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 468 ! 469 CALL iom_put( "PPPHYP" , zprorcap(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by picophyto 470 CALL iom_put( "PPPHYN" , zprorcan(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by nanophyto 471 CALL iom_put( "PPPHYD" , zprorcad(:,:,:) * zfact * tmask(:,:,:) ) ! primary production by diatomes 472 CALL iom_put( "PPNEWN" , zpronewp(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by picophyto 473 CALL iom_put( "PPNEWN" , zpronewn(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by nanophyto 474 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zfact * tmask(:,:,:) ) ! new primary production by diatomes 475 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 476 CALL iom_put( "PFeP" , zprofep(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by picophyto 477 CALL iom_put( "PFeN" , zprofen(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by nanophyto 478 CALL iom_put( "PFeD" , zprofed(:,:,:) * zfact * tmask(:,:,:) ) ! biogenic iron production by diatomes 479 CALL iom_put( "LPRODP" , zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 480 CALL iom_put( "LDETP" , zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 481 CALL iom_put( "Mumax" , zprmaxn(:,:,:) * tmask(:,:,:) ) ! Maximum growth rate 482 CALL iom_put( "MuP" , zprpic(:,:,:) * xlimpic(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for picophyto 483 CALL iom_put( "MuN" , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 484 CALL iom_put( "MuD" , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 485 CALL iom_put( "LPlight" , zprpic(:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 486 CALL iom_put( "LNlight" , zprbio(:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 487 CALL iom_put( "LDlight" , zprdia(:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:) ) 488 CALL iom_put( "MunetP" , zcroissp(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for picophyto 489 CALL iom_put( "MunetN" , zcroissn(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 490 CALL iom_put( "MunetD" , zcroissd(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 491 CALL iom_put( "TPP" , ( zprorcap(:,:,:) + zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ) ! total primary production 492 CALL iom_put( "TPNEW" , ( zpronewp(:,:,:) + zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ) ! total new production 493 CALL iom_put( "TPBFE" , ( zprofep (:,:,:) + zprofen (:,:,:) + zprofed (:,:,:) ) * zfact * tmask(:,:,:) ) ! total biogenic iron production 494 CALL iom_put( "tintpp" , tpp * zfact ) ! global total integrated primary production molC/s 554 495 ENDIF 555 496 … … 582 523 !!---------------------------------------------------------------------- 583 524 584 REWIND( numnatp_ref ) ! Namelist nampisprod in reference namelist : Pisces phytoplankton production585 525 READ ( numnatp_ref, namp5zprod, IOSTAT = ios, ERR = 901) 586 526 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp5zprod in reference namelist' ) 587 527 588 REWIND( numnatp_cfg ) ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production589 528 READ ( numnatp_cfg, namp5zprod, IOSTAT = ios, ERR = 902 ) 590 529 902 IF( ios > 0 ) CALL ctl_nam ( ios , 'namp5zprod in configuration namelist' )
Note: See TracChangeset
for help on using the changeset viewer.