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.
sms_pisces.F90 in NEMO/trunk/src/TOP/PISCES – NEMO

source: NEMO/trunk/src/TOP/PISCES/sms_pisces.F90 @ 15298

Last change on this file since 15298 was 14558, checked in by lovato, 3 years ago

include TOP optical module (#2489)

  • Property svn:keywords set to Id
File size: 9.2 KB
RevLine 
[1073]1MODULE sms_pisces   
2   !!----------------------------------------------------------------------
3   !!                     ***  sms_pisces.F90  *** 
4   !! TOP :   PISCES Source Minus Sink variables
5   !!----------------------------------------------------------------------
6   !! History :   1.0  !  2000-02 (O. Aumont) original code
[1445]7   !!             3.2  !  2009-04 (C. Ethe & NEMO team) style
[1073]8   !!----------------------------------------------------------------------
9   USE par_oce
10   USE par_trc
11
12   IMPLICIT NONE
13   PUBLIC
14
[12377]15   CHARACTER(:), ALLOCATABLE ::   numnatp_ref   !! Character buffer for reference namelist pisces
16   CHARACTER(:), ALLOCATABLE ::   numnatp_cfg   !! Character buffer for configuration namelist pisces
17   INTEGER ::   numonp      = -1                !! Logical unit for namelist pisces output
[3294]18
[3680]19   !                                                       !:  PISCES  : silicon dependant half saturation
20
[7646]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
[10222]26   LOGICAL  ::  ln_sediment       !: Flag to enable sediment module
[7646]27
[1445]28   !!*  Time variables
29   INTEGER  ::   nrdttrc           !: ???
30   REAL(wp) ::   rfact , rfactr    !: ???
31   REAL(wp) ::   rfact2, rfact2r   !: ???
[2528]32   REAL(wp) ::   xstep             !: Time step duration for biology
[4996]33   REAL(wp) ::   ryyss             !: number of seconds per year
34   REAL(wp) ::   r1_ryyss          !: inverse number of seconds per year
[1073]35
[4996]36
[1445]37   !!*  Biological parameters
38   REAL(wp) ::   rno3              !: ???
39   REAL(wp) ::   o2ut              !: ???
40   REAL(wp) ::   po4r              !: ???
41   REAL(wp) ::   rdenit            !: ???
[3294]42   REAL(wp) ::   rdenita           !: ???
[1445]43   REAL(wp) ::   o2nit             !: ???
44   REAL(wp) ::   wsbio, wsbio2     !: ???
[7646]45   REAL(wp) ::   wsbio2max         !: ???
46   REAL(wp) ::   wsbio2scale       !: ???
[1445]47   REAL(wp) ::   xkmort            !: ???
48   REAL(wp) ::   ferat3            !: ???
[7646]49   REAL(wp) ::   ldocp             !: ???
50   REAL(wp) ::   ldocz             !: ???
51   REAL(wp) ::   lthet             !: ???
52   REAL(wp) ::   no3rat3           !: ???
53   REAL(wp) ::   po4rat3           !: ???
[1073]54
[7646]55
[3680]56   !!*  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
[4996]60   REAL(wp) ::  t_oce_co2_flx_cum  !: Cumulative Total ocean carbon flux
[3680]61   REAL(wp) ::  t_atm_co2_flx      !: global mean of atmospheric pco2
[1073]62
[3680]63   !!* 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
[1073]66
[3680]67   !!* Mass conservation
68   LOGICAL  ::  ln_check_mass      !: Flag to check mass conservation
[10788]69   LOGICAL , PUBLIC ::   ln_ironice   !: boolean for Fe input from sea ice
[3680]70
[7646]71   !!*  Biological fluxes for light : variables shared by pisces & lobster
72   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enano, ediat   !: PAR for phyto, nano and diat
[10362]73   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enanom, ediatm !: PAR for phyto, nano and diat
[7646]74   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epico          !: PAR for pico
[10362]75   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epicom         !: PAR for pico
[7646]76   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy           !: averaged PAR in the mixed layer
77   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  LOBSTER : zooplakton closure
78
[1445]79   !!*  Biological fluxes for primary production
[7646]80   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)    ::   xksimax    !: ???
[3680]81   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   biron      !: bioavailable fraction of iron
[7646]82   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   plig       !: proportion of iron organically complexed
[1073]83
[7646]84   !!*  Sinking speed
85   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsbio3   !: POC sinking speed
86   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsbio4   !: GOC sinking speed
[3294]87
[1445]88   !!*  SMS for the organic matter
[2715]89   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xfracal    !: ??
90   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac    !: ??
[8533]91   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac2   !: ??
[7646]92   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   orem       !: ??
[2715]93   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xdiss      !: ??
[3680]94   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodcal    !: Calcite production
[7646]95   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodpoc    !: Calcite production
96   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   conspoc    !: Calcite production
97   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodgoc    !: Calcite production
98   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   consgoc    !: Calcite production
[10362]99   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   blim       !: bacterial production factor
[7646]100   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of diatoms
101   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of diatoms
102   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sized      !: size of diatoms
103
104
[1445]105   !!* Variable for chemistry of the CO2 cycle
[2715]106   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak13       !: ???
107   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak23       !: ???
108   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aksp       !: ???
109   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   hi         !: ???
[3294]110   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   excess     !: ???
[6291]111   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aphscale   !:
[1073]112
[6291]113
[3294]114   !!* Temperature dependancy of SMS terms
115   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc    !: Temp. dependancy of various biological rates
116   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates
117
[12377]118   LOGICAL, SAVE :: lk_sed
119
[2715]120   !!----------------------------------------------------------------------
[10067]121   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
[2715]122   !! $Id$
[10068]123   !! Software governed by the CeCILL license (see ./LICENSE)
[2715]124   !!----------------------------------------------------------------------
125CONTAINS
126
127   INTEGER FUNCTION sms_pisces_alloc()
128      !!----------------------------------------------------------------------
129      !!        *** ROUTINE sms_pisces_alloc ***
130      !!----------------------------------------------------------------------
[10425]131      USE lib_mpp , ONLY: ctl_stop
[7646]132      INTEGER ::   ierr(10)        ! Local variables
[2715]133      !!----------------------------------------------------------------------
134      ierr(:) = 0
[3680]135      !*  Biological fluxes for light : shared variables for pisces & lobster
[14558]136      ALLOCATE( xksi(jpi,jpj)                                  ,  STAT=ierr(1) )
[2715]137      !
[7646]138 
139      IF( ln_p4z .OR. ln_p5z ) THEN
140         !*  Biological fluxes for light
141         ALLOCATE(  enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk) ,   &
[10362]142           &        enanom(jpi,jpj,jpk)   , ediatm(jpi,jpj,jpk),   &
[14558]143           &        emoy(jpi,jpj,jpk)                          ,  STAT=ierr(2) ) 
[7646]144
145         !*  Biological fluxes for primary production
146         ALLOCATE( xksimax(jpi,jpj)  , biron(jpi,jpj,jpk)      ,  STAT=ierr(3) )
[2715]147         !
[7646]148         !*  SMS for the organic matter
[8533]149         ALLOCATE( xfracal (jpi,jpj,jpk), orem(jpi,jpj,jpk)    ,    &
150            &      nitrfac(jpi,jpj,jpk), nitrfac2(jpi,jpj,jpk) ,    &
151            &      prodcal(jpi,jpj,jpk) , xdiss   (jpi,jpj,jpk),    &
[7646]152            &      prodpoc(jpi,jpj,jpk) , conspoc(jpi,jpj,jpk) ,    &
[10362]153            &      prodgoc(jpi,jpj,jpk) , consgoc(jpi,jpj,jpk) ,    &
154            &      blim   (jpi,jpj,jpk) ,                         STAT=ierr(4) )
[3680]155
[7646]156         !* Variable for chemistry of the CO2 cycle
157         ALLOCATE( ak13  (jpi,jpj,jpk) ,                            &
158            &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,     &
159            &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,     &
160            &      aphscale(jpi,jpj,jpk),                         STAT=ierr(5) )
[2715]161         !
[7646]162         !* Temperature dependancy of SMS terms
163         ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) )
[3294]164         !
[7646]165         !* Sinkong speed
166         ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk),     &
[10362]167            &                             STAT=ierr(7) )   
[7646]168         !
169         IF( ln_ligand ) THEN
[10416]170           ALLOCATE( plig(jpi,jpj,jpk)  ,                         STAT=ierr(8) )
[7646]171         ENDIF
172      ENDIF
[2715]173      !
[7646]174      IF( ln_p5z ) THEN
175         !       
[10362]176         ALLOCATE( epico(jpi,jpj,jpk)   , epicom(jpi,jpj,jpk) ,   STAT=ierr(9) ) 
[7646]177
178         !*  Size of phytoplankton cells
179         ALLOCATE( sizen(jpi,jpj,jpk), sizep(jpi,jpj,jpk),         &
180           &       sized(jpi,jpj,jpk),                            STAT=ierr(10) )
181      ENDIF
182      !
[2715]183      sms_pisces_alloc = MAXVAL( ierr )
184      !
[10425]185      IF( sms_pisces_alloc /= 0 )   CALL ctl_stop( 'STOP', 'sms_pisces_alloc: failed to allocate arrays' ) 
[2715]186      !
187   END FUNCTION sms_pisces_alloc
188
[1073]189   !!======================================================================   
190END MODULE sms_pisces   
Note: See TracBrowser for help on using the repository browser.