Changeset 1119 for trunk/NEMO/TOP_SRC
- Timestamp:
- 2008-06-20T17:17:41+02:00 (16 years ago)
- Location:
- trunk/NEMO/TOP_SRC
- Files:
-
- 58 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/CFC/par_cfc.F90
r1004 r1119 10 10 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 11 11 !!---------------------------------------------------------------------- 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER 13 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER 13 USE par_lobster, ONLY : jp_lobster_2d !: number of 2D diag in LOBSTER 14 USE par_lobster, ONLY : jp_lobster_3d !: number of 3D diag in LOBSTER 15 USE par_lobster, ONLY : jp_lobster_trd !: number of biological diag in LOBSTER 16 17 USE par_pisces , ONLY : jp_pisces !: number of tracers in PISCES 18 USE par_pisces , ONLY : jp_pisces_2d !: number of 2D diag in PISCES 19 USE par_pisces , ONLY : jp_pisces_3d !: number of 3D diag in PISCES 20 USE par_pisces , ONLY : jp_pisces_trd !: number of biological diag in PISCES 14 21 15 22 IMPLICIT NONE 16 23 PUBLIC 17 24 18 INTEGER, PUBLIC, PARAMETER :: jp_lp = jp_lobster + jp_pisces !: cumulative number of passive tracers 25 INTEGER, PUBLIC, PARAMETER :: jp_lp = jp_lobster + jp_pisces !: cumulative number of passive tracers 26 INTEGER, PUBLIC, PARAMETER :: jp_lp_2d = jp_lobster_2d + jp_pisces_2d !: 27 INTEGER, PUBLIC, PARAMETER :: jp_lp_3d = jp_lobster_3d + jp_pisces_3d !: 28 INTEGER, PUBLIC, PARAMETER :: jp_lp_trd = jp_lobster_trd + jp_pisces_trd !: 19 29 20 30 #if defined key_cfc … … 43 53 44 54 ! Starting/ending CFC do-loop indices (N.B. no CFC : jp_cfc0 > jp_cfc1 the do-loop are never done) 45 INTEGER, PUBLIC, PARAMETER :: jp_cfc0 = jp_lp + 1 !: First index of CFC tracers 46 INTEGER, PUBLIC, PARAMETER :: jp_cfc1 = jp_lp + jp_cfc !: Last index of CFC tracers 55 INTEGER, PUBLIC, PARAMETER :: jp_cfc0 = jp_lp + 1 !: First index of CFC tracers 56 INTEGER, PUBLIC, PARAMETER :: jp_cfc1 = jp_lp + jp_cfc !: Last index of CFC tracers 57 INTEGER, PUBLIC, PARAMETER :: jp_cfc0_2d = jp_lp_2d + 1 !: First index of CFC tracers 58 INTEGER, PUBLIC, PARAMETER :: jp_cfc1_2d = jp_lp_2d + jp_cfc_2d !: Last index of CFC tracers 59 INTEGER, PUBLIC, PARAMETER :: jp_cfc0_3d = jp_lp_3d + 1 !: First index of CFC tracers 60 INTEGER, PUBLIC, PARAMETER :: jp_cfc1_3d = jp_lp_3d + jp_cfc_3d !: Last index of CFC tracers 61 INTEGER, PUBLIC, PARAMETER :: jp_cfc0_trd = jp_lp_trd + 1 !: First index of CFC tracers 62 INTEGER, PUBLIC, PARAMETER :: jp_cfc1_trd = jp_lp_trd + jp_cfc_trd !: Last index of CFC tracers 47 63 48 64 !!====================================================================== -
trunk/NEMO/TOP_SRC/CFC/trclsm_cfc.F90
r1089 r1119 44 44 INTEGER :: numnat 45 45 !! 46 NAMELIST/nam dates/ ndate_beg, nyear_res46 NAMELIST/namcfcdate/ ndate_beg, nyear_res 47 47 !!------------------------------------------------------------------- 48 48 … … 54 54 & 1, numout, .FALSE., 1 ) 55 55 56 READ( numnat , nam dates) ! read namelist56 READ( numnat , namcfcdate ) ! read namelist 57 57 58 58 IF(lwp) THEN ! control print -
trunk/NEMO/TOP_SRC/LOBSTER/par_lobster.F90
r934 r1119 48 48 49 49 ! Starting/ending LOBSTER do-loop indices (N.B. no LOBSTER : jpl_lob < jpf_lob the do-loop are never done) 50 INTEGER, PUBLIC, PARAMETER :: jp_lob0 = 1 !: First index of LOBSTER tracers 51 INTEGER, PUBLIC, PARAMETER :: jp_lob1 = jp_lobster !: Last index of LOBSTER tracers 50 INTEGER, PUBLIC, PARAMETER :: jp_lob0 = 1 !: First index of LOBSTER tracers 51 INTEGER, PUBLIC, PARAMETER :: jp_lob1 = jp_lobster !: Last index of LOBSTER tracers 52 INTEGER, PUBLIC, PARAMETER :: jp_lob0_2d = 1 !: First index of LOBSTER 2D diag 53 INTEGER, PUBLIC, PARAMETER :: jp_lob1_2d = jp_lobster_2d !: Last index of LOBSTER 2D diag 54 INTEGER, PUBLIC, PARAMETER :: jp_lob0_3d = 1 !: First index of LOBSTER 3D diag 55 INTEGER, PUBLIC, PARAMETER :: jp_lob1_3d = jp_lobster_3d !: Last index of LOBSTER 3D diag 56 INTEGER, PUBLIC, PARAMETER :: jp_lob0_trd = 1 !: First index of LOBSTER bio. diag 57 INTEGER, PUBLIC, PARAMETER :: jp_lob1_trd = jp_lobster_trd !: Last index of LOBSTER bio. diag 52 58 53 59 !!====================================================================== -
trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90
r1071 r1119 16 16 !!---------------------------------------------------------------------- 17 17 USE oce_trc ! 18 USE tr p_trc!18 USE trc ! 19 19 USE sms_lobster ! 20 20 USE lbclnk ! … … 90 90 fbod(:,:) = 0.e0 91 91 #if defined key_trc_diaadd 92 DO ji = 1, jp dia2d92 DO ji = 1, jp_lobster_2d 93 93 trc2d(:,:,ji) = 0.e0 94 94 END DO … … 182 182 zdeta = zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet 183 183 zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 184 184 185 185 #if defined key_trc_diabio 186 186 trbio(ji,jj,jk, 1) = zno3phy … … 239 239 END DO 240 240 241 ! 242 241 243 !!gm do loop until jpkm1 only! 242 244 ! ! -------------------------- ! … … 364 366 #if defined key_trc_diaadd 365 367 ! Lateral boundary conditions on trc2d and trc3d 366 DO ji = 1, jp dia2d368 DO ji = 1, jp_lobster_2d 367 369 CALL lbc_lnk( trc2d(:,:,ji),'T', 1. ) 368 370 END DO 369 DO ji = 1, jp dia3d371 DO ji = 1, jp_lobster_3d 370 372 CALL lbc_lnk( trc3d(:,:,1,ji),'T', 1. ) 371 373 END DO … … 374 376 #if defined key_trc_diabio 375 377 ! Lateral boundary conditions on trcbio 376 DO ji = 1, jp diabio378 DO ji = 1, jp_lobster_trd 377 379 CALL lbc_lnk( trbio(:,:,1,ji),'T', 1. ) 378 380 END DO -
trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90
r1071 r1119 16 16 !!---------------------------------------------------------------------- 17 17 USE oce_trc ! 18 USE trp_trc19 18 USE sms_lobster 20 19 USE lbclnk -
trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90
r1089 r1119 40 40 !!---------------------------------------------------------------------- 41 41 CHARACTER (len=32) :: clname 42 INTEGER :: jn 42 43 !! 43 NAMELIST/natbio/ apmin, azmin, anmin, admin, & 44 & redf, reddom, slopet, toptp, psinut, akno3, aknh4, rcchl, & 45 & rgamma, toptgz, tmaxgz, rgz, & 46 & rppz, taus, aks, filmax, rpnaz, rdnaz, eggzoo, tauzn, & 47 & tmmaxp, tmminp, tmmaxz, tmminz, anumin, afdmin, taudn, & 48 & vsed, tmumax, aki, tmaxr, tminr, taunn, taudomn, xhr, & 49 & sedlam, sedlostpoc, & 50 & fphylab, fzoolab, fdetlab, fdbod 51 NAMELIST/natopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig 44 #if defined key_trc_diaadd 45 ! definition of additional diagnostic as a structure 46 TYPE DIAG 47 CHARACTER(len = 20) :: snamedia !: short name 48 CHARACTER(len = 80 ) :: lnamedia !: long name 49 CHARACTER(len = 20 ) :: unitdia !: unit 50 END TYPE DIAG 51 52 TYPE(DIAG) , DIMENSION(jp_lobster_2d) :: lobdia2d 53 TYPE(DIAG) , DIMENSION(jp_lobster_3d) :: lobdia3d 54 #endif 52 55 #if defined key_trc_diabio 53 INTEGER :: ji 54 NAMELIST/natdbi/ctrbio,ctrbil,ctrbiu,nwritebio 56 ! definition of additional diagnostic as a structure 57 TYPE DIABIO 58 CHARACTER(len = 20) :: snamebio !: short name 59 CHARACTER(len = 80 ) :: lnamebio !: long name 60 CHARACTER(len = 20 ) :: unitbio !: unit 61 END TYPE DIABIO 62 63 TYPE(DIABIO) , DIMENSION(jp_lobster_trd) :: lobdiabio 64 #endif 65 66 NAMELIST/namlobphy/ apmin, tmumax, rgamma, fphylab, tmmaxp, tmminp, & 67 & rcchl, aki, toptp 68 NAMELIST/namlobnut/ anmin, akno3, aknh4, taunn, psinut 69 NAMELIST/namlobzoo/ azmin, eggzoo, rgz, rppz, taus, aks, rpnaz, & 70 & rdnaz, tauzn, fzoolab, fdbod, tmmaxz, tmminz 71 NAMELIST/namlobdet/ admin, taudn, fdetlab, vsed 72 NAMELIST/namlobdom/ taudomn 73 NAMELIST/namlobsed/ sedlam, sedlostpoc 74 NAMELIST/namlobrat/ redf, reddom, slopet, tmaxr, tminr, xhr, & 75 & filmax, toptgz, tmaxgz, anumin, afdmin 76 77 NAMELIST/namlobopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig 78 #if defined key_trc_diaadd 79 NAMELIST/namlobdia/nwritedia, lobdia3d, lobdia2d ! additional diagnostics 80 #endif 81 #if defined key_trc_diabio 82 NAMELIST/namlobdbi/nwritebio, lobdiabio 55 83 #endif 56 84 !!---------------------------------------------------------------------- … … 63 91 ! ! ---------------------- 64 92 clname ='namelist_lobster' 65 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', & 66 & 1, numout, .FALSE., 1 ) 67 68 ! ! natbio : biological parameters 69 ! ! ------------------------------ 70 apmin = 0. ! default values 71 azmin = 0. 72 anmin = 0. 73 admin = 0. 74 redf = 0. 75 reddom = 0. 76 slopet = 0. 77 toptp = 0. 93 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE., 1 ) 94 95 ! namlobphy : parameters for phytoplankton 96 apmin = 0. 97 tmumax = 0. 98 rgamma = 0. 99 fphylab = 0. 100 tmmaxp = 0. 101 tmminp = 0. 102 rcchl = 0. 103 aki = 0. 104 toptp = 0. 105 106 REWIND( numnat ) 107 READ ( numnat, namlobphy ) 108 109 IF(lwp) THEN 110 WRITE(numout,*) ' Namelist namlobphy' 111 WRITE(numout,*) ' minimum phytoplancton concentration apmin =', apmin 112 WRITE(numout,*) ' phyto max growth rate tmumax =', 86400 * tmumax, ' d' 113 WRITE(numout,*) ' phytoplankton exudation fraction rgamma =', rgamma 114 WRITE(numout,*) ' NH4 fraction of phytoplankton exsudation fphylab =', fphylab 115 WRITE(numout,*) ' maximal phyto mortality rate tmmaxp =', 86400 * tmmaxp 116 WRITE(numout,*) ' minimal phyto mortality rate tmminp =', 86400 * tmminp 117 WRITE(numout,*) ' carbone/chlorophyl ratio rcchl =', rcchl 118 WRITE(numout,*) ' light hlaf saturation constant aki =', aki 119 WRITE(numout,*) ' optimal photosynthesis temperature toptp =', toptp 120 WRITE(numout,*) ' ' 121 ENDIF 122 123 ! namlobnut : parameters for nutrients 124 anmin = 0. 78 125 psinut = 0. 79 126 akno3 = 0. 80 aknh4 = 0. 81 rcchl = 0. 82 rgamma= 0. 83 toptgz= 0. 84 tmaxgz= 0. 85 rgz = 0. 86 rppz = 0. 87 taus = 0. 88 aks = 0. 89 filmax= 0. 90 rpnaz = 0. 91 rdnaz = 0. 92 eggzoo= 0. 93 tauzn = 0. 94 tmmaxp= 0. 95 tmminp= 0. 96 tmmaxz= 0. 97 tmminz= 0. 98 anumin= 0. 99 afdmin= 0. 100 taudn = 0. 101 vsed = 0. 102 tmumax= 0. 103 aki = 0. 104 tmaxr = 1./( 4.*rday)*0. 105 tminr = 1./(24.*30.*rday)*0. 106 xhr=0. 107 sedlam=0. 108 sedlostpoc=0. 109 taudomn = 0. 110 taunn = 0. 111 fphylab = 0. 112 fzoolab = 0. 113 fdetlab = 0. 114 fdbod = 0. 115 116 REWIND( numnat ) ! read natbio 117 READ ( numnat, natbio ) 118 119 IF(lwp) THEN 120 WRITE(numout,*) ' Namelist natbio' 121 WRITE(numout,*) ' minimum phytoplancton concentration apmin =', apmin 122 WRITE(numout,*) ' minimum zooplancton concentration azmin =', azmin 127 aknh4 = 0. 128 taunn = 0. 129 130 REWIND( numnat ) 131 READ ( numnat, namlobnut ) 132 IF(lwp) THEN 133 WRITE(numout,*) ' Namelist namlobnut' 123 134 WRITE(numout,*) ' minimum nutrients concentration anmin =', anmin 124 WRITE(numout,*) ' minimum detritus concentration admin =', admin125 WRITE(numout,*) ' redfield ratio c:n redf =', redf126 WRITE(numout,*) ' van t hoff coefficient slopet =', slopet127 WRITE(numout,*) ' optimal photosynthesis temperature toptp =', toptp128 WRITE(numout,*) ' inhibition of no3 uptake by nh4 psinut =', psinut129 135 WRITE(numout,*) ' half-saturation nutrient for no3 uptake akno3 =', akno3 130 136 WRITE(numout,*) ' half-saturation nutrient for nh4 uptake aknh4 =', aknh4 131 WRITE(numout,*) ' carbone/chlorophyl ratio rcchl =', rcchl 132 WRITE(numout,*) ' phytoplankton exudation fraction rgamma =', rgamma 133 WRITE(numout,*) ' optimal temperature for zoo growth toptgz =', toptgz 134 WRITE(numout,*) ' maximal temperature for zoo growth tmaxgz =', tmaxgz 137 WRITE(numout,*) ' nitrification rate taunn =', taunn 138 WRITE(numout,*) ' inhibition of no3 uptake by nh4 psinut =', psinut 139 WRITE(numout,*) ' ' 140 ENDIF 141 142 ! namlobzoo : parameters for zooplankton 143 azmin = 0. 144 rgz = 0. 145 rppz = 0. 146 taus = 0. 147 aks = 0. 148 rpnaz = 0. 149 rdnaz = 0. 150 eggzoo = 0. 151 tauzn = 0. 152 tmmaxz = 0. 153 tmminz = 0. 154 fzoolab = 0. 155 fdbod = 0. 156 157 REWIND( numnat ) 158 READ ( numnat, namlobzoo ) 159 160 IF(lwp) THEN 161 WRITE(numout,*) ' Namelist namlobzoo' 162 WRITE(numout,*) ' minimum zooplancton concentration azmin =', azmin 163 WRITE(numout,*) ' minimum for zoo concentration eggzoo =', eggzoo 135 164 WRITE(numout,*) ' widtht of zoo temperature FUNCTION rgz =', rgz 136 165 WRITE(numout,*) ' zoo preference for phyto rppz =', rppz 137 166 WRITE(numout,*) ' maximal zoo grazing rate taus =', 86400 * taus, ' d' 138 167 WRITE(numout,*) ' half saturation constant for zoo food aks =', aks 139 WRITE(numout,*) ' maximal mass clearance rate for zoo filmax =', filmax140 168 WRITE(numout,*) ' non-assimilated phyto by zoo rpnaz =', rpnaz 141 169 WRITE(numout,*) ' non-assimilated detritus by zoo rdnaz =', rdnaz 142 WRITE(numout,*) ' minimum for zoo concentration eggzoo =', eggzoo143 170 WRITE(numout,*) ' zoo specific excretion rate tauzn =', 86400 * tauzn 144 WRITE(numout,*) ' maximal phyto mortality rate tmmaxp =', 86400 * tmmaxp145 WRITE(numout,*) ' minimal phyto mortality rate tmminp =', 86400 * tmminp146 171 WRITE(numout,*) ' maximal zoo mortality rate tmmaxz =', 86400 * tmmaxz 147 172 WRITE(numout,*) ' minimal zoo mortality rate tmminz =', 86400 * tmminz 173 WRITE(numout,*) ' NH4 fraction of zooplankton excretion fzoolab =', fzoolab 174 WRITE(numout,*) ' Zooplankton mortality fraction that goes to detritus fdbod =', fdbod 175 WRITE(numout,*) ' ' 176 ENDIF 177 178 ! namlobdet : parameters for detritus 179 admin = 0. 180 taudn = 0. 181 vsed = 0. 182 fdetlab = 0. 183 184 REWIND( numnat ) 185 READ ( numnat, namlobdet ) 186 187 IF(lwp) THEN 188 WRITE(numout,*) ' Namelist namlobdet' 189 WRITE(numout,*) ' minimum detritus concentration admin =', admin 190 WRITE(numout,*) ' detrital breakdown rate taudn =', 86400 * taudn , ' d' 191 WRITE(numout,*) ' detritus sedimentation speed vsed =', 86400 * vsed , ' d' 192 WRITE(numout,*) ' NH4 fraction of detritus dissolution fdetlab =', fdetlab 193 WRITE(numout,*) ' ' 194 ENDIF 195 196 ! namlobdom : parameters for DOM 197 taudomn = 0. 198 199 REWIND( numnat ) 200 READ ( numnat, namlobdom ) 201 202 IF(lwp) THEN 203 WRITE(numout,*) ' Namelist namlobdom' 204 WRITE(numout,*) ' dom remineralisation rate taudomn =', taudomn 205 WRITE(numout,*) ' ' 206 ENDIF 207 208 ! namlobsed : parameters from aphotic layers to sediment 209 sedlam = 0. 210 sedlostpoc = 0. 211 212 REWIND( numnat ) 213 READ ( numnat, namlobsed ) 214 215 IF(lwp) THEN 216 WRITE(numout,*) ' Namelist namlobsed' 217 WRITE(numout,*) ' time coeff of POC in sediments sedlam =', sedlam 218 WRITE(numout,*) ' Sediment geol loss for POC sedlostpoc=', sedlostpoc 219 WRITE(numout,*) ' ' 220 ENDIF 221 222 ! namlobrat : general coefficient 223 redf = 0. 224 reddom = 0. 225 slopet = 0. 226 tmaxr = 1./( 4.*rday)*0. 227 tminr = 1./(24.*30.*rday)*0. 228 xhr = 0. 229 filmax = 0. 230 toptgz = 0. 231 tmaxgz = 0. 232 anumin = 0. 233 afdmin = 0. 234 235 REWIND( numnat ) 236 READ ( numnat, namlobrat ) 237 238 IF(lwp) THEN 239 WRITE(numout,*) ' Namelist namlobrat' 240 WRITE(numout,*) ' redfield ratio c:n for phyto redf =', redf 241 WRITE(numout,*) ' redfield ratio c:n for DOM reddom =', reddom 242 WRITE(numout,*) ' van t hoff coefficient slopet =', slopet 243 WRITE(numout,*) ' maximum damping for d z or p tmaxr =', tmaxr 244 WRITE(numout,*) ' damping-remineralisation rate tminr =', tminr 245 WRITE(numout,*) ' coeff for martin''s remineralistion xhr =', xhr 246 WRITE(numout,*) ' maximal mass clearance rate for zoo filmax =', filmax 247 WRITE(numout,*) ' optimal temperature for zoo growth toptgz =', toptgz 248 WRITE(numout,*) ' maximal temperature for zoo growth tmaxgz =', tmaxgz 148 249 WRITE(numout,*) ' nutrient threshold for phyto mort anumin =', anumin 149 250 WRITE(numout,*) ' food threshold for zoo mort afdmin =', afdmin 150 WRITE(numout,*) ' detrital breakdown rate taudn =', 86400 * taudn , ' d' 151 WRITE(numout,*) ' detritus sedimentation speed vsed =', 86400 * vsed , ' d' 152 WRITE(numout,*) ' phyto max growth rate tmumax =', 86400 * tmumax, ' d' 153 WRITE(numout,*) ' light hlaf saturation constant aki =', aki 154 WRITE(numout,*) ' maximum damping for d z or p tmaxr =', tmaxr 155 WRITE(numout,*) ' damping-remineralisation rate tminr =', tminr 156 WRITE(numout,*) ' nitrification rate taunn =', taunn 157 WRITE(numout,*) ' dom remineralisation rate taudomn =', taudomn 158 WRITE(numout,*) ' coeff for martin''s remineralistion xhr =', xhr 159 WRITE(numout,*) ' time coeff of POC in sediments sedlam =', sedlam 160 WRITE(numout,*) ' Sediment geol loss for POC sedlostpoc=', sedlostpoc 161 WRITE(numout,*) ' NH4 fraction of phytoplankton exsudation fphylab =', fphylab 162 WRITE(numout,*) ' NH4 fraction of zooplankton excretion fzoolab =', fzoolab 163 WRITE(numout,*) ' NH4 fraction of detritus dissolution fdetlab =', fdetlab 164 WRITE(numout,*) ' Zooplankton mortality fraction that goes to detritus fdbod =', fdbod 165 ENDIF 166 167 ! ! natopt : optical parameters 168 ! ! --------------------------- 169 xkg0 = 0. ! default values 251 WRITE(numout,*) ' ' 252 ENDIF 253 254 255 ! namlobopt : optical parameters 256 xkg0 = 0. 170 257 xkr0 = 0. 171 258 xkgp = 0. … … 175 262 rpig = 0. 176 263 177 REWIND( numnat ) ! read natopt178 READ ( numnat, na topt )179 180 IF(lwp) THEN ! control print264 REWIND( numnat ) 265 READ ( numnat, namlobopt ) 266 267 IF(lwp) THEN 181 268 WRITE(numout,*) 182 WRITE(numout,*) ' Namelist na topt'269 WRITE(numout,*) ' Namelist namlobopt' 183 270 WRITE(numout,*) ' green water absorption coeff xkg0 = ', xkg0 184 271 WRITE(numout,*) ' red water absorption coeff xkr0 = ', xkr0 … … 188 275 WRITE(numout,*) ' red chl exposant xlr = ', xlr 189 276 WRITE(numout,*) ' chla/chla+phea ratio rpig = ', rpig 190 ENDIF 277 WRITE(numout,*) ' ' 278 ENDIF 279 280 #if defined key_trc_diaadd 281 282 ! Namelist namlobdia 283 ! ------------------- 284 nwritedia = 10 ! default values 285 286 DO jn = jp_lob0_2d, jp_lob1_2d 287 WRITE(ctrc2d(jn),'("2D_",I1)') jn ! short name 288 WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn ! long name 289 ctrc2u(jn) = ' ' ! units 290 END DO 291 ! ! 3D output arrays 292 DO jn = jp_lob0_3d, jp_lob1_3d 293 WRITE(ctrc3d(jn),'("3D_",I1)') jn ! short name 294 WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn ! long name 295 ctrc3u(jn) = ' ' ! units 296 END DO 297 298 REWIND( numnat ) ! read natrtd 299 READ ( numnat, namlobdia ) 300 301 DO jn = jp_lob0_2d, jp_lob1_2d 302 ctrc2d(jn) = lobdia2d(jn)%snamedia 303 ctrc2l(jn) = lobdia2d(jn)%lnamedia 304 ctrc2u(jn) = lobdia2d(jn)%unitdia 305 END DO 306 307 DO jn = jp_lob0_3d, jp_lob1_3d 308 ctrc3d(jn) = lobdia3d(jn)%snamedia 309 ctrc3l(jn) = lobdia3d(jn)%lnamedia 310 ctrc3u(jn) = lobdia3d(jn)%unitdia 311 END DO 312 313 IF(lwp) THEN ! control print 314 WRITE(numout,*) 315 WRITE(numout,*) ' Namelist : natadd' 316 WRITE(numout,*) ' frequency of outputs for additional arrays nwritedia = ', nwritedia 317 DO jn = jp_lob0_3d, jp_lob1_3d 318 WRITE(numout,*) ' 3d output field No : ',jn 319 WRITE(numout,*) ' short name : ', TRIM(ctrc3d(jn)) 320 WRITE(numout,*) ' long name : ', TRIM(ctrc3l(jn)) 321 WRITE(numout,*) ' unit : ', TRIM(ctrc3u(jn)) 322 WRITE(numout,*) ' ' 323 END DO 324 325 DO jn = jp_lob0_2d, jp_lob1_2d 326 WRITE(numout,*) ' 2d output field No : ',jn 327 WRITE(numout,*) ' short name : ', TRIM(ctrc2d(jn)) 328 WRITE(numout,*) ' long name : ', TRIM(ctrc2l(jn)) 329 WRITE(numout,*) ' unit : ', TRIM(ctrc2u(jn)) 330 WRITE(numout,*) ' ' 331 END DO 332 ENDIF 333 #endif 191 334 192 335 #if defined key_trc_diabio 193 336 194 ! ! natdbi : bio diagnostics 195 ! ! ------------------------ 337 ! namlobdbi : bio diagnostics 196 338 nwritebio = 10 ! default values 197 DO ji = 1, jpdiabio 198 IF( ji < 10 ) THEN ; WRITE (ctrbio(ji),'("BIO_",I1)') ji ! short name 199 ELSEIF (ji < 100 ) THEN ; WRITE (ctrbio(ji),'("BIO_",I2)') ji 200 ELSE ; WRITE (ctrbio(ji),'("BIO_",I3)') ji 339 340 DO jn = jp_lob0_trd, jp_lob1_trd 341 IF( jn < 10 ) THEN ; WRITE (ctrbio(jn),'("BIO_",I1)') jn ! short name 342 ELSEIF (jn < 100 ) THEN ; WRITE (ctrbio(jn),'("BIO_",I2)') jn 343 ELSE ; WRITE (ctrbio(jn),'("BIO_",I3)') jn 201 344 ENDIF 202 WRITE(ctrbil(ji),'("BIOLOGICAL TREND NUMBER ",I2)') ji ! long name 203 ctrbiu(ji) = 'mmoleN/m3/s ' ! units 204 END DO 205 206 REWIND( numnat ) ! read natdbi 207 READ ( numnat, natdbi ) 208 209 IF(lwp) THEN 345 WRITE(ctrbil(jn),'("BIOLOGICAL TREND NUMBER ",I2)') jn ! long name 346 ctrbiu(jn) = 'mmoleN/m3/s ' ! units 347 END DO 348 349 REWIND( numnat ) 350 READ ( numnat, namlobdbi ) 351 352 DO jn = jp_lob0_trd, jp_lob1_trd 353 ctrbio(jn) = lobdiabio(jn)%snamebio 354 ctrbil(jn) = lobdiabio(jn)%lnamebio 355 ctrbiu(jn) = lobdiabio(jn)%unitbio 356 END DO 357 358 IF(lwp) THEN ! control print 210 359 WRITE(numout,*) 211 WRITE(numout,*) ' Namelist natdbi' 212 WRITE(numout,*) ' frequency of outputs for biological outputs nwritebio = ', nwritebio 213 DO ji = 1, jpdiabio 214 WRITE(numout,*) ' name of biological trend No :',ji,' : ',ctrbio(ji), ctrbil(ji), ' in ', ctrbiu(ji) 360 WRITE(numout,*) ' Namelist : namlobdbi' 361 WRITE(numout,*) ' frequency of outputs for biological trends nwritebio = ', nwritebio 362 DO jn = jp_lob0_trd, jp_lob1_trd 363 WRITE(numout,*) ' biological trend No : ',jn 364 WRITE(numout,*) ' short name : ', TRIM(ctrbio(jn)) 365 WRITE(numout,*) ' long name : ', TRIM(ctrbil(jn)) 366 WRITE(numout,*) ' unit : ', TRIM(ctrbiu(jn)) 367 WRITE(numout,*) ' ' 215 368 END DO 216 369 END IF -
trunk/NEMO/TOP_SRC/LOBSTER/trcopt.F90
r1071 r1119 17 17 !!---------------------------------------------------------------------- 18 18 USE oce_trc ! 19 USE tr p_trc19 USE trc 20 20 USE sms_lobster 21 21 USE prtctl_trc ! Print control for debbuging … … 136 136 WRITE(charout, FMT="('opt')") 137 137 CALL prt_ctl_trc_info(charout) 138 CALL prt_ctl_trc( tab4d=tr a, mask=tmask, clinfo=ctrcnm )138 CALL prt_ctl_trc( tab4d=trn, mask=tmask, clinfo=ctrcnm ) 139 139 ENDIF 140 140 -
trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90
r1071 r1119 15 15 !!---------------------------------------------------------------------- 16 16 USE oce_trc ! 17 USE tr p_trc17 USE trc 18 18 USE sms_lobster 19 19 USE lbclnk -
trunk/NEMO/TOP_SRC/PISCES/p4zbio.F90
r1073 r1119 15 15 !!---------------------------------------------------------------------- 16 16 USE oce_trc ! 17 USE tr p_trc !17 USE trc ! 18 18 USE sms_pisces ! 19 19 USE p4zsink ! … … 131 131 132 132 # if defined key_trc_dia3d && defined key_kriest 133 !!gm potential bug hard coded index on trc3d 134 trc3d(:,:,:,11) = tra(:,:,:,jpcal) * xnegtr(:,:,:) * 1.e3 * rfact2r 133 trc3d(:,:,:,jp_pcs0_3d + 10) = tra(:,:,:,jpcal) * xnegtr(:,:,:) * 1.e3 * rfact2r 135 134 # endif 136 135 ! -
trunk/NEMO/TOP_SRC/PISCES/p4zche.F90
r1073 r1119 18 18 !!---------------------------------------------------------------------- 19 19 USE oce_trc ! 20 USE tr p_trc !20 USE trc ! 21 21 USE sms_pisces ! 22 22 -
trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
r1073 r1119 19 19 USE trc 20 20 USE oce_trc ! 21 USE tr p_trc21 USE trc 22 22 USE sms_pisces 23 23 USE prtctl_trc … … 167 167 # if defined key_trc_diaadd 168 168 ! Save diagnostics 169 trc2d(ji,jj, 1) = ( zfld - zflu ) * 1000.170 trc2d(ji,jj, 2) = ( zfld16 - zflu16 ) * 1000.171 trc2d(ji,jj, 3) = zkgco2(ji,jj)172 trc2d(ji,jj, 4) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn )169 trc2d(ji,jj,jp_pcs0_2d ) = ( zfld - zflu ) * 1000. 170 trc2d(ji,jj,jp_pcs0_2d + 1) = ( zfld16 - zflu16 ) * 1000. 171 trc2d(ji,jj,jp_pcs0_2d + 2) = zkgco2(ji,jj) 172 trc2d(ji,jj,jp_pcs0_2d + 3) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn ) 173 173 # endif 174 174 END DO … … 209 209 !! ** Purpose : Initialization of atmospheric conditions 210 210 !! 211 !! ** Method : Read the na text namelist and check the parameters211 !! ** Method : Read the nampisext namelist and check the parameters 212 212 !! called at the first timestep (nittrc000) 213 !! ** input : Namelist na text213 !! ** input : Namelist nampisext 214 214 !! 215 215 !!---------------------------------------------------------------------- 216 216 217 NAMELIST/na text/ atcco2217 NAMELIST/nampisext/ atcco2 218 218 219 219 REWIND( numnat ) ! read numnat 220 READ ( numnat, na text )220 READ ( numnat, nampisext ) 221 221 222 222 IF(lwp) THEN ! control print 223 223 WRITE(numout,*) ' ' 224 WRITE(numout,*) ' Namelist parameters for air-sea exchange, na text'224 WRITE(numout,*) ' Namelist parameters for air-sea exchange, nampisext' 225 225 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 226 226 WRITE(numout,*) ' Atmospheric pCO2 atcco2 =', atcco2 -
trunk/NEMO/TOP_SRC/PISCES/p4zint.F90
r1073 r1119 14 14 !!---------------------------------------------------------------------- 15 15 USE oce_trc ! 16 USE tr p_trc16 USE trc 17 17 USE sms_pisces 18 18 -
trunk/NEMO/TOP_SRC/PISCES/p4zlim.F90
r1073 r1119 16 16 USE trc 17 17 USE oce_trc ! 18 USE tr p_trc !18 USE trc ! 19 19 USE sms_pisces ! 20 20 … … 180 180 !! ** Purpose : Initialization of nutrient limitation parameters 181 181 !! 182 !! ** Method : Read the na tlim namelist and check the parameters182 !! ** Method : Read the nampislim namelist and check the parameters 183 183 !! called at the first timestep (nittrc000) 184 184 !! 185 !! ** input : Namelist na tlim185 !! ** input : Namelist nampislim 186 186 !! 187 187 !!---------------------------------------------------------------------- 188 188 189 NAMELIST/na tlim/ conc0, conc1, conc2, conc2m, conc3, conc3m, &189 NAMELIST/nampislim/ conc0, conc1, conc2, conc2m, conc3, conc3m, & 190 190 & concnnh4, concdnh4, xksi1, xksi2, xkdoc, caco3r 191 191 192 192 REWIND( numnat ) ! read numnat 193 READ ( numnat, na tlim )193 READ ( numnat, nampislim ) 194 194 195 195 IF(lwp) THEN ! control print 196 196 WRITE(numout,*) ' ' 197 WRITE(numout,*) ' Namelist parameters for nutrient limitations, na tlim'197 WRITE(numout,*) ' Namelist parameters for nutrient limitations, nampislim' 198 198 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 199 199 WRITE(numout,*) ' mean rainratio caco3r =', caco3r -
trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90
r1073 r1119 19 19 USE trc 20 20 USE oce_trc ! 21 USE tr p_trc21 USE trc 22 22 USE sms_pisces 23 23 USE prtctl_trc … … 151 151 152 152 # if defined key_trc_dia3d 153 trc3d(:,:,:, 1) = hi(:,:,:)154 trc3d(:,:,:, 2) = zco3(:,:,:)155 trc3d(:,:,:, 3) = aksp(:,:,:) / calcon153 trc3d(:,:,:,jp_pcs0_3d ) = hi(:,:,:) 154 trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:) 155 trc3d(:,:,:,jp_pcs0_3d + 2) = aksp(:,:,:) / calcon 156 156 # endif 157 157 ! … … 171 171 !! ** Purpose : Initialization of CaCO3 dissolution parameters 172 172 !! 173 !! ** Method : Read the na tcal namelist and check the parameters173 !! ** Method : Read the nampiscal namelist and check the parameters 174 174 !! called at the first timestep (nittrc000) 175 175 !! 176 !! ** input : Namelist na tcal176 !! ** input : Namelist nampiscal 177 177 !! 178 178 !!---------------------------------------------------------------------- 179 179 180 NAMELIST/na tcal/ kdca, nca180 NAMELIST/nampiscal/ kdca, nca 181 181 182 182 REWIND( numnat ) ! read numnat 183 READ ( numnat, na tcal )183 READ ( numnat, nampiscal ) 184 184 185 185 IF(lwp) THEN ! control print 186 186 WRITE(numout,*) ' ' 187 WRITE(numout,*) ' Namelist parameters for CaCO3 dissolution, na tcal'187 WRITE(numout,*) ' Namelist parameters for CaCO3 dissolution, nampiscal' 188 188 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 189 189 WRITE(numout,*) ' diss. rate constant calcite (per month) kdca =', kdca -
trunk/NEMO/TOP_SRC/PISCES/p4zmeso.F90
r1073 r1119 16 16 USE trc 17 17 USE oce_trc ! 18 USE tr p_trc !18 USE trc ! 19 19 USE sms_pisces ! 20 20 USE prtctl_trc … … 299 299 !! ** Purpose : Initialization of mesozooplankton parameters 300 300 !! 301 !! ** Method : Read the na tmes namelist and check the parameters301 !! ** Method : Read the nampismes namelist and check the parameters 302 302 !! called at the first timestep (nittrc000) 303 303 !! 304 !! ** input : Namelist na tmes304 !! ** input : Namelist nampismes 305 305 !! 306 306 !!---------------------------------------------------------------------- 307 307 308 NAMELIST/na tmes/ grazrat2,resrat2,mzrat2,xprefc, xprefp, &308 NAMELIST/nampismes/ grazrat2,resrat2,mzrat2,xprefc, xprefp, & 309 309 & xprefz, xprefpoc, xkgraz2, epsher2, sigma2, unass2, grazflux 310 310 311 311 REWIND( numnat ) ! read numnat 312 READ ( numnat, na tmes )312 READ ( numnat, nampismes ) 313 313 314 314 315 315 IF(lwp) THEN ! control print 316 316 WRITE(numout,*) ' ' 317 WRITE(numout,*) ' Namelist parameters for mesozooplankton, na tmes'317 WRITE(numout,*) ' Namelist parameters for mesozooplankton, nampismes' 318 318 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 319 319 WRITE(numout,*) ' zoo preference for phyto xprefc =', xprefc -
trunk/NEMO/TOP_SRC/PISCES/p4zmicro.F90
r1073 r1119 16 16 USE trc 17 17 USE oce_trc ! 18 USE tr p_trc !18 USE trc ! 19 19 USE sms_pisces ! 20 20 USE prtctl_trc … … 229 229 !! ** Purpose : Initialization of microzooplankton parameters 230 230 !! 231 !! ** Method : Read the na tzoo namelist and check the parameters231 !! ** Method : Read the nampiszoo namelist and check the parameters 232 232 !! called at the first timestep (nittrc000) 233 233 !! 234 !! ** input : Namelist na tzoo234 !! ** input : Namelist nampiszoo 235 235 !! 236 236 !!---------------------------------------------------------------------- 237 237 238 NAMELIST/na tzoo/ grazrat,resrat,mzrat,xpref2c, xpref2p, &238 NAMELIST/nampiszoo/ grazrat,resrat,mzrat,xpref2c, xpref2p, & 239 239 & xpref2d, xkgraz, epsher, sigma1, unass 240 240 241 241 REWIND( numnat ) ! read numnat 242 READ ( numnat, na tzoo )242 READ ( numnat, nampiszoo ) 243 243 244 244 IF(lwp) THEN ! control print 245 245 WRITE(numout,*) ' ' 246 WRITE(numout,*) ' Namelist parameters for microzooplankton, na tzoo'246 WRITE(numout,*) ' Namelist parameters for microzooplankton, nampiszoo' 247 247 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 248 248 WRITE(numout,*) ' zoo preference for POC xpref2c =', xpref2c -
trunk/NEMO/TOP_SRC/PISCES/p4zmort.F90
r1073 r1119 16 16 USE trc 17 17 USE oce_trc ! 18 USE tr p_trc !18 USE trc ! 19 19 USE sms_pisces ! 20 20 USE p4zsink … … 241 241 !! ** Purpose : Initialization of phytoplankton parameters 242 242 !! 243 !! ** Method : Read the na tmort namelist and check the parameters243 !! ** Method : Read the nampismort namelist and check the parameters 244 244 !! called at the first timestep (nittrc000) 245 245 !! 246 !! ** input : Namelist na tmort246 !! ** input : Namelist nampismort 247 247 !! 248 248 !!---------------------------------------------------------------------- 249 249 250 NAMELIST/na tmort/ wchl, wchld, mprat, mprat2, mpratm250 NAMELIST/nampismort/ wchl, wchld, mprat, mprat2, mpratm 251 251 252 252 REWIND( numnat ) ! read numnat 253 READ ( numnat, na tmort )253 READ ( numnat, nampismort ) 254 254 255 255 IF(lwp) THEN ! control print 256 256 WRITE(numout,*) ' ' 257 WRITE(numout,*) ' Namelist parameters for phytoplankton mortality, na tmort'257 WRITE(numout,*) ' Namelist parameters for phytoplankton mortality, nampismort' 258 258 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 259 259 WRITE(numout,*) ' quadratic mortality of phytoplankton wchl =', wchl -
trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90
r1073 r1119 15 15 USE trc 16 16 USE oce_trc ! 17 USE tr p_trc17 USE trc 18 18 USE sms_pisces 19 19 … … 255 255 256 256 # if defined key_trc_diaadd 257 trc2d(:,:, 11) = heup(:,:)257 trc2d(:,:,jp_pcs0_2d + 10) = heup(:,:) 258 258 # endif 259 259 ! -
trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90
r1073 r1119 15 15 USE trc 16 16 USE oce_trc ! 17 USE trp_trc !18 17 USE sms_pisces ! 19 18 USE prtctl_trc … … 376 375 ! Supplementary diagnostics 377 376 ! ------------------------- 378 trc3d(:,:,:, 4) = etot(:,:,:)379 trc3d(:,:,:, 5) = zprorca(:,:,:) * zrfact2380 trc3d(:,:,:, 6) = zprorcad(:,:,:) * zrfact2381 trc3d(:,:,:, 7) = zpronew(:,:,:) * zrfact2382 trc3d(:,:,:, 8) = zpronewd(:,:,:) * zrfact2383 trc3d(:,:,:, 9) = zprorcad(:,:,:) * zysopt(:,:,:) * zrfact2384 trc3d(:,:,:, 10) = zprofed(:,:,:) * zrfact2377 trc3d(:,:,:,jp_pcs0_3d + 3) = etot(:,:,:) 378 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca(:,:,:) * zrfact2 379 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zrfact2 380 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew(:,:,:) * zrfact2 381 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zrfact2 382 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zysopt(:,:,:) * zrfact2 383 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed(:,:,:) * zrfact2 385 384 #if ! defined key_kriest 386 trc3d(:,:,:, 11) = zprofen(:,:,:) * zrfact2385 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen(:,:,:) * zrfact2 387 386 #endif 388 387 #endif … … 403 402 !! ** Purpose : Initialization of phytoplankton production parameters 404 403 !! 405 !! ** Method : Read the na tprod namelist and check the parameters404 !! ** Method : Read the nampisprod namelist and check the parameters 406 405 !! called at the first timestep (nittrc000) 407 406 !! 408 !! ** input : Namelist na tprod407 !! ** input : Namelist nampisprod 409 408 !! 410 409 !!---------------------------------------------------------------------- 411 410 412 NAMELIST/na tprod/ pislope, pislope2, excret, excret2, chlcnm, chlcdm, &411 NAMELIST/nampisprod/ pislope, pislope2, excret, excret2, chlcnm, chlcdm, & 413 412 & fecnm, fecdm, grosip 414 413 415 414 REWIND( numnat ) ! read numnat 416 READ ( numnat, na tprod )415 READ ( numnat, nampisprod ) 417 416 418 417 IF(lwp) THEN ! control print 419 418 WRITE(numout,*) ' ' 420 WRITE(numout,*) ' Namelist parameters for phytoplankton growth, na tprod'419 WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod' 421 420 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 422 421 WRITE(numout,*) ' mean Si/C ratio grosip =', grosip -
trunk/NEMO/TOP_SRC/PISCES/p4zrem.F90
r1073 r1119 16 16 USE trc 17 17 USE oce_trc ! 18 USE trp_trc !19 18 USE sms_pisces ! 20 19 USE prtctl_trc … … 409 408 !! ** Purpose : Initialization of remineralization parameters 410 409 !! 411 !! ** Method : Read the na trem namelist and check the parameters410 !! ** Method : Read the nampisrem namelist and check the parameters 412 411 !! called at the first timestep (nittrc000) 413 412 !! 414 !! ** input : Namelist na trem413 !! ** input : Namelist nampisrem 415 414 !! 416 415 !!---------------------------------------------------------------------- 417 416 418 NAMELIST/na trem/ xremik, xremip, nitrif, xsirem, xlam1, oxymin417 NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xlam1, oxymin 419 418 420 419 REWIND( numnat ) ! read numnat 421 READ ( numnat, na trem )420 READ ( numnat, nampisrem ) 422 421 423 422 IF(lwp) THEN ! control print 424 423 WRITE(numout,*) ' ' 425 WRITE(numout,*) ' Namelist parameters for remineralization, na trem'424 WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem' 426 425 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 427 426 WRITE(numout,*) ' remineralisation rate of POC xremip =', xremip -
trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90
r1073 r1119 17 17 USE trc 18 18 USE oce_trc ! 19 USE trp_trc20 19 USE sms_pisces 21 20 USE lib_mpp … … 316 315 DO jj = 1,jpj 317 316 DO ji = 1,jpi 318 trc2d(ji,jj, 13) = znitrpot(ji,jj,1) * 1.e-7 * fse3t(ji,jj,1) * 1.e+3 / rfact2319 trc2d(ji,jj, 12) = zirondep(ji,jj,1) * 1.e+3 * rfact2r * fse3t(ji,jj,1)317 trc2d(ji,jj,jp_pcs0_2d + 11) = zirondep(ji,jj,1) * 1.e+3 * rfact2r * fse3t(ji,jj,1) 318 trc2d(ji,jj,jp_pcs0_2d + 12) = znitrpot(ji,jj,1) * 1.e-7 * fse3t(ji,jj,1) * 1.e+3 / rfact2 320 319 END DO 321 320 END DO … … 454 453 REAL(wp), DIMENSION(jpi,jpj,12) :: zdustmo 455 454 456 NAMELIST/na tsms/ bdustfer, briver, bndepo, bsedinput, sedfeinput, dustsolub455 NAMELIST/nampissed/ bdustfer, briver, bndepo, bsedinput, sedfeinput, dustsolub 457 456 458 457 459 458 REWIND( numnat ) ! read numnat 460 READ ( numnat, na tsms)459 READ ( numnat, nampissed ) 461 460 462 461 IF(lwp) THEN 463 462 WRITE(numout,*) ' ' 464 WRITE(numout,*) ' Namelist : na tsms'463 WRITE(numout,*) ' Namelist : nampissed ' 465 464 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~ ' 466 465 WRITE(numout,*) ' Dust input from the atmosphere bdustfer = ', bdustfer -
trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90
r1073 r1119 12 12 USE trc 13 13 USE oce_trc ! 14 USE trp_trc15 14 USE sms_pisces 16 15 USE prtctl_trc … … 279 278 # if defined key_trc_dia3d 280 279 zrfact2 = 1.e3 * rfact2r 281 trc2d(:,:, 5) = sinking (:,:,iksed+1) * zrfact2282 trc2d(:,:, 6) = sinking2(:,:,iksed+1) * zrfact2283 trc2d(:,:, 7) = sinkfer (:,:,iksed+1) * zrfact2284 trc2d(:,:, 9) = sinksil (:,:,iksed+1) * zrfact2285 trc2d(:,:, 10) = sinkcal (:,:,iksed+1) * zrfact2286 trc3d(:,:,:, 12) = sinking (:,:,:) * zrfact2287 trc3d(:,:,:, 13) = sinking2(:,:,:) * zrfact2288 trc3d(:,:,:, 14) = sinksil (:,:,:) * zrfact2289 trc3d(:,:,:, 15) = sinkcal (:,:,:) * zrfact2290 trc3d(:,:,:, 16) = znum3d (:,:,:)291 trc3d(:,:,:, 17) = wsbio3 (:,:,:)292 trc3d(:,:,:, 18) = wsbio4 (:,:,:)280 trc2d(:,:, jp_pcs0_2d + 4) = sinking (:,:,iksed+1) * zrfact2 281 trc2d(:,:, jp_pcs0_2d + 5) = sinking2(:,:,iksed+1) * zrfact2 282 trc2d(:,:, jp_pcs0_2d + 6) = sinkfer (:,:,iksed+1) * zrfact2 283 trc2d(:,:, jp_pcs0_2d + 8) = sinksil (:,:,iksed+1) * zrfact2 284 trc2d(:,:, jp_pcs0_2d + 9) = sinkcal (:,:,iksed+1) * zrfact2 285 trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zrfact2 286 trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zrfact2 287 trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:) * zrfact2 288 trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:) * zrfact2 289 trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d (:,:,:) 290 trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3 (:,:,:) 291 trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) 293 292 # endif 294 293 ! … … 308 307 !! Kriest parameterization only 309 308 !! 310 !! ** Method : Read the na tkriestnamelist and check the parameters309 !! ** Method : Read the nampiskrs namelist and check the parameters 311 310 !! called at the first timestep (nittrc000) 312 311 !! 313 !! ** input : Namelist na tkriest312 !! ** input : Namelist nampiskrs 314 313 !! 315 314 !!---------------------------------------------------------------------- … … 319 318 REAL(wp) :: zmin, zmax, zl, zr, xacc 320 319 321 NAMELIST/na tkrsize/ xkr_sfact, xkr_stick , &320 NAMELIST/nampiskrs/ xkr_sfact, xkr_stick , & 322 321 & xkr_nnano, xkr_ndiat, xkr_nmeso, xkr_naggr 323 322 324 323 !!---------------------------------------------------------------------- 325 ! ! natkriest : kriest parameters 326 ! ! ----------------------------- 327 REWIND( numnat ) ! read natkriest 328 READ ( numnat, natkrsize ) 324 REWIND( numnat ) ! read nampiskrs 325 READ ( numnat, nampiskrs ) 329 326 330 327 IF(lwp) THEN 331 328 WRITE(numout,*) 332 WRITE(numout,*) ' Namelist : na tkrsize'329 WRITE(numout,*) ' Namelist : nampiskrs' 333 330 WRITE(numout,*) ' Sinking factor xkr_sfact = ', xkr_sfact 334 331 WRITE(numout,*) ' Stickiness xkr_stick = ', xkr_stick … … 594 591 END DO 595 592 596 # if defined key_trc_dia 3d593 # if defined key_trc_diaadd 597 594 zrfact2 = 1.e3 * rfact2r 598 trc2d(:,:, 5) = sinking (:,:,iksed+1) * zrfact2599 trc2d(:,:, 6) = sinking2(:,:,iksed+1) * zrfact2600 trc2d(:,:, 7) = sinkfer (:,:,iksed+1) * zrfact2601 trc2d(:,:, 8) = sinkfer2(:,:,iksed+1) * zrfact2602 trc2d(:,:, 9) = sinksil (:,:,iksed+1) * zrfact2603 trc2d(:,:, 10) = sinkcal (:,:,iksed+1) * zrfact2595 trc2d(:,:, jp_pcs0_2d + 4) = sinking (:,:,iksed+1) * zrfact2 596 trc2d(:,:, jp_pcs0_2d + 5) = sinking2(:,:,iksed+1) * zrfact2 597 trc2d(:,:, jp_pcs0_2d + 6) = sinkfer (:,:,iksed+1) * zrfact2 598 trc2d(:,:, jp_pcs0_2d + 7) = sinkfer2(:,:,iksed+1) * zrfact2 599 trc2d(:,:, jp_pcs0_2d + 8) = sinksil (:,:,iksed+1) * zrfact2 600 trc2d(:,:, jp_pcs0_2d + 9) = sinkcal (:,:,iksed+1) * zrfact2 604 601 # endif 605 602 ! -
trunk/NEMO/TOP_SRC/PISCES/par_pisces.F90
r935 r1119 10 10 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 11 11 !!---------------------------------------------------------------------- 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER 12 USE par_lobster, ONLY : jp_lobster !: number of tracers in LOBSTER 13 USE par_lobster, ONLY : jp_lobster_2d !: number of 2D diag in LOBSTER 14 USE par_lobster, ONLY : jp_lobster_3d !: number of 3D diag in LOBSTER 15 USE par_lobster, ONLY : jp_lobster_trd !: number of biological diag in LOBSTER 13 16 14 17 IMPLICIT NONE 15 18 PUBLIC 16 19 17 INTEGER, PUBLIC, PARAMETER :: jp_l = jp_lobster !: cumulative number of already defined TRC 20 INTEGER, PUBLIC, PARAMETER :: jp_l = jp_lobster !: cumulative number of already defined TRC 21 INTEGER, PUBLIC, PARAMETER :: jp_l_2d = jp_lobster_2d !: 22 INTEGER, PUBLIC, PARAMETER :: jp_l_3d = jp_lobster_3d !: 23 INTEGER, PUBLIC, PARAMETER :: jp_l_trd = jp_lobster_trd !: 18 24 19 25 #if defined key_pisces && defined key_kriest … … 107 113 108 114 ! Starting/ending PISCES do-loop indices (N.B. no PISCES : jpl_pcs < jpf_pcs the do-loop are never done) 109 INTEGER, PUBLIC, PARAMETER :: jp_pcs0 = jp_l + 1 !: First index of CFC passive tracers 110 INTEGER, PUBLIC, PARAMETER :: jp_pcs1 = jp_l + jp_pisces !: Last index of CFC passive tracers 115 INTEGER, PUBLIC, PARAMETER :: jp_pcs0 = jp_l + 1 !: First index of PISCES tracers 116 INTEGER, PUBLIC, PARAMETER :: jp_pcs1 = jp_l + jp_pisces !: Last index of PISCES tracers 117 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_2d = jp_l_2d + 1 !: First index of 2D diag 118 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_2d = jp_l_2d + jp_pisces_2d !: Last index of 2D diag 119 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_3d = jp_l_3d + 1 !: First index of 3D diag 120 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_3d = jp_l_3d + jp_pisces_3d !: Last index of 3d diag 121 INTEGER, PUBLIC, PARAMETER :: jp_pcs0_trd = jp_l_trd + 1 !: First index of bio diag 122 INTEGER, PUBLIC, PARAMETER :: jp_pcs1_trd = jp_l_trd + jp_pisces_trd !: Last index of bio diag 123 111 124 112 125 !!====================================================================== -
trunk/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
r1073 r1119 20 20 USE trc 21 21 USE oce_trc ! ocean variables 22 USE trp_trc !23 22 USE p4zche 24 23 USE lib_mpp -
trunk/NEMO/TOP_SRC/PISCES/trclsm_pisces.F90
r1089 r1119 45 45 !! natkriest ("key_kriest") 46 46 !!---------------------------------------------------------------------- 47 CHARACTER (len=32) :: clname 47 CHARACTER (len=32) :: clname 48 INTEGER :: jn 48 49 !! 49 NAMELIST/natbio/ part, nrdttrc, wsbio, xkmort, ferat3, wsbio2 50 #if defined key_trc_diaadd 51 ! definition of additional diagnostic as a structure 52 TYPE DIAG 53 CHARACTER(len = 20) :: snamedia !: short name 54 CHARACTER(len = 80 ) :: lnamedia !: long name 55 CHARACTER(len = 20 ) :: unitdia !: unit 56 END TYPE DIAG 50 57 58 TYPE(DIAG) , DIMENSION(jp_pisces_2d) :: pisdia2d 59 TYPE(DIAG) , DIMENSION(jp_pisces_3d) :: pisdia3d 60 #endif 61 62 NAMELIST/nampisbio/ part, nrdttrc, wsbio, xkmort, ferat3, wsbio2 51 63 #if defined key_kriest 52 NAMELIST/na tkrpar/xkr_eta, xkr_zeta, xkr_mass_min, xkr_mass_max64 NAMELIST/nampiskrp/xkr_eta, xkr_zeta, xkr_mass_min, xkr_mass_max 53 65 #endif 66 #if defined key_trc_diaadd 67 NAMELIST/nampisdia/nwritedia, pisdia3d, pisdia2d ! additional diagnostics 68 #endif 69 54 70 !!---------------------------------------------------------------------- 55 71 … … 62 78 ! ! ---------------------- 63 79 clname ='namelist_pisces' 64 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', & 65 & 1, numout, .FALSE., 1 ) 80 CALL ctlopn( numnat, clname, 'OLD', 'FORMATTED', 'SEQUENTIAL', 1, numout, .FALSE., 1 ) 66 81 67 ! ! natbio : biological parameters 68 ! ! ------------------------------ 69 REWIND( numnat ) ! read natbio 70 READ ( numnat, natbio ) 82 REWIND( numnat ) 83 READ ( numnat, nampisbio ) 71 84 72 85 IF(lwp) THEN ! control print 73 WRITE(numout,*) ' Namelist : na tbio'86 WRITE(numout,*) ' Namelist : nampisbio' 74 87 WRITE(numout,*) ' part of calcite not dissolved in guts part =', part 75 88 WRITE(numout,*) ' frequence pour la biologie nrdttrc =', nrdttrc … … 82 95 #if defined key_kriest 83 96 84 ! ! na tkrpar: kriest parameters97 ! ! nampiskrp : kriest parameters 85 98 ! ! ----------------------------- 86 99 xkr_eta = 0.62 … … 90 103 91 104 REWIND( numnat ) ! read natkriest 92 READ ( numnat, na tkrpar)105 READ ( numnat, nampiskrp ) 93 106 94 107 IF(lwp) THEN 95 108 WRITE(numout,*) 96 WRITE(numout,*) ' Namelist : na tkrpar'109 WRITE(numout,*) ' Namelist : nampiskrp' 97 110 WRITE(numout,*) ' Sinking exponent xkr_eta = ', xkr_eta 98 111 WRITE(numout,*) ' N content exponent xkr_zeta = ', xkr_zeta … … 108 121 #endif 109 122 ! 123 #if defined key_trc_diaadd 124 125 ! Namelist namlobdia 126 ! ------------------- 127 nwritedia = 10 ! default values 128 129 DO jn = jp_pcs0_2d, jp_pcs1_2d 130 WRITE(ctrc2d(jn),'("2D_",I1)') jn ! short name 131 WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn ! long name 132 ctrc2u(jn) = ' ' ! units 133 END DO 134 ! ! 3D output arrays 135 DO jn = jp_pcs0_3d, jp_pcs1_3d 136 WRITE(ctrc3d(jn),'("3D_",I1)') jn ! short name 137 WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn ! long name 138 ctrc3u(jn) = ' ' ! units 139 END DO 140 141 REWIND( numnat ) ! read natrtd 142 READ ( numnat, nampisdia ) 143 144 DO jn = jp_pcs0_2d, jp_pcs1_2d 145 ctrc2d(jn) = pisdia2d(jn)%snamedia 146 ctrc2l(jn) = pisdia2d(jn)%lnamedia 147 ctrc2u(jn) = pisdia2d(jn)%unitdia 148 END DO 149 150 DO jn = jp_pcs0_3d, jp_pcs1_3d 151 ctrc3d(jn) = pisdia3d(jn)%snamedia 152 ctrc3l(jn) = pisdia3d(jn)%lnamedia 153 ctrc3u(jn) = pisdia3d(jn)%unitdia 154 END DO 155 156 IF(lwp) THEN ! control print 157 WRITE(numout,*) 158 WRITE(numout,*) ' Namelist : natadd' 159 WRITE(numout,*) ' frequency of outputs for additional arrays nwritedia = ', nwritedia 160 DO jn = jp_pcs0_3d, jp_pcs1_3d 161 WRITE(numout,*) ' 3d output field No : ',jn 162 WRITE(numout,*) ' short name : ', TRIM(ctrc3d(jn)) 163 WRITE(numout,*) ' long name : ', TRIM(ctrc3l(jn)) 164 WRITE(numout,*) ' unit : ', TRIM(ctrc3u(jn)) 165 WRITE(numout,*) ' ' 166 END DO 167 168 DO jn = jp_pcs0_2d, jp_pcs1_2d 169 WRITE(numout,*) ' 2d output field No : ',jn 170 WRITE(numout,*) ' short name : ', TRIM(ctrc2d(jn)) 171 WRITE(numout,*) ' long name : ', TRIM(ctrc2l(jn)) 172 WRITE(numout,*) ' unit : ', TRIM(ctrc2u(jn)) 173 WRITE(numout,*) ' ' 174 END DO 175 ENDIF 176 #endif 177 110 178 END SUBROUTINE trc_lsm_pisces 111 179 -
trunk/NEMO/TOP_SRC/PISCES/trcsms_pisces.F90
r1073 r1119 14 14 !!---------------------------------------------------------------------- 15 15 USE oce_trc ! 16 USE tr p_trc16 USE trc 17 17 USE sms_pisces 18 18 USE lbclnk -
trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90
r1046 r1119 13 13 !!---------------------------------------------------------------------- 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE trcbbl ! advective passive tracers in the BBL 17 17 USE prtctl_trc -
trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90
r941 r1119 13 13 !! * Modules used 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 17 17 USE trcbbl ! advective passive tracers in the BBL -
trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90
r941 r1119 13 13 !! * Modules used 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 17 17 USE trcbbl ! advective passive tracers in the BBL -
trunk/NEMO/TOP_SRC/TRP/trcadv_smolar.F90
r941 r1119 13 13 !!---------------------------------------------------------------------- 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 17 17 USE trcbbl ! advective passive tracers in the BBL 18 USE prtctl_trc ! Print control for debbuging 18 USE trctrp_lec ! passive tracers transport 19 USE prtctl_trc ! Print control for debbuging 19 20 20 21 IMPLICIT NONE -
trunk/NEMO/TOP_SRC/TRP/trcadv_tvd.F90
r941 r1119 14 14 !!---------------------------------------------------------------------- 15 15 USE oce_trc ! ocean dynamics and active tracers variables 16 USE tr c ! ocean passive tracers variables16 USE trp_trc ! ocean passive tracers variables 17 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 18 USE trcbbl ! advective passive tracers in the BBL … … 342 342 INTEGER :: ikm1 343 343 REAL(wp), DIMENSION (jpi,jpj,jpk) :: zbetup, zbetdo 344 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, z rtrn, z2dtt344 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, z2dtt 345 345 !!---------------------------------------------------------------------- 346 346 347 347 zbig = 1.e+40 348 zrtrn = 1.e-15349 348 zbetup(:,:,:) = 0.e0 ; zbetdo(:,:,:) = 0.e0 350 349 … … 410 409 ! up & down beta terms 411 410 zbt = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) / z2dtt 412 zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+ zrtrn) * zbt413 zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+ zrtrn) * zbt411 zbetup(ji,jj,jk) = ( zbetup(ji,jj,jk) - paft(ji,jj,jk) ) / (zpos+rtrn) * zbt 412 zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zbetdo(ji,jj,jk) ) / (zneg+rtrn) * zbt 414 413 END DO 415 414 END DO -
trunk/NEMO/TOP_SRC/TRP/trcbbc.F90
r941 r1119 13 13 !! * Modules used 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE prtctl_trc ! Print control for debbuging 17 17 -
trunk/NEMO/TOP_SRC/TRP/trcbbl.F90
r941 r1119 19 19 !! * Modules used 20 20 USE oce_trc ! ocean dynamics and active tracers variables 21 USE tr c ! ocean passive tracers variables21 USE trp_trc ! ocean passive tracers variables 22 22 USE trctrp_lec ! passive tracers transport 23 23 USE prtctl_trc ! Print control for debbuging -
trunk/NEMO/TOP_SRC/TRP/trcdmp.F90
r1076 r1119 16 16 !!---------------------------------------------------------------------- 17 17 USE oce_trc ! ocean dynamics and tracers variables 18 USE tr c ! ocean passive tracers variables18 USE trp_trc ! ocean passive tracers variables 19 19 USE trctrp_lec ! passive tracers transport 20 20 USE trcdta -
trunk/NEMO/TOP_SRC/TRP/trcldf_bilap.F90
r941 r1119 13 13 !! * Modules used 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 17 17 USE prtctl_trc ! Print control for debbuging -
trunk/NEMO/TOP_SRC/TRP/trcldf_bilapg.F90
r941 r1119 15 15 !! * Modules used 16 16 USE oce_trc ! ocean dynamics and tracers variables 17 USE tr c ! ocean passive tracers variables17 USE trp_trc ! ocean passive tracers variables 18 18 USE lbclnk ! ocean lateral boundary condition (or mpp link) 19 19 USE prtctl_trc ! Print control for debbuging -
trunk/NEMO/TOP_SRC/TRP/trcldf_iso.F90
r941 r1119 15 15 !! * Modules used 16 16 USE oce_trc ! ocean dynamics and tracers variables 17 USE tr c ! ocean passive tracers variables17 USE trp_trc ! ocean passive tracers variables 18 18 USE prtctl_trc ! Print control for debbuging 19 19 -
trunk/NEMO/TOP_SRC/TRP/trcldf_iso_zps.F90
r941 r1119 14 14 !! * Modules used 15 15 USE oce_trc ! ocean dynamics and active tracers variables 16 USE tr c ! ocean passive tracers variables16 USE trp_trc ! ocean passive tracers variables 17 17 USE prtctl_trc ! Print control for debbuging 18 18 -
trunk/NEMO/TOP_SRC/TRP/trcldf_lap.F90
r941 r1119 12 12 !!---------------------------------------------------------------------- 13 13 USE oce_trc ! ocean dynamics and active tracers variables 14 USE tr c ! ocean passive tracers variables14 USE trp_trc ! ocean passive tracers variables 15 15 USE prtctl_trc ! Print control for debbuging 16 16 -
trunk/NEMO/TOP_SRC/TRP/trcnxt.F90
r941 r1119 12 12 !! * Modules used 13 13 USE oce_trc ! ocean dynamics and tracers variables 14 USE tr c ! ocean passive tracers variables14 USE trp_trc ! ocean passive tracers variables 15 15 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 16 16 USE trctrp_lec ! pasive tracers transport -
trunk/NEMO/TOP_SRC/TRP/trcrad.F90
r1003 r1119 14 14 !!---------------------------------------------------------------------- 15 15 USE oce_trc ! ocean dynamics and tracers variables 16 USE tr c ! ocean passive tracers variables16 USE trp_trc ! ocean passive tracers variables 17 17 USE lib_mpp 18 18 USE prtctl_trc ! Print control for debbuging -
trunk/NEMO/TOP_SRC/TRP/trcsbc.F90
r941 r1119 12 12 !! * Modules used 13 13 USE oce_trc ! ocean dynamics and active tracers variables 14 USE tr c ! ocean passive tracers variables14 USE trp_trc ! ocean passive tracers variables 15 15 USE prtctl_trc ! Print control for debbuging 16 16 -
trunk/NEMO/TOP_SRC/TRP/trcstp.F90
r1047 r1119 10 10 !! * Modules used 11 11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE tr c ! ocean passive tracers variables12 USE trp_trc 13 13 USE trctrp ! passive tracers transport 14 14 USE trcsms ! passive tracers sources and sinks -
trunk/NEMO/TOP_SRC/TRP/trctrp.F90
r941 r1119 13 13 !!---------------------------------------------------------------------- 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE trctrp_lec ! passive tracers transport parameters 17 17 USE prtctl_trc ! Print control for debbuging -
trunk/NEMO/TOP_SRC/TRP/trctrp_ctl.F90
r941 r1119 17 17 !!---------------------------------------------------------------------- 18 18 USE oce_trc ! ocean dynamics and active tracers variables 19 USE tr c ! ocean passive tracers variables19 USE trp_trc ! ocean passive tracers variables 20 20 USE trctrp_lec ! passive tracers transport 21 21 -
trunk/NEMO/TOP_SRC/TRP/trctrp_lec.F90
r941 r1119 14 14 !!---------------------------------------------------------------------- 15 15 USE oce_trc ! ocean dynamics and active tracers variables 16 USE tr c ! ocean passive tracers variables16 USE trp_trc ! ocean passive tracers variables 17 17 18 18 IMPLICIT NONE … … 68 68 REAL(wp) , PUBLIC :: hdmptr = 800. !: depth of transition between sdmp and bdmp (meters) 69 69 #endif 70 ! !!: ** SMOLAR advection scheme 71 REAL(wp) , PUBLIC :: rsc = 1. !: tuning coefficient for anti-diffusion 72 INTEGER , PUBLIC :: ncortrc = 1 !: number of corrective phases 73 LOGICAL , PUBLIC :: crosster = .FALSE. !: computes crossterms (T) or not (F) 70 74 !!---------------------------------------------------------------------- 71 75 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) … … 82 86 !! ** Purpose : Read Namelist for tracer transport option 83 87 !!---------------------------------------------------------------------- 84 NAMELIST/namtrcadv/ ln_trcadv_cen2 , ln_trcadv_tvd, & 85 & ln_trcadv_muscl, ln_trcadv_muscl2, ln_trcadv_smolar 88 NAMELIST/namtopadv/ ln_trcadv_cen2 , ln_trcadv_tvd, & 89 & ln_trcadv_muscl, ln_trcadv_muscl2, ln_trcadv_smolar, & 90 & rsc, ncortrc, crosster 86 91 #if defined key_trcbbl_dif || defined key_trcbbl_adv 87 NAMELIST/namt rcbbl/ atrcbbl88 #endif 89 NAMELIST/namt rcldf/ ln_trcldf_diff , ln_trcldf_lap , ln_trcldf_bilap, &92 NAMELIST/namtopbbl/ atrcbbl 93 #endif 94 NAMELIST/namtopldf/ ln_trcldf_diff , ln_trcldf_lap , ln_trcldf_bilap, & 90 95 & ln_trcldf_level, ln_trcldf_hor, ln_trcldf_iso, & 91 96 & ahtrc0, ahtrb0, aeivtr0, trcrat 92 NAMELIST/namt rczdf/ ln_trczdf_exp, n_trczdf_exp97 NAMELIST/namtopzdf/ ln_trczdf_exp, n_trczdf_exp 93 98 #if defined key_trcdmp 94 NAMELIST/namt rcdmp/ ndmptr, ndmpftr, nmldmptr, sdmptr, bdmptr, hdmptr99 NAMELIST/namtopdmp/ ndmptr, ndmpftr, nmldmptr, sdmptr, bdmptr, hdmptr 95 100 #endif 96 101 !!---------------------------------------------------------------------- … … 101 106 102 107 ! ! tracer advection scheme 103 REWIND( numnat ) ! ! Read Namelist namtrcadv 104 READ ( numnat, namtrcadv ) 105 106 IF(lwp) THEN ! ! Control print 107 WRITE(numout,*) 108 WRITE(numout,*) ' Namelist namtrcadv : chose a advection scheme for tracers' 109 WRITE(numout,*) ' 2nd order advection scheme ln_trcadv_cen2 = ', ln_trcadv_cen2 110 WRITE(numout,*) ' TVD advection scheme ln_trcadv_tvd = ', ln_trcadv_tvd 111 WRITE(numout,*) ' MUSCL advection scheme ln_trcadv_muscl = ', ln_trcadv_muscl 112 WRITE(numout,*) ' MUSCL2 advection scheme ln_trcadv_muscl2 = ', ln_trcadv_muscl2 113 WRITE(numout,*) ' SMOLARKIEWICZ advection scheme ln_trcadv_smolar = ', ln_trcadv_smolar 108 REWIND( numnat ) ! ! Read Namelist namtopadv 109 READ ( numnat, namtopadv ) 110 111 IF(lwp) THEN ! ! Control print 112 WRITE(numout,*) 113 WRITE(numout,*) ' Namelist namtopadv : chose a advection scheme for tracers' 114 WRITE(numout,*) ' 2nd order advection scheme ln_trcadv_cen2 = ', ln_trcadv_cen2 115 WRITE(numout,*) ' TVD advection scheme ln_trcadv_tvd = ', ln_trcadv_tvd 116 WRITE(numout,*) ' MUSCL advection scheme ln_trcadv_muscl = ', ln_trcadv_muscl 117 WRITE(numout,*) ' MUSCL2 advection scheme ln_trcadv_muscl2 = ', ln_trcadv_muscl2 118 WRITE(numout,*) ' SMOLARKIEWICZ advection scheme ln_trcadv_smolar = ', ln_trcadv_smolar 119 IF( ln_trcadv_smolar ) THEN 120 WRITE(numout,*) ' SMOLARKIEWICZ : tuning coefficient rsc = ', rsc 121 WRITE(numout,*) ' SMOLARKIEWICZ : number of corrective phase ncortrc = ', ncortrc 122 WRITE(numout,*) ' SMOLARKIEWICZ : computes or not crossterms crosster = ', crosster 123 ENDIF 114 124 ENDIF 115 125 116 126 #if defined key_trcbbl_dif 117 127 ! ! Bottom boundary layer 118 REWIND( numnat ) ! ! Read Namelist namt rcbbl119 READ ( numnat, namt rcbbl )120 121 IF(lwp) THEN ! ! Control print 122 WRITE(numout,*) 123 WRITE(numout,*) ' Namelist namt rcbbl : set Diffusive Bottom Boundary Layer parameters'128 REWIND( numnat ) ! ! Read Namelist namtopbbl 129 READ ( numnat, namtopbbl ) 130 131 IF(lwp) THEN ! ! Control print 132 WRITE(numout,*) 133 WRITE(numout,*) ' Namelist namtopbbl : set Diffusive Bottom Boundary Layer parameters' 124 134 WRITE(numout,*) ' bottom boundary layer coef. atrcbbl = ', atrcbbl 125 135 # if defined key_trcbbl_adv … … 130 140 131 141 ! ! Lateral physics on tracers 132 REWIND( numnat ) ! ! Read Namelist namt rcldf133 READ ( numnat, namt rcldf )134 135 IF(lwp) THEN ! ! Control print 136 WRITE(numout,*) 137 WRITE(numout,*) ' Namelist namt rcldf : set lateral mixing parameters (type, direction, coefficients)'142 REWIND( numnat ) ! ! Read Namelist namtopldf 143 READ ( numnat, namtopldf ) 144 145 IF(lwp) THEN ! ! Control print 146 WRITE(numout,*) 147 WRITE(numout,*) ' Namelist namtopldf : set lateral mixing parameters (type, direction, coefficients)' 138 148 WRITE(numout,*) ' perform lateral diffusion or not ln_trcldf_diff = ', ln_trcldf_diff 139 149 WRITE(numout,*) ' laplacian operator ln_trcldf_lap = ', ln_trcldf_lap … … 149 159 150 160 ! ! Vertical mixing 151 REWIND( numnat ) ! ! Read namt rczdf namelist152 READ ( numnat, namt rczdf )153 154 IF(lwp) THEN ! ! Control print 155 WRITE(numout,*) 156 WRITE(numout,*) ' Namelist namt rczdf : set vertical diffusion parameters'161 REWIND( numnat ) ! ! Read namtopzdf namelist 162 READ ( numnat, namtopzdf ) 163 164 IF(lwp) THEN ! ! Control print 165 WRITE(numout,*) 166 WRITE(numout,*) ' Namelist namtopzdf : set vertical diffusion parameters' 157 167 WRITE(numout,*) ' time splitting / backward scheme ln_trczdf_exp = ', ln_trczdf_exp 158 168 WRITE(numout,*) ' number of time step n_trczdf_exp = ', n_trczdf_exp … … 162 172 ! ! passive tracres damping term 163 173 REWIND( numnat ) ! ! Read Namelist namtdp 164 READ ( numnat, namt rcdmp )174 READ ( numnat, namtopdmp ) 165 175 IF( lzoom ) nmldmptr = 0 ! restoring to climatology at closed north or south boundaries 166 176 167 177 IF(lwp) THEN ! ! Control print 168 178 WRITE(numout,*) 169 WRITE(numout,*) ' Namelist namt rcdmp : set damping parameter'179 WRITE(numout,*) ' Namelist namtopdmp : set damping parameter' 170 180 WRITE(numout,*) ' tracers damping option ndmptr = ', ndmptr 171 181 WRITE(numout,*) ' create a damping.coeff file ndmpftr = ', ndmpftr -
trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90
r941 r1119 14 14 !! * Modules used 15 15 USE oce_trc ! ocean dynamics and active tracers variables 16 USE tr c ! ocean passive tracers variables16 USE trp_trc ! ocean passive tracers variables 17 17 USE trctrp_lec ! passive tracers transport 18 18 USE prtctl_trc ! Print control for debbuging -
trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90
r941 r1119 13 13 !! * Modules used 14 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE tr c ! ocean passive tracers variables15 USE trp_trc ! ocean passive tracers variables 16 16 USE trctrp_lec ! passive tracers transport 17 17 USE prtctl_trc -
trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90
r941 r1119 15 15 !! * Modules used 16 16 USE oce_trc ! ocean dynamics and tracers variables 17 USE tr c ! ocean passive tracers variables17 USE trp_trc ! ocean passive tracers variables 18 18 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 19 19 USE trctrp_lec ! passive tracers transport -
trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90
r941 r1119 18 18 !! * Modules used 19 19 USE oce_trc ! ocean dynamics and tracers variables 20 USE tr c ! ocean passive tracers variables20 USE trp_trc ! ocean passive tracers variables 21 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 22 22 USE trctrp_lec ! passive tracers transport -
trunk/NEMO/TOP_SRC/TRP/zpshde_trc.F90
r941 r1119 15 15 !! * Modules used 16 16 USE oce_trc ! ocean dynamics and tracers variables 17 USE tr c ! ocean passive tracers variables17 USE trp_trc ! ocean passive tracers variables 18 18 USE lbclnk ! lateral boundary conditions (or mpp link) 19 19 -
trunk/NEMO/TOP_SRC/oce_trc.F90
r1034 r1119 202 202 !* vertical diffusion * 203 203 USE zdf_oce , ONLY : avt => avt !: vert. diffusivity coef. at w-point for temp 204 USE zdf_oce , ONLY : avt0 => avt0 !: vertical eddy diffusivity for tracers (m2/s)205 USE zdf_oce , ONLY : ln_zdfnpc => ln_zdfnpc !: convection: non-penetrative convection flag206 204 # if defined key_zdfddm 207 205 USE zdfddm , ONLY : avs => avs !: salinity vertical diffusivity coeff. at w-point -
trunk/NEMO/TOP_SRC/par_trc.F90
r1077 r1119 30 30 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_my_trc_3d 31 31 ! ! total number of sms diagnostic arrays 32 INTEGER, PUBLIC, PARAMETER :: jpdia trd= jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd32 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd 33 33 34 34 ! 1D configuration ("key_c1d") … … 55 55 #endif 56 56 57 REAL(wp), PUBLIC :: rtrn = 1.e-15 !: truncation value 57 58 !!====================================================================== 58 59 END MODULE par_trc -
trunk/NEMO/TOP_SRC/trc.F90
r1077 r1119 46 46 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk,jptra) :: trb !: traceur concentration for before time step 47 47 48 49 !! numerical parameter (NAMELIST)50 !! --------------------------------------------------51 REAL(wp), PUBLIC :: rsc !: tuning coefficient for anti-diffusion52 REAL(wp), PUBLIC :: rtrn !: value for truncation53 54 !! namelist parameters55 !! --------------------------------------------------56 INTEGER , PUBLIC :: ncortrc !: number of corrective phases57 INTEGER , PUBLIC :: ndttrc !: frequency of step on passive tracers58 INTEGER , PUBLIC :: nittrc000 !: first time step of passive tracers model59 LOGICAL , PUBLIC :: crosster !: logical if true computes crossterms60 61 62 !! isopycnal scheme for passive tracers63 !! ------------------------------------64 REAL(wp), PUBLIC :: ahtrb0 !: background diffusivity coefficient for passive tracer (m2/s)65 REAL(wp), PUBLIC :: trcrat !: ratio between passive and active tracer coeff for diffusion66 REAL(wp), PUBLIC :: ahtrc0 !: horizontal eddy diffusivity for passive tracers (m2/s)67 REAL(wp), PUBLIC :: aeivtr0 !: eddy induced velocity coefficient (m2/s)68 69 48 70 49 !! passive tracers restart (input and output) 71 50 !! ------------------------------------------ 51 INTEGER , PUBLIC :: ndttrc !: frequency of step on passive tracers 52 INTEGER , PUBLIC :: nittrc000 !: first time step of passive tracers model 72 53 LOGICAL , PUBLIC :: lrsttr !: boolean term for restart i/o for passive tracers (namelist) 73 54 INTEGER , PUBLIC :: nutwrs !: output FILE for passive tracers restart 74 55 INTEGER , PUBLIC :: nutrst !: logical unit for restart FILE for passive tracers 75 56 INTEGER , PUBLIC :: nrsttr !: control of the time step ( 0 or 1 ) for pass. tr. 76 77 78 !! interpolated gradient79 !!--------------------------------------------------80 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jptra) :: gtru !: horizontal gradient at u-points at bottom ocean level81 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jptra) :: gtrv !: horizontal gradient at v-points at bottom ocean level82 83 84 # if defined key_trcldf_eiv && defined key_diaeiv85 !! The three component of the eddy induced velocity86 !! --------------------------------------------------87 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) :: u_trc_eiv !: u-eiv (m/s)88 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) :: v_trc_eiv !: v-eiv (m/s)89 REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk) :: w_trc_eiv !: w-eiv (m/s)90 # endif91 57 92 58 … … 114 80 INTEGER , PUBLIC :: nwritedia !: frequency of additional arrays outputs(namelist) 115 81 # endif 116 117 # if defined key_trc_diatrd118 119 !! non conservative trends (biological, ...)120 !! --------------------------------------------------121 LOGICAL, PUBLIC, DIMENSION (jptra) :: luttrd !: large trends diagnostic to write or not (namelist)122 123 !! Advection-diffusion trends124 !! --------------------------------------------------125 REAL(wp), PUBLIC, DIMENSION(:,:,:,:,:), ALLOCATABLE :: trtrd !: trends of the tracer equations126 127 INTEGER, PUBLIC, DIMENSION(jptra) :: ikeep ! indice of tracer for which dyn trends are stored128 INTEGER, PUBLIC :: nkeep ! number of tracers for which dyn trends are stored129 ! ! (used to allocate trtrd buffer)130 131 !! netcdf files and index common132 !! --------------------------------------------------133 INTEGER , PUBLIC :: nwritetrd !: frequency of additional arrays outputs(namelist)134 135 # endif136 82 137 83 # if defined key_trc_diabio -
trunk/NEMO/TOP_SRC/trcctl.F90
r1077 r1119 65 65 ENDIF 66 66 67 ! Don't USE non penetrative convective mixing option68 ! it's not implemented for passive tracer69 IF( ln_zdfnpc ) THEN70 IF(lwp) WRITE (numout,*) ' ===>>>> : w a r n i n g '71 IF(lwp) WRITE (numout,*) ' ======= ============= '72 IF(lwp) WRITE (numout,*) ' STOP, this sheme is not implemented'73 IF(lwp) WRITE (numout,*) ' in passive tracer model:'74 IF(lwp) WRITE (numout,*) ' non penetrative convect. mixing scheme'75 istop = istop + 176 ENDIF77 78 67 ! transport scheme option 79 68 CALL trc_trp_ctl -
trunk/NEMO/TOP_SRC/trcdia.F90
r1077 r1119 23 23 USE oce_trc 24 24 USE trc 25 USE trp_trc 25 26 USE dianam ! build name of file (routine) 26 27 USE in_out_manager ! I/O manager … … 77 78 78 79 CALL trcdit_wr( kt, kindic ) ! outputs for tracer concentration 79 80 81 80 CALL trcdid_wr( kt, kindic ) ! outputs for dynamical trends 82 83 84 81 CALL trcdii_wr( kt, kindic ) ! outputs for additional arrays 85 86 87 82 CALL trcdib_wr( kt, kindic ) ! outputs for biological trends 88 83 … … 437 432 IF( jl == jpdiatrc ) WRITE (cltra,'("SBC_",a)') ctrcnm(jn) ! surface boundary conditions 438 433 ! 439 CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ikeep(jn),jl) & 440 & ,ndimt50, ndext50) 434 CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ikeep(jn),jl),ndimt50, ndext50) 441 435 END DO 442 436 END IF … … 562 556 ! more 2D horizontal arrays 563 557 DO jn = 1, jpdia2d 564 cltra =ctrc2d(jn) ! short title for 2D diagnostic565 cltral =ctrc2l(jn) ! long title for 2D diagnostic566 cltrau =ctrc2u(jn) ! UNIT for 2D diagnostic558 cltra = ctrc2d(jn) ! short title for 2D diagnostic 559 cltral = ctrc2l(jn) ! long title for 2D diagnostic 560 cltrau = ctrc2u(jn) ! UNIT for 2D diagnostic 567 561 CALL histdef( nitd, cltra, cltral, cltrau, jpi, jpj, nhoritd, & 568 562 & 1, 1, 1, -99, 32, clop, zsto, zout ) … … 591 585 DO jn = 1, jpdia3d 592 586 cltra = ctrc3d(jn) ! short title for 3D diagnostic 593 CALL histwrite( nitd, cltra, it, trc3d(:,:,:,jn), ndimt50 & 594 & ,ndext50) 587 CALL histwrite( nitd, cltra, it, trc3d(:,:,:,jn), ndimt50 ,ndext50) 595 588 END DO 596 589 … … 598 591 DO jn = 1, jpdia2d 599 592 cltra = ctrc2d(jn) ! short title for 2D diagnostic 600 CALL histwrite(nitd, cltra, it, trc2d(:,:,jn), ndimt51 & 601 & ,ndext51) 593 CALL histwrite(nitd, cltra, it, trc2d(:,:,jn), ndimt51 ,ndext51) 602 594 END DO 603 595 -
trunk/NEMO/TOP_SRC/trclec.F90
r1089 r1119 20 20 USE oce_trc 21 21 USE trc 22 USE trp_trc 22 23 USE trctrp_lec 23 24 USE trclsm_lobster ! LOBSTER namelist … … 66 67 TYPE(PTRACER) , DIMENSION(jptra) :: tracer 67 68 68 #if defined key_trc_diaadd 69 ! definition of additional diagnostic as a structure 70 TYPE DIAG 71 CHARACTER(len = 20) :: snamedia !: short name 72 CHARACTER(len = 80 ) :: lnamedia !: long name 73 CHARACTER(len = 20 ) :: unitdia !: unit 74 END TYPE DIAG 75 76 TYPE(DIAG) , DIMENSION(jpdia2d) :: diag2d 77 TYPE(DIAG) , DIMENSION(jpdia3d) :: diag3d 69 !! 70 NAMELIST/namtoptrc/ ndttrc, nwritetrc, lrsttr, nrsttr, tracer 71 #if defined key_trc_diatrd 72 NAMELIST/namtoptrd/ luttrd, nwritetrd ! dynamical trends 78 73 #endif 79 74 80 !!81 NAMELIST/nattrc/ nwritetrc, lrsttr, nrsttr, tracer82 NAMELIST/natnum/ rsc, rtrn, ncortrc, ndttrc, crosster83 #if defined key_trc_diatrd84 NAMELIST/natrtd/ luttrd, nwritetrd ! dynamical trends85 #endif86 #if defined key_trc_diaadd87 NAMELIST/natdia/nwritedia, diag3d, diag2d ! additional diagnostics88 #endif89 75 !!--------------------------------------------------------------------- 90 76 … … 99 85 ! Namelist nattrc (files) 100 86 ! ---------------------------------------------- 101 nwritetrc = 10 ! default values 87 ndttrc = 1 ! default values 88 nwritetrc = 10 102 89 lrsttr = .FALSE. 103 90 nrsttr = 0 … … 111 98 112 99 REWIND( numnat ) ! read nattrc 113 READ ( numnat, nattrc ) 100 READ ( numnat, namtoptrc ) 101 102 !!Chris computes the first time step of tracer model 103 nittrc000 = nit000 + ndttrc - 1 114 104 115 105 DO jn = 1, jptra … … 122 112 123 113 124 125 114 IF(lwp) THEN ! control print 126 115 WRITE(numout,*) 127 WRITE(numout,*) ' Namelist : nattrc' 116 WRITE(numout,*) ' Namelist : namtoptrc' 117 WRITE(numout,*) ' time step freq. for pass. trac. ndttrc = ', ndttrc 118 WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', nittrc000 128 119 WRITE(numout,*) ' frequency of outputs for passive tracers nwritetrc = ', nwritetrc 129 WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ', lrsttr130 WRITE(numout,*) ' control of time step for p. tr. nrsttr = ', nrsttr120 WRITE(numout,*) ' restart LOGICAL for passive tr. lrsttr = ', lrsttr 121 WRITE(numout,*) ' control of time step for p. tr. nrsttr = ', nrsttr 131 122 DO jn = 1, jptra 132 123 WRITE(numout,*) ' tracer nb : ', jn … … 150 141 151 142 REWIND( numnat ) ! read natrtd 152 READ ( numnat, na trtd )143 READ ( numnat, namtoptrd ) 153 144 154 145 nkeep=0 … … 167 158 IF(lwp) THEN ! control print 168 159 WRITE(numout,*) 169 WRITE(numout,*) ' Namelist : na trtd'160 WRITE(numout,*) ' Namelist : namtoptrd' 170 161 WRITE(numout,*) ' frequency of outputs for dynamical trends nwritetrd = ', nwritetrd 171 162 DO jn = 1, jptra … … 177 168 #endif 178 169 179 #if defined key_trc_diaadd180 181 ! Namelist natrtd (transport trends)182 ! ----------------------------------------------183 nwritedia = 10 ! default values184 ! ! 2D output arrays185 DO jn = 1, jpdia2d186 WRITE(ctrc2d(jn),'("2D_",I1)') jn ! short name187 WRITE(ctrc2l(jn),'("2D DIAGNOSTIC NUMBER ",I2)') jn ! long name188 ctrc2u(jn) = ' ' ! units189 END DO190 ! ! 3D output arrays191 DO jn = 1, jpdia3d192 WRITE(ctrc3d(jn),'("3D_",I1)') jn ! short name193 WRITE(ctrc3l(jn),'("3D DIAGNOSTIC NUMBER ",I2)') jn ! long name194 ctrc3u(jn) = ' ' ! units195 END DO196 197 REWIND( numnat ) ! read natrtd198 READ ( numnat, natdia )199 200 DO jn = 1, jpdia2d201 ctrc2d(jn) = diag2d(jn)%snamedia202 ctrc2l(jn) = diag2d(jn)%lnamedia203 ctrc2u(jn) = diag2d(jn)%unitdia204 END DO205 206 DO jn = 1, jpdia3d207 ctrc3d(jn) = diag3d(jn)%snamedia208 ctrc3l(jn) = diag3d(jn)%lnamedia209 ctrc3u(jn) = diag3d(jn)%unitdia210 END DO211 212 IF(lwp) THEN ! control print213 WRITE(numout,*)214 WRITE(numout,*) ' Namelist : natadd'215 WRITE(numout,*) ' frequency of outputs for additional arrays nwritedia = ', nwritedia216 DO jn = 1, jpdia3d217 WRITE(numout,*) ' 3d output field No : ',jn218 WRITE(numout,*) ' short name : ', TRIM(ctrc3d(jn))219 WRITE(numout,*) ' long name : ', TRIM(ctrc3l(jn))220 WRITE(numout,*) ' unit : ', TRIM(ctrc3u(jn))221 WRITE(numout,*) ' '222 END DO223 224 DO jn = 1, jpdia2d225 WRITE(numout,*) ' 2d output field No : ',jn226 WRITE(numout,*) ' short name : ', TRIM(ctrc2d(jn))227 WRITE(numout,*) ' long name : ', TRIM(ctrc2l(jn))228 WRITE(numout,*) ' unit : ', TRIM(ctrc2u(jn))229 WRITE(numout,*) ' '230 END DO231 ENDIF232 #endif233 234 !! Namelist natnum :235 !! -----------------236 rsc = 1. ! default values237 rtrn = 1.e-15238 ncortrc = 1239 ndttrc = 4240 crosster = .FALSE.241 242 REWIND( numnat ) ! read natnum243 READ ( numnat, natnum )244 245 !!Chris computes the first time step of tracer model246 nittrc000 = nit000 + ndttrc - 1247 248 IF(lwp) THEN ! control print249 WRITE(numout,*)250 WRITE(numout,*) ' Namelist : natnum'251 WRITE(numout,*)252 WRITE(numout,*) ' tuning coefficient rsc = ', rsc253 WRITE(numout,*) ' truncation value rtrn = ', rtrn254 WRITE(numout,*) ' number of corrective phase ncortrc = ', ncortrc255 WRITE(numout,*) ' time step freq. for pass. trac. ndttrc = ', ndttrc256 WRITE(numout,*) ' 1st time step for pass. trac. nittrc000 = ', nittrc000257 WRITE(numout,*) ' computes or not crossterms crosster = ', crosster258 ENDIF259 170 260 171 ! namelist of transport -
trunk/NEMO/TOP_SRC/trcrst.F90
r1100 r1119 33 33 INTEGER, PUBLIC :: numrtr, numrtw !: logical unit for trc restart (read and write) 34 34 35 #if defined key_pisces36 REAL(wp) :: &37 alkmean = 2426. , & ! mean value of alkalinity ( Glodap ; for Goyet 2391. )38 po4mean = 2.165 , & ! mean value of phosphates39 no3mean = 30.90 , & ! mean value of nitrate40 siomean = 91.51 ! mean value of silicate41 #endif42 35 43 36 !! * Substitutions … … 98 91 INTEGER :: iarak0 99 92 REAL(wp) :: zkt, zarak0 100 # if defined key_pisces101 REAL(wp) :: ztrasum102 INTEGER :: ji, jj, jk103 REAL(wp) :: caralk, bicarb, co3104 # endif105 93 !!---------------------------------------------------------------------- 106 94 … … 172 160 CALL iom_get( numrtr, jpdom_autoglo, 'Silicalim', xksi(:,:) ) 173 161 CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax', xksimax(:,:) ) 162 CALL trc_rst_ini ! Initialisation of some variables 174 163 #endif 175 164 … … 181 170 #endif 182 171 183 #if defined key_pisces184 ! ! --------------------------- !185 IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN ! ORCA condiguration (not 1D) !186 ! ! --------------------------- !187 ! set total alkalinity, phosphate, NO3 & silicate188 ! total alkalinity189 ! -----------------------------------------------190 ztrasum = 0.e0191 DO jk = 1, jpk192 DO jj = 1, jpj193 DO ji = 1, jpi194 ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) &195 # if defined key_off_degrad196 & * facvol(ji,jj,jk) &197 # endif198 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)199 END DO200 END DO201 END DO202 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain203 204 205 ztrasum = ztrasum / areatot * 1.e6206 IF(lwp) WRITE(numout,*) 'TALK moyen ', ztrasum207 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum208 209 ! phosphate210 ! ---------211 ztrasum = 0.e0212 DO jk = 1, jpk213 DO jj = 1, jpj214 DO ji = 1, jpi215 ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) &216 # if defined key_off_degrad217 & * facvol(ji,jj,jk) &218 # endif219 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)220 END DO221 END DO222 END DO223 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain224 225 ztrasum = ztrasum / areatot * 1.e6 / 122.226 IF(lwp) WRITE(numout,*) 'PO4 moyen ', ztrasum227 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum228 229 ! NO3230 ! ---231 ztrasum = 0.e0232 DO jk = 1, jpk233 DO jj = 1, jpj234 DO ji = 1, jpi235 ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) &236 # if defined key_off_degrad237 & * facvol(ji,jj,jk) &238 # endif239 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)240 END DO241 END DO242 END DO243 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain244 245 ztrasum = ztrasum / areatot * 1.e6 / 7.6246 IF(lwp) WRITE(numout,*) 'NO3 moyen ', ztrasum247 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum248 249 ! Silicate250 ! --------251 ztrasum = 0.e0252 DO jk = 1, jpk253 DO jj = 1, jpj254 DO ji = 1, jpi255 ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) &256 # if defined key_off_degrad257 & * facvol(ji,jj,jk) &258 # endif259 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)260 END DO261 END DO262 END DO263 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain264 265 IF(lwp) WRITE(numout,*) 'SiO3 moyen ', ztrasum / areatot * 1.e6266 ztrasum = ztrasum / areatot * 1.e6267 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum )268 !269 ENDIF270 271 !#if defined key_kriest272 ! !! Initialize number of particles from a standart restart file273 ! !! The name of big organic particles jpgoc has been only change274 ! !! and replace by jpnum but the values here are concentration275 ! trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum)276 ! trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp )277 !#endif278 !! Set hi (???) from total alcalinity, borat (???), akb3 (???) and ak23 (???)279 !! ---------------------------------------------------------------------280 DO jk = 1, jpk281 DO jj = 1, jpj282 DO ji = 1,jpi283 caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.e-8 / ( rtrn + akb3(ji,jj,jk) ) )284 co3 = ( caralk - trn(ji,jj,jk,jpdic) ) * tmask(ji,jj,jk) &285 & + 0.5e-3 * ( 1.- tmask(ji,jj,jk) )286 bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk287 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) &288 & + 1.0e-9 * ( 1.- tmask(ji,jj,jk) )289 END DO290 END DO291 END DO292 #endif293 294 172 CALL iom_close( numrtr ) 295 173 ! … … 306 184 !! 307 185 INTEGER :: ji, jj, jk, jn 308 REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot309 REAL(wp) :: zder310 186 !!---------------------------------------------------------------------- 311 187 … … 352 228 353 229 IF( kt == nitrst ) THEN 354 IF(lwp) WRITE(numout,*) '----TRACER STAT----' 355 356 zdiag_tot = 0.e0 357 DO jn = 1, jptra 358 zdiag_var = 0.e0 359 zdiag_varmin = 0.e0 360 zdiag_varmax = 0.e0 361 DO ji = 1, jpi 362 DO jj = 1, jpj 363 DO jk = 1,jpk 364 zdiag_var = zdiag_var + trn(ji,jj,jk,jn) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 365 #if defined key_off_degrad 366 & * facvol(ji,jj,jk) & 367 #endif 368 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 369 END DO 370 END DO 371 END DO 372 373 zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 374 zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 375 IF( lk_mpp ) THEN 376 CALL mpp_min( zdiag_varmin ) ! min over the global domain 377 CALL mpp_max( zdiag_varmax ) ! max over the global domain 378 CALL mpp_sum( zdiag_var ) ! sum over the global domain 379 END IF 380 zdiag_tot = zdiag_tot + zdiag_var 381 zdiag_var = zdiag_var / areatot 382 IF(lwp) WRITE(numout,*) ' MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var, & 383 & ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax 384 END DO 385 386 zder = ( ( zdiag_tot - trai ) / ( trai + 1.e-12 ) ) * 100._wp 387 IF(lwp) WRITE(numout,*) ' Integral of all tracers over the full domain = ', zdiag_tot 388 IF(lwp) WRITE(numout,*) ' Drift of the sum of all tracers =', zder, ' %' 389 230 CALL trc_rst_stat ! statistics 390 231 CALL iom_close( numrtw ) ! close the restart file (only at last time step) 391 232 lrst_trc = .FALSE. … … 393 234 ! 394 235 END SUBROUTINE trc_rst_wri 236 237 # if defined key_pisces 238 239 SUBROUTINE trc_rst_ini 240 !!---------------------------------------------------------------------- 241 !! *** trc_rst_ini *** 242 !! 243 !! ** purpose : Initialisation of some variables ( hi 244 !!---------------------------------------------------------------------- 245 INTEGER :: ji, jj, jk, jn 246 REAL(wp) :: & 247 alkmean = 2426. , & ! mean value of alkalinity ( Glodap ; for Goyet 2391. ) 248 po4mean = 2.165 , & ! mean value of phosphates 249 no3mean = 30.90 , & ! mean value of nitrate 250 siomean = 91.51 ! mean value of silicate 251 252 REAL(wp) :: ztrasum 253 REAL(wp) :: caralk, bicarb, co3 254 255 IF(lwp) WRITE(numout,*) 256 257 IF( cp_cfg == "orca" .AND. .NOT. lk_trc_c1d ) THEN ! ORCA condiguration (not 1D) ! 258 ! ! --------------------------- ! 259 ! set total alkalinity, phosphate, NO3 & silicate 260 261 ! total alkalinity 262 ztrasum = 0.e0 263 DO jk = 1, jpk 264 DO jj = 1, jpj 265 DO ji = 1, jpi 266 ztrasum = ztrasum + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 267 # if defined key_off_degrad 268 & * facvol(ji,jj,jk) & 269 # endif 270 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 271 END DO 272 END DO 273 END DO 274 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 275 276 ztrasum = ztrasum / areatot * 1.e6 277 IF(lwp) WRITE(numout,*) ' TALK mean : ', ztrasum 278 trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / ztrasum 279 280 ! phosphate 281 ztrasum = 0.e0 282 DO jk = 1, jpk 283 DO jj = 1, jpj 284 DO ji = 1, jpi 285 ztrasum = ztrasum + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 286 # if defined key_off_degrad 287 & * facvol(ji,jj,jk) & 288 # endif 289 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 290 END DO 291 END DO 292 END DO 293 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 294 295 ztrasum = ztrasum / areatot * 1.e6 / 122. 296 IF(lwp) WRITE(numout,*) ' PO4 mean : ', ztrasum 297 trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / ztrasum 298 299 ! Nitrates 300 ztrasum = 0.e0 301 DO jk = 1, jpk 302 DO jj = 1, jpj 303 DO ji = 1, jpi 304 ztrasum = ztrasum + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 305 # if defined key_off_degrad 306 & * facvol(ji,jj,jk) & 307 # endif 308 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 309 END DO 310 END DO 311 END DO 312 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 313 314 ztrasum = ztrasum / areatot * 1.e6 / 7.6 315 IF(lwp) WRITE(numout,*) ' NO3 mean : ', ztrasum 316 trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / ztrasum 317 318 ! Silicate 319 ztrasum = 0.e0 320 DO jk = 1, jpk 321 DO jj = 1, jpj 322 DO ji = 1, jpi 323 ztrasum = ztrasum + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 324 # if defined key_off_degrad 325 & * facvol(ji,jj,jk) & 326 # endif 327 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 328 END DO 329 END DO 330 END DO 331 IF( lk_mpp ) CALL mpp_sum( ztrasum ) ! sum over the global domain 332 ztrasum = ztrasum / areatot * 1.e6 333 IF(lwp) WRITE(numout,*) ' SiO3 mean : ', ztrasum 334 trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * siomean / ztrasum ) 335 ! 336 ENDIF 337 338 !#if defined key_kriest 339 ! !! Initialize number of particles from a standart restart file 340 ! !! The name of big organic particles jpgoc has been only change 341 ! !! and replace by jpnum but the values here are concentration 342 ! trn(:,:,:,jppoc) = trn(:,:,:,jppoc) + trn(:,:,:,jpnum) 343 ! trn(:,:,:,jpnum) = trn(:,:,:,jppoc) / ( 6. * xkr_massp ) 344 !#endif 345 !! Set hi (???) from total alcalinity, borat (???), akb3 (???) and ak23 (???) 346 !! --------------------------------------------------------------------- 347 DO jk = 1, jpk 348 DO jj = 1, jpj 349 DO ji = 1,jpi 350 caralk = trn(ji,jj,jk,jptal) - borat(ji,jj,jk) / ( 1. + 1.e-8 / ( rtrn + akb3(ji,jj,jk) ) ) 351 co3 = ( caralk - trn(ji,jj,jk,jpdic) ) * tmask(ji,jj,jk) & 352 & + 0.5e-3 * ( 1.- tmask(ji,jj,jk) ) 353 bicarb = 2.* trn(ji,jj,jk,jpdic) - caralk 354 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * bicarb / co3 ) * tmask(ji,jj,jk) & 355 & + 1.0e-9 * ( 1.- tmask(ji,jj,jk) ) 356 END DO 357 END DO 358 END DO 359 360 END SUBROUTINE trc_rst_ini 361 362 #endif 363 !!---------------------------------------------------------------------- 364 365 SUBROUTINE trc_rst_stat 366 !!---------------------------------------------------------------------- 367 !! *** trc_rst_stat *** 368 !! 369 !! ** purpose : Compute tracers statistics 370 !!---------------------------------------------------------------------- 371 372 INTEGER :: ji, jj, jk, jn 373 REAL(wp) :: zdiag_var, zdiag_varmin, zdiag_varmax, zdiag_tot 374 REAL(wp) :: zder 375 !!---------------------------------------------------------------------- 376 377 378 IF( lwp ) THEN 379 WRITE(numout,*) 380 WRITE(numout,*) ' ----TRACER STAT---- ' 381 WRITE(numout,*) 382 ENDIF 383 384 zdiag_tot = 0.e0 385 DO jn = 1, jptra 386 zdiag_var = 0.e0 387 zdiag_varmin = 0.e0 388 zdiag_varmax = 0.e0 389 DO ji = 1, jpi 390 DO jj = 1, jpj 391 DO jk = 1,jpk 392 zdiag_var = zdiag_var + trn(ji,jj,jk,jn) * tmask(ji,jj,jk) * tmask_i(ji,jj) & 393 #if defined key_off_degrad 394 & * facvol(ji,jj,jk) & 395 #endif 396 & * e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 397 END DO 398 END DO 399 END DO 400 401 zdiag_varmin = MINVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 402 zdiag_varmax = MAXVAL( trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.)) ) 403 IF( lk_mpp ) THEN 404 CALL mpp_min( zdiag_varmin ) ! min over the global domain 405 CALL mpp_max( zdiag_varmax ) ! max over the global domain 406 CALL mpp_sum( zdiag_var ) ! sum over the global domain 407 END IF 408 zdiag_tot = zdiag_tot + zdiag_var 409 zdiag_var = zdiag_var / areatot 410 IF(lwp) WRITE(numout,*) ' MEAN NO ', jn, ctrcnm(jn), ' = ', zdiag_var, & 411 & ' MIN = ', zdiag_varmin, ' MAX = ', zdiag_varmax 412 END DO 413 414 zder = ( ( zdiag_tot - trai ) / ( trai + 1.e-12 ) ) * 100._wp 415 IF(lwp) WRITE(numout,*) ' Integral of all tracers over the full domain = ', zdiag_tot 416 IF(lwp) WRITE(numout,*) ' Drift of the sum of all tracers =', zder, ' %' 417 418 END SUBROUTINE trc_rst_stat 395 419 396 420 #else
Note: See TracChangeset
for help on using the changeset viewer.