Changeset 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
- Timestamp:
- 2017-02-06T10:25:03+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r6291 r7646 6 6 !! History : 1.0 ! 2000-02 (O. Aumont) original code 7 7 !! 3.2 ! 2009-04 (C. Ethe & NEMO team) style 8 !!----------------------------------------------------------------------9 #if defined key_pisces || defined key_pisces_reduced10 !!----------------------------------------------------------------------11 !! 'key_pisces' PISCES model12 8 !!---------------------------------------------------------------------- 13 9 USE par_oce … … 21 17 INTEGER :: numonp = -1 !! Logical unit for namelist pisces output 22 18 23 !!* Biological fluxes for light : variables shared by pisces & lobster24 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: neln !: number of T-levels + 1 in the euphotic layer25 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup !: euphotic layer depth26 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot !: par (photosynthetic available radiation)27 !28 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: xksi !: LOBSTER : zooplakton closure29 19 ! !: PISCES : silicon dependant half saturation 30 20 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 32 27 !!* Time variables 33 28 INTEGER :: nrdttrc !: ??? … … 49 44 REAL(wp) :: o2nit !: ??? 50 45 REAL(wp) :: wsbio, wsbio2 !: ??? 46 REAL(wp) :: wsbio2max !: ??? 47 REAL(wp) :: wsbio2scale !: ??? 51 48 REAL(wp) :: xkmort !: ??? 52 49 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 53 57 54 58 !!* diagnostic parameters … … 66 70 LOGICAL :: ln_check_mass !: Flag to check mass conservation 67 71 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 68 83 !!* 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 !: ??? 83 85 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 84 94 85 95 … … 87 97 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xfracal !: ?? 88 98 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 !: ?? 91 100 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiss !: ?? 92 101 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 93 111 94 112 !!* Variable for chemistry of the CO2 cycle 95 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: akb3 !: ???96 113 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ak13 !: ??? 97 114 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ak23 !: ??? 98 115 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: aksp !: ??? 99 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: akw3 !: ???100 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: borat !: ???101 116 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hi !: ??? 102 117 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: excess !: ??? … … 108 123 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tgfunc2 !: Temp. dependancy of mesozooplankton rates 109 124 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 117 129 #endif 118 130 119 #endif120 131 !!---------------------------------------------------------------------- 121 132 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 124 135 !!---------------------------------------------------------------------- 125 136 CONTAINS 137 126 138 127 139 INTEGER FUNCTION sms_pisces_alloc() … … 130 142 !!---------------------------------------------------------------------- 131 143 USE lib_mpp , ONLY: ctl_warn 132 INTEGER :: ierr( 5) ! Local variables144 INTEGER :: ierr(10) ! Local variables 133 145 !!---------------------------------------------------------------------- 134 146 ierr(:) = 0 135 147 !* 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 165 194 ! 166 195 sms_pisces_alloc = MAXVAL( ierr ) … … 170 199 END FUNCTION sms_pisces_alloc 171 200 172 #else173 !!----------------------------------------------------------------------174 !! Empty module : NO PISCES model175 !!----------------------------------------------------------------------176 #endif177 178 201 !!====================================================================== 179 202 END MODULE sms_pisces
Note: See TracChangeset
for help on using the changeset viewer.