- Timestamp:
- 2012-11-08T11:10:54+01:00 (12 years ago)
- Location:
- branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90
r3494 r3531 80 80 81 81 82 CALL p4z_opt ( kt, jnt ) ! Optic: PAR in the water column 82 83 CALL p4z_sink ( kt, jnt ) ! vertical flux of particulate organic matter 83 CALL p4z_opt ( kt, jnt ) ! Optic: PAR in the water column84 84 CALL p4z_fechem(kt, jnt ) ! Iron chemistry/scavenging 85 85 CALL p4z_lim ( kt, jnt ) ! co-limitations by the various nutrients -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r3475 r3531 85 85 ! 86 86 ! Allocate temporary workspace 87 CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig ) 88 IF( ln_fechem ) CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 87 CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig ) 88 zFe3 (:,:,:) = 0. 89 zFeL1(:,:,:) = 0. 90 zTL1 (:,:,:) = 0. 91 IF( ln_fechem ) THEN 92 CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 93 zFe2 (:,:,:) = 0. 94 zFeL2(:,:,:) = 0. 95 zTL2 (:,:,:) = 0. 96 zFeP (:,:,:) = 0. 97 ENDIF 89 98 90 99 ! Total ligand concentration : Ligands can be chosen to be constant or variable … … 104 113 ! Chemistry is supposed to be fast enough to be at equilibrium 105 114 ! ------------------------------------------------------------ 115 !CDIR NOVERRCHK 106 116 DO jk = 1, jpkm1 117 !CDIR NOVERRCHK 107 118 DO jj = 1, jpj 119 !CDIR NOVERRCHK 108 120 DO ji = 1, jpi 109 121 ! Calculate ligand concentrations : assume 2/3rd of excess goes to … … 183 195 ! Chemistry is supposed to be fast enough to be at equilibrium 184 196 ! ------------------------------------------------------------ 197 !CDIR NOVERRCHK 185 198 DO jk = 1, jpkm1 199 !CDIR NOVERRCHK 186 200 DO jj = 1, jpj 201 !CDIR NOVERRCHK 187 202 DO ji = 1, jpi 188 203 zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) … … 202 217 ENDIF 203 218 204 219 zdust = 0. ! if no dust available 205 220 !CDIR NOVERRCHK 206 221 DO jk = 1, jpkm1 … … 229 244 ztrc = ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6 230 245 #endif 231 zdust = dust(ji,jj) / ( wdust * 30.42 * 0.035 ) * tmask(ji,jj,jk)246 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust * 30.42 * 0.035 ) * tmask(ji,jj,jk) 232 247 zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 233 248 zscave = zfeequi * zlam1b * zstep -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r3496 r3531 72 72 REAL(wp) :: zsiloss, zcaloss, zwsbio3, zwsbio4, zwscal, zdep, zwstpoc 73 73 REAL(wp) :: ztrfer, ztrpo4, zwdust 74 !!Ch 75 REAL(wp) :: zrdenittot, zsdenittot, znitrpottot, znitrfix 76 !!Ch 74 REAL(wp) :: zrdenittot, zsdenittot, znitrpottot 75 ! 77 76 CHARACTER (len=25) :: charout 78 77 REAL(wp), POINTER, DIMENSION(:,: ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 … … 88 87 r1_rday = 1. / rday 89 88 r1_ryyss = 1. / ryyss 90 IF(lwp) CALL ctl_opn( numnit, 'nitrogen.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 89 IF( ln_check_mass .AND. lwp) & 90 & CALL ctl_opn( numnit, 'nitrogen.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 91 91 ENDIF 92 92 ! … … 333 333 END DO 334 334 335 ! The total gain from nitrogen fixation is scaled to balance the loss by denitrification 336 ! ------------------------------------------------------------- 337 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) 338 zsdenittot = glob_sum ( zwork4(:,:) * e1e2t(:,:) ) 339 znitrpottot = glob_sum ( znitrpot(:,:,:) * cvol(:,:,:) ) 340 IF( kt == nitend .AND. jnt == nrdttrc ) THEN 341 zfact = 1.e+3 * rfact2r * rno3 * 365. * 86400. * 14. / 1e12 342 IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact 343 ENDIF 335 IF( ln_check_mass ) THEN 336 ! The total gain from nitrogen fixation is scaled to balance the loss by denitrification 337 ! ------------------------------------------------------------- 338 zrdenittot = glob_sum ( denitr(:,:,:) * rdenit * xnegtr(:,:,:) * cvol(:,:,:) ) 339 zsdenittot = glob_sum ( zwork4(:,:) * e1e2t(:,:) ) 340 znitrpottot = glob_sum ( znitrpot(:,:,:) * cvol(:,:,:) ) 341 IF( kt == nitend .AND. jnt == nrdttrc ) THEN 342 zfact = 1.e+3 * rfact2r * rno3 * 365. * 86400. * 14. / 1e12 343 IF(lwp) WRITE(numnit,9100) ndastp, znitrpottot * nitrfix * zfact, zrdenittot * zfact , zsdenittot * zfact 344 ENDIF 345 ENDIF 344 346 345 347 ! Nitrogen change due to nitrogen fixation … … 348 350 DO jj = 1, jpj 349 351 DO ji = 1, jpi 352 ! zfact = znitrpot(ji,jj,jk) * ( zrdenittot + zsdenittot ) / znitrpottot 350 353 zfact = znitrpot(ji,jj,jk) * nitrfix 351 354 trn(ji,jj,jk,jpnh4) = trn(ji,jj,jk,jpnh4) + zfact -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r3506 r3531 36 36 PUBLIC p4z_sms ! called in p4zsms.F90 37 37 38 LOGICAL :: ln_check_mass = .false. !: Flag to check mass conservation39 38 REAL(wp) :: alkbudget, no3budget, silbudget, ferbudget 40 39 INTEGER :: numco2, numnut !: logical unit for co2 budget … … 166 165 #endif 167 166 NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp, ln_pisclo 167 NAMELIST/nampismass/ ln_check_mass 168 !!---------------------------------------------------------------------- 169 168 170 169 171 REWIND( numnatp ) … … 211 213 #endif 212 214 215 ln_pisdmp = .true. 216 nn_pisdmp = 1 217 ln_pisclo = .false. 218 213 219 REWIND( numnatp ) 214 220 READ ( numnatp, nampisdmp ) … … 221 227 WRITE(numout,*) ' Restoring of tracer to initial value on closed seas ln_pisclo =', ln_pisclo 222 228 WRITE(numout,*) ' ' 229 ENDIF 230 231 ln_check_mass = .false. 232 REWIND( numnatp ) 233 READ ( numnatp, nampismass ) 234 IF(lwp) THEN ! control print 235 WRITE(numout,*) ' ' 236 WRITE(numout,*) ' Namelist parameter for mass conservation checking' 237 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 238 WRITE(numout,*) ' Flag to check mass conservation of NO3/Si/TALK ln_check_mass = ', ln_check_mass 223 239 ENDIF 224 240 … … 347 363 INTEGER, INTENT( in ) :: kt ! ocean time-step index 348 364 !! 349 NAMELIST/nampismass/ ln_check_mass350 365 !!--------------------------------------------------------------------- 351 366 352 367 IF( kt == nittrc000 ) THEN 353 REWIND( numnatp )354 READ ( numnatp, nampismass )355 IF(lwp) THEN ! control print356 WRITE(numout,*) ' '357 WRITE(numout,*) ' Namelist parameter for mass conservation checking'358 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'359 WRITE(numout,*) ' Flag to check mass conservation of NO3/Si/TALK ln_check_mass = ', ln_check_mass360 ENDIF361 362 368 IF( ln_check_mass .AND. lwp) THEN ! Open budget file of NO3, ALK, Si, Fer 363 369 CALL ctl_opn( numco2, 'carbon.budget' , 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r3481 r3531 53 53 REAL(wp) :: t_atm_co2_flx !: global mean of atmospheric pco2 54 54 55 !!* Damping 56 LOGICAL :: ln_pisdmp !: relaxation or not of nutrients to a mean value 57 INTEGER :: nn_pisdmp !: frequency of relaxation or not of nutrients to a mean value 58 LOGICAL :: ln_pisclo !: Restoring or not of nutrients to initial value 59 !: on close seas 55 !!* restoring 56 LOGICAL :: ln_pisdmp !: restoring or not of nutrients to a mean value 57 INTEGER :: nn_pisdmp !: frequency of relaxation or not of nutrients to a mean value 58 LOGICAL :: ln_pisclo !: Restoring or not of nutrients to initial value on closed seas 59 60 !!* Mass conservation 61 LOGICAL :: ln_check_mass !: Flag to check mass conservation 60 62 61 63 !!* Biological fluxes for primary production
Note: See TracChangeset
for help on using the changeset viewer.