Changeset 4158 for LMDZ6/trunk/libf/phylmdiso
- Timestamp:
- May 19, 2022, 10:47:23 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
r4155 r4158 11 11 !--- Contains all isotopic variables + their initialization 12 12 !--- Isotopes-specific routines are in isotopes_routines_mod to avoid circular dependencies with isotopes_verif_mod. 13 14 LOGICAL, PARAMETER :: lOldCode=.FALSE.15 13 16 14 !--- Isotopes indices (in [1,niso] ; non-existing => 0 index) … … 165 163 CALL msg('219: entree', modname) 166 164 167 !--- Memory allocations168 IF(lOldCode) THEN169 ALLOCATE(talph1(niso), tkcin0(niso), talps1(niso), tnat(niso))170 ALLOCATE(talph2(niso), tkcin1(niso), talps2(niso), toce(niso))171 ALLOCATE(talph3(niso), tkcin2(niso), tdifrel(niso), tcorr(niso))172 ALLOCATE(alpha_liq_sol(niso), Rdefault(niso), Rmethox(niso))173 END IF174 175 176 165 !-------------------------------------------------------------- 177 166 ! General: … … 231 220 CALL get_in('lat_max_albedo', lat_max_albedo, 100.) 232 221 END IF 233 IF(lOldCode) &234 CALL get_in('deltaO18_oce', deltaO18_oce, 0.0)235 222 deltaO18_oce=0.0 236 223 CALL get_in('deltaP_BL', deltaP_BL, 10.0) … … 306 293 ! Parameters that depend on the nature of water isotopes: 307 294 !-------------------------------------------------------------- 308 309 !===========================================================================================================================310 IF(lOldCode) THEN311 !===========================================================================================================================312 313 ! Local constants314 fac_enrichoce18 = 0.0005 ! Then: tcorO18 = 1 + fac_enrichoce18315 ! tcorD = 1 + fac_enrichoce18*8316 ! tcorO17 = 1 + fac_enrichoce18*0.528317 alpha_liq_sol_O18 = 1.00291 ! From Lehmann & Siegenthaler, 1991,318 ! Journal of Glaciology, vol 37, p 23319 talph1_O18 = 1137. ; talph2_O18 = -0.4156 ; talph3_O18 = -2.0667E-3320 talps1_O18 = 11.839 ; talps2_O18 = -0.028244321 tkcin0_O18 = 0.006 ; tkcin1_O18 = 0.000285 ; tkcin2_O18 = 0.00082322 tdifrel_O18 = 1./0.9723323 324 ! ln(alphaeq) ratio between O18 and O17325 fac_coeff_eq17_liq = 0.529 ! From Amaelle326 !fac_coeff_eq17_ice = 0.528 ! slope MWL327 fac_coeff_eq17_ice = 0.529328 329 !--- Kinetic factor for surface evaporation:330 ! (cf: kcin = tkcin0 if |V|<tv0cin331 ! kcin = tkcin1*|Vsurf| + tkcin2 if |V|>tv0cin )332 ! (Rq: formula discontinuous for |V|=tv0cin... )333 334 DO ixt = 1, niso335 sxt=int2str(ixt)336 CALL msg('80: ixt='//TRIM(int2str(ixt)),modname)337 338 Rdefault(ixt) = 0.0339 IF(ixt == iso_HTO) THEN !=== H[3]HO340 tdifrel(ixt) = 1./0.968341 tkcin0(ixt) = 0.01056342 tkcin1(ixt) = 0.0005016343 tkcin2(ixt) = 0.0014432344 tnat (ixt) = 0.345 toce (ixt) = 4.0E-19 ! Ratio T/H = 0.2 TU, Dreisigacker and Roether 1978346 !toce (ixt) = 2.2222E-8 ! Corrected by Alex Cauquoin347 !toce (ixt) = 1.0E-18 ! Ratio 3H/1H ocean348 tcorr (ixt) = 1.349 talph1(ixt) = 46480. ; talph2(ixt) = -103.87 ; talph3(ixt) = 0.350 talps1(ixt) = 46480. ; talps2(ixt) = -103.87351 alpha_liq_sol(ixt) = 1.352 Rmethox(ixt) = 0.0353 ELSE IF(ixt == iso_O17) THEN !=== H2[17]O354 tdifrel(ixt)=1./0.98555 ! Used in 1D and in LdG's model355 !tdifrel(ixt)=1./0.985452 ! From Amaelle356 !fac_kcin=0.5145 ! From Amaelle357 fac_kcin= (tdifrel(ixt)-1.0)/(tdifrel_O18-1.0)358 tkcin0(ixt) = tkcin0_O18*fac_kcin359 tkcin1(ixt) = tkcin1_O18*fac_kcin360 tkcin2(ixt) = tkcin2_O18*fac_kcin361 tnat (ixt) = 0.004/100. ! O17 = 0.004% of oxygen362 pente_MWL=0.528363 toce (ixt) = tnat(ixt)*(1.0+deltaO18_oce/1000.0)**pente_MWL364 tcorr (ixt) = 1.0+fac_enrichoce18*pente_MWL ! From Amaelle365 talph1(ixt) = talph1_O18 ; talph2(ixt) = talph2_O18 ; talph3(ixt) = talph3_O18366 talps1(ixt) = talps1_O18 ; talps2(ixt) = talps2_O18367 alpha_liq_sol(ixt) = (alpha_liq_sol_O18)**fac_coeff_eq17_liq368 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*(-3.15/1000.0+1.0)369 Rmethox(ixt) = (230./1000.+1.)*tnat(ixt) ! Zahn et al 2006370 ELSE IF(ixt == iso_O18) THEN !=== H2[18]O371 tdifrel(ixt) = tdifrel_O18372 tkcin0(ixt) = tkcin0_O18373 tkcin1(ixt) = tkcin1_O18374 tkcin2(ixt) = tkcin2_O18375 tnat (ixt) = 2005.2E-6376 toce (ixt) = tnat(ixt)*(1.0+deltaO18_oce/1000.0)377 tcorr (ixt) = 1.0+fac_enrichoce18378 talph1(ixt) = talph1_O18 ; talph2(ixt) = talph2_O18 ; talph3(ixt) = talph3_O18379 talps1(ixt) = talps1_O18 ; talps2(ixt) = talps2_O18380 alpha_liq_sol(ixt) = alpha_liq_sol_O18381 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*(-6.0/1000.0+1.0)382 Rmethox(ixt) = (130./1000.+1.)*tnat(ixt) ! Zahn et al 2006383 ELSE IF(ixt == iso_HDO) THEN !=== H[2]HO384 tdifrel(ixt) = 1./0.9755385 !fac_kcin=0.88386 fac_kcin= (tdifrel(ixt)-1.0)/(tdifrel_O18-1.0)387 tkcin0(ixt) = tkcin0_O18*fac_kcin388 tkcin1(ixt) = tkcin1_O18*fac_kcin389 tkcin2(ixt) = tkcin2_O18*fac_kcin390 tnat (ixt) = 155.76E-6391 pente_MWL = 8.0392 toce (ixt) = tnat(ixt)*(1.0+pente_MWL*deltaO18_oce/1000.0)393 tcorr (ixt) = 1.0+fac_enrichoce18*pente_MWL394 talph1(ixt) = 24844. ; talph2(ixt) = -76.248 ; talph3(ixt) = 52.612E-3395 talps1(ixt) = 16288. ; talps2(ixt) = -0.0934396 !alpha_liq_sol(ixt)=1.0192 ZX ! From Weston, Ralph, 1955397 alpha_liq_sol(ixt)=1.0212 ! From Lehmann & Siegenthaler, 1991,398 ! Journal of Glaciology, vol 37, p 23399 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*((-6.0*pente_MWL+10.0)/1000.0+1.0)400 Rmethox(ixt) = tnat(ixt)*(-25.0/1000.+1.) ! Zahn et al 2006401 ELSE IF(ixt == iso_eau) THEN !=== H2O[16]402 tkcin0(ixt) = 0.0403 tkcin1(ixt) = 0.0404 tkcin2(ixt) = 0.0405 tnat (ixt) = 1.406 toce (ixt)=tnat(ixt)407 tcorr (ixt) = 1.0408 tdifrel(ixt) = 1.409 talph1(ixt) = 0. ; talph2(ixt) = 0. ; talph3(ixt) = 0.410 talps1(ixt) = 0. ; talps2(ixt) = 0.411 alpha_liq_sol(ixt)=1.412 IF(Rdefault_smow) Rdefault(ixt) = tnat(ixt)*1.0413 Rmethox(ixt) = 1.0414 END IF415 END DO416 !===========================================================================================================================417 ELSE418 !===========================================================================================================================419 420 295 IF(getKey('tnat', tnat, isoName)) CALL abort_physic(modname, 'can''t get tnat', 1) 421 296 IF(getKey('toce', toce, isoName)) CALL abort_physic(modname, 'can''t get toce', 1) … … 430 305 IF(getKey('tkcin2', tkcin2, isoName)) CALL abort_physic(modname, 'can''t get tkcin2', 1) 431 306 IF(getKey('tdifrel', tdifrel, isoName)) CALL abort_physic(modname, 'can''t get tdifrel', 1) 432 DO ixt = 1, niso433 IF (ixt == iso_HTO) THEN; tdifrel(ixt) = 1./0.968434 ELSE IF(ixt == iso_HDO) THEN; tdifrel(ixt) = 1./0.9755435 ELSE IF(ixt == iso_O17) THEN; tdifrel(ixt) = 1./0.98555436 ELSE IF(ixt == iso_O18) THEN; tdifrel(ixt) = 1./0.9723437 ELSE IF(ixt == iso_eau) THEN; tdifrel(ixt) = 1.; END IF438 END DO439 307 IF(getKey('alpha_liq_sol', alpha_liq_sol, isoName)) CALL abort_physic(modname, 'can''t get alpha_liq_sol', 1) 440 308 IF(getKey('Rdefault',Rdefault,isoName)) CALL abort_physic(modname, 'can''t get Rdefault',1) 441 309 IF(getKey('Rmethox', Rmethox, isoName)) CALL abort_physic(modname, 'can''t get Rmethox', 1) 442 310 IF(.NOT.Rdefault_smow) Rdefault(:) = 0.0 443 444 !===========================================================================================================================445 END IF446 !===========================================================================================================================447 311 448 312 !--- Sensitivity test: no kinetic effect in sfc evaporation
Note: See TracChangeset
for help on using the changeset viewer.