Changeset 3443 for branches/2012/dev_r3438_LOCEAN15_PISLOB
- Timestamp:
- 2012-08-07T13:25:00+02:00 (12 years ago)
- Location:
- branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC
- Files:
-
- 42 added
- 19 deleted
- 24 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/C14b/par_c14b.F90
r2715 r3443 6 6 !! History : 2.0 ! 2008-12 (C. Ethe, G. Madec) revised architecture 7 7 !!---------------------------------------------------------------------- 8 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER9 USE par_lobster, ONLY : jp_lobster_2d !: number of 2D diag in LOBSTER10 USE par_lobster, ONLY : jp_lobster_3d !: number of 3D diag in LOBSTER11 USE par_lobster, ONLY : jp_lobster_trd !: number of biological diag in LOBSTER12 13 8 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES 14 9 USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES … … 24 19 IMPLICIT NONE 25 20 26 INTEGER, PARAMETER :: jp_lb = jp_lobster +jp_pisces + jp_cfc !: cum. number of pass. tracers27 INTEGER, PARAMETER :: jp_lb_2d = jp_lobster_2d +jp_pisces_2d + jp_cfc_2d !:28 INTEGER, PARAMETER :: jp_lb_3d = jp_lobster_3d +jp_pisces_3d + jp_cfc_3d !:29 INTEGER, PARAMETER :: jp_lb_trd = jp_lobster_trd +jp_pisces_trd + jp_cfc_trd !:21 INTEGER, PARAMETER :: jp_lb = jp_pisces + jp_cfc !: cum. number of pass. tracers 22 INTEGER, PARAMETER :: jp_lb_2d = jp_pisces_2d + jp_cfc_2d !: 23 INTEGER, PARAMETER :: jp_lb_3d = jp_pisces_3d + jp_cfc_3d !: 24 INTEGER, PARAMETER :: jp_lb_trd = jp_pisces_trd + jp_cfc_trd !: 30 25 31 26 #if defined key_c14b -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/C14b/trcsms_c14b.F90
r3294 r3443 125 125 xdecay = EXP( - xlambda * rdt ) 126 126 xaccum = 1._wp - xdecay 127 ! 128 IF( ln_rsttr ) THEN 129 IF(lwp) WRITE(numout,*) 130 IF(lwp) WRITE(numout,*) ' Read specific variables from C14b model ' 131 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 132 CALL iom_get( numrtr, jpdom_autoglo, 'qint_c14', qint_c14 ) 133 ENDIF 134 ! 135 IF(lwp) WRITE(numout,*) 136 ! 127 137 ENDIF 128 138 … … 271 281 END DO 272 282 283 ! 284 IF( lrst_trc ) THEN 285 IF(lwp) WRITE(numout,*) 286 IF(lwp) WRITE(numout,*) 'trc_sms_c14b : cumulated input function fields written in ocean restart file ', & 287 & 'at it= ', kt,' date= ', ndastp 288 IF(lwp) WRITE(numout,*) '~~~~' 289 CALL iom_rstput( kt, nitrst, numrtw, 'qint_c14', qint_c14 ) 290 ENDIF 291 ! 273 292 IF( ln_diatrc ) THEN 274 293 IF( lk_iomput ) THEN -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/CFC/par_cfc.F90
r3294 r3443 10 10 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 11 11 !!---------------------------------------------------------------------- 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER13 USE par_lobster, ONLY : jp_lobster_2d !: number of 2D diag in LOBSTER14 USE par_lobster, ONLY : jp_lobster_3d !: number of 3D diag in LOBSTER15 USE par_lobster, ONLY : jp_lobster_trd !: number of biological diag in LOBSTER16 17 12 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES 18 13 USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES … … 22 17 IMPLICIT NONE 23 18 24 INTEGER, PARAMETER :: jp_lc = jp_lobster +jp_pisces !: cumulative number of passive tracers25 INTEGER, PARAMETER :: jp_lc_2d = jp_lobster_2d +jp_pisces_2d !:26 INTEGER, PARAMETER :: jp_lc_3d = jp_lobster_3d +jp_pisces_3d !:27 INTEGER, PARAMETER :: jp_lc_trd = jp_lobster_trd +jp_pisces_trd !:19 INTEGER, PARAMETER :: jp_lc = jp_pisces !: cumulative number of passive tracers 20 INTEGER, PARAMETER :: jp_lc_2d = jp_pisces_2d !: 21 INTEGER, PARAMETER :: jp_lc_3d = jp_pisces_3d !: 22 INTEGER, PARAMETER :: jp_lc_trd = jp_pisces_trd !: 28 23 29 24 #if defined key_cfc -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
r3294 r3443 13 13 !!---------------------------------------------------------------------- 14 14 !! trc_sms_cfc : compute and add CFC suface forcing to CFC trends 15 !! trc_cfc_cst: sets constants for CFC surface forcing computation15 !! cfc_init : sets constants for CFC surface forcing computation 16 16 !!---------------------------------------------------------------------- 17 17 USE oce_trc ! Ocean variables … … 99 99 ENDIF 100 100 101 IF( kt == nittrc000 ) CALL trc_cfc_cst101 IF( kt == nittrc000 ) CALL cfc_init 102 102 103 103 ! Temporal interpolation … … 176 176 ! !----------------! 177 177 END DO ! end CFC loop ! 178 ! !----------------! 178 ! 179 IF( lrst_trc ) THEN 180 IF(lwp) WRITE(numout,*) 181 IF(lwp) WRITE(numout,*) 'trc_sms_cfc : cumulated input function fields written in ocean restart file ', & 182 & 'at it= ', kt,' date= ', ndastp 183 IF(lwp) WRITE(numout,*) '~~~~' 184 DO jn = jp_cfc0, jp_cfc1 185 CALL iom_rstput( kt, nitrst, numrtw, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 186 END DO 187 ENDIF 188 ! 179 189 IF( ln_diatrc ) THEN 180 190 ! … … 200 210 201 211 202 SUBROUTINE trc_cfc_cst212 SUBROUTINE cfc_init 203 213 !!--------------------------------------------------------------------- 204 !! *** trc_cfc_cst ***214 !! *** cfc_init *** 205 215 !! 206 216 !! ** Purpose : sets constants for CFC model 207 217 !!--------------------------------------------------------------------- 218 INTEGER :: jn 208 219 209 220 ! coefficient for CFC11 … … 245 256 sca(4,2) = -0.067430 246 257 247 END SUBROUTINE trc_cfc_cst 258 IF( ln_rsttr ) THEN 259 IF(lwp) WRITE(numout,*) 260 IF(lwp) WRITE(numout,*) ' Read specific variables from CFC model ' 261 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 262 ! 263 DO jn = jp_cfc0, jp_cfc1 264 CALL iom_get( numrtr, jpdom_autoglo, 'qint_'//ctrcnm(jn), qint_cfc(:,:,jn) ) 265 END DO 266 ENDIF 267 IF(lwp) WRITE(numout,*) 268 ! 269 END SUBROUTINE cfc_init 248 270 249 271 -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/MY_TRC/par_my_trc.F90
r2528 r3443 10 10 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 11 11 !!---------------------------------------------------------------------- 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER13 USE par_lobster, ONLY : jp_lobster_2d !: number of 2D diag in LOBSTER14 USE par_lobster, ONLY : jp_lobster_3d !: number of 3D diag in LOBSTER15 USE par_lobster, ONLY : jp_lobster_trd !: number of biological diag in LOBSTER16 17 12 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES 18 13 USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES … … 32 27 IMPLICIT NONE 33 28 34 INTEGER, PARAMETER :: jp_lm = jp_lobster +jp_pisces + jp_cfc + jp_c14b !:35 INTEGER, PARAMETER :: jp_lm_2d = jp_lobster_2d +jp_pisces_2d + jp_cfc_2d + jp_c14b_2d !:36 INTEGER, PARAMETER :: jp_lm_3d = jp_lobster_3d +jp_pisces_3d + jp_cfc_3d + jp_c14b_3d !:37 INTEGER, PARAMETER :: jp_lm_trd = jp_lobster_trd +jp_pisces_trd + jp_cfc_trd + jp_c14b_trd !:29 INTEGER, PARAMETER :: jp_lm = jp_pisces + jp_cfc + jp_c14b !: 30 INTEGER, PARAMETER :: jp_lm_2d = jp_pisces_2d + jp_cfc_2d + jp_c14b_2d !: 31 INTEGER, PARAMETER :: jp_lm_3d = jp_pisces_3d + jp_cfc_3d + jp_c14b_3d !: 32 INTEGER, PARAMETER :: jp_lm_trd = jp_pisces_trd + jp_cfc_trd + jp_c14b_trd !: 38 33 39 34 #if defined key_my_trc -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/MY_TRC/trcnam_my_trc.F90
r2528 r3443 2 2 !!====================================================================== 3 3 !! *** MODULE trcnam_my_trc *** 4 !! TOP : initialisation of some run parameters for LOBSTERbio-model4 !! TOP : initialisation of some run parameters for MY_TRC bio-model 5 5 !!====================================================================== 6 6 !! History : 2.0 ! 2007-12 (C. Ethe, G. Madec) Original code -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90
r3295 r3443 10 10 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 11 11 !!---------------------------------------------------------------------- 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER13 USE par_lobster, ONLY : jp_lobster_2d !: number of 2D diag in LOBSTER14 USE par_lobster, ONLY : jp_lobster_3d !: number of 3D diag in LOBSTER15 USE par_lobster, ONLY : jp_lobster_trd !: number of biological diag in LOBSTER16 12 17 13 IMPLICIT NONE 18 14 19 INTEGER, PUBLIC, PARAMETER :: jp_lp = jp_lobster !: cumulative number of already defined TRC 20 INTEGER, PUBLIC, PARAMETER :: jp_lp_2d = jp_lobster_2d !: 21 INTEGER, PUBLIC, PARAMETER :: jp_lp_3d = jp_lobster_3d !: 22 INTEGER, PUBLIC, PARAMETER :: jp_lp_trd = jp_lobster_trd !: 15 #if defined key_pisces_reduced 16 !!--------------------------------------------------------------------- 17 !! 'key_pisces_reduced' : LOBSTER bio-model 18 !!--------------------------------------------------------------------- 19 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 20 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .FALSE. !: p4z flag 21 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 6 !: number of passive tracers 22 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 19 !: additional 2d output 23 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 3 !: additional 3d output 24 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 17 !: number of sms trends for PISCES 23 25 24 #if defined key_pisces && defined key_kriest 26 ! assign an index in trc arrays for each LOBSTER prognostic variables 27 INTEGER, PUBLIC, PARAMETER :: jpdet = 1 !: detritus [mmoleN/m3] 28 INTEGER, PUBLIC, PARAMETER :: jpzoo = 2 !: zooplancton concentration [mmoleN/m3] 29 INTEGER, PUBLIC, PARAMETER :: jpphy = 3 !: phytoplancton concentration [mmoleN/m3] 30 INTEGER, PUBLIC, PARAMETER :: jpno3 = 4 !: nitrate concentration [mmoleN/m3] 31 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 5 !: ammonium concentration [mmoleN/m3] 32 INTEGER, PUBLIC, PARAMETER :: jpdom = 6 !: dissolved organic matter [mmoleN/m3] 33 34 ! productive layer depth 35 INTEGER, PUBLIC, PARAMETER :: jpkb = 12 !: first vertical layers where biology is active 36 INTEGER, PUBLIC, PARAMETER :: jpkbm1 = jpkb - 1 !: first vertical layers where biology is active 37 38 #elif defined key_pisces && defined key_kriest 25 39 !!--------------------------------------------------------------------- 26 40 !! 'key_pisces' & 'key_kriest' PISCES bio-model + ??? 27 41 !!--------------------------------------------------------------------- 28 42 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 43 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE. !: p4z flag 29 44 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .TRUE. !: Kriest flag 30 45 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 23 !: number of passive tracers … … 36 51 ! WARNING: be carefull about the order when reading the restart 37 52 ! !!gm this warning should be obsolet with IOM 38 INTEGER, PUBLIC, PARAMETER :: jpdic = jp_lp +1 !: dissolved inoganic carbon concentration39 INTEGER, PUBLIC, PARAMETER :: jptal = jp_lp +2 !: total alkalinity40 INTEGER, PUBLIC, PARAMETER :: jpoxy = jp_lp +3 !: oxygen carbon concentration41 INTEGER, PUBLIC, PARAMETER :: jpcal = jp_lp +4 !: calcite concentration42 INTEGER, PUBLIC, PARAMETER :: jppo4 = jp_lp +5 !: phosphate concentration43 INTEGER, PUBLIC, PARAMETER :: jppoc = jp_lp +6 !: small particulate organic phosphate concentration44 INTEGER, PUBLIC, PARAMETER :: jpsil = jp_lp +7 !: silicate concentration45 INTEGER, PUBLIC, PARAMETER :: jpphy = jp_lp +8 !: phytoplancton concentration46 INTEGER, PUBLIC, PARAMETER :: jpzoo = jp_lp +9 !: zooplancton concentration47 INTEGER, PUBLIC, PARAMETER :: jpdoc = jp_lp +10 !: dissolved organic carbon concentration48 INTEGER, PUBLIC, PARAMETER :: jpdia = jp_lp +11 !: Diatoms Concentration49 INTEGER, PUBLIC, PARAMETER :: jpmes = jp_lp +12 !: Mesozooplankton Concentration50 INTEGER, PUBLIC, PARAMETER :: jpdsi = jp_lp +13 !: (big) Silicate Concentration51 INTEGER, PUBLIC, PARAMETER :: jpfer = jp_lp +14 !: Iron Concentration52 INTEGER, PUBLIC, PARAMETER :: jpnum = jp_lp +15 !: Big iron particles Concentration53 INTEGER, PUBLIC, PARAMETER :: jpsfe = jp_lp +16 !: number of particulate organic phosphate concentration54 INTEGER, PUBLIC, PARAMETER :: jpdfe = jp_lp +17 !: Diatoms iron Concentration55 INTEGER, PUBLIC, PARAMETER :: jpgsi = jp_lp +18 !: Diatoms Silicate Concentration56 INTEGER, PUBLIC, PARAMETER :: jpnfe = jp_lp +19 !: Nano iron Concentration57 INTEGER, PUBLIC, PARAMETER :: jpnch = jp_lp +20 !: Nano Chlorophyll Concentration58 INTEGER, PUBLIC, PARAMETER :: jpdch = jp_lp +21 !: Diatoms Chlorophyll Concentration59 INTEGER, PUBLIC, PARAMETER :: jpno3 = jp_lp +22 !: Nitrates Concentration60 INTEGER, PUBLIC, PARAMETER :: jpnh4 = jp_lp +23 !: Ammonium Concentration53 INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration 54 INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity 55 INTEGER, PUBLIC, PARAMETER :: jpoxy = 3 !: oxygen carbon concentration 56 INTEGER, PUBLIC, PARAMETER :: jpcal = 4 !: calcite concentration 57 INTEGER, PUBLIC, PARAMETER :: jppo4 = 5 !: phosphate concentration 58 INTEGER, PUBLIC, PARAMETER :: jppoc = 6 !: small particulate organic phosphate concentration 59 INTEGER, PUBLIC, PARAMETER :: jpsil = 7 !: silicate concentration 60 INTEGER, PUBLIC, PARAMETER :: jpphy = 8 !: phytoplancton concentration 61 INTEGER, PUBLIC, PARAMETER :: jpzoo = 9 !: zooplancton concentration 62 INTEGER, PUBLIC, PARAMETER :: jpdoc = 10 !: dissolved organic carbon concentration 63 INTEGER, PUBLIC, PARAMETER :: jpdia = 11 !: Diatoms Concentration 64 INTEGER, PUBLIC, PARAMETER :: jpmes = 12 !: Mesozooplankton Concentration 65 INTEGER, PUBLIC, PARAMETER :: jpdsi = 13 !: (big) Silicate Concentration 66 INTEGER, PUBLIC, PARAMETER :: jpfer = 14 !: Iron Concentration 67 INTEGER, PUBLIC, PARAMETER :: jpnum = 15 !: Big iron particles Concentration 68 INTEGER, PUBLIC, PARAMETER :: jpsfe = 16 !: number of particulate organic phosphate concentration 69 INTEGER, PUBLIC, PARAMETER :: jpdfe = 17 !: Diatoms iron Concentration 70 INTEGER, PUBLIC, PARAMETER :: jpgsi = 18 !: Diatoms Silicate Concentration 71 INTEGER, PUBLIC, PARAMETER :: jpnfe = 19 !: Nano iron Concentration 72 INTEGER, PUBLIC, PARAMETER :: jpnch = 20 !: Nano Chlorophyll Concentration 73 INTEGER, PUBLIC, PARAMETER :: jpdch = 21 !: Diatoms Chlorophyll Concentration 74 INTEGER, PUBLIC, PARAMETER :: jpno3 = 22 !: Nitrates Concentration 75 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 23 !: Ammonium Concentration 61 76 62 77 #elif defined key_pisces … … 65 80 !!--------------------------------------------------------------------- 66 81 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .TRUE. !: PISCES flag 82 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE. !: p4z flag 67 83 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .FALSE. !: Kriest flag 68 84 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 24 !: number of PISCES passive tracers … … 74 90 ! WARNING: be carefull about the order when reading the restart 75 91 ! !!gm this warning should be obsolet with IOM 76 INTEGER, PUBLIC, PARAMETER :: jpdic = jp_lp +1 !: dissolved inoganic carbon concentration77 INTEGER, PUBLIC, PARAMETER :: jptal = jp_lp +2 !: total alkalinity78 INTEGER, PUBLIC, PARAMETER :: jpoxy = jp_lp +3 !: oxygen carbon concentration79 INTEGER, PUBLIC, PARAMETER :: jpcal = jp_lp +4 !: calcite concentration80 INTEGER, PUBLIC, PARAMETER :: jppo4 = jp_lp +5 !: phosphate concentration81 INTEGER, PUBLIC, PARAMETER :: jppoc = jp_lp +6 !: small particulate organic phosphate concentration82 INTEGER, PUBLIC, PARAMETER :: jpsil = jp_lp +7 !: silicate concentration83 INTEGER, PUBLIC, PARAMETER :: jpphy = jp_lp +8 !: phytoplancton concentration84 INTEGER, PUBLIC, PARAMETER :: jpzoo = jp_lp +9 !: zooplancton concentration85 INTEGER, PUBLIC, PARAMETER :: jpdoc = jp_lp +10 !: dissolved organic carbon concentration86 INTEGER, PUBLIC, PARAMETER :: jpdia = jp_lp +11 !: Diatoms Concentration87 INTEGER, PUBLIC, PARAMETER :: jpmes = jp_lp +12 !: Mesozooplankton Concentration88 INTEGER, PUBLIC, PARAMETER :: jpdsi = jp_lp +13 !: (big) Silicate Concentration89 INTEGER, PUBLIC, PARAMETER :: jpfer = jp_lp +14 !: Iron Concentration90 INTEGER, PUBLIC, PARAMETER :: jpbfe = jp_lp +15 !: Big iron particles Concentration91 INTEGER, PUBLIC, PARAMETER :: jpgoc = jp_lp +16 !: big particulate organic phosphate concentration92 INTEGER, PUBLIC, PARAMETER :: jpsfe = jp_lp +17 !: Small iron particles Concentration93 INTEGER, PUBLIC, PARAMETER :: jpdfe = jp_lp +18 !: Diatoms iron Concentration94 INTEGER, PUBLIC, PARAMETER :: jpgsi = jp_lp +19 !: Diatoms Silicate Concentration95 INTEGER, PUBLIC, PARAMETER :: jpnfe = jp_lp +20 !: Nano iron Concentration96 INTEGER, PUBLIC, PARAMETER :: jpnch = jp_lp +21 !: Nano Chlorophyll Concentration97 INTEGER, PUBLIC, PARAMETER :: jpdch = jp_lp +22 !: Diatoms Chlorophyll Concentration98 INTEGER, PUBLIC, PARAMETER :: jpno3 = jp_lp +23 !: Nitrates Concentration99 INTEGER, PUBLIC, PARAMETER :: jpnh4 = jp_lp +24 !: Ammonium Concentration92 INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration 93 INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity 94 INTEGER, PUBLIC, PARAMETER :: jpoxy = 3 !: oxygen carbon concentration 95 INTEGER, PUBLIC, PARAMETER :: jpcal = 4 !: calcite concentration 96 INTEGER, PUBLIC, PARAMETER :: jppo4 = 5 !: phosphate concentration 97 INTEGER, PUBLIC, PARAMETER :: jppoc = 6 !: small particulate organic phosphate concentration 98 INTEGER, PUBLIC, PARAMETER :: jpsil = 7 !: silicate concentration 99 INTEGER, PUBLIC, PARAMETER :: jpphy = 8 !: phytoplancton concentration 100 INTEGER, PUBLIC, PARAMETER :: jpzoo = 9 !: zooplancton concentration 101 INTEGER, PUBLIC, PARAMETER :: jpdoc = 10 !: dissolved organic carbon concentration 102 INTEGER, PUBLIC, PARAMETER :: jpdia = 11 !: Diatoms Concentration 103 INTEGER, PUBLIC, PARAMETER :: jpmes = 12 !: Mesozooplankton Concentration 104 INTEGER, PUBLIC, PARAMETER :: jpdsi = 13 !: (big) Silicate Concentration 105 INTEGER, PUBLIC, PARAMETER :: jpfer = 14 !: Iron Concentration 106 INTEGER, PUBLIC, PARAMETER :: jpbfe = 15 !: Big iron particles Concentration 107 INTEGER, PUBLIC, PARAMETER :: jpgoc = 16 !: big particulate organic phosphate concentration 108 INTEGER, PUBLIC, PARAMETER :: jpsfe = 17 !: Small iron particles Concentration 109 INTEGER, PUBLIC, PARAMETER :: jpdfe = 18 !: Diatoms iron Concentration 110 INTEGER, PUBLIC, PARAMETER :: jpgsi = 19 !: Diatoms Silicate Concentration 111 INTEGER, PUBLIC, PARAMETER :: jpnfe = 20 !: Nano iron Concentration 112 INTEGER, PUBLIC, PARAMETER :: jpnch = 21 !: Nano Chlorophyll Concentration 113 INTEGER, PUBLIC, PARAMETER :: jpdch = 22 !: Diatoms Chlorophyll Concentration 114 INTEGER, PUBLIC, PARAMETER :: jpno3 = 23 !: Nitrates Concentration 115 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 24 !: Ammonium Concentration 100 116 101 117 #else … … 103 119 !! Default No CFC geochemical model 104 120 !!--------------------------------------------------------------------- 105 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .FALSE. !: CFCflag106 LOGICAL, PUBLIC, PARAMETER :: lk_ kriest = .FALSE. !: Kriestflag121 LOGICAL, PUBLIC, PARAMETER :: lk_pisces = .FALSE. !: PISCES flag 122 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .FALSE. !: p4z flag 107 123 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 0 !: No CFC tracers 108 124 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 0 !: No CFC additional 2d output arrays … … 112 128 113 129 ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 114 INTEGER, PUBLIC, PARAMETER :: jp_pcs0 = jp_lp +1 !: First index of PISCES tracers115 INTEGER, PUBLIC, PARAMETER :: jp_pcs1 = jp_ lp + jp_pisces !: Last index of PISCES tracers116 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_2d = jp_lp_2d +1 !: First index of 2D diag117 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_2d = jp_ lp_2d + jp_pisces_2d !: Last index of 2D diag118 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_3d = jp_lp_3d +1 !: First index of 3D diag119 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_3d = jp_ lp_3d + jp_pisces_3d !: Last index of 3d diag120 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_trd = jp_lp_trd +1 !: First index of bio diag121 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_trd = jp_ lp_trd + jp_pisces_trd !: Last index of bio diag130 INTEGER, PUBLIC, PARAMETER :: jp_pcs0 = 1 !: First index of PISCES tracers 131 INTEGER, PUBLIC, PARAMETER :: jp_pcs1 = jp_pisces !: Last index of PISCES tracers 132 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_2d = 1 !: First index of 2D diag 133 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_2d = jp_pisces_2d !: Last index of 2D diag 134 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_3d = 1 !: First index of 3D diag 135 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_3d = jp_pisces_3d !: Last index of 3d diag 136 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_trd = 1 !: First index of bio diag 137 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_trd = jp_pisces_trd !: Last index of bio diag 122 138 123 139 -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r3294 r3443 7 7 !! 3.2 ! 2009-04 (C. Ethe & NEMO team) style 8 8 !!---------------------------------------------------------------------- 9 #if defined key_pisces 9 #if defined key_pisces || defined key_pisces_reduced 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_pisces' PISCES model … … 19 19 INTEGER :: numnatp 20 20 21 !!* Biological fluxes for light 22 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: neln !: number of T-levels + 1 in the euphotic layer 23 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup !: euphotic layer depth 24 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot !: par (photosynthetic available radiation) 25 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: grazing !: Total zooplankton grazing 26 27 #if defined key_pisces 21 28 !!* Time variables 22 29 INTEGER :: nrdttrc !: ??? … … 27 34 28 35 !!* Biological parameters 36 INTEGER :: niter1max, niter2max !: Maximum number of iterations for sinking 29 37 REAL(wp) :: rno3 !: ??? 30 38 REAL(wp) :: o2ut !: ??? … … 42 50 LOGICAL :: ln_pisclo !: Restoring or not of nutrients to initial value 43 51 !: on close seas 44 45 !!* Biological fluxes for light46 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: neln !: number of T-levels + 1 in the euphotic layer47 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup !: euphotic layer depth48 52 49 53 !!* Biological fluxes for primary production … … 68 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: ?? 69 73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiss !: ?? 70 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prodcal !: Calcite production 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: grazing !: Total zooplankton grazing 74 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prodcal !: Calcite production 72 75 73 76 !!* Variable for chemistry of the CO2 cycle … … 96 99 #endif 97 100 101 #endif 98 102 !!---------------------------------------------------------------------- 99 103 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 108 112 !!---------------------------------------------------------------------- 109 113 USE lib_mpp , ONLY: ctl_warn 110 INTEGER :: ierr( 6) ! Local variables114 INTEGER :: ierr(7) ! Local variables 111 115 !!---------------------------------------------------------------------- 112 116 ierr(:) = 0 113 117 !* Biological fluxes for light 114 ALLOCATE( neln(jpi,jpj), heup(jpi,jpj),STAT=ierr(1) )118 ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), STAT=ierr(1) ) 115 119 ! 120 ALLOCATE( grazing(jpi,jpj,jpk) , STAT=ierr(2) ) 121 ! 122 #if defined key_pisces 116 123 !* Biological fluxes for primary production 117 124 ALLOCATE( xksimax(jpi,jpj) , xksi(jpi,jpj) , & … … 121 128 & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), & 122 129 & xlimsi (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), & 123 & concnfe (jpi,jpj,jpk), STAT=ierr(2) )130 & concnfe (jpi,jpj,jpk), STAT=ierr(3) ) 124 131 ! 125 132 !* SMS for the organic matter 126 133 ALLOCATE( xfracal (jpi,jpj,jpk), nitrfac(jpi,jpj,jpk), & 127 & prodcal(jpi,jpj,jpk) , grazing(jpi,jpj,jpk), &128 & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), STAT=ierr(3) )134 & xlimbac (jpi,jpj,jpk), xdiss (jpi,jpj,jpk), & 135 & prodcal(jpi,jpj,jpk) , STAT=ierr(4) ) 129 136 ! 130 137 !* Variable for chemistry of the CO2 cycle … … 132 139 & ak23(jpi,jpj,jpk) , aksp (jpi,jpj,jpk) , & 133 140 & akw3(jpi,jpj,jpk) , borat (jpi,jpj,jpk) , & 134 & hi (jpi,jpj,jpk) , excess(jpi,jpj,jpk) , STAT=ierr(4) )141 & hi (jpi,jpj,jpk) , excess(jpi,jpj,jpk) , STAT=ierr(5) ) 135 142 ! 136 143 !* Temperature dependancy of SMS terms 137 ALLOCATE( tgfunc(jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk) , STAT=ierr(5) )144 ALLOCATE( tgfunc(jpi,jpj,jpk) , tgfunc2(jpi,jpj,jpk) , STAT=ierr(6) ) 138 145 ! 139 146 !* Array used to indicate negative tracer values 140 ALLOCATE( xnegtr(jpi,jpj,jpk) , STAT=ierr(6) ) 147 ALLOCATE( xnegtr(jpi,jpj,jpk) , STAT=ierr(7) ) 148 #endif 141 149 ! 142 150 sms_pisces_alloc = MAXVAL( ierr ) -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
r3295 r3443 9 9 !! 1.0 ! 2005-03 (O. Aumont, A. El Moussaoui) F90 10 10 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcini.pisces.h90 11 !!---------------------------------------------------------------------- 12 #if defined key_pisces 11 !! 3.5 ! 2012-05 (C. Ethe) Merge PISCES-LOBSTER 12 !!---------------------------------------------------------------------- 13 #if defined key_pisces || defined key_pisces_reduced 13 14 !!---------------------------------------------------------------------- 14 15 !! 'key_pisces' PISCES bio-model … … 20 21 USE trc ! passive tracers common variables 21 22 USE sms_pisces ! PISCES Source Minus Sink variables 22 USE p4zche ! Chemical model23 USE p4zsink ! vertical flux of particulate matter due to sinking24 USE p4zopt ! optical model25 USE p4zrem ! Remineralisation of organic matter26 USE p4zflx ! Gas exchange27 USE p4zsed ! Sedimentation28 USE p4zlim ! Co-limitations of differents nutrients29 USE p4zprod ! Growth rate of the 2 phyto groups30 USE p4zmicro ! Sources and sinks of microzooplankton31 USE p4zmeso ! Sources and sinks of mesozooplankton32 USE p4zmort ! Mortality terms for phytoplankton33 USE p4zlys ! Calcite saturation34 USE p4zsed ! Sedimentation35 23 36 24 IMPLICIT NONE … … 39 27 PUBLIC trc_ini_pisces ! called by trcini.F90 module 40 28 41 REAL(wp) :: sco2 = 2.312e-3_wp42 REAL(wp) :: alka0 = 2.423e-3_wp43 REAL(wp) :: oxyg0 = 177.6e-6_wp44 REAL(wp) :: po4 = 2.174e-6_wp45 REAL(wp) :: bioma0 = 1.000e-8_wp46 REAL(wp) :: silic1 = 91.65e-6_wp47 REAL(wp) :: no3 = 31.04e-6_wp * 7.625_wp48 29 49 30 # include "top_substitute.h90" … … 61 42 !! ** Purpose : Initialisation of the PISCES biochemical model 62 43 !!---------------------------------------------------------------------- 63 ! 64 INTEGER :: ji, jj, jk 44 45 IF( lk_pisces ) THEN ; CALL p4z_ini ! PISCES 46 ELSE ; CALL p2z_ini ! LOBSTER 47 ENDIF 48 49 END SUBROUTINE trc_ini_pisces 50 51 SUBROUTINE p4z_ini 52 !!---------------------------------------------------------------------- 53 !! *** ROUTINE p4z_ini *** 54 !! 55 !! ** Purpose : Initialisation of the PISCES biochemical model 56 !!---------------------------------------------------------------------- 57 #if defined key_pisces 58 ! 59 USE p4zsms ! Main P4Z routine 60 USE p4zche ! Chemical model 61 USE p4zsink ! vertical flux of particulate matter due to sinking 62 USE p4zopt ! optical model 63 USE p4zsbc ! Boundary conditions 64 USE p4zfechem ! Iron chemistry 65 USE p4zrem ! Remineralisation of organic matter 66 USE p4zflx ! Gas exchange 67 USE p4zlim ! Co-limitations of differents nutrients 68 USE p4zprod ! Growth rate of the 2 phyto groups 69 USE p4zmicro ! Sources and sinks of microzooplankton 70 USE p4zmeso ! Sources and sinks of mesozooplankton 71 USE p4zmort ! Mortality terms for phytoplankton 72 USE p4zlys ! Calcite saturation 73 ! 74 REAL(wp), SAVE :: sco2 = 2.312e-3_wp 75 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 80 REAL(wp), SAVE :: no3 = 31.04e-6_wp * 7.625_wp 81 ! 82 INTEGER :: ji, jj, jk, ierr 65 83 REAL(wp) :: zcaralk, zbicarb, zco3 66 84 REAL(wp) :: ztmas, ztmas1 67 85 !!---------------------------------------------------------------------- 86 68 87 IF(lwp) WRITE(numout,*) 69 IF(lwp) WRITE(numout,*) ' trc_ini_pisces: PISCES biochemical model initialisation'88 IF(lwp) WRITE(numout,*) ' p4z_ini : PISCES biochemical model initialisation' 70 89 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 71 90 72 CALL pisces_alloc() ! Allocate PISCES arrays 73 91 ! Allocate PISCES arrays 92 ierr = sms_pisces_alloc() 93 ierr = ierr + p4z_che_alloc() 94 ierr = ierr + p4z_sink_alloc() 95 ierr = ierr + p4z_opt_alloc() 96 ierr = ierr + p4z_prod_alloc() 97 ierr = ierr + p4z_rem_alloc() 98 ierr = ierr + p4z_flx_alloc() 99 ! 100 IF( lk_mpp ) CALL mpp_sum( ierr ) 101 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'pisces_alloc: unable to allocate PISCES arrays' ) 102 ! 103 104 CALL p4z_sms_init ! Maint routine 74 105 ! ! Time-step 75 106 rfact = rdttrc(1) ! --------- … … 132 163 xksimax(:,:) = xksi(:,:) 133 164 134 ENDIF135 136 IF( .NOT. ln_rsttr ) THEN137 165 ! Initialization of chemical variables of the carbon cycle 138 166 ! -------------------------------------------------------- … … 159 187 CALL p4z_lim_init ! co-limitations by the various nutrients 160 188 CALL p4z_prod_init ! phytoplankton growth rate over the global ocean. 189 CALL p4z_sbc_init ! boundary conditions 190 CALL p4z_fechem_init ! Iron chemistry 161 191 CALL p4z_rem_init ! remineralisation 162 192 CALL p4z_mort_init ! phytoplankton mortality 163 193 CALL p4z_micro_init ! microzooplankton 164 194 CALL p4z_meso_init ! mesozooplankton 165 CALL p4z_sed_init ! sedimentation166 195 CALL p4z_lys_init ! calcite saturation 167 196 CALL p4z_flx_init ! gas exchange … … 172 201 IF(lwp) WRITE(numout,*) 'Initialization of PISCES tracers done' 173 202 IF(lwp) WRITE(numout,*) 174 ! 175 END SUBROUTINE trc_ini_pisces176 177 178 SUBROUTINE p isces_alloc179 !!---------------------------------------------------------------------- 180 !! *** ROUTINE pisces_alloc***203 #endif 204 ! 205 END SUBROUTINE p4z_ini 206 207 SUBROUTINE p2z_ini 208 !!---------------------------------------------------------------------- 209 !! *** ROUTINE p2z_ini *** 181 210 !! 182 !! ** Purpose : Allocate all the dynamic arrays of PISCES 183 !!---------------------------------------------------------------------- 184 ! 185 INTEGER :: ierr 186 !!---------------------------------------------------------------------- 187 ! 188 ierr = sms_pisces_alloc() ! Start of PISCES-related alloc routines... 189 ierr = ierr + p4z_che_alloc() 190 ierr = ierr + p4z_sink_alloc() 191 ierr = ierr + p4z_opt_alloc() 192 ierr = ierr + p4z_prod_alloc() 193 ierr = ierr + p4z_rem_alloc() 194 ierr = ierr + p4z_sed_alloc() 195 ierr = ierr + p4z_flx_alloc() 211 !! ** Purpose : Initialisation of the LOBSTER biochemical model 212 !!---------------------------------------------------------------------- 213 #if defined key_pisces_reduced 214 ! 215 USE p2zopt 216 USE p2zexp 217 USE p2zbio 218 USE p2zsed 219 ! 220 INTEGER :: ji, jj, jk, ierr 221 !!---------------------------------------------------------------------- 222 223 IF(lwp) WRITE(numout,*) 224 IF(lwp) WRITE(numout,*) ' p2z_ini : LOBSTER biochemical model initialisation' 225 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 226 227 ierr = sms_pisces_alloc() 228 ierr = ierr + p2z_exp_alloc() 196 229 ! 197 230 IF( lk_mpp ) CALL mpp_sum( ierr ) 198 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'pisces_alloc: unable to allocate PISCES arrays' ) 199 ! 200 END SUBROUTINE pisces_alloc 201 231 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'p2z_ini: unable to allocate LOBSTER arrays' ) 232 233 ! LOBSTER initialisation for GYRE : init NO3=f(density) by asklod AS Kremeur 2005-07 234 ! ---------------------- 235 IF( .NOT. ln_rsttr ) THEN ! in case of no restart 236 trn(:,:,:,jpdet) = 0.1 * tmask(:,:,:) 237 trn(:,:,:,jpzoo) = 0.1 * tmask(:,:,:) 238 trn(:,:,:,jpnh4) = 0.1 * tmask(:,:,:) 239 trn(:,:,:,jpphy) = 0.1 * tmask(:,:,:) 240 trn(:,:,:,jpdom) = 1.0 * tmask(:,:,:) 241 WHERE( rhd(:,:,:) <= 24.5e-3 ) ; trn(:,:,:,jpno3 ) = 2._wp * tmask(:,:,:) 242 ELSE WHERE ; trn(:,:,:,jpno3) = ( 15.55 * ( rhd(:,:,:) * 1000. ) - 380.11 ) * tmask(:,:,:) 243 END WHERE 244 ENDIF 245 ! ! Namelist read 246 CALL p2z_opt_init ! Optics parameters 247 CALL p2z_sed_init ! sedimentation 248 CALL p2z_bio_init ! biology 249 CALL p2z_exp_init ! export 250 ! 251 IF(lwp) WRITE(numout,*) 252 IF(lwp) WRITE(numout,*) 'Initialization of LOBSTER tracers done' 253 IF(lwp) WRITE(numout,*) 254 #endif 255 ! 256 END SUBROUTINE p2z_ini 202 257 #else 203 258 !!---------------------------------------------------------------------- -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/trcnam_pisces.F90
r3294 r3443 1 1 MODULE trcnam_pisces 2 2 !!====================================================================== 3 !! *** MODULE trcnam_ lobster***3 !! *** MODULE trcnam_pisces *** 4 4 !! TOP : initialisation of some run parameters for PISCES bio-model 5 5 !!====================================================================== … … 9 9 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) from trcnam.pisces.h90 10 10 !!---------------------------------------------------------------------- 11 #if defined key_pisces 11 #if defined key_pisces || defined key_pisces_reduced 12 12 !!---------------------------------------------------------------------- 13 13 !! 'key_pisces' : PISCES bio-model … … 19 19 USE trc ! TOP variables 20 20 USE sms_pisces ! sms trends 21 USE trdmod_trc_oce 21 22 USE iom ! I/O manager 22 23 … … 48 49 !! 49 50 INTEGER :: jl, jn 50 TYPE(DIAG), DIMENSION(jp_pisces_2d) :: pisdia2d 51 TYPE(DIAG), DIMENSION(jp_pisces_3d) :: pisdia3d 51 TYPE(DIAG), DIMENSION(jp_pisces_2d) :: pisdia2d 52 TYPE(DIAG), DIMENSION(jp_pisces_3d) :: pisdia3d 53 TYPE(DIAG), DIMENSION(jp_pisces_trd) :: pisdiabio 54 CHARACTER(LEN=20) :: clname 52 55 !! 53 NAMELIST/nampis bio/ nrdttrc, wsbio, xkmort, ferat3, wsbio254 #if defined key_ kriest55 NAMELIST/nampis krp/ xkr_eta, xkr_zeta, xkr_mass_min, xkr_mass_max56 NAMELIST/nampisdia/ pisdia3d, pisdia2d ! additional diagnostics 57 #if defined key_pisces_reduced 58 NAMELIST/nampisdbi/ pisdiabio 56 59 #endif 57 NAMELIST/nampisdia/ pisdia3d, pisdia2d ! additional diagnostics58 NAMELIST/nampisdmp/ ln_pisdmp, nn_pisdmp, ln_pisclo59 60 60 61 !!---------------------------------------------------------------------- 61 62 62 63 IF(lwp) WRITE(numout,*) 63 IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read PISCES namelists' 64 #if defined key_pisces 65 IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read PISCES namelist' 66 clname = 'namelist_pisces' 67 #else 68 IF(lwp) WRITE(numout,*) ' trc_nam_pisces : read LOBSTER namelist' 69 clname = 'namelist_lobster' 70 #endif 64 71 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~' 72 CALL ctl_opn( numnatp, TRIM( clname ), 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) 65 73 66 67 ! ! Open the namelist file68 ! ! ----------------------69 CALL ctl_opn( numnatp, 'namelist_pisces', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. )70 71 REWIND( numnatp )72 READ ( numnatp, nampisbio )73 74 IF(lwp) THEN ! control print75 WRITE(numout,*) ' Namelist : nampisbio'76 WRITE(numout,*) ' frequence pour la biologie nrdttrc =', nrdttrc77 WRITE(numout,*) ' POC sinking speed wsbio =', wsbio78 WRITE(numout,*) ' half saturation constant for mortality xkmort =', xkmort79 WRITE(numout,*) ' Fe/C in zooplankton ferat3 =', ferat380 WRITE(numout,*) ' Big particles sinking speed wsbio2 =', wsbio281 ENDIF82 83 #if defined key_kriest84 85 ! ! nampiskrp : kriest parameters86 ! ! -----------------------------87 xkr_eta = 0.6288 xkr_zeta = 1.6289 xkr_mass_min = 0.000290 xkr_mass_max = 1.91 92 REWIND( numnatp ) ! read natkriest93 READ ( numnatp, nampiskrp )94 95 IF(lwp) THEN96 WRITE(numout,*)97 WRITE(numout,*) ' Namelist : nampiskrp'98 WRITE(numout,*) ' Sinking exponent xkr_eta = ', xkr_eta99 WRITE(numout,*) ' N content exponent xkr_zeta = ', xkr_zeta100 WRITE(numout,*) ' Minimum mass for Aggregates xkr_mass_min = ', xkr_mass_min101 WRITE(numout,*) ' Maximum mass for Aggregates xkr_mass_max = ', xkr_mass_max102 WRITE(numout,*)103 ENDIF104 105 106 ! Computation of some variables107 xkr_massp = 5.7E-6 * 7.6 * xkr_mass_min**xkr_zeta108 109 #endif110 74 ! 111 75 IF( .NOT.lk_iomput .AND. ln_diatrc ) THEN … … 162 126 ENDIF 163 127 164 REWIND( numnatp ) 165 READ ( numnatp, nampisdmp ) 128 #if defined key_pisces_reduced 166 129 167 IF(lwp) THEN ! control print 168 WRITE(numout,*) 169 WRITE(numout,*) ' Namelist : nampisdmp' 170 WRITE(numout,*) ' Relaxation of tracer to glodap mean value ln_pisdmp =', ln_pisdmp 171 WRITE(numout,*) ' Frequency of Relaxation nn_pisdmp =', nn_pisdmp 172 WRITE(numout,*) ' Restoring of tracer to initial value on closed seas ln_pisclo =', ln_pisclo 173 WRITE(numout,*) ' ' 174 ENDIF 130 IF( ( .NOT.lk_iomput .AND. ln_diabio ) .OR. lk_trdmld_trc ) THEN 131 ! 132 ! Namelist nampisdbi 133 ! ------------------- 134 DO jl = 1, jp_pisces_trd 135 IF( jl < 10 ) THEN ; WRITE (pisdiabio(jl)%sname,'("BIO_",I1)') jl ! short name 136 ELSEIF (jl < 100 ) THEN ; WRITE (pisdiabio(jl)%sname,'("BIO_",I2)') jl 137 ELSE ; WRITE (pisdiabio(jl)%sname,'("BIO_",I3)') jl 138 ENDIF 139 WRITE(pisdiabio(jl)%lname,'("BIOLOGICAL TREND NUMBER ",I2)') jl ! long name 140 pisdiabio(jl)%units = 'mmoleN/m3/s ' ! units 141 END DO 142 143 REWIND( numnatp ) 144 READ ( numnatp, nampisdbi ) 145 146 DO jl = 1, jp_pisces_trd 147 jn = jp_pcs0_trd + jl - 1 148 ctrbio(jl) = pisdiabio(jl)%sname 149 ctrbil(jl) = pisdiabio(jl)%lname 150 ctrbiu(jl) = pisdiabio(jl)%units 151 END DO 152 153 IF(lwp) THEN ! control print 154 WRITE(numout,*) 155 WRITE(numout,*) ' Namelist : nampisdbi' 156 DO jl = 1, jp_pisces_trd 157 jn = jp_pcs0_trd + jl - 1 158 WRITE(numout,*) ' biological trend No : ', jn, ' short name : ', ctrbio(jn), & 159 & ' long name : ', ctrbio(jn), ' unit : ', ctrbio(jn) 160 END DO 161 WRITE(numout,*) ' ' 162 END IF 163 ! 164 END IF 165 166 #endif 175 167 176 168 END SUBROUTINE trc_nam_pisces -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
r3320 r3443 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_reduced 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_pisces' PISCES bio-model … … 13 13 !! trcsms_pisces : Time loop of passive tracers sms 14 14 !!---------------------------------------------------------------------- 15 USE oce_trc ! shared variables between ocean and passive tracers 16 USE trc ! passive tracers common variables 17 USE sms_pisces ! PISCES Source Minus Sink variables 18 USE p4zbio ! Biological model 19 USE p4zche ! Chemical model 20 USE p4zlys ! Calcite saturation 21 USE p4zflx ! Gas exchange 22 USE p4zsed ! Sedimentation 23 USE p4zint ! time interpolation 24 USE trdmod_oce ! Ocean trends variables 25 USE trdmod_trc ! TOP trends variables 26 USE sedmodel ! Sediment model 27 USE prtctl_trc ! print control for debugging 15 USE par_pisces 16 USE p4zsms 17 USE p2zsms 28 18 29 19 IMPLICIT NONE … … 31 21 32 22 PUBLIC trc_sms_pisces ! called in trcsms.F90 33 34 LOGICAL :: ln_check_mass = .false. !: Flag to check mass conservation35 36 INTEGER :: numno3 !: logical unit for NO3 budget37 INTEGER :: numalk !: logical unit for talk budget38 INTEGER :: numsil !: logical unit for Si budget39 40 23 !!---------------------------------------------------------------------- 41 24 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 46 29 CONTAINS 47 30 31 !!---------------------------------------------------------------------- 32 !! *** ROUTINE trc_ini_pisces *** 33 !! 34 !! ** Purpose : Initialisation of the PISCES biochemical model 35 !!---------------------------------------------------------------------- 36 37 48 38 SUBROUTINE trc_sms_pisces( kt ) 49 39 !!--------------------------------------------------------------------- … … 51 41 !! 52 42 !! ** Purpose : Managment of the call to Biological sources and sinks 53 !! routines of PISCES bio-model 54 !! 55 !! ** Method : - at each new day ... 56 !! - several calls of bio and sed ??? 57 !! - ... 58 !!--------------------------------------------------------------------- 59 ! 60 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 !! 62 INTEGER :: jnt, jn, jl 63 CHARACTER (len=25) :: charout 64 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrdpis 65 !!--------------------------------------------------------------------- 66 ! 67 IF( nn_timing == 1 ) CALL timing_start('trc_sms_pisces') 68 ! 69 IF( ln_pisdmp .AND. MOD( kt - nn_dttrc, nn_pisdmp ) == 0 ) CALL trc_sms_pisces_dmp( kt ) ! Relaxation of some tracers 70 CALL trc_sms_pisces_mass_conserv( kt ) ! Mass conservation checking 71 IF( l_trdtrc ) THEN 72 CALL wrk_alloc( jpi, jpj, jpk, jp_pisces, ztrdpis ) 73 DO jn = 1, jp_pisces 74 jl = jn + jp_pcs0 - 1 75 ztrdpis(:,:,:,jn) = trn(:,:,:,jl) 76 ENDDO 77 ENDIF 78 79 IF( ndayflxtr /= nday_year ) THEN ! New days 80 ! 81 ndayflxtr = nday_year 82 83 IF(lwp) write(numout,*) 84 IF(lwp) write(numout,*) ' New chemical constants and various rates for biogeochemistry at new day : ', nday_year 85 IF(lwp) write(numout,*) '~~~~~~' 86 87 CALL p4z_che ! computation of chemical constants 88 CALL p4z_int ! computation of various rates for biogeochemistry 89 ! 90 ENDIF 91 92 93 DO jnt = 1, nrdttrc ! Potential time splitting if requested 94 ! 95 CALL p4z_bio (kt, jnt) ! Compute soft tissue production (POC) 96 CALL p4z_sed (kt, jnt) ! compute soft tissue remineralisation 97 ! 98 DO jn = jp_pcs0, jp_pcs1 99 trb(:,:,:,jn) = trn(:,:,:,jn) 100 ENDDO 101 ! 102 END DO 103 104 IF( l_trdtrc ) THEN 105 DO jn = 1, jp_pisces 106 jl = jn + jp_pcs0 - 1 107 ztrdpis(:,:,:,jn) = ( ztrdpis(:,:,:,jn) - trn(:,:,:,jl) ) * rfact2r 108 ENDDO 109 ENDIF 110 111 CALL p4z_lys( kt ) ! Compute CaCO3 saturation 112 CALL p4z_flx( kt ) ! Compute surface fluxes 113 114 DO jn = jp_pcs0, jp_pcs1 115 CALL lbc_lnk( trn(:,:,:,jn), 'T', 1. ) 116 CALL lbc_lnk( trb(:,:,:,jn), 'T', 1. ) 117 CALL lbc_lnk( tra(:,:,:,jn), 'T', 1. ) 118 END DO 119 120 IF( l_trdtrc ) THEN 121 DO jn = 1, jp_pisces 122 jl = jn + jp_pcs0 - 1 123 ztrdpis(:,:,:,jn) = ztrdpis(:,:,:,jn) + tra(:,:,:,jl) 124 CALL trd_mod_trc( ztrdpis(:,:,:,jn), jn, jptra_trd_sms, kt ) ! save trends 125 END DO 126 CALL wrk_dealloc( jpi, jpj, jpk, jp_pisces, ztrdpis ) 127 END IF 128 129 IF( lk_sed ) THEN 130 ! 131 CALL sed_model( kt ) ! Main program of Sediment model 132 ! 133 DO jn = jp_pcs0, jp_pcs1 134 CALL lbc_lnk( trn(:,:,:,jn), 'T', 1. ) 135 END DO 136 ! 137 ENDIF 138 ! 139 IF( nn_timing == 1 ) CALL timing_stop('trc_sms_pisces') 140 ! 141 END SUBROUTINE trc_sms_pisces 142 143 SUBROUTINE trc_sms_pisces_dmp( kt ) 144 !!---------------------------------------------------------------------- 145 !! *** trc_sms_pisces_dmp *** 146 !! 147 !! ** purpose : Relaxation of some tracers 148 !!---------------------------------------------------------------------- 149 ! 150 INTEGER, INTENT( in ) :: kt ! time step 151 ! 152 REAL(wp) :: alkmean = 2426. ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 153 REAL(wp) :: po4mean = 2.165 ! mean value of phosphates 154 REAL(wp) :: no3mean = 30.90 ! mean value of nitrate 155 REAL(wp) :: silmean = 91.51 ! mean value of silicate 156 ! 157 REAL(wp) :: zarea, zalksum, zpo4sum, zno3sum, zsilsum 158 !!--------------------------------------------------------------------- 159 160 161 IF(lwp) WRITE(numout,*) 162 IF(lwp) WRITE(numout,*) ' trc_sms_pisces_dmp : Relaxation of nutrients at time-step kt = ', kt 163 IF(lwp) WRITE(numout,*) 164 165 IF( cp_cfg == "orca" .AND. .NOT. lk_c1d ) THEN ! ORCA condiguration (not 1D) ! 166 ! ! --------------------------- ! 167 ! set total alkalinity, phosphate, nitrate & silicate 168 zarea = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6 169 170 zalksum = glob_sum( trn(:,:,:,jptal) * cvol(:,:,:) ) * zarea 171 zpo4sum = glob_sum( trn(:,:,:,jppo4) * cvol(:,:,:) ) * zarea / 122. 172 zno3sum = glob_sum( trn(:,:,:,jpno3) * cvol(:,:,:) ) * zarea / 7.6 173 zsilsum = glob_sum( trn(:,:,:,jpsil) * cvol(:,:,:) ) * zarea 174 175 IF(lwp) WRITE(numout,*) ' TALK mean : ', zalksum 176 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksum 177 178 IF(lwp) WRITE(numout,*) ' PO4 mean : ', zpo4sum 179 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sum 180 181 IF(lwp) WRITE(numout,*) ' NO3 mean : ', zno3sum 182 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sum 183 184 IF(lwp) WRITE(numout,*) ' SiO3 mean : ', zsilsum 185 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsum ) 186 ! 187 ENDIF 188 189 END SUBROUTINE trc_sms_pisces_dmp 190 191 SUBROUTINE trc_sms_pisces_mass_conserv ( kt ) 192 !!---------------------------------------------------------------------- 193 !! *** ROUTINE trc_sms_pisces_mass_conserv *** 194 !! 195 !! ** Purpose : Mass conservation check 43 !! routines of PISCES or LOBSTER bio-model 196 44 !! 197 45 !!--------------------------------------------------------------------- 198 46 ! 199 47 INTEGER, INTENT( in ) :: kt ! ocean time-step index 200 !! 201 REAL(wp) :: zalkbudget, zno3budget, zsilbudget 48 !!--------------------------------------------------------------------- 202 49 ! 203 NAMELIST/nampismass/ ln_check_mass 204 !!--------------------------------------------------------------------- 205 206 IF( kt == nittrc000 ) THEN 207 REWIND( numnatp ) 208 READ ( numnatp, nampismass ) 209 IF(lwp) THEN ! control print 210 WRITE(numout,*) ' ' 211 WRITE(numout,*) ' Namelist parameter for mass conservation checking' 212 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 213 WRITE(numout,*) ' Flag to check mass conservation of NO3/Si/TALK ln_check_mass = ', ln_check_mass 214 ENDIF 215 216 IF( ln_check_mass .AND. lwp) THEN ! Open budget file of NO3, ALK, Si 217 CALL ctl_opn( numno3, 'no3.budget' , 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 218 CALL ctl_opn( numsil, 'sil.budget' , 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 219 CALL ctl_opn( numalk, 'talk.budget', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 220 ENDIF 50 IF( lk_p4z ) THEN ; CALL p4z_sms( kt ) ! PISCES 51 ELSE ; CALL p2z_sms( kt ) ! LOBSTER 221 52 ENDIF 222 223 IF( ln_check_mass ) THEN ! Compute the budget of NO3, ALK, Si 224 zno3budget = glob_sum( ( trn(:,:,:,jpno3) + trn(:,:,:,jpnh4) & 225 & + trn(:,:,:,jpphy) + trn(:,:,:,jpdia) & 226 & + trn(:,:,:,jpzoo) + trn(:,:,:,jpmes) & 227 & + trn(:,:,:,jppoc) + trn(:,:,:,jpgoc) & 228 & + trn(:,:,:,jpdoc) ) * cvol(:,:,:) ) 229 ! 230 zsilbudget = glob_sum( ( trn(:,:,:,jpsil) + trn(:,:,:,jpgsi) & 231 & + trn(:,:,:,jpdsi) ) * cvol(:,:,:) ) 232 ! 233 zalkbudget = glob_sum( ( trn(:,:,:,jpno3) * rno3 & 234 & + trn(:,:,:,jptal) & 235 & + trn(:,:,:,jpcal) * 2. ) * cvol(:,:,:) ) 236 237 IF( lwp ) THEN 238 WRITE(numno3,9500) kt, zno3budget / areatot 239 WRITE(numsil,9500) kt, zsilbudget / areatot 240 WRITE(numalk,9500) kt, zalkbudget / areatot 241 ENDIF 242 ENDIF 243 9500 FORMAT(i10,e18.10) 244 ! 245 END SUBROUTINE trc_sms_pisces_mass_conserv 53 ! 54 END SUBROUTINE trc_sms_pisces 246 55 247 56 #else -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90
r3295 r3443 6 6 !! History : 1.0 ! 2009-05 (C. Ethe) Original code 7 7 !!---------------------------------------------------------------------- 8 #if defined key_top && key_pisces && defined key_iomput8 #if defined key_top && defined key_iomput && ( defined key_pisces || defined key_pisces_reduced ) 9 9 !!---------------------------------------------------------------------- 10 !! 'key_pisces 'PISCES model10 !! 'key_pisces or key_pisces_reduced' PISCES model 11 11 !!---------------------------------------------------------------------- 12 12 !! trc_wri_pisces : outputs of concentration fields 13 13 !!---------------------------------------------------------------------- 14 14 USE trc ! passive tracers common variables 15 USE sms_pisces ! PISCES variables 15 16 USE iom ! I/O manager 16 17 … … 35 36 ! write the tracer concentrations in the file 36 37 ! --------------------------------------- 37 DO jn = 1, jptra 38 zrfact = 1.0e+6 39 IF( jn == jpno3 .OR. jn == jpnh4 ) zrfact = 1.0e+6 / 7.6 40 IF( jn == jppo4 ) zrfact = 1.0e+6 / 122. 38 #if defined key_pisces_reduced 39 DO jn = jp_pcs0, jp_pcs1 41 40 cltra = TRIM( ctrcnm(jn) ) ! short title for tracer 42 41 CALL iom_put( cltra, trn(:,:,:,jn) * zrfact ) 43 42 END DO 43 #else 44 DO jn = jp_pcs0, jp_pcs1 45 zrfact = 1.0e+6 46 IF( jn == jpno3 .OR. jn == jpnh4 ) zrfact = rno3 * 1.0e+6 47 IF( jn == jppo4 ) zrfact = po4r * 1.0e+6 48 cltra = TRIM( ctrcnm(jn) ) ! short title for tracer 49 CALL iom_put( cltra, trn(:,:,:,jn) * zrfact ) 50 END DO 51 #endif 44 52 ! 45 53 END SUBROUTINE trc_wri_pisces -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/TRP/trcrad.F90
r3294 r3443 63 63 IF( lk_cfc ) CALL trc_rad_sms( kt, trb, trn, jp_cfc0 , jp_cfc1 ) ! CFC model 64 64 IF( lk_c14b ) CALL trc_rad_sms( kt, trb, trn, jp_c14b0, jp_c14b1 ) ! bomb C14 65 IF( lk_lobster ) CALL trc_rad_sms( kt, trb, trn, jp_lob0 , jp_lob1, cpreserv='Y' ) ! LOBSTER model66 65 IF( lk_pisces ) CALL trc_rad_sms( kt, trb, trn, jp_pcs0 , jp_pcs1, cpreserv='Y' ) ! PISCES model 67 66 IF( lk_my_trc ) CALL trc_rad_sms( kt, trb, trn, jp_myt0 , jp_myt1 ) ! MY_TRC model -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
r3320 r3443 34 34 USE prtctl ! print control 35 35 USE sms_pisces ! PISCES bio-model 36 USE sms_lobster ! LOBSTER bio-model37 36 USE wrk_nemo ! Memory allocation 38 37 … … 53 52 INTEGER :: ndimtrd1 54 53 INTEGER, SAVE :: ionce, icount 55 #if defined key_ lobster54 #if defined key_pisces_reduced 56 55 INTEGER :: nidtrdbio, nh_tb 57 56 INTEGER, SAVE :: ioncebio, icountbio … … 62 61 63 62 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: ztmltrd2 ! 64 #if defined key_ lobster63 #if defined key_pisces_reduced 65 64 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ztmltrdbio2 ! only needed for mean diagnostics in trd_mld_bio() 66 65 #endif … … 81 80 !!---------------------------------------------------------------------- 82 81 ALLOCATE( ztmltrd2(jpi,jpj,jpltrd_trc,jptra) , & 83 #if defined key_ lobster82 #if defined key_pisces_reduced 84 83 & ztmltrdbio2(jpi,jpj,jpdiabio) , & 85 84 #endif … … 133 132 SELECT CASE ( nn_ctls_trc ) ! choice of the control surface 134 133 CASE ( -2 ) ; STOP 'trdmld_trc : not ready ' ! -> isopycnal surface (see ???) 135 #if defined key_pisces || defined key_ lobster134 #if defined key_pisces || defined key_pisces_reduced 136 135 CASE ( -1 ) ; nmld_trc(:,:) = neln(:,:) ! -> euphotic layer with light criterion 137 136 #endif … … 232 231 INTEGER , INTENT(in) :: ktrd ! bio trend index 233 232 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: ptrc_trdmld ! passive trc trend 234 #if defined key_ lobster233 #if defined key_pisces_reduced 235 234 ! 236 235 INTEGER :: ji, jj, jk, isum … … 940 939 !!---------------------------------------------------------------------- 941 940 INTEGER, INTENT( in ) :: kt ! ocean time-step index 942 #if defined key_ lobster941 #if defined key_pisces_reduced 943 942 INTEGER :: jl, it, itmod 944 943 LOGICAL :: llwarn = .TRUE., lldebug = .TRUE. … … 1217 1216 tmltrd_csum_ln_trc (:,:,:,:) = 0.e0 ; rmld_sum_trc (:,:) = 0.e0 1218 1217 1219 #if defined key_ lobster1218 #if defined key_pisces_reduced 1220 1219 nmoymltrdbio = 0 1221 1220 tmltrd_sum_bio (:,:,:) = 0.e0 ; tmltrd_csum_ln_bio (:,:,:) = 0.e0 1222 DO jl = 1, jp_ lobster_trd1221 DO jl = 1, jp_pisces_trd 1223 1222 ctrd_bio(jl,1) = ctrbil(jl) ! long name 1224 1223 ctrd_bio(jl,2) = ctrbio(jl) ! short name … … 1234 1233 tml_sumb_trc (:,:,:) = 0.e0 ; tmltrd_csum_ub_trc (:,:,:,:) = 0.e0 ! mean 1235 1234 tmltrd_atf_sumb_trc(:,:,:) = 0.e0 ; tmltrd_rad_sumb_trc(:,:,:) = 0.e0 1236 #if defined key_ lobster1235 #if defined key_pisces_reduced 1237 1236 tmltrd_csum_ub_bio (:,:,:) = 0.e0 1238 1237 #endif … … 1242 1241 icount = 1 ; ionce = 1 ! open specifier 1243 1242 1244 #if defined key_ lobster1243 #if defined key_pisces_reduced 1245 1244 icountbio = 1 ; ioncebio = 1 ! open specifier 1246 1245 #endif … … 1337 1336 END DO 1338 1337 1339 #if defined key_ lobster1338 #if defined key_pisces_reduced 1340 1339 !-- Create a NetCDF file and enter the define mode 1341 1340 CALL dia_nam( clhstnam, nn_trd_trc, 'trdbio' ) … … 1383 1382 END DO 1384 1383 1385 #if defined key_ lobster1386 DO jl = 1, jp_ lobster_trd1384 #if defined key_pisces_reduced 1385 DO jl = 1, jp_pisces_trd 1387 1386 CALL histdef(nidtrdbio, TRIM("ML_"//ctrd_bio(jl,2)), TRIM(clmxl//" ML_"//ctrd_bio(jl,1)) , & 1388 1387 & cltrcu, jpi, jpj, nh_tb, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) ! IOIPSL: time mean … … 1395 1394 END DO 1396 1395 1397 #if defined key_ lobster1396 #if defined key_pisces_reduced 1398 1397 !-- Leave IOIPSL/NetCDF define mode 1399 1398 CALL histend( nidtrdbio, snc4set ) -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc_rst.F90
r2528 r3443 105 105 END DO ! tracer loop 106 106 ! ! =========== 107 #if defined key_ lobster108 DO jl = 1, jp_ lobster_trd107 #if defined key_pisces_reduced 108 DO jl = 1, jp_pisces_trd 109 109 CALL iom_rstput( kt, nitrst, nummldw_trc, 'tmltrd_csum_ub_bio'//ctrd_bio(jl,2), tmltrd_csum_ub_bio(:,:,jl) ) 110 110 ENDDO … … 190 190 ! ! =========== 191 191 192 #if defined key_ lobster193 DO jl = 1, jp_ lobster_trd192 #if defined key_pisces_reduced 193 DO jl = 1, jp_pisces_trd 194 194 CALL iom_get( inum, jpdom_autoglo, 'tmltrd_csum_ub_bio'//ctrd_bio(jl,2), tmltrd_csum_ub_bio(:,:,jl) ) 195 195 ENDDO -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/TRP/trdmod_trc_oce.F90
r3320 r3443 106 106 # endif 107 107 108 # if defined key_ lobster108 # if defined key_pisces_reduced 109 109 CHARACTER(LEN=80) :: clname_bio, ctrd_bio(jpdiabio,2) 110 110 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: & … … 154 154 #endif 155 155 ! 156 # if defined key_ lobster156 # if defined key_pisces_reduced 157 157 ALLOCATE( tmltrd_bio (jpi,jpj,jpdiabio) , & 158 158 & tmltrd_sum_bio (jpi,jpj,jpdiabio) , & -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/par_trc.F90
r2528 r3443 5 5 !!====================================================================== 6 6 !! History : - ! 1996-01 (M. Levy) original code 7 !! - ! 1999-07 (M. Levy) for LOBSTER1 or NPZD model8 7 !! - ! 2000-04 (O. Aumont, M.A. Foujols) HAMOCC3 and P3ZD 9 8 !! 1.0 ! 2004-03 (C. Ethe) Free form and module … … 12 11 USE par_kind ! kind parameters 13 12 ! 14 USE par_lobster ! LOBSTER model15 13 USE par_pisces ! PISCES model 16 14 USE par_c14b ! C14 bomb tracer … … 22 20 ! Passive tracers : Total size 23 21 ! --------------- ! total number of passive tracers, of 2d and 3d output and trend arrays 24 INTEGER, PUBLIC, PARAMETER :: jptra = jp_ lobster + jp_pisces + jp_cfc + jp_c14b + jp_my_trc25 INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_ lobster_2d + jp_pisces_2d + jp_cfc_2d + jp_c14b_2d + jp_my_trc_2d26 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_ lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_c14b_3d + jp_my_trc_3d22 INTEGER, PUBLIC, PARAMETER :: jptra = jp_pisces + jp_cfc + jp_c14b + jp_my_trc 23 INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_pisces_2d + jp_cfc_2d + jp_c14b_2d + jp_my_trc_2d 24 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_pisces_3d + jp_cfc_3d + jp_c14b_3d + jp_my_trc_3d 27 25 ! ! total number of sms diagnostic arrays 28 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_lobster_trd +jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd26 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_pisces_trd + jp_cfc_trd + jp_c14b_trd + jp_my_trc_trd 29 27 30 28 ! 1D configuration ("key_c1d") -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trc.F90
r3294 r3443 5 5 !!====================================================================== 6 6 !! History : OPA ! 1996-01 (M. Levy) Original code 7 !! - ! 1999-07 (M. Levy) for LOBSTER1 or NPZD model8 7 !! - ! 2000-04 (O. Aumont, M.A. Foujols) HAMOCC3 and P3ZD 9 8 !! NEMO 1.0 ! 2004-03 (C. Ethe) Free form and module … … 25 24 INTEGER, PUBLIC :: numnat !: logicla unit for the passive tracer NAMELIST 26 25 INTEGER, PUBLIC :: numstr !: logical unit for tracer statistics 26 INTEGER, PUBLIC :: numrtr !: logical unit for trc restart (read ) 27 INTEGER, PUBLIC :: numrtw !: logical unit for trc restart ( write ) 27 28 28 29 !! passive tracers fields (before,now,after) -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trcini.F90
r3294 r3443 21 21 USE trcnam ! Namelist read 22 22 USE trcini_cfc ! CFC initialisation 23 USE trcini_lobster ! LOBSTER initialisation24 23 USE trcini_pisces ! PISCES initialisation 25 24 USE trcini_c14b ! C14 bomb initialisation … … 70 69 CALL top_alloc() ! allocate TOP arrays 71 70 72 IF( ln_dm2dc .AND. ( lk_pisces .OR. lk_lobster )) &73 & CALL ctl_stop( ' The diurnal cycle is not compatible with PISCES or LOBSTER' )71 IF( ln_dm2dc .AND. lk_pisces ) & 72 & CALL ctl_stop( ' The diurnal cycle is not compatible with PISCES ' ) 74 73 75 74 IF( nn_cla == 1 ) & … … 101 100 areatot = glob_sum( cvol(:,:,:) ) 102 101 103 IF( lk_lobster ) CALL trc_ini_lobster ! LOBSTER bio-model104 102 IF( lk_pisces ) CALL trc_ini_pisces ! PISCES bio-model 105 103 IF( lk_cfc ) CALL trc_ini_cfc ! CFC tracers -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
r3319 r3443 21 21 USE trc ! passive tracers common variables 22 22 USE trcnam_trp ! Transport namelist 23 USE trcnam_lobster ! LOBSTER namelist24 23 USE trcnam_pisces ! PISCES namelist 25 24 USE trcnam_cfc ! CFC SMS namelist … … 53 52 !! ** Method : - read passive tracer namelist 54 53 !! - read namelist of each defined SMS model 55 !! ( ( LOBSTER,PISCES, CFC, MY_TRC )54 !! ( (PISCES, CFC, MY_TRC ) 56 55 !!--------------------------------------------------------------------- 57 56 INTEGER :: jn, ierr … … 234 233 ! namelist of SMS 235 234 ! --------------- 236 IF( lk_lobster ) THEN ; CALL trc_nam_lobster ! LOBSTER bio-model237 ELSE ; IF(lwp) WRITE(numout,*) ' LOBSTER not used'238 ENDIF239 240 235 IF( lk_pisces ) THEN ; CALL trc_nam_pisces ! PISCES bio-model 241 236 ELSE ; IF(lwp) WRITE(numout,*) ' PISCES not used' -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
r3294 r3443 27 27 USE trcnam_trp 28 28 USE iom 29 USE trcrst_cfc ! CFC30 USE trcrst_lobster ! LOBSTER restart31 USE trcrst_pisces ! PISCES restart32 USE trcrst_c14b ! C14 bomb restart33 USE trcrst_my_trc ! MY_TRC restart34 29 USE daymod 35 30 IMPLICIT NONE … … 40 35 PUBLIC trc_rst_wri ! called by ??? 41 36 PUBLIC trc_rst_cal 42 43 INTEGER, PUBLIC :: numrtr, numrtw !: logical unit for trc restart (read and write)44 37 45 38 !! * Substitutions … … 115 108 CALL iom_get( numrtr, jpdom_autoglo, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 116 109 END DO 117 118 IF( lk_lobster ) CALL trc_rst_read_lobster( numrtr ) ! LOBSTER bio-model119 IF( lk_pisces ) CALL trc_rst_read_pisces ( numrtr ) ! PISCES bio-model120 IF( lk_cfc ) CALL trc_rst_read_cfc ( numrtr ) ! CFC tracers121 IF( lk_c14b ) CALL trc_rst_read_c14b ( numrtr ) ! C14 bomb tracer122 IF( lk_my_trc ) CALL trc_rst_read_my_trc ( numrtr ) ! MY_TRC tracers123 124 CALL iom_close( numrtr )125 110 ! 126 111 END SUBROUTINE trc_rst_read … … 138 123 !!---------------------------------------------------------------------- 139 124 ! 140 CALL trc_rst_cal( kt, 'WRITE' ) ! calendar141 125 CALL iom_rstput( kt, nitrst, numrtw, 'rdttrc1', rdttrc(1) ) ! surface passive tracer time step 142 126 ! prognostic variables … … 149 133 CALL iom_rstput( kt, nitrst, numrtw, 'TRB'//ctrcnm(jn), trb(:,:,:,jn) ) 150 134 END DO 151 152 IF( lk_lobster ) CALL trc_rst_wri_lobster( kt, nitrst, numrtw ) ! LOBSTER bio-model 153 IF( lk_pisces ) CALL trc_rst_wri_pisces ( kt, nitrst, numrtw ) ! PISCES bio-model 154 IF( lk_cfc ) CALL trc_rst_wri_cfc ( kt, nitrst, numrtw ) ! CFC tracers 155 IF( lk_c14b ) CALL trc_rst_wri_c14b ( kt, nitrst, numrtw ) ! C14 bomb tracer 156 IF( lk_my_trc ) CALL trc_rst_wri_my_trc ( kt, nitrst, numrtw ) ! MY_TRC tracers 157 135 ! 158 136 IF( kt == nitrst ) THEN 159 137 CALL trc_rst_stat ! statistics -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trcsms.F90
r3294 r3443 15 15 USE oce_trc ! 16 16 USE trc ! 17 USE trcsms_lobster ! LOBSTER bio-model18 17 USE trcsms_pisces ! PISCES biogeo-model 19 18 USE trcsms_cfc ! CFC 11 & 12 … … 49 48 IF( nn_timing == 1 ) CALL timing_start('trc_sms') 50 49 ! 51 IF( lk_lobster ) CALL trc_sms_lobster( kt ) ! main program of LOBSTER52 50 IF( lk_pisces ) CALL trc_sms_pisces ( kt ) ! main program of PISCES 53 51 IF( lk_cfc ) CALL trc_sms_cfc ( kt ) ! surface fluxes of CFC -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
r3319 r3443 78 78 ! 79 79 CALL trc_rst_opn ( kt ) ! Open tracer restart file 80 IF( lrst_trc ) CALL trc_rst_cal ( kt, 'WRITE' ) ! calendar 80 81 IF( lk_iomput ) THEN ; CALL trc_wri ( kt ) ! output of passive tracers with iom I/O manager 81 82 ELSE ; CALL trc_dia ( kt ) ! output of passive tracers with old I/O manager … … 83 84 CALL trc_sms ( kt ) ! tracers: sinks and sources 84 85 CALL trc_trp ( kt ) ! transport of passive tracers 86 IF( kt == nittrc000 ) CALL iom_close( numrtr ) ! close input tracer restart file 85 87 IF( lrst_trc ) CALL trc_rst_wri ( kt ) ! write tracer restart file 86 88 IF( lk_trdmld_trc ) CALL trd_mld_trc ( kt ) ! trends: Mixed-layer -
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/TOP_SRC/trcwri.F90
r3295 r3443 18 18 USE dianam ! Output file name 19 19 USE trcwri_pisces 20 USE trcwri_cfc 21 USE trcwri_c14b 22 USE trcwri_my_trc 20 23 21 24 IMPLICIT NONE … … 69 72 ! write the tracer concentrations in the file 70 73 ! --------------------------------------- 71 IF( lk_pisces ) THEN 72 CALL trc_wri_pisces 73 ELSE 74 DO jn = 1, jptra 75 cltra = TRIM( ctrcnm(jn) ) ! short title for tracer 76 CALL iom_put( cltra, trn(:,:,:,jn) ) 77 END DO 78 ENDIF 74 IF( lk_pisces ) CALL trc_wri_pisces ! PISCES 75 IF( lk_cfc ) CALL trc_wri_cfc ! surface fluxes of CFC 76 IF( lk_c14b ) CALL trc_wri_c14b ! surface fluxes of C14 77 IF( lk_my_trc ) CALL trc_wri_my_trc ! MY_TRC tracers 79 78 ! 80 79 END SUBROUTINE trc_wri_trc
Note: See TracChangeset
for help on using the changeset viewer.