Changeset 1996
- Timestamp:
- Sep 13, 2018, 3:27:26 PM (6 years ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/README
r1985 r1996 2638 2638 Useful: 2639 2639 - in compute_dtau_mod.F90, the writediagfi of tauref_scenario has been added 2640 2641 == 13/09/2018 == DB + EM 2642 - Turn watersat into a module. 2643 CO2 cloud updates: 2644 - compute co2 condensation tendencies in the co2 cloud scheme and pass them 2645 on to vdifc (for tests; they might not be needed) and adapt newcondens. 2646 -
trunk/LMDZ.MARS/libf/phymars/co2cloud.F
r1938 r1996 15 15 & rsedcloudco2,rhocloudco2, 16 16 & rsedcloud,rhocloud,pzlev,pdqs_sedco2, 17 & pdu,pu )17 & pdu,pu,pcondicea) 18 18 USE ioipsl_getincom, only: getin 19 19 use dimradmars_mod, only: naerkind … … 94 94 real, INTENT(IN) :: pdq(ngrid,nlay,nq) ! tendencies before condensation (kg/kg.s-1) 95 95 real, intent(OUT) :: pdqcloudco2(ngrid,nlay,nq) ! tendency due to CO2 condensation (kg/kg.s-1) 96 real, intent(OUT) :: pcondicea(ngrid,nlay) 96 97 real, intent(OUT) :: pdtcloudco2(ngrid,nlay) ! tendency on temperature due to latent heat 97 98 INTEGER, INTENT(IN) :: nq ! number of tracers … … 187 188 DOUBLE PRECISION:: rho,zu,NN,gradT !For Saturation Index computation 188 189 DOUBLE PRECISION :: SatIndex(ngrid,nlay),SatIndexmap(ngrid) 190 191 c D. BARDET : sensibility test 192 REAL :: No_dust(ngrid,nlay) 193 REAL :: Mo_dust(ngrid,nlay) 189 194 190 195 c logical :: CLFvaryingCO2 … … 433 438 ENDDO 434 439 ELSE 435 ! SatIndex not favorable for GW : leave pt untouched440 ! SatIndex not favorable for GW : leave pt untouched 436 441 pteff(ig,l)=pt(ig,l) 437 442 co2cloudfrac(ig,l)=mincloud 438 443 ENDIF ! of if(SatIndexmap... 439 444 ENDDO ! of DO ig=1,ngrid 440 ! 445 ! Totalcloud frac of the column missing here 441 446 c 442 447 c No sub-grid cloud representation (CLFvarying=false) … … 608 613 & pplay,pplev,pteff,sum_subpdt, 609 614 & pqeff,sum_subpdq,subpdqcloudco2,subpdtcloudco2, 610 & nq,tauscaling,mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2) 615 & nq,tauscaling,mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2, 616 & No_dust,Mo_dust) 617 c D. BARDET: sensibility test 618 c call WRITEDIAGFI(ngrid,"No_dust","Nombre particules de poussiere" 619 c & ,"part/kg",3,No_dust) 620 c call WRITEDIAGFI(ngrid,"Mo_dust","Masse particules de poussiere" 621 c & ,"kg/kg ",3,Mo_dust) 611 622 c ============================================================================== 612 623 c 3. Updating tendencies after cloud scheme: … … 657 668 c Compute final tendencies after time loop: 658 669 c------------------------------------------------ 670 c Condensation/sublimation tendency after clouds scheme (to replace 671 c zcondicea in newcondens.F 672 673 DO l=nlay, 1, -1 674 DO ig = 1, ngrid 675 pcondicea(ig,l) = sum_subpdq(ig,l,igcm_co2_ice) 676 & /real(imicroco2) 677 ENDDO 678 ENDDO 679 659 680 c CO2 flux at surface (kg.m-2.s-1) 660 681 do ig=1,ngrid … … 856 877 ENDDO 857 878 858 c A correction if a lot of subliming CO2 fills the 1st layer FF04/2005859 c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~860 c 861 879 c ====================================================================== 880 c A correction if a lot of subliming CO2 fills the 1st layer FF04/2005 881 c Then that should not affect the ice particle radius 882 c ====================================================================== 862 883 do ig=1,ngrid 863 884 if(pdpsrf(ig)*ptimestep.gt.0.9*(pplev(ig,1)-pplev(ig,2)))then … … 896 917 enddo 897 918 enddo 898 ! Everything modified by CO2 microphysics must be wrt co2cloudfrac919 ! Everything modified by CO2 microphysics must be wrt co2cloudfrac 899 920 IF (CLFvaryingCO2) THEN 900 921 DO l=1,nlay … … 964 985 call WRITEDIAGFI(ngrid,"mem_Mh2o_co2","H2O mass in CO2 crystal" 965 986 & ,"kg/kg ",3,mem_Mh2o_co2) 966 987 c D.BARDET: sensibility test 988 c call WRITEDIAGFI(ngrid,"No_dust","Nombre particules de poussiere" 989 c & ,"part/kg",3,No_dust) 990 c call WRITEDIAGFI(ngrid,"Mo_dust","Masse particules de poussiere" 991 c & ,"kg/kg ",3,Mo_dust) 967 992 END SUBROUTINE co2cloud 993 994 c =================================================================== 968 995 c Subroutines used to write variables of memory in start files 996 c =================================================================== 997 969 998 SUBROUTINE ini_co2cloud(ngrid,nlayer) 970 999 … … 979 1008 980 1009 END SUBROUTINE ini_co2cloud 981 1010 c ---------------------------------- 982 1011 SUBROUTINE end_co2cloud 983 1012 -
trunk/LMDZ.MARS/libf/phymars/improvedCO2clouds_mod.F
r1939 r1996 9 9 & pqeff,sum_subpdq,subpdqcloudco2,subpdtcloudco2, 10 10 & nq,tauscaling, 11 & mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2) 11 & mem_Mccn_co2,mem_Mh2o_co2,mem_Nccn_co2, 12 & No_dust,Mo_dust) 12 13 USE comcstfi_h, only: pi, g, cpp 13 USE updaterad, only: updaterice_micro, updaterice_microco2 14 USE updaterad, only: updaterice_micro, updaterice_microco2, 15 & updaterccnCO2 14 16 use tracer_mod, only: igcm_dust_mass, igcm_dust_number, rho_dust, 15 17 & igcm_h2o_ice, igcm_ccn_mass, … … 17 19 & igcm_co2, igcm_co2_ice, igcm_ccnco2_mass, 18 20 & igcm_ccnco2_number, nuiceco2_sed, 19 & rho_ice_co2 21 & rho_ice_co2,nuiceco2_ref 20 22 use conc_mod, only: mmean 21 23 use datafile_mod, only: datadir … … 84 86 REAL,INTENT(out) :: subpdtcloudco2(ngrid,nlay) ! tendency on temperature due 85 87 ! to latent heat 88 REAL,INTENT(out) :: No_dust(ngrid,nlay) 89 REAL,INTENT(out) :: Mo_dust(ngrid,nlay) 86 90 87 91 c------------------------------------------------------------------ … … 108 112 DOUBLE PRECISION pco2,psat ! Co2 vapor partial pressure (Pa) 109 113 DOUBLE PRECISION satu ! Co2 vapor saturation ratio over ice 110 DOUBLE PRECISION Mo,No,No_dust,Mo_dust 114 DOUBLE PRECISION Mo ,No 115 116 c D.BARDET: sensibility test 117 c REAL, SAVE :: No ! when sensibility test 118 c DOUBLE PRECISION No_dust(ngrid,nlay) ! when sensibility test 119 c DOUBLE PRECISION Mo_dust(ngrid,nlay) ! when sensibility test 120 111 121 DOUBLE PRECISION Rn, Rm, dev2,dev3, n_derf, m_derf 112 122 DOUBLE PRECISION mem_Mccn_co2(ngrid,nlay) ! Memory of CCN mass of H2O and dust used by CO2 … … 297 307 l3=0.0528288d0 298 308 l4=-0.000103183d0 309 310 c D.BARDET: 311 c No = 1.e10 299 312 firstcall=.false. 300 313 END IF … … 377 390 IF ( satu .ge. 1 ) THEN ! if there is condensation 378 391 379 c We do rdust computation "by hand" because we don't want to 380 c change the mininumum rdust value in updaterad... It would 381 c mess up various part of the GCM ! 382 383 rdust(ig,l)= zq(ig,l,igcm_dust_mass) 384 & *0.75/(pi*rho_dust 385 & * zq(ig,l,igcm_dust_number)) 386 rdust(ig,l)= rdust(ig,l)**(1./3.) 387 if (zq(ig,l,igcm_dust_mass)*tauscaling(ig) .le. 1.e-20 388 & .or. zq(ig,l,igcm_dust_number)*tauscaling(ig) .le.1 389 & .or. rdust(ig,l) .le. 1.e-9) then 390 rdust(ig,l)=1.e-9 391 endif 392 rdust(ig,l)=min(5.e-4,rdust(ig,l)) 392 call updaterccnCO2(zq(ig,l,igcm_dust_mass), 393 & zq(ig,l,igcm_dust_number),rdust(ig,l),tauscaling(ig)) 394 395 c D.BARDET: sensibility test 396 c rdust=2.e-6 393 397 394 398 c Expand the dust moments into a binned distribution … … 397 401 m_aer(:)=0. 398 402 399 Mo = zq(ig,l,igcm_dust_mass)* tauscaling(ig)+1.e-30 403 Mo =4.*pi*rho_dust*No*rdust(ig,l)**(3.) 404 & *dexp(9.*nuiceco2_ref/2.)/3. ! in Madeleine et al 2011 405 400 406 No = zq(ig,l,igcm_dust_number)* tauscaling(ig)+1.e-30 401 407 … … 526 532 c Indeed, if we are supersaturated and still don't have at least one nuclei, we should better wait 527 533 c to avoid unrealistic value for nuclei radius and so on for cases that remain negligible. 528 No = zq(ig,l,igcm_ccnco2_number)* tauscaling(ig)+1.e-30 529 IF (No .ge. 1)THEN ! we trigger crystal growth 530 interm1 = DBLE(zq(ig,l,igcm_co2_ice)) 531 interm2 = DBLE(zq(ig,l,igcm_ccnco2_mass)) 532 interm3 = DBLE(zq(ig,l,igcm_ccnco2_number)) 533 call updaterice_microco2(interm1, 534 & interm2,interm3, 534 IF (zq(ig,l,igcm_ccnco2_number) 535 & * tauscaling(ig)+1.e-30.ge. 1)THEN ! we trigger crystal growth 536 537 call updaterice_microco2(zq(ig,l,igcm_co2_ice), 538 & zq(ig,l,igcm_ccnco2_mass),zq(ig,l,igcm_ccnco2_number), 535 539 & tauscaling(ig),riceco2(ig,l),rhocloudco2(ig,l)) 536 540 -
trunk/LMDZ.MARS/libf/phymars/improvedclouds_mod.F
r1976 r1996 12 12 USE ioipsl_getincom 13 13 USE updaterad 14 USE watersat_mod, ONLY: watersat 14 15 use tracer_mod, only: rho_ice, nuice_sed, igcm_h2o_vap, 15 16 & igcm_h2o_ice, igcm_dust_mass, -
trunk/LMDZ.MARS/libf/phymars/newcondens.F
r1779 r1996 4 4 $ piceco2,psolaralb,pemisurf, 5 5 $ pdtc,pdtsrfc,pdpsrf,pduc,pdvc,pdqc, 6 $ fluxsurf_sw,zls) 6 $ fluxsurf_sw,zls, 7 $ zdqssed_co2,pcondicea_co2microp, 8 $ zdtcloudco2) 7 9 8 10 use tracer_mod, only: noms … … 24 26 c author: Francois Forget 1994-1996 25 27 c ------ 28 c adapted to external CO2 ice clouds scheme by Deborah Bardet (2018) ' 26 29 c 27 30 c input: … … 90 93 REAL,INTENT(IN) :: pdq(ngrid,nlayer,nq) ! tendency on tracers from 91 94 ! previous physical processes 95 96 REAL,INTENT(IN) :: zdqssed_co2(ngrid) ! CO2 flux at the surface (kg.m-2.s-1) 97 REAL,INTENT(IN) :: pcondicea_co2microp(ngrid,nlayer)! tendency due to CO2 condensation (kg/kg.s-1) 98 REAL,INTENT(IN) :: zdtcloudco2(ngrid,nlayer) ! tendency on temperature due to latent heat 99 92 100 REAL,INTENT(INOUT) :: piceco2(ngrid) ! CO2 ice on the surface (kg.m-2) 93 101 REAL,INTENT(INOUT) :: psolaralb(ngrid,2) ! albedo of the surface … … 173 181 integer flag 174 182 183 c D.BARDET: to debug 184 real ztc3D(ngrid,nlayer) 185 REAL ztm3D(ngrid,nlayer) 186 REAL zmflux3D(ngrid,nlayer) 175 187 c---------------------------------------------------------------------- 176 188 … … 280 292 end if 281 293 294 IF (.NOT. co2clouds) then 282 295 c forecast of atmospheric temperature zt and frost temperature ztcond 283 296 c -------------------------------------------------------------------- … … 329 342 ENDDO 330 343 ENDDO 344 345 ELSE 346 347 DO ig=1,ngrid 348 zfallice(ig,1) = zdqssed_co2(ig) 349 ENDDO 350 DO l=nlayer , 1, -1 351 DO ig=1,ngrid 352 zcondicea(ig,l) = pcondicea_co2microp(ig,l)* 353 & (pplev(ig,l) - pplev(ig,l+1))/g 354 ENDDO 355 ENDDO 356 DO l=nlayer, 1, -1 357 DO ig=1, ngrid 358 zt(ig,l)=pt(ig,l)+ pdt(ig,l)*ptimestep 359 pdtc(ig,l)=0. 360 ENDDO 361 ENDDO 362 ENDIF ! if not co2clouds 363 364 call WRITEdiagfi(ngrid,"pdtc_atm", 365 & "temperature tendency due to CO2 condensation", 366 & " ",3,pdtc) 367 368 call WRITEdiagfi(ngrid,"zcondicea", 369 & "", 370 & " ",3,zcondicea) 371 372 call WRITEdiagfi(ngrid,"zfallice", 373 & "", 374 & " ",2,zfallice(ngrid,1)) 331 375 332 376 c ************************* … … 624 668 c """""""""""""""""""""""" 625 669 DO l=1,nlayer 626 670 IF(.not. co2clouds) THEN 627 671 c Tendencies on T 628 672 zdtsig(ig,l) = (1/masse(l)) * … … 630 674 & - zmflux(l+1)*(ztm(l+1) - ztc(l)) 631 675 & + zcondicea(ig,l)*(ztcond(ig,l)-ztc(l)) ) 676 ELSE 677 zdtsig(ig,l) = (1/masse(l)) * 678 & ( zmflux(l)*(ztm(l) - ztc(l)) 679 & - zmflux(l+1)*(ztm(l+1) - ztc(l))) 680 ENDIF 681 c D.BARDET: for diagnotics 682 zmflux3D(ig,l)=zmflux(l) 683 ztm3D(ig,l)=ztm(l) 684 ztc3D(ig,l)=ztc(l) 685 632 686 pdtc(ig,l) = pdtc(ig,l) + zdtsig(ig,l) 633 687 … … 799 853 #endif 800 854 801 return802 855 end 803 856 … … 924 977 c end if 925 978 926 return927 979 end -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r1974 r1996 14 14 $ ,pdu,pdv,pdt,pdq,pdpsrf) 15 15 16 use watercloud_mod 16 use watercloud_mod, only: watercloud 17 use watersat_mod, only: watersat 17 18 use co2cloud_mod, only: co2cloud, mem_Mccn_co2, mem_Mh2o_co2, 18 19 & mem_Nccn_co2 … … 238 239 real rhocloudco2(ngrid,nlayer) !co2 Cloud density (kg.m-3) 239 240 real zdqssed_co2(ngrid) ! CO2 flux at the surface (kg.m-2.s-1) 241 real zcondicea_co2microp(ngrid,nlayer) 240 242 c Variables used by the photochemistry 241 243 logical :: asis ! true : adaptative semi-implicit symmetric (asis) chemical solver … … 1108 1110 $ zdum1,zdum2,zdh,pdq,zflubid, 1109 1111 $ zdudif,zdvdif,zdhdif,zdtsdif,q2, 1110 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th,sensibFlux, 1111 & dustliftday,local_time) 1112 & zdqdif,zdqsdif,wstar,zcdv,zcdh,hfmax_th, 1113 & zcondicea_co2microp,sensibFlux, 1114 & dustliftday,local_time) 1112 1115 1113 1116 DO ig=1,ngrid … … 1269 1272 1270 1273 1271 1272 1274 c----------------------------------------------------------------------- 1273 1275 c 8. Specific parameterizations for tracers … … 1354 1356 endif ! of if scavenging 1355 1357 1356 1357 1358 END IF ! of IF (water) 1358 1359 … … 1385 1386 & rsedcloudco2,rhocloudco2, 1386 1387 & rsedcloud,rhocloud,zzlev,zdqssed_co2, 1387 & pdu,pu )1388 & pdu,pu,zcondicea_co2microp) 1388 1389 1389 1390 … … 1479 1480 END IF ! of IF (co2clouds) 1480 1481 1481 1482 1482 c 8b. Aerosol particles 1483 1483 c ------------------- … … 1709 1709 $ co2ice,albedo,emis, 1710 1710 $ zdtc,zdtsurfc,pdpsrf,zduc,zdvc,zdqc, 1711 $ fluxsurf_sw,zls )!,1712 c & zzlev,zdqssed_co2,zdqcloudco2,1713 c& zdtcloudco2)1711 $ fluxsurf_sw,zls, 1712 $ zdqssed_co2,zcondicea_co2microp, 1713 & zdtcloudco2) 1714 1714 1715 1715 DO l=1,nlayer … … 1759 1759 #endif 1760 1760 1761 ENDIF ! of IF (callcond) 1761 ENDIF ! of IF (callcond) 1762 1762 1763 c----------------------------------------------------------------------- 1763 1764 c 11. Surface and sub-surface soil temperature … … 2142 2143 c if (icetot(ig)*1e3.lt.0.01) rave(ig)=0. 2143 2144 enddo 2145 2144 2146 call watersat(ngrid*nlayer,zt,zplay,zqsat) 2145 2147 satu(:,:) = zq(:,:,igcm_h2o_vap)/zqsat(:,:) … … 2617 2619 call WRITEDIAGFI(ngrid,'co2_ice','co2_ice','kg/kg', 2618 2620 & 3,zq(:,:,igcm_co2_ice)) 2619 endif ! of if (co2clouds) 2621 call WRITEDIAGFI(ngrid,'precip_co2_ice', 2622 & 'surface deposition of co2 ice', 2623 & 'kg.m-2.s-1',2, 2624 & zdqssed(1:ngrid,igcm_co2_ice)) 2625 endif ! of if (co2clouds) 2620 2626 endif ! of if (tracer.and.(igcm_co2.ne.0)) 2621 2627 ! Output He tracer, if there is one -
trunk/LMDZ.MARS/libf/phymars/simpleclouds.F
r1779 r1996 4 4 & nq,tau,rice) 5 5 USE updaterad 6 USE watersat_mod, ONLY: watersat 6 7 use tracer_mod, only: igcm_h2o_vap, igcm_h2o_ice 7 8 USE comcstfi_h -
trunk/LMDZ.MARS/libf/phymars/updaterad.F90
r1816 r1996 34 34 real, parameter :: r3ccnmin = 1.e-21 ! ie rccnmin = 0.1 microns 35 35 real, parameter :: rccnmin = 0.1e-6 36 real, parameter :: rccnCO2min = 1e-9 36 37 37 38 real, parameter :: r3ccnmax = 125.e-12 ! ie rccnmax = 500 microns … … 289 290 290 291 292 293 294 !============================================================================ 295 !============================================================================ 296 !============================================================================ 297 ! This subroutine computes the mass mean radius, 298 ! used for heterogenous nucleation on CCNs in microphysics of CO2. 299 ! For a lognormal distribution : 300 ! geometric mean radius = mass mean radius x exp(-1.5 sigma0^2) 301 subroutine updaterccnCO2(qccn,nccn,rccn,tauscaling) 302 use tracer_mod, only: rho_dust 303 USE comcstfi_h 304 implicit none 305 306 real, intent(in) :: qccn,nccn ! needed if doubleq 307 real, intent(in), optional :: tauscaling ! useful for realistic thresholds 308 309 real, intent(out) :: rccn 310 311 real coeff 312 313 314 if (present(tauscaling)) then 315 coeff = tauscaling ! threshold on realistic values 316 else 317 coeff = 1. ! threshold on virtual values 318 endif 319 320 if ((nccn .le. nccn_threshold/coeff) .or. (qccn .le. qccn_threshold/coeff)) then 321 322 rccn = rccnCO2min 323 324 else 325 326 rccn = qccn * 0.75 / pi / rho_dust / nccn 327 rccn = rccn**(1./3.) 328 329 endif 330 331 rccn=min(5.E-4,rccn) 332 333 end subroutine updaterccnCO2 334 !============================================================================ 335 !============================================================================ 336 !============================================================================ 337 338 339 291 340 end module updaterad 292 341 -
trunk/LMDZ.MARS/libf/phymars/vdifc_mod.F
r1974 r1996 12 12 $ pdudif,pdvdif,pdhdif,pdtsrf,pq2, 13 13 $ pdqdif,pdqsdif,wstar,zcdv_true,zcdh_true, 14 $ hfmax,sensibFlux,dustliftday,local_time) 14 $ hfmax,pcondicea_co2microp,sensibFlux, 15 $ dustliftday,local_time) 15 16 16 17 use tracer_mod, only: noms, igcm_dust_mass, igcm_dust_number, … … 20 21 use surfdat_h, only: watercaptag, frost_albedo_threshold, dryness 21 22 USE comcstfi_h, ONLY: cpp, r, rcp, g 23 use watersat_mod, only: watersat 22 24 use turb_mod, only: turb_resolved, ustar, tstar 23 25 use compute_dtau_mod, only: ti_injection,tf_injection … … 69 71 REAL,INTENT(IN) :: co2ice (ngrid), ppopsk(ngrid,nlay) 70 72 logical,INTENT(IN) :: lecrit 71 73 REAL,INTENT(IN) :: pcondicea_co2microp(ngrid,nlay)! tendency due to CO2 condensation (kg/kg.s-1) 74 72 75 REAL,INTENT(IN) :: pz0(ngrid) ! surface roughness length (m) 73 76 … … 633 636 c (computation of zcondicea and dmice) 634 637 635 zcondicea(ig,:)=0. 636 pdtc(ig,:)=0. 637 638 DO l=nlay , 1, -1 638 IF (.NOT. co2clouds) then 639 DO l=nlay , 1, -1 639 640 IF(zt(ig,l).LT.ztcond(ig,l)) THEN 640 641 pdtc(ig,l)=(ztcond(ig,l) - zt(ig,l))/ptimestep … … 643 644 dmice(ig,l)= dmice(ig,l) + zcondicea(ig,l)*ptimestep 644 645 END IF 645 ENDDO 646 647 ENDDO !of Do j=1,XXX 648 649 ENDDO !of Do ig=1,nlay 646 ENDDO 647 ELSE 648 DO l=nlay , 1, -1 649 zcondicea(ig,l)= 0.!pcondicea_co2microp(ig,l)* 650 c & (pplev(ig,l) - pplev(ig,l+1))/g 651 dmice(ig,l)= 0.!dmice(ig,l) + zcondicea(ig,l)*ptimestep 652 pdtc(ig,l)=0. 653 ENDDO 654 ENDIF 655 656 ENDDO!of Do j=1,XXX 657 658 ENDDO !of Do ig=1,ngrid 650 659 651 660 pdtsrf(:)=(ztsrf2(:)-ptsrf(:))/ptimestep -
trunk/LMDZ.MARS/libf/phymars/watercloud_mod.F
r1976 r1996 14 14 & updaterice_typ 15 15 USE improvedclouds_mod, ONLY: improvedclouds 16 USE watersat_mod, ONLY: watersat 16 17 use tracer_mod, only: nqmx, igcm_h2o_vap, igcm_h2o_ice, 17 18 & igcm_dust_mass, igcm_dust_number, -
trunk/LMDZ.MARS/libf/phymars/watersat.F
r689 r1996 1 MODULE watersat_mod 2 3 IMPLICIT NONE 4 5 CONTAINS 6 1 7 SUBROUTINE watersat(naersize,t,p,qsat) 8 2 9 IMPLICIT NONE 3 10 … … 7 14 c and Temperature (K) array 8 15 c 16 c Move in module by Deborah BARDET 02/07/18 9 17 c======================================================================= 10 18 … … 15 23 16 24 c INPUT 17 integer naersize 18 real t(naersize) , p(naersize) 25 integer, intent(in) :: naersize 26 real, intent(in) :: t(naersize) 27 real, intent(in) :: p(naersize) 19 28 c OUTPUT 20 real qsat(naersize)29 real, intent(out) :: qsat(naersize) 21 30 22 31 c local: 23 32 c ------ 24 33 INTEGER i 25 REAL r2,r3,r4 , To, es 26 SAVE r2,r3,r4 27 DATA r2,r3,r4/611.14,21.875,7.66/ 28 SAVE To 29 DATA To/273.16/ 30 34 REAL,PARAMETER :: r2 = 611.14 35 REAL,PARAMETER :: r3 = 21.875 36 REAL,PARAMETER :: r4 = 7.66 37 REAL,PARAMETER :: To = 273.16 38 REAL es 39 40 31 41 do i=1,naersize 32 42 c pression de vapeur saturante : … … 44 54 enddo 45 55 46 RETURN47 END48 56 END SUBROUTINE watersat 57 58 END MODULE watersat_mod
Note: See TracChangeset
for help on using the changeset viewer.