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/branches/2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles/src/TOP/PISCES – NEMO

source: NEMO/branches/2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles/src/TOP/PISCES/sms_pisces.F90 @ 11671

Last change on this file since 11671 was 11624, checked in by acc, 5 years ago

Branch 2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles. Substantive changes required to replace all namelists with internal files. These are the key changes only; to compile and run tests all REWIND and CLOSE operations on the (no longer) units have to be removed. These changes affect many more files but can be scripted so are not included here in order to make a later merge easier. The scripts used to prepare code for testing are included on: wiki:2019WP/ENHANCE-04_AndrewC-reporting/Internal_Namelists. With these additional changes this code passes most SETTE tests but the AGRIF preprocessor does not currently accept the new allocatable character strings. To be investigated.

  • Property svn:keywords set to Id
File size: 9.7 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
[11624]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   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
76   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enano, ediat   !: PAR for phyto, nano and diat
[10362]77   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enanom, ediatm !: PAR for phyto, nano and diat
[7646]78   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epico          !: PAR for pico
[10362]79   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epicom         !: PAR for pico
[7646]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
83
[1445]84   !!*  Biological fluxes for primary production
[7646]85   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)    ::   xksimax    !: ???
[3680]86   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   biron      !: bioavailable fraction of iron
[7646]87   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   plig       !: proportion of iron organically complexed
[1073]88
[7646]89   !!*  Sinking speed
90   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsbio3   !: POC sinking speed
91   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   wsbio4   !: GOC sinking speed
[3294]92
[1445]93   !!*  SMS for the organic matter
[2715]94   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xfracal    !: ??
95   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac    !: ??
[8533]96   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   nitrfac2   !: ??
[7646]97   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   orem       !: ??
[2715]98   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xdiss      !: ??
[3680]99   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prodcal    !: Calcite production
[7646]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
[10362]104   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   blim       !: bacterial production factor
[7646]105   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizen      !: size of diatoms
106   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sizep      !: size of diatoms
107   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sized      !: size of diatoms
108
109
[1445]110   !!* Variable for chemistry of the CO2 cycle
[2715]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         !: ???
[3294]115   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   excess     !: ???
[6291]116   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aphscale   !:
[1073]117
[6291]118
[3294]119   !!* Temperature dependancy of SMS terms
120   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc    !: Temp. dependancy of various biological rates
121   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates
122
[2715]123   !!----------------------------------------------------------------------
[10067]124   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
[2715]125   !! $Id$
[10068]126   !! Software governed by the CeCILL license (see ./LICENSE)
[2715]127   !!----------------------------------------------------------------------
128CONTAINS
129
130   INTEGER FUNCTION sms_pisces_alloc()
131      !!----------------------------------------------------------------------
132      !!        *** ROUTINE sms_pisces_alloc ***
133      !!----------------------------------------------------------------------
[10425]134      USE lib_mpp , ONLY: ctl_stop
[7646]135      INTEGER ::   ierr(10)        ! Local variables
[2715]136      !!----------------------------------------------------------------------
137      ierr(:) = 0
[3680]138      !*  Biological fluxes for light : shared variables for pisces & lobster
[7646]139      ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj),    &
140        &       heup_01(jpi,jpj) , xksi(jpi,jpj)               ,  STAT=ierr(1) )
[2715]141      !
[7646]142 
143      IF( ln_p4z .OR. ln_p5z ) THEN
144         !*  Biological fluxes for light
145         ALLOCATE(  enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk) ,   &
[10362]146           &        enanom(jpi,jpj,jpk)   , ediatm(jpi,jpj,jpk),   &
[7646]147           &        etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk)  ,  STAT=ierr(2) ) 
148
149         !*  Biological fluxes for primary production
150         ALLOCATE( xksimax(jpi,jpj)  , biron(jpi,jpj,jpk)      ,  STAT=ierr(3) )
[2715]151         !
[7646]152         !*  SMS for the organic matter
[8533]153         ALLOCATE( xfracal (jpi,jpj,jpk), orem(jpi,jpj,jpk)    ,    &
154            &      nitrfac(jpi,jpj,jpk), nitrfac2(jpi,jpj,jpk) ,    &
155            &      prodcal(jpi,jpj,jpk) , xdiss   (jpi,jpj,jpk),    &
[7646]156            &      prodpoc(jpi,jpj,jpk) , conspoc(jpi,jpj,jpk) ,    &
[10362]157            &      prodgoc(jpi,jpj,jpk) , consgoc(jpi,jpj,jpk) ,    &
158            &      blim   (jpi,jpj,jpk) ,                         STAT=ierr(4) )
[3680]159
[7646]160         !* Variable for chemistry of the CO2 cycle
161         ALLOCATE( ak13  (jpi,jpj,jpk) ,                            &
162            &      ak23(jpi,jpj,jpk)    , aksp  (jpi,jpj,jpk) ,     &
163            &      hi  (jpi,jpj,jpk)    , excess(jpi,jpj,jpk) ,     &
164            &      aphscale(jpi,jpj,jpk),                         STAT=ierr(5) )
[2715]165         !
[7646]166         !* Temperature dependancy of SMS terms
167         ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk),   STAT=ierr(6) )
[3294]168         !
[7646]169         !* Sinkong speed
170         ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk),     &
[10362]171            &                             STAT=ierr(7) )   
[7646]172         !
173         IF( ln_ligand ) THEN
[10416]174           ALLOCATE( plig(jpi,jpj,jpk)  ,                         STAT=ierr(8) )
[7646]175         ENDIF
176      ENDIF
[2715]177      !
[7646]178      IF( ln_p5z ) THEN
179         !       
[10362]180         ALLOCATE( epico(jpi,jpj,jpk)   , epicom(jpi,jpj,jpk) ,   STAT=ierr(9) ) 
[7646]181
182         !*  Size of phytoplankton cells
183         ALLOCATE( sizen(jpi,jpj,jpk), sizep(jpi,jpj,jpk),         &
184           &       sized(jpi,jpj,jpk),                            STAT=ierr(10) )
185      ENDIF
186      !
[2715]187      sms_pisces_alloc = MAXVAL( ierr )
188      !
[10425]189      IF( sms_pisces_alloc /= 0 )   CALL ctl_stop( 'STOP', 'sms_pisces_alloc: failed to allocate arrays' ) 
[2715]190      !
191   END FUNCTION sms_pisces_alloc
192
[1073]193   !!======================================================================   
194END MODULE sms_pisces   
Note: See TracBrowser for help on using the repository browser.