Changeset 5266 for branches/CNRS
- Timestamp:
- 2015-05-13T10:37:43+02:00 (9 years ago)
- Location:
- branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 10 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90
r3557 r5266 12 12 !! ! 2011-02 (J. Simeon, J.Orr ) update O2 solubility constants 13 13 !!---------------------------------------------------------------------- 14 #if defined key_pisces 14 #if defined key_pisces || defined key_pisces_quota 15 15 !!---------------------------------------------------------------------- 16 16 !! 'key_pisces' PISCES bio-model -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r4800 r5266 6 6 !! History : 3.5 ! 2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code 7 7 !!---------------------------------------------------------------------- 8 #if defined key_pisces 8 #if defined key_pisces || defined key_pisces_quota 9 9 !!---------------------------------------------------------------------- 10 10 !! 'key_top' and TOP models -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
r4624 r5266 11 11 !! ! 2011-02 (J. Simeon, J. Orr) Include total atm P correction 12 12 !!---------------------------------------------------------------------- 13 #if defined key_pisces 13 #if defined key_pisces || defined key_pisces_quota 14 14 !!---------------------------------------------------------------------- 15 15 !! 'key_pisces' PISCES bio-model -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90
r3446 r5266 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !!---------------------------------------------------------------------- 9 #if defined key_pisces 9 #if defined key_pisces || defined key_pisces_quota 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_pisces' PISCES bio-model -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r4624 r5266 12 12 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improvment of calcite dissolution 13 13 !!---------------------------------------------------------------------- 14 #if defined key_pisces 14 #if defined key_pisces || defined key_pisces_quota 15 15 !!---------------------------------------------------------------------- 16 16 !! 'key_pisces' PISCES bio-model -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r4624 r5266 9 9 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improve light availability of nano & diat 10 10 !!---------------------------------------------------------------------- 11 #if defined key_pisces 11 #if defined key_pisces || defined key_pisces_quota 12 12 !!---------------------------------------------------------------------- 13 13 !! 'key_pisces' PISCES bio-model … … 41 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: par_varsw !: PAR fraction of shortwave 42 42 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat !: PAR for phyto, nano and diat 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat !: PAR for nano and diat 44 #if defined key_pisces_quota 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: epico !: PAR for pico 46 #endif 44 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy !: averaged PAR in the mixed layer 45 48 … … 74 77 REAL(wp) :: zc0 , zc1 , zc2, zc3, z1_dep 75 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zdepmoy, zetmp, zetmp1, zetmp2 79 #if defined key_pisces_quota 80 REAL(wp), POINTER, DIMENSION(:,: ) :: zetmp3 81 #endif 76 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zekg, zekr, zekb, ze0, ze1, ze2, ze3 77 83 !!--------------------------------------------------------------------- … … 82 88 CALL wrk_alloc( jpi, jpj, zdepmoy, zetmp, zetmp1, zetmp2 ) 83 89 CALL wrk_alloc( jpi, jpj, jpk, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 90 #if defined key_pisces_quota 91 CALL wrk_alloc( jpi, jpj, zetmp3 ) 92 #endif 84 93 85 94 IF( jnt == 1 .AND. ln_varpar ) CALL p4z_optsbc( kt ) … … 97 106 !CDIR NOVERRCHK 98 107 DO ji = 1, jpi 108 #if defined key_pisces_quota 109 zchl = ( trn(ji,jj,jk,jpnch) + trn(ji,jj,jk,jpdch) + trn(ji,jj,jk,jppch) + rtrn ) * 1.e6 110 #else 99 111 zchl = ( trn(ji,jj,jk,jpnch) + trn(ji,jj,jk,jpdch) + rtrn ) * 1.e6 112 #endif 100 113 zchl = MIN( 10. , MAX( 0.05, zchl ) ) 101 114 irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) … … 132 145 enano(ji,jj,1) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 133 146 ediat(ji,jj,1) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 147 #if defined key_pisces_quota 148 epico(ji,jj,1) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 149 #endif 134 150 END DO 135 151 END DO … … 150 166 enano(ji,jj,jk) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 151 167 ediat(ji,jj,jk) = ( 1.6 * zc1 + 0.69 * zc2 + 0.7 * zc3 ) 168 #if defined key_pisces_quota 169 epico(ji,jj,jk) = ( 2.1 * zc1 + 0.42 * zc2 + 0.4 * zc3 ) 170 #endif 152 171 END DO 153 172 END DO 154 173 END DO 155 174 156 175 IF( ln_qsr_bio ) THEN !* heat flux accros w-level (used in the dynamics) 157 176 ! ! ------------------------ … … 219 238 zetmp1 (:,:) = 0.e0 220 239 zetmp2 (:,:) = 0.e0 240 #if defined key_pisces_quota 241 zetmp3 (:,:) = 0.e0 242 #endif 221 243 222 244 DO jk = 1, nksrp … … 229 251 zetmp1 (ji,jj) = zetmp1 (ji,jj) + enano(ji,jj,jk) * fse3t(ji,jj,jk) 230 252 zetmp2 (ji,jj) = zetmp2 (ji,jj) + ediat(ji,jj,jk) * fse3t(ji,jj,jk) 253 #if defined key_pisces_quota 254 zetmp3 (ji,jj) = zetmp3 (ji,jj) + epico(ji,jj,jk) * fse3t(ji,jj,jk) 255 #endif 231 256 zdepmoy(ji,jj) = zdepmoy(ji,jj) + fse3t(ji,jj,jk) 232 257 ENDIF … … 247 272 enano(ji,jj,jk) = zetmp1(ji,jj) * z1_dep 248 273 ediat(ji,jj,jk) = zetmp2(ji,jj) * z1_dep 274 #if defined key_pisces_quota 275 epico(ji,jj,jk) = zetmp3(ji,jj) * z1_dep 276 #endif 249 277 ENDIF 250 278 END DO … … 268 296 CALL wrk_dealloc( jpi, jpj, zdepmoy, zetmp, zetmp1, zetmp2 ) 269 297 CALL wrk_dealloc( jpi, jpj, jpk, zekg, zekr, zekb, ze0, ze1, ze2, ze3 ) 298 #if defined key_pisces_quota 299 CALL wrk_dealloc( jpi, jpj, zetmp3 ) 300 #endif 270 301 ! 271 302 IF( nn_timing == 1 ) CALL timing_stop('p4z_opt') … … 376 407 etot (:,:,:) = 0._wp 377 408 enano(:,:,:) = 0._wp 409 #if defined key_pisces_quota 410 epico(:,:,:) = 0._wp 411 #endif 378 412 ediat(:,:,:) = 0._wp 379 413 IF( ln_qsr_bio ) etot3(:,:,:) = 0._wp … … 388 422 !! *** ROUTINE p4z_opt_alloc *** 389 423 !!---------------------------------------------------------------------- 390 ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc ) 424 #if defined key_pisces_quota 425 ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), epico(jpi,jpj,jpk), & 426 & STAT=p4z_opt_alloc ) 427 #else 428 ALLOCATE( enano(jpi,jpj,jpk), ediat(jpi,jpj,jpk), emoy (jpi,jpj,jpk), & 429 & STAT=p4z_opt_alloc ) 430 #endif 391 431 ! 392 432 IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.') -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r4624 r5266 6 6 !! History : 3.5 ! 2012-07 (O. Aumont, C. Ethe) Original code 7 7 !!---------------------------------------------------------------------- 8 #if defined key_pisces 8 #if defined key_pisces || defined key_pisces_quota 9 9 !!---------------------------------------------------------------------- 10 10 !! 'key_pisces' PISCES bio-model -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90
r3680 r5266 17 17 !! 'key_pisces_reduced' : LOBSTER bio-model 18 18 !!--------------------------------------------------------------------- 19 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag20 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .FALSE.!: p4z flag19 INTEGER, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 20 INTEGER, PUBLIC, PARAMETER :: nn_p4z = 1 !: p4z flag 21 21 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 6 !: number of passive tracers 22 22 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 19 !: additional 2d output … … 41 41 !!--------------------------------------------------------------------- 42 42 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 43 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE.!: p4z flag43 INTEGER, PUBLIC, PARAMETER :: nn_p4z = 2 !: p4z flag 44 44 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .TRUE. !: Kriest flag 45 45 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 23 !: number of passive tracers … … 80 80 !!--------------------------------------------------------------------- 81 81 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 82 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE.!: p4z flag82 INTEGER, PUBLIC, PARAMETER :: nn_p4z = 2 !: p4z flag 83 83 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .FALSE. !: Kriest flag 84 84 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 24 !: number of PISCES passive tracers … … 115 115 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 24 !: Ammonium Concentration 116 116 117 #elif defined key_pisces_quota && defined key_kriest 118 !!--------------------------------------------------------------------- 119 !! 'key_pisces' & 'key_kriest' PISCES bio-model + ??? 120 !!--------------------------------------------------------------------- 121 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 122 INTEGER, PUBLIC, PARAMETER :: nn_p4z = 3 !: p4z flag 123 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .TRUE. !: Kriest flag 124 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 36 !: number of passive tracers 125 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 13 !: additional 2d output 126 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 18 !: additional 3d output 127 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES 128 129 ! assign an index in trc arrays for each LOBSTER prognostic variables 130 ! WARNING: be carefull about the order when reading the restart 131 ! !!gm this warning should be obsolet with IOM 132 INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration 133 INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity 134 INTEGER, PUBLIC, PARAMETER :: jpoxy = 3 !: oxygen carbon concentration 135 INTEGER, PUBLIC, PARAMETER :: jpcal = 4 !: calcite concentration 136 INTEGER, PUBLIC, PARAMETER :: jppo4 = 5 !: phosphate concentration 137 INTEGER, PUBLIC, PARAMETER :: jppoc = 6 !: small particulate organic phosphate concentration 138 INTEGER, PUBLIC, PARAMETER :: jpsil = 7 !: silicate concentration 139 INTEGER, PUBLIC, PARAMETER :: jpphy = 8 !: phytoplancton concentration 140 INTEGER, PUBLIC, PARAMETER :: jpzoo = 9 !: zooplancton concentration 141 INTEGER, PUBLIC, PARAMETER :: jpdoc = 10 !: dissolved organic carbon concentration 142 INTEGER, PUBLIC, PARAMETER :: jpdia = 11 !: Diatoms Concentration 143 INTEGER, PUBLIC, PARAMETER :: jpmes = 12 !: Mesozooplankton Concentration 144 INTEGER, PUBLIC, PARAMETER :: jpdsi = 13 !: (big) Silicate Concentration 145 INTEGER, PUBLIC, PARAMETER :: jpfer = 14 !: Iron Concentration 146 INTEGER, PUBLIC, PARAMETER :: jpnum = 15 !: Big iron particles Concentration 147 INTEGER, PUBLIC, PARAMETER :: jpsfe = 16 !: number of particulate organic phosphate concentration 148 INTEGER, PUBLIC, PARAMETER :: jpdfe = 17 !: Diatoms iron Concentration 149 INTEGER, PUBLIC, PARAMETER :: jpgsi = 18 !: Diatoms Silicate Concentration 150 INTEGER, PUBLIC, PARAMETER :: jpnfe = 19 !: Nano iron Concentration 151 INTEGER, PUBLIC, PARAMETER :: jpnch = 20 !: Nano Chlorophyll Concentration 152 INTEGER, PUBLIC, PARAMETER :: jpdch = 21 !: Diatoms Chlorophyll Concentration 153 INTEGER, PUBLIC, PARAMETER :: jpno3 = 22 !: Nitrates Concentration 154 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 23 !: Ammonium Concentration 155 INTEGER, PUBLIC, PARAMETER :: jpdon = 24 !: dissolved organic nitrogen concentration 156 INTEGER, PUBLIC, PARAMETER :: jpdop = 25 !: dissolved organic phosphorus concentration 157 INTEGER, PUBLIC, PARAMETER :: jppon = 26 !: small particulate organic nitrogen concentration 158 INTEGER, PUBLIC, PARAMETER :: jppop = 27 !: small particulate organic phosphorus concentration 159 INTEGER, PUBLIC, PARAMETER :: jpnph = 28 !: small particulate organic phosphorus concentration 160 INTEGER, PUBLIC, PARAMETER :: jppph = 29 !: small particulate organic phosphorus concentration 161 INTEGER, PUBLIC, PARAMETER :: jpndi = 30 !: small particulate organic phosphorus concentration 162 INTEGER, PUBLIC, PARAMETER :: jppdi = 31 !: small particulate organic phosphorus concentration 163 INTEGER, PUBLIC, PARAMETER :: jppic = 32 !: small particulate organic phosphorus concentration 164 INTEGER, PUBLIC, PARAMETER :: jpnpi = 33 !: small particulate organic phosphorus concentration 165 INTEGER, PUBLIC, PARAMETER :: jpppi = 34 !: small particulate organic phosphorus concentration 166 INTEGER, PUBLIC, PARAMETER :: jppfe = 35 !: small particulate organic phosphorus concentration 167 INTEGER, PUBLIC, PARAMETER :: jppch = 36 !: small particulate organic phosphorus concentration 168 169 #elif defined key_pisces_quota 170 !!--------------------------------------------------------------------- 171 !! 'key_pisces' : standard PISCES bio-model 172 !!--------------------------------------------------------------------- 173 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 174 INTEGER, PUBLIC, PARAMETER :: nn_p4z = 3 !: p4z flag 175 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .FALSE. !: Kriest flag 176 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 39 !: number of PISCES passive tracers 177 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 13 !: additional 2d output 178 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 11 !: additional 3d output 179 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES 180 181 ! assign an index in trc arrays for each LOBSTER prognostic variables 182 ! WARNING: be carefull about the order when reading the restart 183 ! !!gm this warning should be obsolet with IOM 184 INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration 185 INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity 186 INTEGER, PUBLIC, PARAMETER :: jpoxy = 3 !: oxygen carbon concentration 187 INTEGER, PUBLIC, PARAMETER :: jpcal = 4 !: calcite concentration 188 INTEGER, PUBLIC, PARAMETER :: jppo4 = 5 !: phosphate concentration 189 INTEGER, PUBLIC, PARAMETER :: jppoc = 6 !: small particulate organic phosphate concentration 190 INTEGER, PUBLIC, PARAMETER :: jpsil = 7 !: silicate concentration 191 INTEGER, PUBLIC, PARAMETER :: jpphy = 8 !: phytoplancton concentration 192 INTEGER, PUBLIC, PARAMETER :: jpzoo = 9 !: zooplancton concentration 193 INTEGER, PUBLIC, PARAMETER :: jpdoc = 10 !: dissolved organic carbon concentration 194 INTEGER, PUBLIC, PARAMETER :: jpdia = 11 !: Diatoms Concentration 195 INTEGER, PUBLIC, PARAMETER :: jpmes = 12 !: Mesozooplankton Concentration 196 INTEGER, PUBLIC, PARAMETER :: jpdsi = 13 !: (big) Silicate Concentration 197 INTEGER, PUBLIC, PARAMETER :: jpfer = 14 !: Iron Concentration 198 INTEGER, PUBLIC, PARAMETER :: jpbfe = 15 !: Big iron particles Concentration 199 INTEGER, PUBLIC, PARAMETER :: jpgoc = 16 !: big particulate organic phosphate concentration 200 INTEGER, PUBLIC, PARAMETER :: jpsfe = 17 !: Small iron particles Concentration 201 INTEGER, PUBLIC, PARAMETER :: jpdfe = 18 !: Diatoms iron Concentration 202 INTEGER, PUBLIC, PARAMETER :: jpgsi = 19 !: Diatoms Silicate Concentration 203 INTEGER, PUBLIC, PARAMETER :: jpnfe = 20 !: Nano iron Concentration 204 INTEGER, PUBLIC, PARAMETER :: jpnch = 21 !: Nano Chlorophyll Concentration 205 INTEGER, PUBLIC, PARAMETER :: jpdch = 22 !: Diatoms Chlorophyll Concentration 206 INTEGER, PUBLIC, PARAMETER :: jpno3 = 23 !: Nitrates Concentration 207 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 24 !: Ammonium Concentration 208 INTEGER, PUBLIC, PARAMETER :: jpdon = 25 !: dissolved organic nitrogen concentration 209 INTEGER, PUBLIC, PARAMETER :: jpdop = 26 !: dissolved organic phosphorus concentration 210 INTEGER, PUBLIC, PARAMETER :: jppon = 27 !: small particulate organic nitrogen concentration 211 INTEGER, PUBLIC, PARAMETER :: jppop = 28 !: small particulate organic phosphorus concentration 212 INTEGER, PUBLIC, PARAMETER :: jpgon = 29 !: big particulate organic nitrogen concentration 213 INTEGER, PUBLIC, PARAMETER :: jpgop = 30 !: big particulate organic phosphate concentration 214 INTEGER, PUBLIC, PARAMETER :: jpnph = 31 !: big particulate organic phosphate concentration 215 INTEGER, PUBLIC, PARAMETER :: jppph = 32 !: big particulate organic phosphate concentration 216 INTEGER, PUBLIC, PARAMETER :: jpndi = 33 !: big particulate organic phosphate concentration 217 INTEGER, PUBLIC, PARAMETER :: jppdi = 34 !: big particulate organic phosphate concentration 218 INTEGER, PUBLIC, PARAMETER :: jppic = 35 !: big particulate organic phosphate concentration 219 INTEGER, PUBLIC, PARAMETER :: jpnpi = 36 !: big particulate organic phosphate concentration 220 INTEGER, PUBLIC, PARAMETER :: jpppi = 37 !: big particulate organic phosphate concentration 221 INTEGER, PUBLIC, PARAMETER :: jppfe = 38 !: big particulate organic phosphate concentration 222 INTEGER, PUBLIC, PARAMETER :: jppch = 39 !: big particulate organic phosphate concentration 223 224 117 225 #else 118 226 !!--------------------------------------------------------------------- … … 120 228 !!--------------------------------------------------------------------- 121 229 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .FALSE. !: PISCES flag 122 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .FALSE.!: p4z flag230 LOGICAL, PUBLIC, PARAMETER :: nn_p4z = 0 !: p4z flag 123 231 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 0 !: No CFC tracers 124 232 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 0 !: No CFC additional 2d output arrays -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r4529 r5266 7 7 !! 3.2 ! 2009-04 (C. Ethe & NEMO team) style 8 8 !!---------------------------------------------------------------------- 9 #if defined key_pisces || defined key_pisces_reduced 9 #if defined key_pisces || defined key_pisces_reduced || defined key_pisces_quota 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_pisces' PISCES model … … 29 29 ! !: PISCES : silicon dependant half saturation 30 30 31 #if defined key_pisces 31 #if defined key_pisces || defined key_pisces_quota 32 32 !!* Time variables 33 33 INTEGER :: nrdttrc !: ??? … … 72 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimphy !: ??? 73 73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdia !: ??? 74 #if ! defined key_pisces_quota 74 75 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concdfe !: ??? 75 76 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concnfe !: ??? 77 #endif 76 78 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimnfe !: ??? 77 79 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdfe !: ??? 78 80 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimsi !: ??? 79 81 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: biron !: bioavailable fraction of iron 80 81 82 82 83 !!* SMS for the organic matter … … 115 116 116 117 #endif 118 119 # if defined key_pisces_quota 120 !!* Biological parameters 121 REAL(wp) :: no3rat3 !: ??? 122 REAL(wp) :: po4rat3 !: ??? 123 124 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicono3 !: ??? 125 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpiconh4 !: ??? 126 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicopo4 !: ??? 127 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanodop !: ??? 128 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicodop !: ??? 129 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatdop !: ??? 130 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanofer !: ??? 131 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xpicofer !: ??? 132 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatfer !: ??? 133 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpic !: ??? 134 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimpfe !: ??? 135 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvnuptk 136 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvpuptk 137 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvduptk 138 139 !!* Allometric variations of the quotas 140 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnnmin !: ??? 141 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnnmax !: ??? 142 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpnmin !: ??? 143 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpnmax !: ??? 144 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnpmin !: ??? 145 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqnpmax !: ??? 146 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqppmin !: ??? 147 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqppmax !: ??? 148 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqndmin !: ??? 149 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqndmax !: ??? 150 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpdmin !: ??? 151 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xqpdmax !: ??? 152 153 !!* SMS for the organic matter 154 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sizen !: size of diatoms 155 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sizep !: size of diatoms 156 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sized !: size of diatoms 157 158 #endif 117 159 !!---------------------------------------------------------------------- 118 160 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 127 169 !!---------------------------------------------------------------------- 128 170 USE lib_mpp , ONLY: ctl_warn 171 #if defined key_pisces_quota 172 INTEGER :: ierr(9) ! Local variables 173 #else 129 174 INTEGER :: ierr(6) ! Local variables 175 #endif 130 176 !!---------------------------------------------------------------------- 131 177 ierr(:) = 0 … … 133 179 ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), xksi(jpi,jpj), STAT=ierr(1) ) 134 180 ! 135 #if defined key_pisces 181 #if defined key_pisces || defined key_pisces_quota 136 182 !* Biological fluxes for primary production 137 183 ALLOCATE( xksimax(jpi,jpj) , biron (jpi,jpj,jpk), & … … 140 186 & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), & 141 187 & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), & 188 #if ! defined key_pisces_quota 189 & concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), & 190 #endif 142 191 & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), & 143 & xlimsi (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), & 144 & concnfe (jpi,jpj,jpk), STAT=ierr(2) ) 192 & xlimsi (jpi,jpj,jpk), STAT=ierr(2) ) 145 193 ! 146 194 !* SMS for the organic matter 147 ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac (jpi,jpj,jpk),&148 & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk),&195 ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac (jpi,jpj,jpk), & 196 & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), & 149 197 & xlimbacl(jpi,jpj,jpk), prodcal(jpi,jpj,jpk), STAT=ierr(3) ) 150 198 … … 161 209 ALLOCATE( xnegtr(jpi,jpj,jpk) , STAT=ierr(6) ) 162 210 #endif 211 212 #if defined key_pisces_quota 213 !* Biological arrays for phytoplankton growth 214 ALLOCATE( xpicono3(jpi,jpj,jpk), xpiconh4(jpi,jpj,jpk), & 215 & xpicopo4(jpi,jpj,jpk), xpicodop(jpi,jpj,jpk), & 216 & xnanodop(jpi,jpj,jpk), xdiatdop(jpi,jpj,jpk), & 217 & xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk), & 218 & xpicofer(jpi,jpj,jpk), xlimpfe (jpi,jpj,jpk), & 219 & fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk), & 220 & fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk), & 221 & STAT=ierr(7) ) 222 223 !* Minimum/maximum quotas of phytoplankton 224 ALLOCATE( xqnnmin (jpi,jpj,jpk), xqnnmax(jpi,jpj,jpk), & 225 & xqpnmin (jpi,jpj,jpk), xqpnmax(jpi,jpj,jpk), & 226 & xqnpmin (jpi,jpj,jpk), xqnpmax(jpi,jpj,jpk), & 227 & xqppmin (jpi,jpj,jpk), xqppmax(jpi,jpj,jpk), & 228 & xqndmin (jpi,jpj,jpk), xqndmax(jpi,jpj,jpk), & 229 & xqpdmin (jpi,jpj,jpk), xqpdmax(jpi,jpj,jpk), STAT=ierr(8) ) 230 ! 231 !* Size of phytoplankton cells 232 ALLOCATE( sizen (jpi,jpj,jpk), sizep (jpi,jpj,jpk), & 233 & sized (jpi,jpj,jpk), STAT=ierr(9) ) 234 ! 235 #endif 236 163 237 ! 164 238 sms_pisces_alloc = MAXVAL( ierr ) -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
r4521 r5266 11 11 !! 3.5 ! 2012-05 (C. Ethe) Merge PISCES-LOBSTER 12 12 !!---------------------------------------------------------------------- 13 #if defined key_pisces || defined key_pisces_reduced 13 #if defined key_pisces || defined key_pisces_reduced || defined key_pisces_quota 14 14 !!---------------------------------------------------------------------- 15 15 !! 'key_pisces' PISCES bio-model … … 43 43 !!---------------------------------------------------------------------- 44 44 45 IF( lk_p4z ) THEN ; CALL p4z_ini ! PISCES 46 ELSE ; CALL p2z_ini ! LOBSTER 47 ENDIF 45 SELECT CASE ( nn_p4z ) 46 ! 47 CASE(1) ; CALL p2z_ini ! LOBSTER 48 CASE(2) ; CALL p4z_ini ! PISCES 49 CASE(3) ; CALL p5z_ini ! PISCES QUOTA 50 51 END SELECT 48 52 49 53 END SUBROUTINE trc_ini_pisces 54 55 SUBROUTINE p5z_ini 56 !!---------------------------------------------------------------------- 57 !! *** ROUTINE p5z_ini *** 58 !! 59 !! ** Purpose : Initialisation of the PISCES biochemical model 60 !! with variable stoichiometry 61 !!---------------------------------------------------------------------- 62 #if defined key_pisces_quota 63 ! 64 USE p5zsms ! Main P4Z routine 65 USE p4zche ! Chemical model 66 USE p5zsink ! vertical flux of particulate matter due to sinking 67 USE p4zopt ! optical model 68 USE p4zsbc ! Boundary conditions 69 USE p4zfechem ! Iron chemistry 70 USE p5zrem ! Remineralisation of organic matter 71 USE p4zflx ! Gas exchange 72 USE p5zlim ! Co-limitations of differents nutrients 73 USE p5zprod ! Growth rate of the 2 phyto groups 74 USE p5zmicro ! Sources and sinks of microzooplankton 75 USE p5zmeso ! Sources and sinks of mesozooplankton 76 USE p5zmort ! Mortality terms for phytoplankton 77 USE p4zlys ! Calcite saturation 78 ! 79 REAL(wp), SAVE :: sco2 = 2.312e-3_wp 80 REAL(wp), SAVE :: alka0 = 2.423e-3_wp 81 REAL(wp), SAVE :: oxyg0 = 177.6e-6_wp 82 REAL(wp), SAVE :: po4 = 2.174e-6_wp 83 REAL(wp), SAVE :: bioma0 = 1.000e-8_wp 84 REAL(wp), SAVE :: silic1 = 91.65e-6_wp 85 REAL(wp), SAVE :: no3 = 31.04e-6_wp * 7.625_wp 86 ! 87 INTEGER :: ji, jj, jk, ierr 88 REAL(wp) :: zcaralk, zbicarb, zco3 89 REAL(wp) :: ztmas, ztmas1 90 !!---------------------------------------------------------------------- 91 92 IF(lwp) WRITE(numout,*) 93 IF(lwp) WRITE(numout,*) ' p5z_ini : PISCES biochemical model initialisation' 94 IF(lwp) WRITE(numout,*) ' With variable stoichiometry' 95 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 96 97 ! Allocate PISCES arrays 98 ierr = sms_pisces_alloc() 99 ierr = ierr + p4z_che_alloc() 100 ierr = ierr + p5z_sink_alloc() 101 ierr = ierr + p4z_opt_alloc() 102 ierr = ierr + p5z_prod_alloc() 103 ierr = ierr + p5z_rem_alloc() 104 ierr = ierr + p4z_flx_alloc() 105 ! 106 IF( lk_mpp ) CALL mpp_sum( ierr ) 107 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'pisces_alloc: unable to allocate PISCES arrays' ) 108 ! 109 CALL p5z_sms_init ! Maint routine 110 ! ! Time-step 111 rfact = rdttrc(1) ! --------- 112 rfactr = 1. / rfact 113 rfact2 = rfact / FLOAT( nrdttrc ) 114 rfact2r = 1. / rfact2 115 116 IF(lwp) WRITE(numout,*) ' Passive Tracer time step rfact = ', rfact, ' rdt = ', rdttra(1) 117 IF(lwp) write(numout,*) ' PISCES Biology time step rfact2 = ', rfact2 118 119 ! Set biological ratios 120 ! --------------------- 121 rno3 = 16._wp / 122._wp 122 po4r = 1._wp / 122._wp 123 o2nit = 32._wp / 122._wp 124 rdenit = 105._wp / 16._wp 125 rdenita = 3._wp / 5._wp 126 o2ut = 133._wp / 122._wp 127 no3rat3 = no3rat3 / rno3 128 po4rat3 = po4rat3 / po4r 129 130 ! Initialization of tracer concentration in case of no restart 131 !-------------------------------------------------------------- 132 IF( .NOT. ln_rsttr ) THEN 133 134 trn(:,:,:,jpdic) = sco2 135 trn(:,:,:,jpdoc) = bioma0 136 trn(:,:,:,jpdon) = bioma0 137 trn(:,:,:,jpdop) = bioma0 138 trn(:,:,:,jptal) = alka0 139 trn(:,:,:,jpoxy) = oxyg0 140 trn(:,:,:,jpcal) = bioma0 141 trn(:,:,:,jppo4) = po4 / po4r 142 trn(:,:,:,jppoc) = bioma0 143 trn(:,:,:,jppon) = bioma0 144 trn(:,:,:,jppop) = bioma0 145 # if ! defined key_kriest 146 trn(:,:,:,jpgoc) = bioma0 147 trn(:,:,:,jpgon) = bioma0 148 trn(:,:,:,jpgop) = bioma0 149 trn(:,:,:,jpbfe) = bioma0 * 5.e-6 150 # else 151 trn(:,:,:,jpnum) = bioma0 / ( 6. * xkr_massp ) 152 # endif 153 trn(:,:,:,jpsil) = silic1 154 trn(:,:,:,jpdsi) = bioma0 * 0.15 155 trn(:,:,:,jpgsi) = bioma0 * 5.e-6 156 trn(:,:,:,jpphy) = bioma0 157 trn(:,:,:,jpnph) = bioma0 158 trn(:,:,:,jppph) = bioma0 159 trn(:,:,:,jppic) = bioma0 160 trn(:,:,:,jpnpi) = bioma0 161 trn(:,:,:,jpppi) = bioma0 162 trn(:,:,:,jpdia) = bioma0 163 trn(:,:,:,jpndi) = bioma0 164 trn(:,:,:,jppdi) = bioma0 165 trn(:,:,:,jpzoo) = bioma0 166 trn(:,:,:,jpmes) = bioma0 167 trn(:,:,:,jpfer) = 0.6E-9 168 trn(:,:,:,jpsfe) = bioma0 * 5.e-6 169 trn(:,:,:,jppfe) = bioma0 * 5.e-6 170 trn(:,:,:,jpdfe) = bioma0 * 5.e-6 171 trn(:,:,:,jpnfe) = bioma0 * 5.e-6 172 trn(:,:,:,jpnch) = bioma0 * 12. / 55. 173 trn(:,:,:,jppch) = bioma0 * 12. / 55. 174 trn(:,:,:,jpdch) = bioma0 * 12. / 55. 175 trn(:,:,:,jpno3) = no3 176 trn(:,:,:,jpnh4) = bioma0 177 178 ! initialize the half saturation constant for silicate 179 ! ---------------------------------------------------- 180 xksi(:,:) = 2.e-6 181 xksimax(:,:) = xksi(:,:) 182 END IF 183 184 ! Time step duration for biology 185 xstep = rfact2 / rday 186 187 CALL p5z_sink_init ! vertical flux of particulate organic matter 188 CALL p4z_opt_init ! Optic: PAR in the water column 189 CALL p5z_lim_init ! co-limitations by the various nutrients 190 CALL p5z_prod_init ! phytoplankton growth rate over the global ocean. 191 CALL p4z_sbc_init ! boundary conditions 192 CALL p4z_fechem_init ! Iron chemistry 193 CALL p5z_rem_init ! remineralisation 194 CALL p5z_mort_init ! phytoplankton mortality 195 CALL p5z_micro_init ! microzooplankton 196 CALL p5z_meso_init ! mesozooplankton 197 CALL p4z_lys_init ! calcite saturation 198 CALL p4z_flx_init ! gas exchange 199 200 ndayflxtr = 0 201 202 IF(lwp) WRITE(numout,*) 203 IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' 204 IF(lwp) WRITE(numout,*) 205 #endif 206 ! 207 END SUBROUTINE p5z_ini 50 208 51 209 SUBROUTINE p4z_ini … … 74 232 REAL(wp), SAVE :: sco2 = 2.312e-3_wp 75 233 REAL(wp), SAVE :: alka0 = 2.423e-3_wp 76 REAL(wp), SAVE :: oxyg0 = 177.6e-6_wp 77 REAL(wp), SAVE :: po4 = 2.174e-6_wp 78 REAL(wp), SAVE :: bioma0 = 1.000e-8_wp 79 REAL(wp), SAVE :: silic1 = 91.65e-6_wp 234 REAL(wp), SAVE :: oxyg0 = 177.6e-6_wp 235 REAL(wp), SAVE :: po4 = 2.174e-6_wp 236 REAL(wp), SAVE :: bioma0 = 1.000e-8_wp 237 REAL(wp), SAVE :: silic1 = 91.65e-6_wp 80 238 REAL(wp), SAVE :: no3 = 31.04e-6_wp * 7.625_wp 81 239 ! … … 90 248 91 249 ! Allocate PISCES arrays 92 ierr = sms_pisces_alloc() 250 ierr = sms_pisces_alloc() 93 251 ierr = ierr + p4z_che_alloc() 94 252 ierr = ierr + p4z_sink_alloc() … … 125 283 ! Initialization of tracer concentration in case of no restart 126 284 !-------------------------------------------------------------- 127 IF( .NOT. ln_rsttr ) THEN 128 285 IF( .NOT. ln_rsttr ) THEN 286 129 287 trn(:,:,:,jpdic) = sco2 130 288 trn(:,:,:,jpdoc) = bioma0 … … 180 338 ndayflxtr = 0 181 339 182 IF(lwp) WRITE(numout,*) 340 IF(lwp) WRITE(numout,*) 183 341 IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' 184 IF(lwp) WRITE(numout,*) 342 IF(lwp) WRITE(numout,*) 185 343 #endif 186 344 ! -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90
r4624 r5266 9 9 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcnam.pisces.h90 10 10 !!---------------------------------------------------------------------- 11 #if defined key_pisces || defined key_pisces_reduced 11 #if defined key_pisces || defined key_pisces_reduced || defined key_pisces_quota 12 12 !!---------------------------------------------------------------------- 13 13 !! 'key_pisces' : PISCES bio-model … … 66 66 #if defined key_pisces 67 67 IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read PISCES namelist' 68 #elif defined key_pisces_quota 69 IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read PISCES-QUOTA namelist' 68 70 #else 69 71 IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read LOBSTER namelist' -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
r4147 r5266 7 7 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 8 8 !!---------------------------------------------------------------------- 9 #if defined key_pisces || defined key_pisces_reduced 9 #if defined key_pisces || defined key_pisces_reduced || defined key_pisces_quota 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_pisces' PISCES bio-model … … 14 14 !!---------------------------------------------------------------------- 15 15 USE par_pisces 16 USE p5zsms 16 17 USE p4zsms 17 18 USE p2zsms … … 48 49 !!--------------------------------------------------------------------- 49 50 ! 50 IF( lk_p4z ) THEN ; CALL p4z_sms( kt ) ! PISCES 51 ELSE ; CALL p2z_sms( kt ) ! LOBSTER 52 ENDIF 51 SELECT CASE ( nn_p4z ) 52 53 CASE(1) ; CALL p2z_sms( kt ) ! LOBSTER 54 CASE(2) ; CALL p4z_sms( kt ) ! PISCES 55 CASE(3) ; CALL p5z_sms( kt ) ! PISCES with variable stoichiometry 56 57 END SELECT 53 58 54 59 ! -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90
r4292 r5266 6 6 !! History : 1.0 ! 2009-05 (C. Ethe) Original code 7 7 !!---------------------------------------------------------------------- 8 #if defined key_top && defined key_iomput && ( defined key_pisces || defined key_pisces_reduced )8 #if defined key_top && defined key_iomput && ( defined key_pisces || defined key_pisces_reduced || defined key_pisces_quota) 9 9 !!---------------------------------------------------------------------- 10 10 !! 'key_pisces or key_pisces_reduced' PISCES model -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
r4509 r5266 133 133 SELECT CASE ( nn_ctls_trc ) ! choice of the control surface 134 134 CASE ( -2 ) ; STOP 'trdmld_trc : not ready ' ! -> isopycnal surface (see ???) 135 #if defined key_pisces || defined key_pisces_reduced 135 #if defined key_pisces || defined key_pisces_reduced || defined key_pisces_quota 136 136 CASE ( -1 ) ; nmld_trc(:,:) = neln(:,:) ! -> euphotic layer with light criterion 137 137 #endif -
branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/trc.F90
r4611 r5266 183 183 ! 184 184 ALLOCATE( trn(jpi,jpj,jpk,jptra), trb(jpi,jpj,jpk,jptra), tra(jpi,jpj,jpk,jptra), & 185 & gtru(jpi,jpj,jp k) , gtrv(jpi,jpj,jpk), &185 & gtru(jpi,jpj,jptra) , gtrv(jpi,jpj,jptra) , & 186 186 & cvol(jpi,jpj,jpk) , rdttrc(jpk) , trai(jptra) , & 187 187 & ctrcnm(jptra) , ctrcln(jptra) , ctrcun(jptra) , &
Note: See TracChangeset
for help on using the changeset viewer.