- Timestamp:
- Jul 19, 2023, 11:40:38 AM (17 months ago)
- Location:
- trunk/LMDZ.MARS/libf
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/lect_start_archive.F
r2959 r2999 3 3 & t,ucov,vcov,ps,h,phisold_newgrid, 4 4 & q,qsurf,tauscaling,totcloudfrac,surfith,nid, 5 & watercap )5 & watercap,peren_co2ice) 6 6 c======================================================================= 7 7 c … … 57 57 REAL,INTENT(OUT) :: totcloudfrac(ngrid) ! sub grid cloud fraction 58 58 REAL,INTENT(OUT) :: watercap(ngrid,nslope) ! infinite polar cap 59 REAL,INTENT(OUT) :: peren_co2ice(ngrid,nslope) ! infinite co2 polar cap 59 60 REAL,INTENT(OUT) :: phisold_newgrid(iip1,jjp1) 60 61 REAL,INTENT(OUT) :: t(iip1,jjp1,llm) … … 140 141 real totcloudfracS(iip1,jjp1) 141 142 real watercapS(iip1,jjp1,nslope) 143 real peren_co2iceS(iip1,jjp1,nslope) 142 144 real watercaptagS(iip1,jjp1) 143 145 real albedoS(iip1,jjp1,nslope) … … 178 180 real, dimension(:,:), allocatable :: totcloudfracold 179 181 real, dimension(:,:,:), allocatable :: watercapold 182 real, dimension(:,:,:), allocatable :: peren_co2iceold 180 183 real, dimension(:,:), allocatable :: watercapold_noslope 184 real, dimension(:,:), allocatable :: peren_co2iceold_noslope 181 185 real, dimension(:,:), allocatable :: watercaptagold 182 186 real, dimension(:), allocatable :: watercaptag_tmp … … 430 434 allocate(totcloudfracold(imold+1,jmold+1)) 431 435 allocate(watercapold(imold+1,jmold+1,nslope)) 436 allocate(peren_co2iceold(imold+1,jmold+1,nslope)) 432 437 allocate(watercaptagold(imold+1,jmold+1)) 433 438 allocate(watercaptag_tmp(ngrid)) … … 439 444 allocate(emisold_noslope(imold+1,jmold+1)) 440 445 allocate(watercapold_noslope(imold+1,jmold+1)) 446 allocate(peren_co2iceold_noslope(imold+1,jmold+1)) 441 447 allocate(albedoold_noslope(imold+1,jmold+1)) 442 448 allocate(qsurfold_noslope(imold+1,jmold+1,nqtot)) … … 914 920 IF (ierr .NE. NF_NOERR) THEN 915 921 PRINT*, "lect_start_archive: Failed loading <watercap>" 922 PRINT*, NF_STRERROR(ierr) 923 CALL abort 924 ENDIF 925 ENDIF 926 927 ierr = NF_INQ_VARID (nid, "perenial_co2ice", nvarid) 928 IF (ierr .NE. NF_NOERR) THEN 929 PRINT*, "lect_start_archive: <perenial_co2ice> not in file" 930 peren_co2iceold(:,:,:) = 0. 931 ELSE 932 if(no_slope) then 933 ierr = nf90_get_var(nid, nvarid,peren_co2iceold_noslope) 934 peren_co2iceold(:,:,1)=peren_co2iceold_noslope(:,:) 935 else 936 ierr = nf90_get_var(nid, nvarid,peren_co2iceold) 937 endif 938 IF (ierr .NE. NF_NOERR) THEN 939 PRINT*, "lect_start_archive:" 940 PRINT*, "Failed loading<peren_co2iceold>" 916 941 PRINT*, NF_STRERROR(ierr) 917 942 CALL abort … … 1252 1277 & watercap(:,1)) 1253 1278 1279 c Watercap 1280 call interp_horiz (peren_co2iceold(:,:,1),peren_co2iceS(:,:,1), 1281 & imold,jmold,iim,jjm,1,rlonuold,rlatvold,rlonu,rlatv) 1282 call gr_dyn_fi (1,iim+1,jjm+1,ngrid,peren_co2iceS(:,:,1), 1283 & peren_co2ice(:,1)) 1284 1254 1285 c Watercaptag 1255 1286 if(imold.eq.iim .and. jmold.eq.jjm) then … … 1648 1679 deallocate(tauscalingold) 1649 1680 deallocate(totcloudfracold) 1681 deallocate(peren_co2iceold) 1650 1682 deallocate(watercapold) 1651 1683 deallocate(watercaptagold) -
trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/newstart.F
r2952 r2999 30 30 & albedodat, z0_default, qsurf, tsurf, 31 31 & emis, hmons, summit, base, watercap, 32 & ini_surfdat_h_slope_var,end_surfdat_h_slope_var 32 & ini_surfdat_h_slope_var,end_surfdat_h_slope_var, 33 & perenial_co2ice 33 34 use comsoil_h, only: inertiedat, inertiesoil,layer, mlayer, 34 35 & nsoilmx,tsoil,ini_comsoil_h_slope_var, end_comsoil_h_slope_var, … … 196 197 REAL,ALLOCATABLE :: qsurf_old_slope(:,:,:) ! tracer on surface (e.g. kg.m-2) 197 198 REAL,ALLOCATABLE :: watercap_old_slope(:,:) ! Surface water ice (kg.m-2) 199 REAL,ALLOCATABLE :: perenial_co2_old_slope(:,:) ! Surface water ice (kg.m-2) 198 200 REAL,ALLOCATABLE :: tsoil_old_slope(:,:,:) 199 201 REAL,ALLOCATABLE :: inertiesoil_old_slope(:,:,:) … … 464 466 & day_ini,time,tsurf,tsoil,albedo,emis, 465 467 & q2,qsurf,tauscaling,totcloudfrac, 466 & wstar,watercap,def_slope,def_slope_mean,subslope_dist) 468 & wstar,watercap,perenial_co2ice, 469 & def_slope,def_slope_mean,subslope_dist) 467 470 468 471 ! copy albedo and soil thermal inertia … … 1800 1803 allocate(emis_old_slope(ngridmx,nslope_old)) 1801 1804 allocate(watercap_old_slope(ngridmx,nslope_old)) 1805 allocate(perenial_co2_old_slope(ngridmx,nslope_old)) 1802 1806 1803 1807 … … 1806 1810 emis_old_slope(:,:)=emis(:,:) 1807 1811 watercap_old_slope(:,:)=watercap(:,:) 1808 1812 perenial_co2_old_slope(:,:) = perenial_co2ice(:,:) 1809 1813 call end_surfdat_h_slope_var 1810 1814 call ini_surfdat_h_slope_var(ngridmx,nqtot,nslope_new) … … 1837 1841 emis(:,islope)=emis_old_slope(:,1) 1838 1842 watercap(:,islope)=watercap_old_slope(:,1) 1843 perenial_co2ice(:,islope)= perenial_co2_old_slope(:,1) 1839 1844 tsoil(:,:,islope)=tsoil_old_slope(:,:,1) 1840 1845 albedo(:,:,islope)=albedo_old_slope(:,:,1) … … 1847 1852 emis(:,1)=emis_old_slope(:,iflat) 1848 1853 watercap(:,1)=watercap_old_slope(:,iflat) 1854 perenial_co2ice(:,islope)= perenial_co2_old_slope(:,iflat) 1849 1855 tsoil(:,:,1)=tsoil_old_slope(:,:,iflat) 1850 1856 albedo(:,:,1)=albedo_old_slope(:,:,iflat) … … 1857 1863 emis(:,islope)=emis_old_slope(:,iflat) 1858 1864 watercap(:,islope)=watercap_old_slope(:,iflat) 1865 perenial_co2ice(:,islope)= perenial_co2_old_slope(:,iflat) 1859 1866 tsoil(:,:,islope)=tsoil_old_slope(:,:,iflat) 1860 1867 albedo(:,:,islope)=albedo_old_slope(:,:,iflat) … … 1868 1875 emis(:,islope)=emis_old_slope(:,iflat) 1869 1876 watercap(:,islope)=watercap_old_slope(:,iflat) 1877 perenial_co2ice(:,islope)= perenial_co2_old_slope(:,iflat) 1870 1878 tsoil(:,:,islope)=tsoil_old_slope(:,:,iflat) 1871 1879 albedo(:,:,islope)=albedo_old_slope(:,:,iflat) … … 2001 2009 & dtphys,hour_ini, 2002 2010 & tsurf,tsoil,inertiesoil,albedo,emis,q2,qsurf, 2003 & tauscaling,totcloudfrac,wstar,watercap) 2011 & tauscaling,totcloudfrac,wstar,watercap, 2012 & perenial_co2ice) 2004 2013 2005 2014 c======================================================================= -
trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/start2archive.F
r2959 r2999 67 67 REAL,ALLOCATABLE :: tsoil(:,:,:) ! Soil temperature 68 68 REAL,ALLOCATABLE :: watercap(:,:) ! h2o ice layer 69 REAL,ALLOCATABLE :: perenial_co2ice(:,:) ! co2 ice layer 69 70 REAL :: tauscaling(ngridmx) ! dust conversion factor 70 71 REAL:: totcloudfrac(ngridmx) ! sub-grid cloud fraction … … 86 87 REAL ithS(ip1jmp1,nsoilmx) ! Soil Thermal Inertia for inertie dat (present day climate) 87 88 REAL,ALLOCATABLE :: watercapS(:,:) 89 REAL,ALLOCATABLE :: perenial_co2iceS(:,:) 88 90 REAL,ALLOCATABLE :: watercaptag_tmp(:) 89 91 REAL,ALLOCATABLE :: watercaptagS(:) … … 169 171 allocate(tsoil(ngridmx,nsoilmx,nslope)) 170 172 allocate(watercap(ngridmx,nslope)) 173 allocate(perenial_co2ice(ngridmx,nslope)) 171 174 allocate(emis(ngridmx,nslope)) 172 175 allocate(albedo(ngridmx,2,nslope)) … … 177 180 allocate(inertiesoilS(ip1jmp1,nsoilmx,nslope)) 178 181 allocate(watercapS(ip1jmp1,nslope)) 182 allocate(perenial_co2iceS(ip1jmp1,nslope)) 179 183 allocate(watercaptagS(ip1jmp1)) 180 184 allocate(emisS(ip1jmp1,nslope)) … … 184 188 CALL phyetat0 (fichnom,0,Lmodif,nsoilmx,ngridmx,llm,nqtot, 185 189 & day_ini_fi,timefi,tsurf,tsoil,albedo,emis,q2,qsurf, 186 & tauscaling,totcloudfrac,wstar,watercap, def_slope,187 & def_slope _mean,subslope_dist)190 & tauscaling,totcloudfrac,wstar,watercap,perenial_co2ice, 191 & def_slope, def_slope_mean,subslope_dist) 188 192 189 193 ierr = NF_OPEN (fichnom, NF_NOWRITE,nid1) … … 270 274 c tsurf --> tsurfS 271 275 c watercap --> watercapS 276 c perenial_co2ice --> perenial_co2iceS 272 277 c tsoil --> tsoilS 273 278 c inertiesoil --> inertiesoilS … … 287 292 call gr_fi_dyn(1,ngridmx,iip1,jjp1,watercap(:,islope), 288 293 & watercapS(:,islope)) 294 call gr_fi_dyn(1,ngridmx,iip1,jjp1,perenial_co2ice(:,islope), 295 & perenial_co2iceS(:,islope)) 289 296 call gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,tsoil(:,:,islope), 290 297 & tsoilS(:,:,islope)) … … 417 424 call write_archive(nid,ntime,'watercap','couche de glace h2o', 418 425 & 'kg/m2',2,watercapS) 426 call write_archive(nid,ntime,'perenial_co2ice', 427 &'couche de glace co2','kg/m2',2,perenial_co2iceS) 419 428 call write_archive(nid,ntime,'watercaptag','couche de glace h2o', 420 429 & 'kg/m2',2,watercaptagS) -
trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/start2archive_SSO.F
r2959 r2999 69 69 REAL,ALLOCATABLE :: tsoil(:,:,:) ! Soil temperature 70 70 REAL,ALLOCATABLE :: watercap(:,:) ! h2o ice layer 71 REAL,ALLOCATABLE :: perenial_co2ice(:,:) ! co2 ice layer 71 72 REAL tauscaling(ngridmx) ! dust conversion factor 72 73 REAL totcloudfrac(ngridmx) ! sub-grid cloud fraction … … 91 92 REAL ithS(ip1jmp1,nsoilmx) ! Soil Thermal Inertia for inertie dat (present day climate) 92 93 REAL,ALLOCATABLE :: watercapS(:,:) 94 REAL,ALLOCATABLE :: perenial_co2iceS(:,:) ! co2 ice layer 93 95 REAL tauscalingS(ip1jmp1) 94 96 REAL totcloudfracS(ip1jmp1) … … 184 186 allocate(tsoil(ngridmx,nsoilmx,nslope)) 185 187 allocate(watercap(ngridmx,nslope)) 188 allocate(perenial_co2ice(ngridmx,nslope)) 186 189 allocate(emis(ngridmx,nslope)) 187 190 allocate(albedo(ngridmx,2,nslope)) … … 192 195 allocate(inertiesoilS(ip1jmp1,nsoilmx,nslope)) 193 196 allocate(watercapS(ip1jmp1,nslope)) 197 allocate(perenial_co2iceS(ngridmx,nslope)) 194 198 allocate(emisS(ip1jmp1,nslope)) 195 199 allocate(albedoS(ip1jmp1,nslope)) … … 198 202 CALL phyetat0 (fichnom,0,Lmodif,nsoilmx,ngridmx,llm,nqtot, 199 203 & day_ini_fi,timefi,tsurf,tsoil,albedo,emis,q2,qsurf, 200 & tauscaling,totcloudfrac,wstar,watercap, def_slope,201 & def_slope _mean,subslope_dist)204 & tauscaling,totcloudfrac,wstar,watercap,perenial_co2ice, 205 & def_slope,def_slope_mean,subslope_dist) 202 206 203 207 ierr = NF_OPEN (fichnom, NF_NOWRITE,nid1) … … 296 300 call gr_fi_dyn(1,ngridmx,iip1,jjp1,watercap(:,islope), 297 301 & watercapS(:,islope)) 302 call gr_fi_dyn(1,ngridmx,iip1,jjp1,perenial_co2ice(:,islope), 303 & perenial_co2iceS(:,islope)) 298 304 call gr_fi_dyn(nsoilmx,ngridmx,iip1,jjp1,tsoil(:,:,islope), 299 305 & tsoilS(:,:,islope)) … … 427 433 call write_archive(nid,ntime,'watercap','couche de glace h2o', 428 434 & 'kg/m2',2,watercapS) 435 call write_archive(nid,ntime,'perenial_co2ice','couche de glace co2', 436 & 'kg/m2',2,perenial_co2iceS) 429 437 call write_archive(nid,ntime,'tauscaling', 430 438 & 'dust conversion factor',' ',2,tauscalingS) -
trunk/LMDZ.MARS/libf/phymars/albedocaps.F90
r2609 r2999 1 subroutine albedocaps(zls,ngrid,piceco2,p solaralb,emisref)1 subroutine albedocaps(zls,ngrid,piceco2,piceco2_peren,psolaralb,emisref) 2 2 3 3 ! routine which changes the albedo (and emissivity) of the surface … … 11 11 USE mod_phys_lmdz_transfert_para, ONLY: bcast 12 12 USE mod_phys_lmdz_para, ONLY: is_master 13 USE paleoclimate_mod, ONLY: paleoclimate,albedo_perenialco2 14 13 15 implicit none 14 16 … … 19 21 integer,intent(in) :: ngrid 20 22 real,intent(in) :: piceco2(ngrid) ! amount of CO2 ice on the surface (kg/m2) 23 real,intent(inout) :: piceco2_peren(ngrid) ! amount of perenial co2 ice (kg/m^2) 21 24 real,intent(out) :: psolaralb(ngrid,2) ! albedo of the surface 22 25 real,intent(out) :: emisref(ngrid) ! emissivity of the surface … … 104 107 psolaralb(ig,1)=albedice(icap) 105 108 psolaralb(ig,2)=albedice(icap) 109 if(paleoclimate) then 110 if((piceco2_peren(ig).gt.0.).and.(piceco2(ig).lt.piceco2_peren(ig))) then 111 psolaralb(ig,1) = albedo_perenialco2 112 psolaralb(ig,2) = albedo_perenialco2 113 piceco2_peren(ig) = piceco2(ig) 114 endif 115 endif 106 116 endif 107 117 else if (watercaptag(ig) .and. water) then -
trunk/LMDZ.MARS/libf/phymars/co2condens_mod.F
r2977 r2999 11 11 $ pcapcal,pplay,pplev,ptsrf,pt, 12 12 $ pphi,pdt,pdu,pdv,pdtsrf,pu,pv,pq,pdq, 13 $ piceco2,psolaralb,pemisurf,rdust, 13 $ piceco2,perenial_co2ice, 14 $ psolaralb,pemisurf,rdust, 14 15 $ pdtc,pdtsrfc,pdpsrf,pduc,pdvc,pdqc, 15 16 $ fluxsurf_sw,zls, … … 35 36 #endif 36 37 use comslope_mod, ONLY: subslope_dist,def_slope_mean 38 USE paleoclimate_mod, ONLY: paleoclimate 39 37 40 IMPLICIT NONE 38 41 c======================================================================= … … 87 90 88 91 REAL,INTENT(INOUT) :: piceco2(ngrid,nslope) ! CO2 ice on the surface (kg.m-2) 92 REAL,INTENT(INOUT) :: perenial_co2ice(ngrid,nslope) ! Perenial CO2 ice on the surface (kg.m-2) 89 93 REAL,INTENT(INOUT) :: psolaralb(ngrid,2,nslope) ! albedo of the surface 90 94 REAL,INTENT(INOUT) :: pemisurf(ngrid,nslope) ! emissivity of the surface … … 180 184 REAL :: alb_tmp(ngrid,2) ! local 181 185 REAL :: zcondices_tmp(ngrid) ! local 182 REAL :: piceco2_tmp(ngrid) ! local 186 REAL :: piceco2_tmp(ngrid) ! local 187 REAL :: perenial_co2ice_tmp(ngrid) ! perenial ice on one subslope (kg/m^2) 183 188 REAL :: pemisurf_tmp(ngrid)! local 184 189 LOGICAL :: condsub_tmp(ngrid) !local … … 568 573 piceco2_tmp(:) = piceco2(:,islope) 569 574 alb_tmp(:,:) = psolaralb(:,:,islope) 570 emisref_tmp(:) = 0. 571 CALL albedocaps(zls,ngrid,piceco2_tmp,alb_tmp,emisref_tmp) 575 emisref_tmp(:) = 0. 576 perenial_co2ice_tmp(:) = perenial_co2ice(:,islope) 577 CALL albedocaps(zls,ngrid,piceco2_tmp,perenial_co2ice_tmp, 578 & alb_tmp,emisref_tmp) 579 perenial_co2ice(:,islope) = perenial_co2ice_tmp(:) 572 580 psolaralb(:,1,islope) = alb_tmp(:,1) 573 581 psolaralb(:,2,islope) = alb_tmp(:,2) … … 823 831 ! Extra special case for surface temperature tendency pdtsrfc: 824 832 ! we want to fix the south pole temperature to CO2 condensation temperature 825 if (caps.and.(obliquit.lt.27.) ) then833 if (caps.and.(obliquit.lt.27.).and.(.not.(paleoclimate))) then 826 834 ! check if last grid point is the south pole 827 835 if (abs(latitude(ngrid)-(-pi/2.)).lt.1.e-5) then -
trunk/LMDZ.MARS/libf/phymars/conf_phys.F
r2994 r2999 54 54 use aeropacity_mod, only: iddist, topdustref 55 55 USE mod_phys_lmdz_transfert_para, ONLY: bcast 56 USE paleoclimate_mod,ONLY: paleoclimate 56 USE paleoclimate_mod,ONLY: paleoclimate,albedo_perenialco2 57 57 IMPLICIT NONE 58 58 include "callkeys.h" … … 355 355 write(*,*)" paleoclimate = ",paleoclimate 356 356 357 write(*,*)"Albedo for perenial CO2 ice?" 358 albedo_perenialco2 = 0.85 ! default value 359 call getin_p("albedo_perenialco2",albedo_perenialco2) 360 write(*,*)"albedo_perenialco2 = ",albedo_perenialco2 357 361 358 362 ! TRACERS: -
trunk/LMDZ.MARS/libf/phymars/paleoclimate_mod.F90
r2994 r2999 11 11 IMPLICIT NONE 12 12 13 LOGICAL :: paleoclimate ! False by default, is activate for paleoclimates specific processes (e.g., lag layer)13 LOGICAL :: paleoclimate ! False by default, is activate for paleoclimates specific processes (e.g., lag layer) 14 14 real, save, allocatable :: lag_h2o_ice(:,:) ! Thickness of the lag before H2O ice [m] 15 15 real, save, allocatable :: lag_co2_ice(:,:) ! Thickness of the lag before CO2 ice [m] 16 16 real, save :: albedo_perenialco2 ! Albedo for perenial co2 ice [1] 17 17 CONTAINS 18 18 -
trunk/LMDZ.MARS/libf/phymars/phyetat0_mod.F90
r2994 r2999 10 10 subroutine phyetat0 (fichnom,tab0,Lmodif,nsoil,ngrid,nlay,nq, & 11 11 day_ini,time0,tsurf,tsoil,albedo,emis,q2,qsurf, & 12 tauscaling,totcloudfrac,wstar,watercap, def_slope, &13 def_slope _mean,subslope_dist)12 tauscaling,totcloudfrac,wstar,watercap,perenial_co2ice, & 13 def_slope,def_slope_mean,subslope_dist) 14 14 15 15 use tracer_mod, only: noms ! tracer names … … 28 28 USE comslope_mod, ONLY: nslope, major_slope 29 29 USE paleoclimate_mod, ONLY: paleoclimate, lag_h2o_ice, lag_co2_ice 30 USE comcstfi_h, only: pi 31 use geometry_mod, only: latitude 30 32 implicit none 31 33 … … 71 73 real,intent(out) :: wstar(ngrid) ! Max vertical velocity in thermals (m/s) 72 74 real,intent(out) :: watercap(ngrid,nslope) ! h2o_ice_cover 73 real, intent(out) :: def_slope(nslope+1) !boundaries for bining of the slopes 74 real, intent(out) :: def_slope_mean(nslope) 75 real, intent(out) :: subslope_dist(ngrid,nslope) !undermesh statistics 75 real,intent(out) :: perenial_co2ice(ngrid,nslope) ! perenial co2 ice(kg/m^2) 76 real,intent(out) :: def_slope(nslope+1) !boundaries for bining of the slopes 77 real,intent(out) :: def_slope_mean(nslope) 78 real,intent(out) :: subslope_dist(ngrid,nslope) !undermesh statistics 76 79 !====================================================================== 77 80 ! Local variables: … … 117 120 REAL :: sum_dist 118 121 REAL :: current_max !var to find max distrib slope 122 ! Variables for CO2 index 123 INTEGER :: igcm_co2_tmp 119 124 120 125 CHARACTER(len=5) :: modname="phyetat0" … … 755 760 756 761 if (paleoclimate) then 762 do iq=1,nq 763 txt=noms(iq) 764 if (txt.eq."co2") igcm_co2_tmp = iq 765 enddo 757 766 if (startphy_file) then 767 ! Depth of H2O lag 758 768 call get_field("lag_h2o_ice",lag_h2o_ice,found,indextime) 759 write(*,*) 'paleo found start?',found760 761 769 if (.not.found) then 762 770 write(*,*) "phyetat0: Failed loading <lag_h2o_ice> : ", & … … 765 773 endif 766 774 775 ! Depth of CO2 lag 767 776 call get_field("lag_co2_ice",lag_co2_ice,found,indextime) 768 777 if (.not.found) then … … 771 780 lag_co2_ice(:,:) = -1. 772 781 endif 773 else 782 783 ! Perenial CO2 ice 784 call get_field("perenial_co2ice",perenial_co2ice,found,indextime) 785 if (.not.found) then 786 write(*,*) "phyetat0: Failed loading <perenial_co2ice> : ", & 787 "<perenial_co2ice> is set as 10m at the South Pole" 788 perenial_co2ice(:,:) = 0. 789 if (abs(latitude(ngrid)-(-pi/2.)).lt.1.e-5) then 790 DO islope = 1,nslope 791 perenial_co2ice(ngrid,islope) = 10*1.6e3 ! 10m which is convert to kg/m^2 792 qsurf(ngrid,igcm_co2_tmp,islope) = qsurf(ngrid-1,igcm_co2_tmp,islope) + & ! perenial ice + frost 793 perenial_co2ice(ngrid,islope) 794 ENDDO 795 endif 796 endif ! notfound 797 else ! no startfiphyle 774 798 lag_h2o_ice(:,:) = -1. 775 799 lag_co2_ice(:,:) = -1. 800 perenial_co2ice(:,:) = 0. 801 if (abs(latitude(ngrid)-(-pi/2.)).lt.1.e-5) then 802 DO islope = 1,nslope 803 perenial_co2ice(ngrid,islope) = 10*1.6e3 ! 10m which is convert to kg/m^2 804 qsurf(ngrid,igcm_co2_tmp,islope) = qsurf(ngrid-1,igcm_co2_tmp,islope) + & ! perenial ice + frost 805 perenial_co2ice(ngrid,islope) 806 ENDDO 807 endif 776 808 endif !startphy_file 777 809 else 778 write(*,*) 'paleo found? nostart',found779 780 810 lag_h2o_ice(:,:) = -1. 781 811 lag_co2_ice(:,:) = -1. 812 perenial_co2ice(:,:) = 0. 782 813 endif !paleoclimate 783 814 -
trunk/LMDZ.MARS/libf/phymars/phyredem.F90
r2994 r2999 168 168 albedo,emis,q2,qsurf,& 169 169 tauscaling,totcloudfrac,wstar, & 170 watercap )170 watercap,perenial_co2ice) 171 171 ! write time-dependent variable to restart file 172 172 use iostart, only : open_restartphy, close_restartphy, & … … 178 178 use dust_param_mod, only: dustscaling_mode 179 179 use comsoil_h,only: flux_geo 180 use comslope_mod, ONLY: nslope 180 use comslope_mod, only: nslope 181 use paleoclimate_mod, only: paleoclimate 181 182 implicit none 182 183 … … 201 202 real,intent(in) :: wstar(ngrid) 202 203 real,intent(in) :: watercap(ngrid,nslope) 203 204 real,intent(in) :: perenial_co2ice(ngrid,nslope) 205 204 206 integer :: iq 205 207 character(len=30) :: txt ! to store some text … … 220 222 ! Water ice layer 221 223 call put_field("watercap","H2O ice cover",watercap,time) 222 224 225 ! Perenial CO2 ice layer 226 if(paleoclimate) then 227 call put_field("perenial_co2ice","CO2 ice cover",perenial_co2ice,time) 228 endif 223 229 ! Surface temperature 224 230 call put_field("tsurf","Surface temperature",tsurf,time) -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r2965 r2999 52 52 & tsurf, emis, 53 53 & capcal, fluxgrd, qsurf, 54 & hmons,summit,base,watercap,watercaptag 54 & hmons,summit,base,watercap,watercaptag, 55 & perenial_co2ice 55 56 use comsaison_h, only: dist_sol, declin, zls, 56 57 & mu0, fract, local_time … … 595 596 & tsurf,tsoil,albedo,emis, 596 597 & q2,qsurf,tauscaling,totcloudfrac,wstar, 597 & watercap,def_slope,def_slope_mean,subslope_dist) 598 & watercap,perenial_co2ice, 599 & def_slope,def_slope_mean,subslope_dist) 598 600 599 601 ! Sky view: … … 2199 2201 $ capcal,zplay,zplev,tsurf,pt, 2200 2202 $ pphi,pdt,pdu,pdv,zdtsurf,pu,pv,pq,pdq, 2201 $ qsurf(:,igcm_co2,:),albedo,emis,rdust, 2203 $ qsurf(:,igcm_co2,:),perenial_co2ice, 2204 $ albedo,emis,rdust, 2202 2205 $ zdtc,zdtsurfc,pdpsrf,zduc,zdvc,zdqc, 2203 2206 $ fluxsurf_dn_sw,zls, … … 2614 2617 . tsurf,tsoil,inertiesoil,albedo, 2615 2618 . emis,q2,qsurf,tauscaling,totcloudfrac,wstar, 2616 . watercap )2619 . watercap,perenial_co2ice) 2617 2620 ENDIF ! of IF (write_restart) 2618 2621 -
trunk/LMDZ.MARS/libf/phymars/surfdat_h.F90
r2909 r2999 50 50 REAL,ALLOCATABLE,SAVE :: qsurf(:,:,:) ! tracer on surface (e.g. kg.m-2) 51 51 REAL,SAVE,ALLOCATABLE :: watercap(:,:) ! Surface water ice (kg.m-2) 52 53 !$OMP THREADPRIVATE(tsurf,emis,capcal,fluxgrd,qsurf,watercap )52 REAL,SAVE,ALLOCATABLE :: perenial_co2ice(:,:) ! Perenial CO2 ice (kg.m-2) 53 !$OMP THREADPRIVATE(tsurf,emis,capcal,fluxgrd,qsurf,watercap,perenial_co2ice) 54 54 55 55 contains … … 74 74 allocate(tsurf(ngrid,nslope)) 75 75 allocate(watercap(ngrid,nslope)) 76 allocate(perenial_co2ice(ngrid,nslope)) 76 77 allocate(emis(ngrid,nslope)) 77 78 allocate(capcal(ngrid,nslope)) … … 91 92 implicit none 92 93 93 if (allocated(albedodat)) deallocate(albedodat) 94 if (allocated(phisfi)) deallocate(phisfi) 95 if (allocated(watercaptag)) deallocate(watercaptag) 96 if (allocated(dryness)) deallocate(dryness) 97 if (allocated(zmea)) deallocate(zmea) 98 if (allocated(zstd)) deallocate(zstd) 99 if (allocated(zsig)) deallocate(zsig) 100 if (allocated(zgam)) deallocate(zgam) 101 if (allocated(zthe)) deallocate(zthe) 102 if (allocated(z0)) deallocate(z0) 103 if (allocated(qsurf)) deallocate(qsurf) 104 if (allocated(tsurf)) deallocate(tsurf) 105 if (allocated(watercap)) deallocate(watercap) 106 if (allocated(emis)) deallocate(emis) 107 if (allocated(capcal)) deallocate(capcal) 108 if (allocated(fluxgrd)) deallocate(fluxgrd) 109 if (allocated(hmons)) deallocate(hmons) 110 if (allocated(summit)) deallocate(summit) 111 if (allocated(base)) deallocate(base) 112 if (allocated(alpha_hmons)) deallocate(alpha_hmons) 113 if (allocated(hsummit)) deallocate(hsummit) 114 if (allocated(contains_mons)) deallocate(contains_mons) 94 if (allocated(albedodat)) deallocate(albedodat) 95 if (allocated(phisfi)) deallocate(phisfi) 96 if (allocated(watercaptag)) deallocate(watercaptag) 97 if (allocated(dryness)) deallocate(dryness) 98 if (allocated(zmea)) deallocate(zmea) 99 if (allocated(zstd)) deallocate(zstd) 100 if (allocated(zsig)) deallocate(zsig) 101 if (allocated(zgam)) deallocate(zgam) 102 if (allocated(zthe)) deallocate(zthe) 103 if (allocated(z0)) deallocate(z0) 104 if (allocated(qsurf)) deallocate(qsurf) 105 if (allocated(tsurf)) deallocate(tsurf) 106 if (allocated(watercap)) deallocate(watercap) 107 if (allocated(perenial_co2ice)) deallocate(perenial_co2ice) 108 if (allocated(emis)) deallocate(emis) 109 if (allocated(capcal)) deallocate(capcal) 110 if (allocated(fluxgrd)) deallocate(fluxgrd) 111 if (allocated(hmons)) deallocate(hmons) 112 if (allocated(summit)) deallocate(summit) 113 if (allocated(base)) deallocate(base) 114 if (allocated(alpha_hmons)) deallocate(alpha_hmons) 115 if (allocated(hsummit)) deallocate(hsummit) 116 if (allocated(contains_mons)) deallocate(contains_mons) 115 117 116 118 end subroutine end_surfdat_h … … 125 127 allocate(tsurf(ngrid,nslope)) 126 128 allocate(watercap(ngrid,nslope)) 129 allocate(perenial_co2ice(ngrid,nslope)) 127 130 allocate(emis(ngrid,nslope)) 128 131 allocate(capcal(ngrid,nslope)) … … 135 138 implicit none 136 139 137 if (allocated(qsurf)) deallocate(qsurf) 138 if (allocated(tsurf)) deallocate(tsurf) 139 if (allocated(watercap)) deallocate(watercap) 140 if (allocated(emis)) deallocate(emis) 141 if (allocated(capcal)) deallocate(capcal) 142 if (allocated(fluxgrd)) deallocate(fluxgrd) 140 if (allocated(qsurf)) deallocate(qsurf) 141 if (allocated(tsurf)) deallocate(tsurf) 142 if (allocated(watercap)) deallocate(watercap) 143 if (allocated(perenial_co2ice)) deallocate(perenial_co2ice) 144 if (allocated(emis)) deallocate(emis) 145 if (allocated(capcal)) deallocate(capcal) 146 if (allocated(fluxgrd)) deallocate(fluxgrd) 143 147 144 148 end subroutine end_surfdat_h_slope_var
Note: See TracChangeset
for help on using the changeset viewer.