Changeset 3531


Ignore:
Timestamp:
2012-11-08T11:10:54+01:00 (8 years ago)
Author:
cetlod
Message:

branch:2012/dev_r3438_LOCEAN15_PISLOB minor bug correction, to ensure restartability see ticket #972

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  
    8080 
    8181           
     82      CALL p4z_opt  ( kt, jnt )     ! Optic: PAR in the water column 
    8283      CALL p4z_sink ( kt, jnt )     ! vertical flux of particulate organic matter 
    83       CALL p4z_opt  ( kt, jnt )     ! Optic: PAR in the water column 
    8484      CALL p4z_fechem(kt, jnt )     ! Iron chemistry/scavenging 
    8585      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  
    8585      ! 
    8686      ! 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 
    8998 
    9099      ! Total ligand concentration : Ligands can be chosen to be constant or variable 
     
    104113         ! Chemistry is supposed to be fast enough to be at equilibrium 
    105114         ! ------------------------------------------------------------ 
     115!CDIR NOVERRCHK 
    106116         DO jk = 1, jpkm1 
     117!CDIR NOVERRCHK 
    107118            DO jj = 1, jpj 
     119!CDIR NOVERRCHK 
    108120               DO ji = 1, jpi 
    109121                  ! Calculate ligand concentrations : assume 2/3rd of excess goes to 
     
    183195         ! Chemistry is supposed to be fast enough to be at equilibrium 
    184196         ! ------------------------------------------------------------ 
     197!CDIR NOVERRCHK 
    185198         DO jk = 1, jpkm1 
     199!CDIR NOVERRCHK 
    186200            DO jj = 1, jpj 
     201!CDIR NOVERRCHK 
    187202               DO ji = 1, jpi 
    188203                  zTL1(ji,jj,jk) = ztotlig(ji,jj,jk) 
     
    202217      ENDIF 
    203218 
    204  
     219      zdust = 0.         ! if no dust available 
    205220!CDIR NOVERRCHK 
    206221      DO jk = 1, jpkm1 
     
    229244               ztrc   = ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6  
    230245#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) 
    232247               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 
    233248               zscave = zfeequi * zlam1b * zstep 
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r3496 r3531  
    7272      REAL(wp) ::  zsiloss, zcaloss, zwsbio3, zwsbio4, zwscal, zdep, zwstpoc 
    7373      REAL(wp) ::  ztrfer, ztrpo4, zwdust 
    74 !!Ch   
    75       REAL(wp) ::  zrdenittot, zsdenittot, znitrpottot, znitrfix 
    76 !!Ch   
     74      REAL(wp) ::  zrdenittot, zsdenittot, znitrpottot 
     75      ! 
    7776      CHARACTER (len=25) :: charout 
    7877      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 
     
    8887         r1_rday  = 1. / rday 
    8988         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 ) 
    9191      ENDIF 
    9292      ! 
     
    333333      END DO 
    334334  
    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 
    344346 
    345347      ! Nitrogen change due to nitrogen fixation 
     
    348350         DO jj = 1, jpj 
    349351            DO ji = 1, jpi 
     352               ! zfact = znitrpot(ji,jj,jk) * ( zrdenittot + zsdenittot ) / znitrpottot 
    350353               zfact = znitrpot(ji,jj,jk) * nitrfix 
    351354               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  
    3636   PUBLIC   p4z_sms    ! called in p4zsms.F90 
    3737 
    38    LOGICAL ::  ln_check_mass = .false.       !: Flag to check mass conservation  
    3938   REAL(wp) :: alkbudget, no3budget, silbudget, ferbudget 
    4039   INTEGER ::  numco2, numnut  !: logical unit for co2 budget 
     
    166165#endif 
    167166      NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp, ln_pisclo 
     167      NAMELIST/nampismass/ ln_check_mass 
     168      !!---------------------------------------------------------------------- 
     169 
    168170 
    169171      REWIND( numnatp ) 
     
    211213#endif 
    212214 
     215      ln_pisdmp = .true. 
     216      nn_pisdmp = 1 
     217      ln_pisclo = .false. 
     218 
    213219      REWIND( numnatp ) 
    214220      READ  ( numnatp, nampisdmp ) 
     
    221227         WRITE(numout,*) '    Restoring of tracer to initial value  on closed seas  ln_pisclo      =', ln_pisclo 
    222228         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 
    223239      ENDIF 
    224240 
     
    347363      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    348364      !! 
    349       NAMELIST/nampismass/ ln_check_mass 
    350365      !!--------------------------------------------------------------------- 
    351366 
    352367      IF( kt == nittrc000 ) THEN  
    353          REWIND( numnatp )        
    354          READ  ( numnatp, nampismass ) 
    355          IF(lwp) THEN                         ! control print 
    356             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_mass 
    360          ENDIF 
    361  
    362368         IF( ln_check_mass .AND. lwp) THEN      !   Open budget file of NO3, ALK, Si, Fer 
    363369            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  
    5353   REAL(wp) ::  t_atm_co2_flx      !: global mean of atmospheric pco2 
    5454 
    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 
    6062 
    6163   !!*  Biological fluxes for primary production 
Note: See TracChangeset for help on using the changeset viewer.