New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 15574 for NEMO/branches/2021/dev_r14318_RK3_stage1/src/TOP/PISCES/sms_pisces.F90 – NEMO

Ignore:
Timestamp:
2021-12-03T20:32:50+01:00 (3 years ago)
Author:
techene
Message:

#2605 #2715 trunk merged into dev_r14318_RK3_stage1

Location:
NEMO/branches/2021/dev_r14318_RK3_stage1
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1

    • Property svn:externals
      •  

        old new  
        99 
        1010# SETTE 
        11 ^/utils/CI/sette@14244        sette 
         11^/utils/CI/sette@HEAD        sette 
         12 
  • NEMO/branches/2021/dev_r14318_RK3_stage1/src/TOP/PISCES/sms_pisces.F90

    r12377 r15574  
    22   !!---------------------------------------------------------------------- 
    33   !!                     ***  sms_pisces.F90  ***   
    4    !! TOP :   PISCES Source Minus Sink variables 
     4   !! TOP :   PISCES Source Minus Sink variables are declared and allocated 
    55   !!---------------------------------------------------------------------- 
    66   !! History :   1.0  !  2000-02 (O. Aumont) original code 
     
    1717   INTEGER ::   numonp      = -1                !! Logical unit for namelist pisces output 
    1818 
    19    !                                                       !:  PISCES  : silicon dependant half saturation 
    20  
    2119   !!* Model used 
    2220   LOGICAL  ::  ln_p2z            !: Flag to use LOBSTER model 
     
    2725 
    2826   !!*  Time variables 
    29    INTEGER  ::   nrdttrc           !: ??? 
    30    REAL(wp) ::   rfact , rfactr    !: ??? 
    31    REAL(wp) ::   rfact2, rfact2r   !: ??? 
    32    REAL(wp) ::   xstep             !: Time step duration for biology 
    33    REAL(wp) ::   ryyss             !: number of seconds per year  
    34    REAL(wp) ::   r1_ryyss          !: inverse number of seconds per year  
    35  
     27   INTEGER  ::   nrdttrc          !: ??? 
     28   REAL(wp) ::   rfact , rfactr   !: time step duration (in seconds) 
     29   REAL(wp) ::   rfact2, rfact2r  !: time step duration (in seconds) when timesplitting is activated for PISCES 
     30   REAL(wp) ::   xstep            !: Time step duration for biology 
     31   REAL(wp) ::   ryyss            !: number of seconds per year  
     32   REAL(wp) ::   r1_ryyss         !: inverse number of seconds per year  
    3633 
    3734   !!*  Biological parameters  
    38    REAL(wp) ::   rno3              !: ??? 
    39    REAL(wp) ::   o2ut              !: ??? 
    40    REAL(wp) ::   po4r              !: ??? 
    41    REAL(wp) ::   rdenit            !: ??? 
    42    REAL(wp) ::   rdenita           !: ??? 
    43    REAL(wp) ::   o2nit             !: ??? 
    44    REAL(wp) ::   wsbio, wsbio2     !: ??? 
    45    REAL(wp) ::   wsbio2max         !: ??? 
    46    REAL(wp) ::   wsbio2scale       !: ??? 
    47    REAL(wp) ::   xkmort            !: ??? 
    48    REAL(wp) ::   ferat3            !: ??? 
    49    REAL(wp) ::   ldocp             !: ??? 
    50    REAL(wp) ::   ldocz             !: ??? 
    51    REAL(wp) ::   lthet             !: ??? 
    52    REAL(wp) ::   no3rat3           !: ??? 
    53    REAL(wp) ::   po4rat3           !: ??? 
    54  
     35   REAL(wp) ::   rno3             !: C/N stoichiometric ratio 
     36   REAL(wp) ::   o2ut             !: O2/N stoichiometric ratio for ammonification 
     37   REAL(wp) ::   po4r             !: C/P stoichiometric ratio 
     38   REAL(wp) ::   rdenit           !: C/N ratio for denitrification 
     39   REAL(wp) ::   rdenita          !: C/N ratio for denitrification 
     40   REAL(wp) ::   o2nit            !: O2/N ratio for nitrification 
     41   REAL(wp) ::   wsbio, wsbio2    !: Sinking speeds of particles 
     42   REAL(wp) ::   wsbio2max        !: Maximum sinking speed of the largest particles 
     43   REAL(wp) ::   wsbio2scale      !: Length scale for the variations of wsbio2 
     44   REAL(wp) ::   oxymin           !:  half saturation constant for anoxia 
     45   REAL(wp) ::   xkmort           !: Mortality half-saturation constant 
     46   REAL(wp) ::   feratz           !: Fe/C in microzooplankton 
     47   REAL(wp) ::   feratm           !: Fe/C in mesozooplankton 
     48   REAL(wp) ::   ldocp            !: Ligand production ratio during PP 
     49   REAL(wp) ::   ldocz            !: Ligand production ratio by grazing 
     50   REAL(wp) ::   lthet            !: Uptake of ligand by phytoplankton 
     51   REAL(wp) ::   no3rat3          !: C/N ratio of zooplankton 
     52   REAL(wp) ::   po4rat3          !: C/P ratio of zooplankton 
    5553 
    5654   !!*  diagnostic parameters  
    57    REAL(wp) ::  tpp                !: total primary production 
    58    REAL(wp) ::  t_oce_co2_exp      !: total carbon export 
    59    REAL(wp) ::  t_oce_co2_flx      !: Total ocean carbon flux 
    60    REAL(wp) ::  t_oce_co2_flx_cum  !: Cumulative Total ocean carbon flux 
    61    REAL(wp) ::  t_atm_co2_flx      !: global mean of atmospheric pco2 
     55   REAL(wp) ::  tpp               !: total primary production 
     56   REAL(wp) ::  t_oce_co2_exp     !: total carbon export 
     57   REAL(wp) ::  t_oce_co2_flx     !: Total ocean carbon flux 
     58   REAL(wp) ::  t_oce_co2_flx_cum !: Cumulative Total ocean carbon flux 
     59   REAL(wp) ::  t_atm_co2_flx     !: global mean of atmospheric pco2 
    6260 
    6361   !!* restoring 
    64    LOGICAL  ::  ln_pisdmp          !: restoring or not of nutrients to a mean value 
    65    INTEGER  ::  nn_pisdmp          !: frequency of relaxation or not of nutrients to a mean value 
     62   LOGICAL  ::  ln_pisdmp         !: restoring or not of nutrients to a mean value 
     63   INTEGER  ::  nn_pisdmp         !: frequency of relaxation or not of nutrients to a mean value 
    6664 
    6765   !!* Mass conservation 
    68    LOGICAL  ::  ln_check_mass      !: Flag to check mass conservation 
    69    LOGICAL , PUBLIC ::   ln_ironice   !: boolean for Fe input from sea ice 
     66   LOGICAL  ::  ln_check_mass     !: Flag to check mass conservation 
     67   LOGICAL, PUBLIC ::   ln_ironice   !: boolean for Fe input from sea ice 
     68 
     69   !!* Diurnal cycle in PISCES 
     70   LOGICAL  ::  ln_p4z_dcyc       !: Flag to activate diurnal cycle in PISCES 
    7071 
    7172   !!*  Biological fluxes for light : variables shared by pisces & lobster 
    72    INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  neln  !: number of T-levels + 1 in the euphotic layer 
    73    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup  !: euphotic layer depth 
    74    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot  !: par (photosynthetic available radiation) 
    75    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot_ndcy      !: PAR over 24h in case of diurnal cycle 
     73   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:  ) ::  strn  !: Day duration in hours 
    7674   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enano, ediat   !: PAR for phyto, nano and diat  
    77    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enanom, ediatm !: PAR for phyto, nano and diat  
     75   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enanom, ediatm !: mean PAR for phyto, nano and diat  
    7876   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epico          !: PAR for pico 
    79    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epicom         !: PAR for pico 
    80    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy           !: averaged PAR in the mixed layer 
    81    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup_01 !: Absolute euphotic layer depth 
    82    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  LOBSTER : zooplakton closure 
     77   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epicom         !: mean PAR for pico 
     78   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy, etotm    !: averaged PAR in the mixed layer 
     79   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  Half-saturation con,stant for diatoms 
    8380 
    8481   !!*  Biological fluxes for primary production 
    85    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)    ::   xksimax    !: ??? 
     82   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)    ::   xksimax    !: Maximum half-saturation constant over the year (Si) 
    8683   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   biron      !: bioavailable fraction of iron 
    8784   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   plig       !: proportion of iron organically complexed 
     
    9289 
    9390   !!*  SMS for the organic matter 
    94    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xfracal    !: ?? 
    95    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac    !: ?? 
    96    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac2   !: ?? 
    97    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   orem       !: ?? 
    98    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xdiss      !: ?? 
     91   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xfracal    !: Fraction of nanophytoplankton that are calcifying organisms 
     92   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac    !: OMZ  
     93   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac2   !: N depleted indice 
     94   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   orem       !: oxic remineralisation 
     95   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xdiss      !: Shear rate 
    9996   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodcal    !: Calcite production 
    100    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodpoc    !: Calcite production 
    101    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   conspoc    !: Calcite production 
    102    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodgoc    !: Calcite production 
    103    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consgoc    !: Calcite production 
     97   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodpoc    !: POC production 
     98   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   conspoc    !: POC consumption 
     99   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodgoc    !: GOC production 
     100   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consgoc    !: GOC consumption 
     101   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consfe3    !: GOC consumption 
    104102   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   blim       !: bacterial production factor 
    105    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of diatoms  
    106    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of diatoms  
     103   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of nanophyto 
     104   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of picophyto 
    107105   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sized      !: size of diatoms  
    108  
     106   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizena     !: size of nanophytoplankton, after 
     107   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizepa     !: size of picophyto, after 
     108   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizeda     !: size of diatomss, after 
     109   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xfecolagg  !: Refractory diagnostic concentration of ligands 
     110   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xcoagfe    !: Coagulation rate of colloidal Fe/ligands 
    109111 
    110112   !!* Variable for chemistry of the CO2 cycle 
    111    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak13       !: ??? 
    112    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak23       !: ??? 
    113    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aksp       !: ??? 
    114    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hi         !: ??? 
    115    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   excess     !: ??? 
     113   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak13       !: Carbonate chemistry constant 
     114   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak23       !: Carbonate chemistry constant 
     115   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aksp       !: Solubility product of CaCO3 
     116   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hi         !: Proton concentration 
     117   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   excess     !: CO3 saturation 
    116118   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aphscale   !:  
    117119 
     
    135137      !!---------------------------------------------------------------------- 
    136138      USE lib_mpp , ONLY: ctl_stop 
    137       INTEGER ::   ierr(10)        ! Local variables 
     139      INTEGER ::   ierr(11)        ! Local variables 
    138140      !!---------------------------------------------------------------------- 
    139141      ierr(:) = 0 
    140142      !*  Biological fluxes for light : shared variables for pisces & lobster 
    141       ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj),    & 
    142         &       heup_01(jpi,jpj) , xksi(jpi,jpj)               ,  STAT=ierr(1) ) 
    143       ! 
    144    
     143      ALLOCATE( xksi(jpi,jpj), strn(jpi,jpj),  STAT=ierr(1) ) 
     144 
    145145      IF( ln_p4z .OR. ln_p5z ) THEN 
    146          !*  Biological fluxes for light  
    147          ALLOCATE(  enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk) ,   & 
    148            &        enanom(jpi,jpj,jpk)   , ediatm(jpi,jpj,jpk),   & 
    149            &        etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk)  ,  STAT=ierr(2) )  
    150146 
    151          !*  Biological fluxes for primary production 
     147         !* Optics 
     148         ALLOCATE(  enano(jpi,jpj,jpk) , ediat(jpi,jpj,jpk) ,   & 
     149           &        enanom(jpi,jpj,jpk), ediatm(jpi,jpj,jpk),   & 
     150           &        emoy(jpi,jpj,jpk)  , etotm(jpi,jpj,jpk),   STAT=ierr(2) ) 
     151 
     152         !* Biological SMS 
    152153         ALLOCATE( xksimax(jpi,jpj)  , biron(jpi,jpj,jpk)      ,  STAT=ierr(3) ) 
    153          ! 
    154          !*  SMS for the organic matter 
    155          ALLOCATE( xfracal (jpi,jpj,jpk), orem(jpi,jpj,jpk)    ,    & 
    156             &      nitrfac(jpi,jpj,jpk), nitrfac2(jpi,jpj,jpk) ,    & 
    157             &      prodcal(jpi,jpj,jpk) , xdiss   (jpi,jpj,jpk),    & 
    158             &      prodpoc(jpi,jpj,jpk) , conspoc(jpi,jpj,jpk) ,    & 
    159             &      prodgoc(jpi,jpj,jpk) , consgoc(jpi,jpj,jpk) ,    & 
    160             &      blim   (jpi,jpj,jpk) ,                         STAT=ierr(4) ) 
    161154 
    162          !* Variable for chemistry of the CO2 cycle 
    163          ALLOCATE( ak13  (jpi,jpj,jpk) ,                            & 
    164             &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,     & 
    165             &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,     & 
     155         ! Biological SMS 
     156         ALLOCATE( xfracal  (jpi,jpj,jpk), orem    (jpi,jpj,jpk),  & 
     157            &      nitrfac  (jpi,jpj,jpk), nitrfac2(jpi,jpj,jpk),  & 
     158            &      prodcal  (jpi,jpj,jpk), xdiss   (jpi,jpj,jpk),  & 
     159            &      prodpoc  (jpi,jpj,jpk), conspoc (jpi,jpj,jpk),  & 
     160            &      prodgoc  (jpi,jpj,jpk), consgoc (jpi,jpj,jpk),  & 
     161            &      blim     (jpi,jpj,jpk), consfe3 (jpi,jpj,jpk),  & 
     162            &      xfecolagg(jpi,jpj,jpk), xcoagfe (jpi,jpj,jpk), STAT=ierr(4) ) 
     163 
     164         !* Carbonate chemistry 
     165         ALLOCATE( ak13  (jpi,jpj,jpk)  ,                          & 
     166            &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,    & 
     167            &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,    & 
    166168            &      aphscale(jpi,jpj,jpk),                         STAT=ierr(5) ) 
    167169         ! 
    168          !* Temperature dependancy of SMS terms 
    169          ALLOCATE( tgfunc(jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) ) 
     170         !* Temperature dependency of SMS terms 
     171         ALLOCATE( tgfunc (jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) ) 
    170172         ! 
    171          !* Sinkong speed 
    172          ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk),     & 
    173             &                             STAT=ierr(7) )    
     173         !* Sinking speed 
     174         ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk),   STAT=ierr(7) ) 
     175 
     176         !*  Size of phytoplankton cells 
     177         ALLOCATE( sizen (jpi,jpj,jpk), sized (jpi,jpj,jpk),        & 
     178           &       sizena(jpi,jpj,jpk), sizeda(jpi,jpj,jpk),      STAT=ierr(8) ) 
    174179         !  
    175          IF( ln_ligand ) THEN 
    176            ALLOCATE( plig(jpi,jpj,jpk)  ,                         STAT=ierr(8) ) 
    177          ENDIF 
     180         ALLOCATE( plig(jpi,jpj,jpk)  ,                           STAT=ierr(9) ) 
    178181      ENDIF 
    179182      ! 
    180183      IF( ln_p5z ) THEN 
    181          !        
    182          ALLOCATE( epico(jpi,jpj,jpk)   , epicom(jpi,jpj,jpk) ,   STAT=ierr(9) )  
     184         ! PISCES-QUOTA specific part       
     185         ALLOCATE( epico(jpi,jpj,jpk)   , epicom(jpi,jpj,jpk) ,   STAT=ierr(10) )  
    183186 
    184187         !*  Size of phytoplankton cells 
    185          ALLOCATE( sizen(jpi,jpj,jpk), sizep(jpi,jpj,jpk),         & 
    186            &       sized(jpi,jpj,jpk),                            STAT=ierr(10) ) 
     188         ALLOCATE( sizep(jpi,jpj,jpk), sizepa(jpi,jpj,jpk),       STAT=ierr(11) ) 
    187189      ENDIF 
    188190      ! 
Note: See TracChangeset for help on using the changeset viewer.