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 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90 – NEMO

Ignore:
Timestamp:
2017-02-06T10:25:03+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_merge_2016 into trunk. UPDATE TO ARCHFILES NEEDED for XIOS2.
LIM_SRC_s/limrhg.F90 to follow in next commit due to change of kind (I'm unable to do it in this commit).
Merged using the following steps:

1) svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk .
2) Resolve minor conflicts in sette.sh and namelist_cfg for ORCA2LIM3 (due to a change in trunk after branch was created)
3) svn commit
4) svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
5) svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_merge_2016 .
6) At this stage I checked out a clean copy of the branch to compare against what is about to be committed to the trunk.
6) svn commit #Commit code to the trunk

In this commit I have also reverted a change to Fcheck_archfile.sh which was causing problems on the Paris machine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90

    r6291 r7646  
    66   !! History :   1.0  !  2000-02 (O. Aumont) original code 
    77   !!             3.2  !  2009-04 (C. Ethe & NEMO team) style 
    8    !!---------------------------------------------------------------------- 
    9 #if defined key_pisces || defined key_pisces_reduced  
    10    !!---------------------------------------------------------------------- 
    11    !!   'key_pisces'                                         PISCES model 
    128   !!---------------------------------------------------------------------- 
    139   USE par_oce 
     
    2117   INTEGER ::   numonp      = -1           !! Logical unit for namelist pisces output 
    2218 
    23    !!*  Biological fluxes for light : variables shared by pisces & lobster 
    24    INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  neln  !: number of T-levels + 1 in the euphotic layer 
    25    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup  !: euphotic layer depth 
    26    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot  !: par (photosynthetic available radiation) 
    27    ! 
    28    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  LOBSTER : zooplakton closure 
    2919   !                                                       !:  PISCES  : silicon dependant half saturation 
    3020 
    31 #if defined key_pisces  
     21   !!* Model used 
     22   LOGICAL  ::  ln_p2z            !: Flag to use LOBSTER model 
     23   LOGICAL  ::  ln_p4z            !: Flag to use PISCES  model 
     24   LOGICAL  ::  ln_p5z            !: Flag to use PISCES  quota model 
     25   LOGICAL  ::  ln_ligand         !: Flag to enable organic ligands 
     26 
    3227   !!*  Time variables 
    3328   INTEGER  ::   nrdttrc           !: ??? 
     
    4944   REAL(wp) ::   o2nit             !: ??? 
    5045   REAL(wp) ::   wsbio, wsbio2     !: ??? 
     46   REAL(wp) ::   wsbio2max         !: ??? 
     47   REAL(wp) ::   wsbio2scale       !: ??? 
    5148   REAL(wp) ::   xkmort            !: ??? 
    5249   REAL(wp) ::   ferat3            !: ??? 
     50   REAL(wp) ::   wfep              !: ??? 
     51   REAL(wp) ::   ldocp             !: ??? 
     52   REAL(wp) ::   ldocz             !: ??? 
     53   REAL(wp) ::   lthet             !: ??? 
     54   REAL(wp) ::   no3rat3           !: ??? 
     55   REAL(wp) ::   po4rat3           !: ??? 
     56 
    5357 
    5458   !!*  diagnostic parameters  
     
    6670   LOGICAL  ::  ln_check_mass      !: Flag to check mass conservation 
    6771 
     72   !!*  Biological fluxes for light : variables shared by pisces & lobster 
     73   INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  neln  !: number of T-levels + 1 in the euphotic layer 
     74   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup  !: euphotic layer depth 
     75   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot  !: par (photosynthetic available radiation) 
     76   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  etot_ndcy      !: PAR over 24h in case of diurnal cycle 
     77   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enano, ediat   !: PAR for phyto, nano and diat  
     78   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epico          !: PAR for pico 
     79   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy           !: averaged PAR in the mixed layer 
     80   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup_01 !: Absolute euphotic layer depth 
     81   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  LOBSTER : zooplakton closure 
     82 
    6883   !!*  Biological fluxes for primary production 
    69    REAL(wp), ALLOCATABLE, SAVE,   DIMENSION(:,:)  ::   xksimax    !: ??? 
    70    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanono3   !: ??? 
    71    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatno3   !: ??? 
    72    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanonh4   !: ??? 
    73    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatnh4   !: ??? 
    74    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanopo4   !: ??? 
    75    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatpo4   !: ??? 
    76    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimphy    !: ??? 
    77    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdia    !: ??? 
    78    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concdfe    !: ??? 
    79    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concnfe    !: ??? 
    80    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimnfe    !: ??? 
    81    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdfe    !: ??? 
    82    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimsi     !: ??? 
     84   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)    ::   xksimax    !: ??? 
    8385   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   biron      !: bioavailable fraction of iron 
     86   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   plig       !: proportion of iron organically complexed 
     87 
     88   !!*  Sinking speed 
     89   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsbio3   !: POC sinking speed  
     90   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsbio4   !: GOC sinking speed 
     91   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wscal    !: Calcite and BSi sinking speeds 
     92   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsfep 
     93 
    8494 
    8595 
     
    8797   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xfracal    !: ?? 
    8898   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac    !: ?? 
    89    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xlimbac    !: ?? 
    90    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xlimbacl   !: ?? 
     99   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   orem       !: ?? 
    91100   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xdiss      !: ?? 
    92101   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodcal    !: Calcite production 
     102   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodpoc    !: Calcite production 
     103   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   conspoc    !: Calcite production 
     104   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodgoc    !: Calcite production 
     105   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consgoc    !: Calcite production 
     106 
     107   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of diatoms  
     108   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of diatoms  
     109   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sized      !: size of diatoms  
     110 
    93111 
    94112   !!* Variable for chemistry of the CO2 cycle 
    95    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akb3       !: ??? 
    96113   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak13       !: ??? 
    97114   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak23       !: ??? 
    98115   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aksp       !: ??? 
    99    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akw3       !: ??? 
    100    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   borat      !: ??? 
    101116   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hi         !: ??? 
    102117   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   excess     !: ??? 
     
    108123   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates 
    109124 
    110 #if defined key_kriest 
    111    !!*  Kriest parameter for aggregation 
    112    REAL(wp) ::   xkr_eta                            !: Sinking  exponent  
    113    REAL(wp) ::   xkr_zeta                           !:  N content exponent  
    114    REAL(wp) ::   xkr_ncontent                       !:  N content factor    
    115    REAL(wp) ::   xkr_massp                          !:  
    116    REAL(wp) ::   xkr_mass_min, xkr_mass_max         !:  Minimum, Maximum mass for Aggregates  
     125#if defined key_sed 
     126   LOGICAL, PUBLIC, PARAMETER ::   lk_sed = .TRUE.     !: sediment flag 
     127#else 
     128   LOGICAL, PUBLIC, PARAMETER ::   lk_sed = .FALSE.     !: sediment flag 
    117129#endif 
    118130 
    119 #endif 
    120131   !!---------------------------------------------------------------------- 
    121132   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     
    124135   !!---------------------------------------------------------------------- 
    125136CONTAINS 
     137 
    126138 
    127139   INTEGER FUNCTION sms_pisces_alloc() 
     
    130142      !!---------------------------------------------------------------------- 
    131143      USE lib_mpp , ONLY: ctl_warn 
    132       INTEGER ::   ierr(5)        ! Local variables 
     144      INTEGER ::   ierr(10)        ! Local variables 
    133145      !!---------------------------------------------------------------------- 
    134146      ierr(:) = 0 
    135147      !*  Biological fluxes for light : shared variables for pisces & lobster 
    136       ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), xksi(jpi,jpj), STAT=ierr(1) ) 
    137       ! 
    138 #if defined key_pisces 
    139       !*  Biological fluxes for primary production 
    140       ALLOCATE( xksimax(jpi,jpj)     , biron   (jpi,jpj,jpk),       & 
    141          &      xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk),       & 
    142          &      xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk),       & 
    143          &      xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk),       & 
    144          &      xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk),       & 
    145          &      xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk),       & 
    146          &      xlimsi  (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       & 
    147          &      concnfe (jpi,jpj,jpk),                           STAT=ierr(2) )  
    148          ! 
    149       !*  SMS for the organic matter 
    150       ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk),       & 
    151          &      xlimbac (jpi,jpj,jpk), xdiss  (jpi,jpj,jpk),       &  
    152          &      xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk),     STAT=ierr(3) ) 
    153  
    154       !* Variable for chemistry of the CO2 cycle 
    155       ALLOCATE( akb3(jpi,jpj,jpk)    , ak13  (jpi,jpj,jpk) ,       & 
    156          &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,       & 
    157          &      akw3(jpi,jpj,jpk)    , borat (jpi,jpj,jpk) ,       & 
    158          &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,       & 
    159          &      aphscale(jpi,jpj,jpk),                           STAT=ierr(4) ) 
    160          ! 
    161       !* Temperature dependancy of SMS terms 
    162       ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk) ,    STAT=ierr(5) ) 
    163          ! 
    164 #endif 
     148      ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj),    & 
     149        &       heup_01(jpi,jpj) , xksi(jpi,jpj)               ,  STAT=ierr(1) ) 
     150      ! 
     151   
     152      IF( ln_p4z .OR. ln_p5z ) THEN 
     153         !*  Biological fluxes for light  
     154         ALLOCATE(  enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk) ,   & 
     155           &        etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk)  ,  STAT=ierr(2) )  
     156 
     157         !*  Biological fluxes for primary production 
     158         ALLOCATE( xksimax(jpi,jpj)  , biron(jpi,jpj,jpk)      ,  STAT=ierr(3) ) 
     159         ! 
     160         !*  SMS for the organic matter 
     161         ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk) ,    & 
     162            &      orem    (jpi,jpj,jpk),                           & 
     163            &      prodcal(jpi,jpj,jpk),  xdiss   (jpi,jpj,jpk),    & 
     164            &      prodpoc(jpi,jpj,jpk) , conspoc(jpi,jpj,jpk) ,    & 
     165            &      prodgoc(jpi,jpj,jpk) , consgoc(jpi,jpj,jpk) ,  STAT=ierr(4) ) 
     166 
     167         !* Variable for chemistry of the CO2 cycle 
     168         ALLOCATE( ak13  (jpi,jpj,jpk) ,                            & 
     169            &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,     & 
     170            &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,     & 
     171            &      aphscale(jpi,jpj,jpk),                         STAT=ierr(5) ) 
     172         ! 
     173         !* Temperature dependancy of SMS terms 
     174         ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) ) 
     175         ! 
     176         !* Sinkong speed 
     177         ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk),     & 
     178            &      wscal(jpi,jpj,jpk)                         ,   STAT=ierr(7) )    
     179         !  
     180         IF( ln_ligand ) THEN 
     181           ALLOCATE( plig(jpi,jpj,jpk)  , wsfep(jpi,jpj,jpk)  ,   STAT=ierr(8) ) 
     182         ENDIF 
     183         ! 
     184      ENDIF 
     185      ! 
     186      IF( ln_p5z ) THEN 
     187         !        
     188         ALLOCATE( epico(jpi,jpj,jpk)                         ,   STAT=ierr(9) )  
     189 
     190         !*  Size of phytoplankton cells 
     191         ALLOCATE( sizen(jpi,jpj,jpk), sizep(jpi,jpj,jpk),         & 
     192           &       sized(jpi,jpj,jpk),                            STAT=ierr(10) ) 
     193      ENDIF 
    165194      ! 
    166195      sms_pisces_alloc = MAXVAL( ierr ) 
     
    170199   END FUNCTION sms_pisces_alloc 
    171200 
    172 #else 
    173    !!----------------------------------------------------------------------    
    174    !!  Empty module :                                     NO PISCES model 
    175    !!---------------------------------------------------------------------- 
    176 #endif 
    177     
    178201   !!======================================================================    
    179202END MODULE sms_pisces     
Note: See TracChangeset for help on using the changeset viewer.