Changeset 6534
- Timestamp:
- 2016-05-13T16:26:32+02:00 (8 years ago)
- Location:
- branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM
- Files:
-
- 12 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/CONFIG/cfg.txt
r6348 r6534 7 7 AMM12 OPA_SRC 8 8 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 9 ORCA2_OFF_PISCES_ISO OPA_SRC OFF_SRC TOP_SRC 9 10 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 10 11 ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
r6287 r6534 39 39 ! !!** Namelist nampisext ** 40 40 REAL(wp) :: atcco2 !: pre-industrial atmospheric [co2] (ppm) 41 #ifdef key_c13 42 REAL(wp) :: d13c_co2 !: d13c of atmospheric [co2] (ppm) 43 #endif 41 44 LOGICAL :: ln_co2int !: flag to read in a file and interpolate atmospheric pco2 or not 42 45 CHARACTER(len=34) :: clname !: filename of pco2 values … … 55 58 56 59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: oce_co2 !: ocean carbon flux 60 #if defined key_c13 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: oce_c13 !: ocean C13 flux 62 #endif 57 63 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: satmco2 !: atmospheric pco2 58 64 … … 84 90 ! 85 91 INTEGER :: ji, jj, jm, iind, iindm1 86 REAL(wp) :: ztc, ztc2, ztc3, z tc4, zws, zkgwan92 REAL(wp) :: ztc, ztc2, ztc3, zws, zkgwan 87 93 REAL(wp) :: zfld, zflu, zfld16, zflu16, zfact 88 94 REAL(wp) :: zph, zah2, zbot, zdic, zalk, zsch_o2, zalka, zsch_co2 89 95 REAL(wp) :: zyr_dec, zdco2dt 90 96 CHARACTER (len=25) :: charout 91 REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d 97 REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, z_co3, zoflx, zw2d 98 #ifdef key_c13 99 REAL(wp) :: zft, zfco3 100 REAL(wp), POINTER, DIMENSION(:,:) :: za_dic, za_g 101 #endif 92 102 !!--------------------------------------------------------------------- 93 103 ! 94 104 IF( nn_timing == 1 ) CALL timing_start('p4z_flx') 95 105 ! 96 CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx ) 106 #ifdef key_c13 107 CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx, za_dic, za_g ) 108 #else 109 CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx ) 110 #endif 97 111 ! 98 112 … … 133 147 zph = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 134 148 zalka = trb(ji,jj,1,jptal) / zfact 149 150 ! CALCULATE [ALK]([CO3--], [HCO3-]) 151 zalk = zalka - ( akw3(ji,jj,1) / zph - zph + zbot / ( 1.+ zph / akb3(ji,jj,1) ) ) 135 152 136 153 ! CALCULATE [ALK]([CO3--], [HCO3-]) … … 178 195 zkgco2(ji,jj) = zkgwan * SQRT( 660./ zsch_co2 ) 179 196 zkgo2 (ji,jj) = zkgwan * SQRT( 660./ zsch_o2 ) 197 #if defined key_c13 198 ! Compute fractionation factors for C13 from Zhang et al. 1995 199 zfco3 = MAX(0.05,(z_co3(ji,jj)/trb(ji,jj,1,jpdic)+rtrn)) 200 zfco3 = MIN(0.2 , zfco3) 201 zft = MIN( 25., ztc ) 202 zft = MAX( 5., zft ) 203 za_g (ji,jj) = 1. + ( -0.0049 * zft - 1.31 ) / 1000. 204 za_dic(ji,jj) = 1. + ( 0.014 * zft * zfco3 - 0.105 * zft + 10.53 ) / 1000. 205 #endif 180 206 END DO 181 207 END DO … … 183 209 DO jj = 1, jpj 184 210 DO ji = 1, jpi 185 ! Compute CO2 flux for the sea and air211 ! Compute CO2 flux for the sea and air 186 212 zfld = satmco2(ji,jj) * patm(ji,jj) * tmask(ji,jj,1) * chemc(ji,jj) * zkgco2(ji,jj) ! (mol/L) * (m/s) 187 213 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj) ! (mol/L) (m/s) ? … … 195 221 zoflx(ji,jj) = zfld16 - zflu16 196 222 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + zoflx(ji,jj) * rfact2 / fse3t(ji,jj,1) 223 #if defined key_c13 224 tra(ji,jj,1,jp13dic) = tra(ji,jj,1,jp13dic) + ( zfld * (1 + d13c_co2 / 1000.) & 225 - zflu * trb(ji,jj,1,jp13dic) / ( trb(ji,jj,1,jpdic) + rtrn ) & 226 / ( za_dic(ji,jj) + rtrn) ) & 227 * 0.99919 * za_g(ji,jj) * rfact2 / fse3t(ji,jj,1) 228 229 oce_c13(ji,jj) = ( zfld * (1 + d13c_co2 / 1000.) & 230 - zflu * trb(ji,jj,1,jp13dic) / ( trb(ji,jj,1,jpdic) + rtrn ) & 231 / ( za_dic(ji,jj) + rtrn) ) & 232 * 0.99919 * za_g(ji,jj) * rfact2 * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000. 233 #endif 197 234 END DO 198 235 END DO … … 215 252 CALL iom_put( "Cflx" , zw2d ) 216 253 ENDIF 254 #if defined key_c13 255 CALL wrk_alloc( jpi, jpj, zw2d ) 256 IF( iom_use( "C13flx" ) ) THEN 257 zw2d(:,:) = oce_c13(:,:) / e1e2t(:,:) * rfact2r 258 CALL iom_put( "C13flx" , zw2d ) 259 ENDIF 260 #endif 217 261 IF( iom_use( "Oflx" ) ) THEN 218 262 zw2d(:,:) = zoflx(:,:) * 1000 * tmask(:,:,1) … … 224 268 ENDIF 225 269 IF( iom_use( "Dpco2" ) ) THEN 226 zw2d(:,:) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,: ) + rtrn ) ) * tmask(:,:,1)270 zw2d(:,:) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 227 271 CALL iom_put( "Dpco2" , zw2d ) 228 272 ENDIF 229 273 IF( iom_use( "Dpo2" ) ) THEN 230 zw2d(:,:) = ( atcox * patm(:,:) - atcox * trn(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1)274 zw2d(:,:) = ( atcox * patm(:,:) - trb(:,:,1,jpoxy) / ( chemc(:,:,2) + rtrn ) ) * tmask(:,:,1) 231 275 CALL iom_put( "Dpo2" , zw2d ) 232 276 ENDIF … … 240 284 trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1) 241 285 trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1) 242 trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:) + rtrn ) ) * tmask(:,:,1) 243 ENDIF 244 ENDIF 245 ! 246 CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx ) 286 trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 287 ENDIF 288 ENDIF 289 ! 290 #ifdef key_c13 291 CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx, za_dic, za_g ) 292 #else 293 CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx ) 294 #endif 247 295 ! 248 296 IF( nn_timing == 1 ) CALL timing_stop('p4z_flx') … … 261 309 !! ** input : Namelist nampisext 262 310 !!---------------------------------------------------------------------- 263 NAMELIST/nampisext/ln_co2int, atcco2, clname, nn_offset 311 NAMELIST/nampisext/ln_co2int, atcco2, & 312 #if defined key_c13 313 & d13c_co2, & 314 #endif 315 & clname, nn_offset 264 316 INTEGER :: jm 265 317 INTEGER :: ios ! Local integer output status for namelist read … … 286 338 IF(lwp) THEN ! control print 287 339 WRITE(numout,*) ' Constant Atmospheric pCO2 value atcco2 =', atcco2 340 #if defined key_c13 341 WRITE(numout,*) ' Constant Atm. d13C of pCO2 value d13c_co2 =', d13c_co2 342 #endif 288 343 WRITE(numout,*) ' ' 289 344 ENDIF … … 316 371 t_oce_co2_flx = 0._wp 317 372 t_atm_co2_flx = 0._wp 373 #ifdef key_c13 374 oce_c13(:,:) = 0._wp 375 #endif 318 376 ! 319 377 CALL p4z_patm( nit000 ) … … 384 442 !! *** ROUTINE p4z_flx_alloc *** 385 443 !!---------------------------------------------------------------------- 386 ALLOCATE( oce_co2(jpi,jpj), satmco2(jpi,jpj), patm(jpi,jpj), STAT=p4z_flx_alloc )444 ALLOCATE( oce_co2(jpi,jpj), satmco2(jpi,jpj), patm(jpi,jpj), oce_c13(jpi,jpj), STAT=p4z_flx_alloc ) 387 445 ! 388 446 IF( p4z_flx_alloc /= 0 ) CALL ctl_warn('p4z_flx_alloc : failed to allocate arrays') … … 402 460 403 461 !!====================================================================== 404 END MODULE p4zflx462 END MODULE p4zflx -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90
r6204 r6534 115 115 ! Michaelis-Menten Limitation term for nutrients Small bacteria 116 116 ! ------------------------------------------------------------- 117 zdenom = 1. / ( concbno3 * concbnh4 + concbnh4 * trb(ji,jj,jk,jpno3) + concbno3 * trb(ji,jj,jk,jpnh4))118 xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * concbnh4 * zdenom119 xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * concbno3 * zdenom117 xnanonh4(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-8 ) / (MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-8 ) + concbnh4) 118 xnanono3(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpno3) - 1.E-8 ) / (MAX(0., trb(ji,jj,jk,jpno3) - 1.E-8 ) & 119 & + concbno3) * (1. - xnanonh4(ji,jj,jk) ) 120 120 ! 121 121 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 122 zlim2 = trb(ji,jj,jk,jppo4)/ ( trb(ji,jj,jk,jppo4) + concbnh4 )122 zlim2 = MAX(0., trb(ji,jj,jk,jppo4) - 1E-9 )/ ( trb(ji,jj,jk,jppo4) + concbnh4 ) 123 123 zlim3 = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) ) 124 124 zlim4 = trb(ji,jj,jk,jpdoc) / ( xkdoc + trb(ji,jj,jk,jpdoc) ) … … 128 128 ! Michaelis-Menten Limitation term for nutrients Small flagellates 129 129 ! ----------------------------------------------- 130 zdenom = 1. / ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4))131 xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom132 xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc0n * zdenom130 xnanonh4(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) + zconc0nnh4) 131 xnanono3(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) & 132 & + zconc0n) * (1. - xnanonh4(ji,jj,jk) ) 133 133 ! 134 134 zlim1 = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 135 zlim2 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 )135 zlim2 = MAX(0., trb(ji,jj,jk,jppo4) - 1.E-7 ) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 ) 136 136 zratio = trb(ji,jj,jk,jpnfe) * z1_trbphy 137 137 zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) … … 143 143 ! Michaelis-Menten Limitation term for nutrients Diatoms 144 144 ! ---------------------------------------------- 145 zdenom = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4))146 xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom147 xdiatnh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc1d * zdenom145 xdiatnh4(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) + zconc1dnh4) 146 xdiatno3(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) & 147 & + zconc1d ) * (1- xdiatnh4(ji,jj,jk)) 148 148 ! 149 149 zlim1 = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 150 zlim2 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc1dnh4 )150 zlim2 = MAX(0., trb(ji,jj,jk,jppo4) - 1.E-7 ) / ( trb(ji,jj,jk,jppo4) + zconc1dnh4 ) 151 151 zlim3 = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) ) 152 152 zratio = trb(ji,jj,jk,jpdfe) * z1_trbdia … … 265 265 266 266 !!====================================================================== 267 END MODULE p4zlim267 END MODULE p4zlim -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r6287 r6534 142 142 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zcaldiss(ji,jj,jk) 143 143 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zcaldiss(ji,jj,jk) 144 145 #if defined key_c13 146 zaldi = zcaldiss(ji,jj,jk) * trb(ji,jj,jk,jp13cal) / ( trb(ji,jj,jk,jpcal) + rtrn ) 147 tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) - zaldi 148 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + zaldi 149 #endif 150 144 151 END DO 145 152 END DO -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r6204 r6534 49 49 REAL(wp), PUBLIC :: epsher2 !: half sturation constant for grazing 2 50 50 REAL(wp), PUBLIC :: grazflux !: mesozoo flux feeding rate 51 #if defined key_n15 52 REAL(wp), PUBLIC :: e15n_ex2 !: N15 mesozoo excretion fractionation 53 REAL(wp), PUBLIC :: e15n_ing2 !: N15 mesozoo ingestion fractionation 54 #endif 55 #if defined key_c13 56 REAL(wp), PUBLIC :: e13c_cal2 !: C13 mesozoo calcification fractionation 57 #endif 51 58 52 59 !!* Substitution … … 82 89 REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 83 90 REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 91 #if defined key_n15 92 REAL(wp) :: zgrazn15,zgrazd15,zgrazpo15,zgrazff15p,zgrazff15g,zgraztot15 93 REAL(wp) :: zgrarem2_15,zgrarsig_15,zgrarsigex_15,zmortzgoc_15,zgrapoc2_15,zfrac15 94 #endif 95 #if defined key_c13 96 REAL(wp) :: zgrazn13,zgrazd13,zgrazpo13,zgrazff13p,zgrazff13g,zgraztot13 97 REAL(wp) :: zgrarem2_13,zgrarsig_13,zmortzgoc_13,zgrapoc2_13,zfrac13 98 #endif 84 99 CHARACTER (len=25) :: charout 85 100 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d … … 139 154 zgrazpof = zgrazpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn) 140 155 156 #ifdef key_n15 157 zgrazn15 = zgrazn * trb(ji,jj,jk,jp15phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 158 zgrazd15 = zgrazd * trb(ji,jj,jk,jp15dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 159 zgrazpo15 = zgrazpoc * trb(ji,jj,jk,jp15poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 160 #endif 161 #ifdef key_c13 162 zgrazn13 = zgrazn * trb(ji,jj,jk,jp13phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 163 zgrazd13 = zgrazd * trb(ji,jj,jk,jp13dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 164 zgrazpo13 = zgrazpoc * trb(ji,jj,jk,jp13poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 165 #endif 166 167 141 168 ! Mesozooplankton flux feeding on GOC 142 169 ! ---------------------------------- … … 150 177 & * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 151 178 zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 179 #ifdef key_n15 180 zgrazff15g = zgrazffeg * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 181 zgrazff15p = zgrazffep * trb(ji,jj,jk,jp15poc) / (trb(ji,jj,jk,jppoc) + rtrn) 182 #endif 183 #ifdef key_c13 184 zgrazff13g = zgrazffeg * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 185 zgrazff13p = zgrazffep * trb(ji,jj,jk,jp13poc) / (trb(ji,jj,jk,jppoc) + rtrn) 186 #endif 187 152 188 ! 153 189 # if ! defined key_kriest … … 173 209 & + zgrazpoc + zgrazffep + zgrazffeg 174 210 zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 211 212 #ifdef key_n15 213 zfrac15 = zfrac * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 214 zgrazff15p = zproport * zgrazff15p 215 zgrazff15g = zproport * zgrazff15g 216 zgraztot15 = zgrazd15 + zgrazn15 + zgrazz * trb(ji,jj,jk,jp15zoo) / (trb(ji,jj,jk,jpzoo) + rtrn) + zgrazpo15 + zgrazff15p + zgrazff15g 217 #endif 218 #ifdef key_c13 219 zfrac13 = zfrac * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 220 zgrazff13p = zproport * zgrazff13p 221 zgrazff13g = zproport * zgrazff13g 222 zgraztot13 = zgrazd13 + zgrazn13 + zgrazz * trb(ji,jj,jk,jp13zoo) / (trb(ji,jj,jk,jpzoo) + rtrn) + zgrazpo13 + zgrazff13p + zgrazff13g 223 #endif 224 225 226 175 227 # else 176 228 zgraztot = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep … … 198 250 & + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 ) 199 251 zgrapoc2 = zgraztot * unass2 252 253 #ifdef key_n15 254 zgrarem2_15 = zgraztot15 * ( 1. - zepsherv - unass2 ) & 255 + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 & 256 * trb(ji,jj,jk,jp15mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 257 zgrarsig_15 = zgrarem2_15 * sigma2 258 zgrarsigex_15 = zgraztot15 * ( 1. - epsher2 - unass2 ) * sigma2 * zgrasratn 259 zgrapoc2_15 = zgraztot15 * unass2 260 zmortzgoc_15 = ( unass2 / ( 1. - epsher2 ) * ztortz2 + zrespz2 ) & 261 * trb(ji,jj,jk,jp15mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 262 #endif 263 #ifdef key_c13 264 zgrarem2_13 = zgraztot13 * ( 1. - zepsherv - unass2 ) & 265 + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 & 266 * trb(ji,jj,jk,jp13mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 267 zgrarsig_13 = zgrarem2_13 * sigma2 268 zgrapoc2_13 = zgraztot13 * unass2 269 zmortzgoc_13 = ( unass2 / ( 1. - epsher2 ) * ztortz2 + zrespz2 ) & 270 * trb(ji,jj,jk,jp13mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 271 #endif 272 200 273 201 274 ! Update the arrays TRA which contain the biological sources and sinks … … 222 295 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 223 296 297 #if defined key_n15 298 tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) + (1. - e15n_ex2 / 1000.) * zgrarsigex_15 & 299 & + (zgrarsig_15-zgrarsigex_15) 300 tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zgrarem2_15 - zgrarsig_15 301 tra(ji,jj,jk,jp15mes) = tra(ji,jj,jk,jp15mes) - zmortz2 * trb(ji,jj,jk,jp15mes) / (trb(ji,jj,jk,jpmes) + rtrn) & 302 + zepsherv * zgraztot15 & 303 + zgrarsigex_15 * (e15n_ex2 / 1000.) & 304 & + zgrapoc2_15 * (e15n_ing2 / 1000.) 305 tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) - zgrazd15 306 tra(ji,jj,jk,jp15zoo) = tra(ji,jj,jk,jp15zoo) - zgrazz * trb(ji,jj,jk,jp15zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 307 tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) - zgrazn15 308 #endif 309 #if defined key_c13 310 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + zgrarsig_13 311 tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zgrarem2_13 - zgrarsig_13 312 tra(ji,jj,jk,jp13mes) = tra(ji,jj,jk,jp13mes) - zmortz2 * trb(ji,jj,jk,jp13mes) / (trb(ji,jj,jk,jpmes) + rtrn) & 313 + zepsherv * zgraztot13 314 tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) - zgrazd13 315 tra(ji,jj,jk,jp13zoo) = tra(ji,jj,jk,jp13zoo) - zgrazz * trb(ji,jj,jk,jp13zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 316 tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) - zgrazn13 317 #endif 318 224 319 ! calcite production 225 320 zprcaca = xfracal(ji,jj,jk) * zgrazn … … 230 325 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 231 326 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 327 #if defined key_c13 328 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zprcaca * ( 1. - e13c_cal2/1000. ) & 329 * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 330 tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) + zprcaca * ( 1. - e13c_cal2/1000. ) & 331 * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 332 #endif 333 232 334 #if defined key_kriest 233 335 znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) … … 243 345 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 244 346 & + zgraztotf * unass2 - zfracfe 347 #if defined key_n15 348 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) - zgrazpo15 - zgrazff15p + zfrac15 349 tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + zmortzgoc_15 - zgrazff15g & 350 & + (1. - e15n_ing2/1000.) * zgrapoc2_15 - zfrac15 351 #endif 352 #if defined key_c13 353 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) - zgrazpo13 - zgrazff13p + zfrac13 354 tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + zmortzgoc_13 - zgrazff13g + zgrapoc2_13 - zfrac13 355 #endif 245 356 #endif 246 357 END DO … … 289 400 NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz, & 290 401 & xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 402 #if defined key_n15 403 & e15n_ex2, e15n_ing2, & 404 #endif 405 #if defined key_c13 406 & e13c_cal2, & 407 #endif 291 408 & xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 409 292 410 INTEGER :: ios ! Local integer output status for namelist read 293 411 … … 324 442 WRITE(numout,*) ' Fraction of mesozoo excretion as DOM sigma2 =', sigma2 325 443 WRITE(numout,*) ' half sturation constant for grazing 2 xkgraz2 =', xkgraz2 444 #if defined key_n15 445 WRITE(numout,*) ' N15 mesozoo excretion fractionation e15n_ex2 =', e15n_ex2 446 WRITE(numout,*) ' N15 mesozoo ingestion fractionation e15n_ing2 =', e15n_ing2 447 #endif 448 #if defined key_c13 449 WRITE(numout,*) ' C13 mesozoo calcification fractionation e13c_cal2 =', e13c_cal2 450 #endif 326 451 ENDIF 327 452 … … 340 465 341 466 !!====================================================================== 342 END MODULE p4zmeso467 END MODULE p4zmeso -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r6204 r6534 47 47 REAL(wp), PUBLIC :: sigma1 !: Fraction of microzoo excretion as DOM 48 48 REAL(wp), PUBLIC :: epsher !: half sturation constant for grazing 1 49 49 #if defined key_n15 50 REAL(wp), PUBLIC :: e15n_ex !: N15 microzoo excretion fractionation 51 REAL(wp), PUBLIC :: e15n_ing !: N15 microzoo ingestion fractionation 52 #endif 53 #if defined key_c13 54 REAL(wp), PUBLIC :: e13c_calz !: C13 microzoo calcification fractionation 55 #endif 50 56 51 57 !!* Substitution … … 79 85 REAL(wp) :: zgrazp, zgrazm, zgrazsd 80 86 REAL(wp) :: zgrazmf, zgrazsf, zgrazpf 87 #if defined key_n15 88 REAL(wp) :: zgrazp15,zgrazm15,zgrazs15,zgraztot15 89 REAL(wp) :: zgrarem_15,zgrarsig_15,zgrarsigex_15,zmortz_15,zgrapoc_15 90 #endif 91 #if defined key_c13 92 REAL(wp) :: zgrazp13,zgrazm13,zgrazs13,zgraztot13 93 REAL(wp) :: zgrarem_13,zgrarsig_13,zmortz_13,zgrapoc_13 94 #endif 81 95 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 82 96 CHARACTER (len=25) :: charout … … 126 140 zgrazmf = zgrazm * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 127 141 zgrazsf = zgrazsd * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 142 128 143 ! 129 144 zgraztot = zgrazp + zgrazm + zgrazsd 130 145 zgraztotf = zgrazpf + zgrazsf + zgrazmf 131 146 zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk) 147 ! 148 #ifdef key_n15 149 zgrazp15 = zgrazp * trb(ji,jj,jk,jp15phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 150 zgrazm15 = zgrazm * trb(ji,jj,jk,jp15poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 151 zgrazs15 = zgrazsd * trb(ji,jj,jk,jp15dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 152 zgraztot15 = zgrazp15 + zgrazm15 + zgrazs15 153 #endif 154 #ifdef key_c13 155 zgrazp13 = zgrazp * trb(ji,jj,jk,jp13phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 156 zgrazm13 = zgrazm * trb(ji,jj,jk,jp13poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 157 zgrazs13 = zgrazsd * trb(ji,jj,jk,jp13dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 158 zgraztot13 = zgrazp13 + zgrazm13 + zgrazs13 159 #endif 132 160 133 161 ! Grazing by microzooplankton … … 143 171 zgrarem = zgraztot * ( 1. - zepsherv - unass ) 144 172 zgrapoc = zgraztot * unass 173 174 #ifdef key_n15 175 zgrarem_15 = zgraztot15 * ( 1. - zepsherv - unass ) 176 zgrapoc_15 = zgraztot15 * unass 177 zgrarsig_15 = zgrarem_15 * sigma1 178 zgrarsigex_15 = (1. - epsher - unass ) * zgraztot15 * sigma1 * zgrasratn 179 zmortz_15 = (ztortz + zrespz) * trb(ji,jj,jk,jp15zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 180 #endif 181 #ifdef key_c13 182 zgrarem_13 = zgraztot13 * ( 1. - zepsherv - unass ) 183 zgrapoc_13 = zgraztot13 * unass 184 zgrarsig_13 = zgrarem_13 * sigma1 185 zmortz_13 = (ztortz + zrespz) * trb(ji,jj,jk,jp13zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 186 #endif 187 145 188 146 189 ! Update of the TRA arrays … … 159 202 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro 160 203 #endif 204 ! 205 #if defined key_n15 206 tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) + (1. - e15n_ex / 1000.) * zgrarsigex_15 & 207 & + (zgrarsig_15-zgrarsigex_15) 208 tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zgrarem_15 - zgrarsig_15 209 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + (1. - e15n_ing / 1000.) * zgrapoc_15 210 #endif 211 #if defined key_c13 212 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + zgrarsig_13 213 tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zgrarem_13 - zgrarsig_13 214 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + zgrapoc_13 215 #endif 216 217 ! 161 218 ! Update the arrays TRA which contain the biological sources and sinks 162 219 ! -------------------------------------------------------------------- … … 186 243 - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 187 244 #endif 245 ! 246 #if defined key_n15 247 tra(ji,jj,jk,jp15zoo) = tra(ji,jj,jk,jp15zoo) - zmortz_15 + zepsherv * zgraztot15 & 248 & + e15n_ex / 1000. * zgrarsigex_15 + e15n_ing / 1000. * zgrapoc_15 249 tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) - zgrazp15 250 tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) - zgrazs15 251 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + zmortz_15 - zgrazm15 252 #endif 253 #if defined key_c13 254 tra(ji,jj,jk,jp13zoo) = tra(ji,jj,jk,jp13zoo) - zmortz_13 + zepsherv * zgraztot13 255 tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) - zgrazp13 256 tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) - zgrazs13 257 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + zmortz_13 - zgrazm13 258 259 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zprcaca * ( 1. - e13c_calz/1000. ) & 260 * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 261 tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) + zprcaca * ( 1. - e13c_calz/1000. ) & 262 * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 263 #endif 264 188 265 END DO 189 266 END DO … … 228 305 NAMELIST/nampiszoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, & 229 306 & xpref2d, xthreshdia, xthreshphy, xthreshpoc, & 307 #ifdef key_n15 308 & e15n_ex, e15n_ing, & 309 #endif 310 #ifdef key_c13 311 & e13c_calz, & 312 #endif 230 313 & xthresh, xkgraz, epsher, sigma1, unass 231 314 INTEGER :: ios ! Local integer output status for namelist read … … 259 342 WRITE(numout,*) ' Fraction of microzoo excretion as DOM sigma1 =', sigma1 260 343 WRITE(numout,*) ' half sturation constant for grazing 1 xkgraz =', xkgraz 344 #if defined key_n15 345 WRITE(numout,*) ' N15 microzoo excretion fractionation e15n_ex =', e15n_ex 346 WRITE(numout,*) ' N15 microzoo ingestion fractionation e15n_ing =', e15n_ing 347 #endif 348 #if defined key_c13 349 WRITE(numout,*) ' C13 microzoo calcification fractionation e13c_calz =', e13c_calz 350 #endif 261 351 ENDIF 262 352 … … 273 363 274 364 !!====================================================================== 275 END MODULE p4zmicro365 END MODULE p4zmicro -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90
r6204 r6534 33 33 REAL(wp), PUBLIC :: mprat !: 34 34 REAL(wp), PUBLIC :: mprat2 !: 35 #if defined key_c13 36 REAL(wp), PUBLIC :: e13c_cal !: 37 #endif 35 38 36 39 … … 121 124 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 122 125 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 126 #if defined key_n15 127 tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) - zmortp & 128 * ( trb(ji,jj,jk,jp15phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 129 #endif 130 131 #if defined key_c13 132 tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) - zmortp & 133 * ( trb(ji,jj,jk,jp13phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 134 135 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zprcaca * ( 1. - e13c_cal/1000. ) & 136 * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 137 tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) + zprcaca * ( 1. - e13c_cal/1000. ) & 138 * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 139 #endif 140 141 ! 123 142 #if defined key_kriest 124 143 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp … … 130 149 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe 131 150 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe 151 #if defined key_n15 152 tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + zfracal * zmortp & 153 * ( trb(ji,jj,jk,jp15phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 154 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + ( 1. - zfracal ) * zmortp & 155 * ( trb(ji,jj,jk,jp15phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 156 #endif 157 158 #if defined key_c13 159 tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + zfracal * zmortp & 160 * ( trb(ji,jj,jk,jp13phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 161 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + ( 1. - zfracal ) * zmortp & 162 * ( trb(ji,jj,jk,jp13phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 163 #endif 164 132 165 #endif 133 166 END DO … … 204 237 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi 205 238 tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi 239 #if defined key_n15 240 tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) - zmortp2 & 241 * ( trb(ji,jj,jk,jp15dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 242 #endif 243 #if defined key_c13 244 tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) - zmortp2 & 245 * ( trb(ji,jj,jk,jp13dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 246 #endif 247 248 206 249 #if defined key_kriest 207 250 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2 … … 213 256 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe 214 257 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe 258 #if defined key_n15 259 tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + ( zrespp2 + 0.5 * ztortp2 ) & 260 * ( trb(ji,jj,jk,jp15dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 261 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + 0.5 * ztortp2 & 262 * ( trb(ji,jj,jk,jp15dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 263 #endif 264 265 #if defined key_n15 266 tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + ( zrespp2 + 0.5 * ztortp2 ) & 267 * ( trb(ji,jj,jk,jp13dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 268 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + 0.5 * ztortp2 & 269 * ( trb(ji,jj,jk,jp13dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 270 #endif 271 215 272 #endif 216 273 END DO … … 242 299 !!---------------------------------------------------------------------- 243 300 244 NAMELIST/nampismort/ wchl, wchld, wchldm, mprat, mprat2 301 NAMELIST/nampismort/ wchl, wchld, wchldm, mprat, & 302 #ifdef key_c13 303 & e13c_cal, & 304 #endif 305 & mprat2 245 306 INTEGER :: ios ! Local integer output status for namelist read 246 307 … … 263 324 WRITE(numout,*) ' phytoplankton mortality rate mprat =', mprat 264 325 WRITE(numout,*) ' Diatoms mortality rate mprat2 =', mprat2 326 #ifdef key_c13 327 WRITE(numout,*) ' C13 Calcification Fractionation e13c_cal =', e13c_cal 328 #endif 265 329 ENDIF 266 330 … … 277 341 278 342 !!====================================================================== 279 END MODULE p4zmort343 END MODULE p4zmort -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r6204 r6534 45 45 REAL(wp), PUBLIC :: fecdm !: 46 46 REAL(wp), PUBLIC :: grosip !: 47 #if defined key_n15 48 REAL(wp), PUBLIC :: e15n_prod !: 49 #endif 50 #if defined key_c13 51 REAL(wp), PUBLIC :: e13c_min !: 52 REAL(wp), PUBLIC :: e13c_max !: 53 #endif 47 54 48 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: prmax !: optimal production = f(temperature) … … 76 83 INTEGER, INTENT(in) :: kt, knt 77 84 ! 78 INTEGER :: ji, jj, jk 85 INTEGER :: ji, jj, jk, jm 79 86 REAL(wp) :: zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 80 87 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap 81 88 REAL(wp) :: zlim, zsilfac2, zsiborn, zprod, zproreg, zproreg2 89 #ifdef key_n15 90 REAL(wp) :: zr15_reg, zr15_new, zu_15, zun_15 91 #endif 92 #ifdef key_c13 93 REAL(wp) :: zr13, zr13_2, z_e13c_prod, z_e13c_prod2 94 REAL(wp) :: ztc, zft, zrhop, zfco3, zbot, zdic, zph, zalka, zalk, zah2 95 #endif 82 96 REAL(wp) :: zmxltst, zmxlday, zmaxday 83 97 REAL(wp) :: zpislopen , zpislope2n … … 88 102 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d 89 103 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 104 #ifdef key_c13 105 REAL(wp), POINTER, DIMENSION(:,:,:) :: za_g, za_dic, zh2co3, z_co3 106 #endif 90 107 !!--------------------------------------------------------------------- 91 108 ! … … 96 113 CALL wrk_alloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt ) 97 114 CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 115 #ifdef key_c13 116 CALL wrk_alloc( jpi, jpj, jpk, za_g, za_dic, zh2co3, z_co3) 117 #endif 98 118 ! 99 119 zprorca (:,:,:) = 0._wp … … 294 314 END DO 295 315 END DO 316 317 ! Computation of the C13 fractionation factor from Laws et al. 1995 318 #if defined key_c13 319 DO jm = 1, 10 320 !CDIR NOVERRCHK 321 DO jk = 1, jpkm1 322 !CDIR NOVERRCHK 323 DO jj = 1, jpj 324 !CDIR NOVERRCHK 325 DO ji = 1, jpi 326 327 ! DUMMY VARIABLES FOR DIC, H+, AND BORATE 328 zbot = borat(ji,jj,jk) 329 zrhop = rhop(ji,jj,jk) / 1000. + rtrn 330 zdic = trb(ji,jj,jk,jpdic) / zrhop 331 zph = MAX( hi(ji,jj,jk), 1.e-10 ) / zrhop 332 zalka = trb(ji,jj,jk,jptal) / zrhop 333 334 ! CALCULATE [ALK]([CO3--], [HCO3-]) 335 zalk = zalka - ( akw3(ji,jj,jk) / zph - zph + zbot / ( 1.+ zph / akb3(ji,jj,jk) ) ) 336 337 ! CALCULATE [H+] AND [H2CO3] 338 zah2 = SQRT( (zdic-zalk)**2 + 4.* ( zalk * ak23(ji,jj,jk) & 339 & / ak13(ji,jj,jk) ) * ( 2.* zdic - zalk ) ) 340 zah2 = 0.5 * ak13(ji,jj,jk) / zalk * ( ( zdic - zalk ) + zah2 ) 341 zh2co3(ji,jj,jk) = ( 2.* zdic - zalk ) / ( 2.+ ak13(ji,jj,jk) / zah2) * zrhop 342 z_co3(ji,jj,jk) = zalk / ( 2. + zah2 / ak23(ji,jj,jk) ) * zrhop 343 hi(ji,jj,jk) = zah2 * zrhop 344 END DO 345 END DO 346 END DO 347 END DO 348 349 !CDIR NOVERRCHK 350 DO jk = 1, jpkm1 351 !CDIR NOVERRCHK 352 DO jj = 1, jpj 353 !CDIR NOVERRCHK 354 DO ji = 1, jpi 355 356 357 ! ! Compute fractionation factors for C13 from Zhang et al. 1995 358 359 zfco3 = MAX(0.05,(z_co3(ji,jj,jk)/trb(ji,jj,jk,jpdic)+rtrn)) 360 zfco3 = MIN(0.2 , zfco3) 361 ztc = MIN( 35., tsn(ji,jj,jk,jp_tem) ) 362 zft = MIN(25.,ztc) 363 zft = MAX( 5.,zft) 364 za_g(ji,jj,jk) = 1. + ( -0.0049 * zft - 1.31 ) / 1000. 365 za_dic(ji,jj,jk) = 1. + ( 0.014 * zft * zfco3 & 366 - 0.105 * zft + 10.53 ) / 1000. 367 END DO 368 END DO 369 END DO 370 371 #endif 296 372 297 373 ! Computation of the various production terms … … 390 466 zproreg = zprorca(ji,jj,jk) - zpronew(ji,jj,jk) 391 467 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 468 #ifdef key_n15 469 zu_15 = MIN(1.,MAX(0., 1. - (zpronew(ji,jj,jk)+zpronewd(ji,jj,jk))/(rtrn + trb(ji,jj,jk,jp15no3)))) 470 zun_15 = MIN(1.,MAX(0., 1. - (zproreg+zproreg2) / (rtrn + trb(ji,jj,jk,jp15nh4)))) 471 472 zr15_new = ( 1. - e15n_prod/1000. * zu_15) * trb(ji,jj,jk,jp15no3) / (trb(ji,jj,jk,jpno3) + rtrn) 473 zr15_reg = ( 1. - e15n_prod/1000. * zun_15) * trb(ji,jj,jk,jp15nh4) / (trb(ji,jj,jk,jpnh4) + rtrn) 474 #endif 475 476 #ifdef key_c13 477 478 z_e13c_prod = MAX(e13c_min,MIN(e13c_max,( (86400 * zprorca(ji,jj,jk) / (rtrn + trb(ji,jj,jk,jpphy) ) & 479 & / ( rfact2 * (zh2co3(ji,jj,jk)/1025*1.e9 + rtrn) ) - 0.371 ) / (-0.015)))) 480 481 z_e13c_prod2 = MAX(e13c_min,MIN(e13c_max,( ( 86400 * zprorcad(ji,jj,jk) / (rtrn + trb(ji,jj,jk,jpdia) ) & 482 & / ( rfact2 * (zh2co3(ji,jj,jk)/1025*1.e9 + rtrn) ) - 0.371 ) / (-0.015)))) 483 484 ! 485 if ((mig(ji).eq.74).and.(mig(jj).eq.74).and.(jk.eq.1)) THEN 486 write(numout,*) z_e13c_prod, 86400*(zprorca(ji,jj,jk)/(rtrn + trb(ji,jj,jk,jpphy))/rfact2) , (zh2co3(ji,jj,jk)) , & 487 & ((86400 * zprorca(ji,jj,jk) / (rtrn + trb(ji,jj,jk,jpphy) ) & 488 & / ( rfact2 * (zh2co3(ji,jj,jk)/1025*1.e9 + rtrn) ) - 0.371 ) / (-0.015)) 489 endif 490 491 492 zr13 = ( 1. - z_e13c_prod/1000. ) * trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) !& 493 !& * za_g(ji,jj,jk) / (za_dic(ji,jj,jk) + rtrn) 494 zr13_2 = ( 1. - z_e13c_prod2/1000. ) * trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) !& 495 !& * za_g(ji,jj,jk) / (za_dic(ji,jj,jk) + rtrn) 496 #endif 497 392 498 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 393 499 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk) … … 408 514 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 409 515 & - rno3 * ( zproreg + zproreg2 ) 516 #ifdef key_n15 517 518 tra(ji,jj,jk,jp15no3) = tra(ji,jj,jk,jp15no3) - zr15_new * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) 519 tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) - zr15_reg * ( zproreg + zproreg2 ) 520 tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) + zr15_new * zpronew(ji,jj,jk) * texcret & 521 + zr15_reg * zproreg * texcret 522 tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) + zr15_new * zpronewd(ji,jj,jk) * texcret2 & 523 + zr15_reg * zproreg2 * texcret2 524 tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zr15_new * zpronew(ji,jj,jk) * excret & 525 + zr15_reg * zproreg * excret & 526 + zr15_new * zpronewd(ji,jj,jk) * excret2 & 527 + zr15_reg * zproreg2 * excret2 528 #endif 529 530 #ifdef key_c13 531 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zr13 * zprorca(ji,jj,jk) - zr13_2 * zprorcad(ji,jj,jk) 532 tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) + zr13 * zprorca(ji,jj,jk) * texcret 533 tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) + zr13_2 * zprorcad(ji,jj,jk) * texcret2 534 tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zr13 * zprorca(ji,jj,jk) * excret & 535 + zr13_2 * zprorcad(ji,jj,jk) * excret2 536 #endif 410 537 END DO 411 538 END DO … … 548 675 CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt ) 549 676 CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 677 #ifdef key_c13 678 CALL wrk_dealloc( jpi, jpj, jpk, za_g, za_dic, zh2co3, z_co3) 679 #endif 550 680 ! 551 681 IF( nn_timing == 1 ) CALL timing_stop('p4z_prod') … … 567 697 ! 568 698 NAMELIST/nampisprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2, & 699 #if defined key_n15 700 & e15n_prod, & 701 #endif 702 #if defined key_c13 703 & e13c_min, e13c_max, & 704 #endif 705 569 706 & chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 707 570 708 INTEGER :: ios ! Local integer output status for namelist read 571 709 !!---------------------------------------------------------------------- … … 599 737 WRITE(numout,*) ' Maximum Fe/C in nanophytoplankton fecnm =', fecnm 600 738 WRITE(numout,*) ' Minimum Fe/C in diatoms fecdm =', fecdm 739 #if defined key_n15 740 WRITE(numout,*) ' N15 assimilation fractionation e15n_prod =', e15n_prod 741 #endif 742 #if defined key_c13 743 WRITE(numout,*) ' C13 assimilation fractionation min e13c_min =', e13c_min 744 WRITE(numout,*) ' C13 assimilation fractionation max e13c_max =', e13c_max 745 #endif 746 601 747 ENDIF 602 748 ! … … 629 775 630 776 !!====================================================================== 631 END MODULE p4zprod777 END MODULE p4zprod -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
r5385 r6534 45 45 REAL(wp), PUBLIC :: xsilab !: fraction of labile biogenic silica 46 46 REAL(wp), PUBLIC :: oxymin !: halk saturation constant for anoxia 47 47 #if defined key_n15 48 REAL(wp), PUBLIC :: e15n_denit !: N15 denitrification fractionation 49 REAL(wp), PUBLIC :: e15n_nit !: N15 nitrification fractionation 50 #endif 48 51 49 52 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: denitr !: denitrification array … … 141 144 ! ----------------------------------------------------- 142 145 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 143 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn) / o2ut, zolimit )146 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - 1.E-8 ) / o2ut, zolimit ) 144 147 ! Ammonification in suboxic waters with denitrification 145 148 ! ------------------------------------------------------- 146 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn) / rdenit, &149 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - 1.E-8 ) / rdenit, & 147 150 & zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) ) 148 151 ! … … 169 172 ! Update of the tracers trends 170 173 ! ---------------------------- 174 denitnh4(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - 1.E-8 ) / rdenita, & 175 & denitnh4(ji,jj,jk) ) 176 denitnh4(ji,jj,jk) = MAX(0., denitnh4(ji,jj,jk) ) 177 171 178 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - denitnh4(ji,jj,jk) 172 179 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk) 173 180 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 174 181 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 182 # if defined key_n15 183 tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) - ( zonitr * (1. - e15n_nit / 1000.) + denitnh4(ji,jj,jk) ) & 184 & * trb(ji,jj,jk,jp15nh4) / (trb(ji,jj,jk,jpnh4) + rtrn ) 185 tra(ji,jj,jk,jp15no3) = tra(ji,jj,jk,jp15no3) + zonitr * (1. - e15n_nit / 1000.) & 186 & * trb(ji,jj,jk,jp15nh4) / (trb(ji,jj,jk,jpnh4) + rtrn ) & 187 & - rdenita * denitnh4(ji,jj,jk) * trb(ji,jj,jk,jp15no3) / (trb(ji,jj,jk,jpno3) + rtrn ) 188 # endif 175 189 END DO 176 190 END DO … … 242 256 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem 243 257 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 258 #if defined key_n15 259 tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zorem * trb(ji,jj,jk,jp15poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 260 #endif 261 #if defined key_c13 262 tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zorem * trb(ji,jj,jk,jp13poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 263 #endif 264 244 265 #if defined key_kriest 245 266 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem … … 247 268 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer 248 269 #else 249 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem 250 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2 270 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem 271 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2 251 272 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer 252 273 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2 274 #if defined key_n15 275 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + zorem2 * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) & 276 - zorem * trb(ji,jj,jk,jp15poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 277 tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) - zorem2 * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) 278 #endif 279 #if defined key_c13 280 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + zorem2 * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) & 281 - zorem * trb(ji,jj,jk,jp13poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 282 tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) - zorem2 * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) 283 #endif 253 284 #endif 254 285 … … 313 344 tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) 314 345 tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) ) 346 #if defined key_n15 347 tra(:,:,jk,jp15nh4) = tra(:,:,jk,jp15nh4) + ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 348 * trb(:,:,jk,jp15doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 349 tra(:,:,jk,jp15no3) = tra(:,:,jk,jp15no3) - (1. - e15n_denit / 1000.) * denitr (:,:,jk) * rdenit & 350 * trb(:,:,jk,jp15no3) / ( trb(:,:,jk,jpno3) + rtrn ) 351 tra(:,:,jk,jp15doc) = tra(:,:,jk,jp15doc) - ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 352 * trb(:,:,jk,jp15doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 353 #endif 354 #if defined key_c13 355 tra(:,:,jk,jp13dic) = tra(:,:,jk,jp13dic) + ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 356 * trb(:,:,jk,jp13doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 357 tra(:,:,jk,jp13doc) = tra(:,:,jk,jp13doc) - ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 358 * trb(:,:,jk,jp13doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 359 #endif 360 315 361 END DO 316 362 … … 357 403 !! 358 404 !!---------------------------------------------------------------------- 405 #if ! defined key_n15 359 406 NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab, & 360 407 & oxymin 408 #else 409 NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab, & 410 & oxymin, e15n_denit, e15n_nit 411 #endif 361 412 INTEGER :: ios ! Local integer output status for namelist read 362 413 … … 381 432 WRITE(numout,*) ' NH4 nitrification rate nitrif =', nitrif 382 433 WRITE(numout,*) ' halk saturation constant for anoxia oxymin =', oxymin 434 #if defined key_n15 435 WRITE(numout,*) ' N15 denitrification fractionation e15n_denit =', e15n_denit 436 WRITE(numout,*) ' N15 nitrification fractionation e15n_nit =', e15n_nit 437 #endif 383 438 ENDIF 384 439 ! -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r6204 r6534 42 42 REAL(wp), PUBLIC :: concfediaz !: Fe half-saturation Cste for diazotrophs 43 43 REAL(wp) :: hratio !: Fe:3He ratio assumed for vent iron supply 44 #ifdef key_n15 45 REAL(wp), PUBLIC :: e15n_bdenit !: N15 Benthic denit fractionation 46 REAL(wp), PUBLIC :: d15n_nfix !: dN15 Nfix 47 REAL(wp), PUBLIC :: d15n_river !: dN15 river input 48 REAL(wp), PUBLIC :: d15n_depo !: dN15 depo 49 #endif 50 #ifdef key_c13 51 REAL(wp), PUBLIC :: d13c_rivdoc !: dC13 river doc input 52 REAL(wp), PUBLIC :: d13c_rivdic !: dC13 river dic input 53 #endif 54 44 55 45 56 LOGICAL , PUBLIC :: ll_sbc … … 204 215 TYPE(FLD_N) :: sn_riverdoc, sn_riverdic, sn_riverdsi ! informations about the fields to be read 205 216 TYPE(FLD_N) :: sn_riverdin, sn_riverdon, sn_riverdip, sn_riverdop 206 !217 207 218 NAMELIST/nampissbc/cn_dir, sn_dust, sn_solub, sn_riverdic, sn_riverdoc, sn_riverdin, sn_riverdon, & 208 219 & sn_riverdip, sn_riverdop, sn_riverdsi, sn_ndepo, sn_ironsed, sn_hydrofe, & 209 220 & ln_dust, ln_solub, ln_river, ln_ndepo, ln_ironsed, ln_ironice, ln_hydrofe, & 221 #ifdef key_n15 222 & e15n_bdenit, d15n_nfix, d15n_river, d15n_depo, & 223 #endif 224 #ifdef key_c13 225 & d13c_rivdic, d13c_rivdoc, & 226 #endif 210 227 & sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, hratio 228 211 229 !!---------------------------------------------------------------------- 212 230 ! … … 252 270 WRITE(numout,*) ' fe half-saturation cste for diazotrophs concfediaz = ', concfediaz 253 271 WRITE(numout,*) ' Fe to 3He ratio assumed for vent iron supply hratio = ', hratio 272 #ifdef key_n15 273 WRITE(numout,*) ' N15 Benthic denit fractionation e15n_bdenit = ', e15n_bdenit 274 WRITE(numout,*) ' dN15 nfix d15n_nfix = ', d15n_nfix 275 WRITE(numout,*) ' dN15 river input d15n_river = ', d15n_river 276 WRITE(numout,*) ' dN15 depo d15n_depo = ', d15n_depo 277 #endif 278 #ifdef key_c13 279 WRITE(numout,*) ' dC13 river dic input d13c_rivdic = ', d13c_rivdic 280 WRITE(numout,*) ' dC13 river doc input d13c_rivdoc = ', d13c_rivdoc 281 #endif 254 282 END IF 255 283 … … 519 547 520 548 !!====================================================================== 521 END MODULE p4zsbc549 END MODULE p4zsbc -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r6315 r6534 69 69 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 70 70 REAL(wp) :: ztrfer, ztrpo4, zwdust, zlight 71 REAL(wp) :: zwstpoc15, zwstpoc13 72 71 73 ! 72 74 CHARACTER (len=25) :: charout … … 175 177 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + rivdic(ji,jj) * rfact2 176 178 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 179 #if defined key_n15 180 tra(ji,jj,jk,jp15no3) = tra(ji,jj,jk,jp15no3) + ( 1. + d15n_river / 1000. ) * rivdin(ji,jj) * rfact2 181 #endif 182 #if defined key_c13 183 tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + ( 1. + d13c_rivdic / 1000. ) * rivdic(ji,jj) * rfact2 184 #endif 185 177 186 ENDDO 178 187 ENDDO … … 185 194 tra(:,:,1,jpno3) = tra(:,:,1,jpno3) + nitdep(:,:) * rfact2 186 195 tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * nitdep(:,:) * rfact2 196 #if defined key_n15 197 tra(:,:,1,jp15no3) = tra(:,:,1,jp15no3) + (1. + d15n_depo / 1000.) * nitdep(:,:) * rfact2 198 #endif 187 199 ENDIF 188 200 … … 305 317 zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss / zdep 306 318 zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss / zdep 319 #if defined key_c13 320 tra(ji,jj,ikt,jp13dic) = tra(ji,jj,ikt,jp13dic) + zcaloss * zrivalk & 321 & * trb(ji,jj,ikt,jp13cal) / ( trb(ji,jj,ikt,jpcal) + rtrn) 322 tra(ji,jj,ikt,jp13cal) = tra(ji,jj,ikt,jp13cal) - zcaloss * trb(ji,jj,ikt,jp13cal) & 323 & / ( trb(ji,jj,ikt,jpcal) + rtrn) 324 #endif 325 307 326 #endif 308 327 END DO … … 322 341 tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3 323 342 zwstpoc = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3 343 #if defined key_n15 344 tra(ji,jj,ikt,jp15goc) = tra(ji,jj,ikt,jp15goc) - trb(ji,jj,ikt,jp15goc) * zws4 345 tra(ji,jj,ikt,jp15poc) = tra(ji,jj,ikt,jp15poc) - trb(ji,jj,ikt,jp15poc) * zws3 346 zwstpoc15 = trb(ji,jj,ikt,jp15goc) * zws4 + trb(ji,jj,ikt,jp15poc) * zws3 347 #endif 348 #if defined key_c13 349 tra(ji,jj,ikt,jp13goc) = tra(ji,jj,ikt,jp13goc) - trb(ji,jj,ikt,jp13goc) * zws4 350 tra(ji,jj,ikt,jp13poc) = tra(ji,jj,ikt,jp13poc) - trb(ji,jj,ikt,jp13poc) * zws3 351 zwstpoc13 = trb(ji,jj,ikt,jp13goc) * zws4 + trb(ji,jj,ikt,jp13poc) * zws3 352 #endif 353 324 354 # else 325 355 tra(ji,jj,ikt,jpnum) = tra(ji,jj,ikt,jpnum) - trb(ji,jj,ikt,jpnum) * zws4 … … 345 375 sdenit(ji,jj) = rdenit * zpdenit / zdep 346 376 zsedc(ji,jj) = (1. - zrivno3) * zwstpoc / zdep 377 #if defined key_n15 378 tra(ji,jj,ikt,jp15doc) = tra(ji,jj,ikt,jp15doc) + zwstpoc15 * zrivno3 & 379 - zolimit * zwstpoc15 / ( zwstpoc + rtrn ) & 380 & - (zpdenit + zdenitt) * zwstpoc15 / ( zwstpoc + rtrn ) 381 tra(ji,jj,ikt,jp15nh4) = tra(ji,jj,ikt,jp15nh4) + zolimit * zwstpoc15 / ( zwstpoc + rtrn ) & 382 & + (zpdenit + zdenitt) * zwstpoc15 / ( zwstpoc + rtrn ) 383 tra(ji,jj,ikt,jp15no3) = tra(ji,jj,ikt,jp15no3) - (1. - e15n_bdenit / 1000.) * rdenit * (zpdenit + zdenitt) & 384 & * trb(ji,jj,ikt,jp15no3) / ( trb(ji,jj,ikt,jpno3) + rtrn ) 385 #endif 386 #if defined key_c13 387 tra(ji,jj,ikt,jp13doc) = tra(ji,jj,ikt,jp13doc) + zwstpoc13 * zrivno3 & 388 - zolimit * zwstpoc13 / ( zwstpoc + rtrn ) & 389 & - (zpdenit + zdenitt) * zwstpoc13 / ( zwstpoc + rtrn ) 390 tra(ji,jj,ikt,jp13dic) = tra(ji,jj,ikt,jp13dic) + zolimit * zwstpoc13 / ( zwstpoc + rtrn ) & 391 & + (zpdenit + zdenitt) * zwstpoc13 / ( zwstpoc + rtrn ) 392 #endif 347 393 #endif 348 394 END DO … … 385 431 & * 0.002 * trb(ji,jj,jk,jpdoc) * xstep 386 432 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * xstep 433 #if defined key_n15 434 tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) + (1. + d15n_nfix / 1000.) * zfact 435 #endif 387 436 END DO 388 437 END DO -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
r6204 r6534 40 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sinkfer2 !: Big iron sinking fluxes 41 41 #endif 42 42 #if defined key_n15 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sink15n, sink15n2 !: N15 POC sinking fluxes 44 #endif 45 #if defined key_c13 46 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sink13c, sink13c2, sink13cal !: C13 POC sinking fluxes 47 #endif 43 48 INTEGER :: ik100 44 49 … … 94 99 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 95 100 REAL(wp) :: zfact, zwsmax, zmax, zstep 101 #if defined key_n15 102 REAL(wp) :: zagg_15, zratdoc_15 103 #endif 104 #if defined key_c13 105 REAL(wp) :: zagg_13, zratdoc_13 106 #endif 96 107 CHARACTER (len=25) :: charout 97 108 REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d … … 172 183 sinksil (:,:,:) = 0.e0 173 184 sinkfer2(:,:,:) = 0.e0 174 175 185 ! Compute the sedimentation term using p4zsink2 for all the sinking particles 176 186 ! ----------------------------------------------------- … … 187 197 END DO 188 198 199 #if defined key_n15 200 sink15n (:,:,:) = 0.e0 201 sink15n2(:,:,:) = 0.e0 202 DO jit = 1, iiter1 203 CALL p4z_sink2( wsbio3, sink15n , jp15poc, iiter1 ) 204 END DO 205 DO jit = 1, iiter2 206 CALL p4z_sink2( wsbio4, sink15n2, jp15goc, iiter2 ) 207 END DO 208 #endif 209 #ifdef key_c13 210 sink13c (:,:,:) = 0.e0 211 sink13c2(:,:,:) = 0.e0 212 sink13cal(:,:,:) = 0.e0 213 DO jit = 1, iiter1 214 CALL p4z_sink2( wsbio3, sink13c , jp13poc, iiter1 ) 215 END DO 216 DO jit = 1, iiter2 217 CALL p4z_sink2( wsbio4, sink13c2, jp13goc, iiter2 ) 218 CALL p4z_sink2( wscal , sink13cal,jp13cal, iiter2 ) 219 END DO 220 #endif 189 221 ! Exchange between organic matter compartments due to coagulation/disaggregation 190 222 ! --------------------------------------------------- … … 230 262 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 231 263 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 264 #if defined key_n15 265 zagg_15 = zagg * trb(ji,jj,jk,jp15poc) / ( trb(ji,jj,jk,jppoc) + rtrn ) 266 zratdoc_15 = trb(ji,jj,jk,jp15doc)/ ( trb(ji,jj,jk,jpdoc) + rtrn ) 267 tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) - zagg_15 + ( zaggdoc + zaggdoc3 ) * zratdoc_15 268 tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + zagg_15 + zaggdoc2 * zratdoc_15 269 tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) - ( zaggdoc + zaggdoc2 + zaggdoc3 ) & 270 & * zratdoc_15 271 #endif 272 #if defined key_c13 273 zagg_13 = zagg * trb(ji,jj,jk,jp13poc) / ( trb(ji,jj,jk,jppoc) + rtrn ) 274 zratdoc_13 = trb(ji,jj,jk,jp13doc)/ ( trb(ji,jj,jk,jpdoc) + rtrn) 275 tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) - zagg_13 + ( zaggdoc + zaggdoc3 ) * zratdoc_13 276 tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + zagg_13 + zaggdoc2 * zratdoc_13 277 tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) - ( zaggdoc + zaggdoc2 + zaggdoc3 ) & 278 & * zratdoc_13 279 #endif 280 232 281 ! 233 282 END DO … … 891 940 ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4 (jpi,jpj,jpk) , wscal(jpi,jpj,jpk) , & 892 941 & sinking(jpi,jpj,jpk) , sinking2(jpi,jpj,jpk) , & 893 & sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk) , & 942 & sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk) , & 943 #if defined key_n15 944 & sink15n(jpi,jpj,jpk) , sink15n2(jpi,jpj,jpk) , & 945 #endif 946 #if defined key_c13 947 & sink13c(jpi,jpj,jpk) , sink13c2(jpi,jpj,jpk), sink13cal(jpi,jpj,jpk) , & 948 #endif 894 949 #if defined key_kriest 895 950 & xnumm(jpk) , & … … 913 968 914 969 !!====================================================================== 915 END MODULE p4zsink970 END MODULE p4zsink -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r6420 r6534 71 71 INTEGER :: ji, jj, jk, jnt, jn, jl 72 72 REAL(wp) :: ztra 73 #if defined key_n15 74 REAL(wp) :: zn15min, zn15max 75 #endif 73 76 #if defined key_kriest 74 77 REAL(wp) :: zcoef1, zcoef2 … … 133 136 ! 134 137 CALL p4z_bio( kt, jnt ) ! Biology 138 CALL p4z_sed( kt, jnt ) ! Sedimentation 135 139 CALL p4z_lys( kt, jnt ) ! Compute CaCO3 saturation 136 CALL p4z_sed( kt, jnt ) ! Surface and Bottom boundary conditions137 140 CALL p4z_flx( kt, jnt ) ! Compute surface fluxes 138 !139 141 xnegtr(:,:,:) = 1.e0 140 142 DO jn = jp_pcs0, jp_pcs1 … … 153 155 ! ! 154 156 DO jn = jp_pcs0, jp_pcs1 155 trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) 157 trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) * tmask(:,:,:) 156 158 END DO 157 159 ! … … 159 161 tra(:,:,:,jn) = 0._wp 160 162 END DO 161 ! 163 ! 164 #if defined key_n15 165 zn15min = -30. 166 zn15max = 30. 167 ! 168 trb(:,:,:,jp15no3) = MIN(trb(:,:,:,jp15no3) , ( (zn15max/1000.) + 1.)*trb(:,:,:,jpno3) ) 169 trb(:,:,:,jp15no3) = MAX(trb(:,:,:,jp15no3) , ( (zn15min/1000.) + 1.)*trb(:,:,:,jpno3) ) 170 #endif 171 ! 162 172 IF( ln_top_euler ) THEN 163 173 DO jn = jp_pcs0, jp_pcs1 … … 166 176 ENDIF 167 177 END DO 168 178 ! 169 179 #if defined key_kriest 170 180 ! -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90
r5385 r6534 75 75 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 23 !: Ammonium Concentration 76 76 77 77 78 #elif defined key_pisces 78 79 !!--------------------------------------------------------------------- … … 82 83 LOGICAL, PUBLIC, PARAMETER :: lk_p4z = .TRUE. !: p4z flag 83 84 LOGICAL, PUBLIC, PARAMETER :: lk_kriest = .FALSE. !: Kriest flag 84 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 24 !: number of PISCES passive tracers85 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 13 !: additional 2d output86 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 11 !: additional 3d output87 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES88 85 89 86 ! assign an index in trc arrays for each LOBSTER prognostic variables 90 87 ! WARNING: be carefull about the order when reading the restart 91 88 ! !!gm this warning should be obsolet with IOM 89 #if ! defined key_n15 && ! defined key_c13 90 LOGICAL, PUBLIC, PARAMETER :: lk_n15 = .FALSE. !: N15 flag 91 LOGICAL, PUBLIC, PARAMETER :: lk_c13 = .FALSE. !: C13 flag 92 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 24 !: number of PISCES passive tracers 93 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 20 !: additional 2d output 94 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 14 !: additional 3d output 95 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES 96 #endif 92 97 INTEGER, PUBLIC, PARAMETER :: jpdic = 1 !: dissolved inoganic carbon concentration 93 98 INTEGER, PUBLIC, PARAMETER :: jptal = 2 !: total alkalinity … … 115 120 INTEGER, PUBLIC, PARAMETER :: jpnh4 = 24 !: Ammonium Concentration 116 121 122 #if defined key_n15 && defined key_c13 123 LOGICAL, PUBLIC, PARAMETER :: lk_n15 = .TRUE. !: N15 flag 124 LOGICAL, PUBLIC, PARAMETER :: lk_c13 = .TRUE. !: C13 flag 125 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 42 !: number of PISCES passive tracers 126 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 20 !: additional 2d output 127 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 14 !: additional 3d output 128 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES 129 130 INTEGER, PUBLIC, PARAMETER :: jp15poc = 25 !: 15N small particulate organic concentration 131 INTEGER, PUBLIC, PARAMETER :: jp15phy = 26 !: 15N phytoplancton concentration 132 INTEGER, PUBLIC, PARAMETER :: jp15zoo = 27 !: 15N zooplancton concentration 133 INTEGER, PUBLIC, PARAMETER :: jp15doc = 28 !: 15N dissolved organic carbon concentration 134 INTEGER, PUBLIC, PARAMETER :: jp15dia = 29 !: 15N Diatoms Concentration 135 INTEGER, PUBLIC, PARAMETER :: jp15mes = 30 !: 15N Mesozooplankton Concentration 136 INTEGER, PUBLIC, PARAMETER :: jp15goc = 31 !: 15N big particulate organic concentration 137 INTEGER, PUBLIC, PARAMETER :: jp15no3 = 32 !: 15N Nitrates Concentration 138 INTEGER, PUBLIC, PARAMETER :: jp15nh4 = 33 !: 15N Ammonium Concentration 139 140 INTEGER, PUBLIC, PARAMETER :: jp13dic = 34 !: 13C dissolved inorganic concentration 141 INTEGER, PUBLIC, PARAMETER :: jp13cal = 35 !: 13C calcite Concentration 142 INTEGER, PUBLIC, PARAMETER :: jp13poc = 36 !: 13C small particulate organic concentration 143 INTEGER, PUBLIC, PARAMETER :: jp13phy = 37 !: 13C phytoplancton concentration 144 INTEGER, PUBLIC, PARAMETER :: jp13zoo = 38 !: 13C zooplancton concentration 145 INTEGER, PUBLIC, PARAMETER :: jp13doc = 39 !: 13C dissolved organic carbon concentration 146 INTEGER, PUBLIC, PARAMETER :: jp13dia = 40 !: 13C Diatoms Concentration 147 INTEGER, PUBLIC, PARAMETER :: jp13mes = 41 !: 13C Mesozooplankton Concentration 148 INTEGER, PUBLIC, PARAMETER :: jp13goc = 42 !: 13C big particulate organic concentration 149 #endif 150 #if defined key_n15 && ! defined key_c13 151 LOGICAL, PUBLIC, PARAMETER :: lk_n15 = .TRUE. !: N15 flag 152 LOGICAL, PUBLIC, PARAMETER :: lk_c13 = .FALSE. !: C13 flag 153 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 33 !: number of PISCES passive tracers 154 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 20 !: additional 2d output 155 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 14 !: additional 3d output 156 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES 157 158 INTEGER, PUBLIC, PARAMETER :: jp15poc = 25 !: 15N small particulate organic phosphate concentration 159 INTEGER, PUBLIC, PARAMETER :: jp15phy = 26 !: 15N phytoplancton concentration 160 INTEGER, PUBLIC, PARAMETER :: jp15zoo = 27 !: 15N zooplancton concentration 161 INTEGER, PUBLIC, PARAMETER :: jp15doc = 28 !: 15N dissolved organic carbon concentration 162 INTEGER, PUBLIC, PARAMETER :: jp15dia = 29 !: 15N Diatoms Concentration 163 INTEGER, PUBLIC, PARAMETER :: jp15mes = 30 !: 15N Mesozooplankton Concentration 164 INTEGER, PUBLIC, PARAMETER :: jp15goc = 31 !: 15N big particulate organic phosphate concentration 165 INTEGER, PUBLIC, PARAMETER :: jp15no3 = 32 !: 15N Nitrates Concentration 166 INTEGER, PUBLIC, PARAMETER :: jp15nh4 = 33 !: 15N Ammonium Concentration 167 #endif 168 #if ! defined key_n15 && defined key_c13 169 LOGICAL, PUBLIC, PARAMETER :: lk_n15 = .FALSE. !: N15 flag 170 LOGICAL, PUBLIC, PARAMETER :: lk_c13 = .TRUE. !: C13 flag 171 INTEGER, PUBLIC, PARAMETER :: jp_pisces = 33 !: number of PISCES passive tracers 172 INTEGER, PUBLIC, PARAMETER :: jp_pisces_2d = 20 !: additional 2d output 173 INTEGER, PUBLIC, PARAMETER :: jp_pisces_3d = 14 !: additional 3d output 174 INTEGER, PUBLIC, PARAMETER :: jp_pisces_trd = 1 !: number of sms trends for PISCES 175 176 INTEGER, PUBLIC, PARAMETER :: jp13dic = 25 !: 13C dissolved inorganic concentration 177 INTEGER, PUBLIC, PARAMETER :: jp13cal = 26 !: 13C calcite Concentration 178 INTEGER, PUBLIC, PARAMETER :: jp13poc = 27 !: 13C small particulate organic concentration 179 INTEGER, PUBLIC, PARAMETER :: jp13phy = 28 !: 13C phytoplancton concentration 180 INTEGER, PUBLIC, PARAMETER :: jp13zoo = 29 !: 13C zooplancton concentration 181 INTEGER, PUBLIC, PARAMETER :: jp13doc = 30 !: 13C dissolved organic carbon concentration 182 INTEGER, PUBLIC, PARAMETER :: jp13dia = 31 !: 13C Diatoms Concentration 183 INTEGER, PUBLIC, PARAMETER :: jp13mes = 32 !: 13C Mesozooplankton Concentration 184 INTEGER, PUBLIC, PARAMETER :: jp13goc = 33 !: 13C big particulate organic concentration 185 #endif 186 187 #endif 188 117 189 #else 118 190 !!--------------------------------------------------------------------- -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90
r6324 r6534 159 159 END IF 160 160 161 #if defined key_n15 162 trn(:,:,:,jp15doc) = trn(:,:,:,jpdoc) 163 trn(:,:,:,jp15poc) = trn(:,:,:,jppoc) 164 trn(:,:,:,jp15goc) = trn(:,:,:,jpgoc) 165 trn(:,:,:,jp15phy) = trn(:,:,:,jpphy) 166 trn(:,:,:,jp15dia) = trn(:,:,:,jpdia) 167 trn(:,:,:,jp15zoo) = trn(:,:,:,jpzoo) 168 trn(:,:,:,jp15mes) = trn(:,:,:,jpmes) 169 trn(:,:,:,jp15no3) = trn(:,:,:,jpno3) 170 trn(:,:,:,jp15nh4) = trn(:,:,:,jpnh4) 171 #endif 172 #if defined key_c13 173 trn(:,:,:,jp13doc) = trn(:,:,:,jpdoc) 174 trn(:,:,:,jp13poc) = trn(:,:,:,jppoc) 175 trn(:,:,:,jp13goc) = trn(:,:,:,jpgoc) 176 trn(:,:,:,jp13phy) = trn(:,:,:,jpphy) 177 trn(:,:,:,jp13dia) = trn(:,:,:,jpdia) 178 trn(:,:,:,jp13zoo) = trn(:,:,:,jpzoo) 179 trn(:,:,:,jp13mes) = trn(:,:,:,jpmes) 180 trn(:,:,:,jp13dic) = trn(:,:,:,jpdic) 181 trn(:,:,:,jp13cal) = trn(:,:,:,jpcal) 182 #endif 183 161 184 162 185 CALL p4z_sink_init ! vertical flux of particulate organic matter -
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90
r4996 r6534 47 47 zfact = 1.0e+6 48 48 IF( jn == jpno3 .OR. jn == jpnh4 ) zfact = rno3 * 1.0e+6 49 #if defined key_n15 50 IF( jn == jp15no3 .OR. jn == jp15nh4 ) zfact = rno3 * 1.0e+6 51 #endif 49 52 IF( jn == jppo4 ) zfact = po4r * 1.0e+6 50 53 cltra = TRIM( ctrcnm(jn) ) ! short title for tracer
Note: See TracChangeset
for help on using the changeset viewer.