Changeset 3130 for trunk/LMDZ.MARS/libf/phymars
- Timestamp:
- Nov 20, 2023, 1:25:31 PM (20 months ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/albedocaps.F90
r2999 r3130 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_peren ialco213 USE paleoclimate_mod, ONLY: paleoclimate,albedo_perennialco2 14 14 15 15 implicit none … … 21 21 integer,intent(in) :: ngrid 22 22 real,intent(in) :: piceco2(ngrid) ! amount of CO2 ice on the surface (kg/m2) 23 real,intent(inout) :: piceco2_peren(ngrid) ! amount of peren ial co2 ice (kg/m^2)23 real,intent(inout) :: piceco2_peren(ngrid) ! amount of perennial co2 ice (kg/m^2) 24 24 real,intent(out) :: psolaralb(ngrid,2) ! albedo of the surface 25 25 real,intent(out) :: emisref(ngrid) ! emissivity of the surface … … 109 109 if(paleoclimate) then 110 110 if((piceco2_peren(ig).gt.0.).and.(piceco2(ig).lt.piceco2_peren(ig))) then 111 psolaralb(ig,1) = albedo_peren ialco2112 psolaralb(ig,2) = albedo_peren ialco2111 psolaralb(ig,1) = albedo_perennialco2 112 psolaralb(ig,2) = albedo_perennialco2 113 113 piceco2_peren(ig) = piceco2(ig) 114 114 endif -
trunk/LMDZ.MARS/libf/phymars/co2condens_mod.F
r3091 r3130 11 11 $ pcapcal,pplay,pplev,ptsrf,pt, 12 12 $ pphi,pdt,pdu,pdv,pdtsrf,pu,pv,pq,pdq, 13 $ piceco2,peren ial_co2ice,13 $ piceco2,perennial_co2ice, 14 14 $ psolaralb,pemisurf,rdust, 15 15 $ pdtc,pdtsrfc,pdpsrf,pduc,pdvc,pdqc, … … 90 90 91 91 REAL,INTENT(INOUT) :: piceco2(ngrid,nslope) ! CO2 ice on the surface (kg.m-2) 92 REAL,INTENT(INOUT) :: peren ial_co2ice(ngrid,nslope) ! Perenial CO2 ice on the surface (kg.m-2)92 REAL,INTENT(INOUT) :: perennial_co2ice(ngrid,nslope) ! perennial CO2 ice on the surface (kg.m-2) 93 93 REAL,INTENT(INOUT) :: psolaralb(ngrid,2,nslope) ! albedo of the surface 94 94 REAL,INTENT(INOUT) :: pemisurf(ngrid,nslope) ! emissivity of the surface … … 186 186 REAL :: zcondices_tmp(ngrid) ! temporary condensation rate [kg/m^2/s] 187 187 REAL :: piceco2_tmp(ngrid) ! temporary amount of CO2 frost on the surface [kg/m^2] 188 REAL :: peren ial_co2ice_tmp(ngrid) ! temporary amount of perenial CO2 frost on the surface [kg/m^2]188 REAL :: perennial_co2ice_tmp(ngrid) ! temporary amount of perennial CO2 frost on the surface [kg/m^2] 189 189 LOGICAL :: condsub_tmp(ngrid) ! Boolean to check if CO2 ice is condensing / sublimating on the sub grid surface [1] 190 190 REAL :: zfallice_tmp(ngrid,nlayer+1) ! temporary amount of ice falling from layer l for a specific sub-grid surface [kg/m^2/s] … … 581 581 alb_tmp(:,:) = psolaralb(:,:,islope) 582 582 emisref_tmp(:) = 0. 583 peren ial_co2ice_tmp(:) = perenial_co2ice(:,islope)584 CALL albedocaps(zls,ngrid,piceco2_tmp,peren ial_co2ice_tmp,583 perennial_co2ice_tmp(:) = perennial_co2ice(:,islope) 584 CALL albedocaps(zls,ngrid,piceco2_tmp,perennial_co2ice_tmp, 585 585 & alb_tmp,emisref_tmp) 586 peren ial_co2ice(:,islope) = perenial_co2ice_tmp(:)586 perennial_co2ice(:,islope) = perennial_co2ice_tmp(:) 587 587 psolaralb(:,1,islope) = alb_tmp(:,1) 588 588 psolaralb(:,2,islope) = alb_tmp(:,2) -
trunk/LMDZ.MARS/libf/phymars/conf_phys.F
r3128 r3130 37 37 use aeropacity_mod, only: iddist, topdustref 38 38 USE mod_phys_lmdz_transfert_para, ONLY: bcast 39 USE paleoclimate_mod,ONLY: paleoclimate,albedo_peren ialco2,39 USE paleoclimate_mod,ONLY: paleoclimate,albedo_perennialco2, 40 40 & lag_layer 41 41 use microphys_h, only: mteta … … 351 351 352 352 353 write(*,*)"Albedo for peren ial CO2 ice?"354 albedo_peren ialco2 = 0.85 ! default value355 call getin_p("albedo_peren ialco2",albedo_perenialco2)356 write(*,*)"albedo_peren ialco2 = ",albedo_perenialco2353 write(*,*)"Albedo for perennial CO2 ice?" 354 albedo_perennialco2 = 0.85 ! default value 355 call getin_p("albedo_perennialco2",albedo_perennialco2) 356 write(*,*)"albedo_perennialco2 = ",albedo_perennialco2 357 357 358 358 ! TRACERS: -
trunk/LMDZ.MARS/libf/phymars/dyn1d/testphys1d.F90
r3129 r3130 2 2 3 3 use comsoil_h, only: inertiedat, inertiesoil, nsoilmx, tsoil, nqsoil, qsoil 4 use surfdat_h, only: albedodat, peren ial_co2ice, watercap, tsurf, emis, qsurf4 use surfdat_h, only: albedodat, perennial_co2ice, watercap, tsurf, emis, qsurf 5 5 use comslope_mod, only: def_slope, subslope_dist 6 6 use phyredem, only: physdem0, physdem1 … … 161 161 call physdem1("startfi.nc",nsoilmx,ngrid,llm,nq,nqsoil,dttestphys,time, & 162 162 tsurf,tsoil,inertiesoil,albedo,emis,q2,qsurf,qsoil,tauscaling, & 163 totcloudfrac,wstar,watercap,peren ial_co2ice)163 totcloudfrac,wstar,watercap,perennial_co2ice) 164 164 endif !(.not. therestartfi) 165 165 -
trunk/LMDZ.MARS/libf/phymars/paleoclimate_mod.F90
r3111 r3130 17 17 real, save, allocatable :: h2o_ice_depth(:,:) ! Thickness of the lag before H2O ice [m] 18 18 real, save, allocatable :: lag_co2_ice(:,:) ! Thickness of the lag before CO2 ice [m] 19 real, save :: albedo_peren ialco2 ! Albedo for perenial co2 ice [1]19 real, save :: albedo_perennialco2 ! Albedo for perennial co2 ice [1] 20 20 real, save, allocatable :: d_coef(:,:) ! Diffusion coeficent 21 21 LOGICAL,SAVE :: lag_layer ! does lag layer is present? 22 !$OMP THREADPRIVATE(h2o_ice_depth,d_coef,lag_co2_ice,albedo_peren ialco2)22 !$OMP THREADPRIVATE(h2o_ice_depth,d_coef,lag_co2_ice,albedo_perennialco2) 23 23 24 24 CONTAINS -
trunk/LMDZ.MARS/libf/phymars/phyetat0_mod.F90
r3113 r3130 10 10 subroutine phyetat0 (fichnom,tab0,Lmodif,nsoil,ngrid,nlay,nq,nqsoil, & 11 11 day_ini,time0,tsurf,tsoil,albedo,emis,q2,qsurf,qsoil, & 12 tauscaling,totcloudfrac,wstar,watercap,peren ial_co2ice, &12 tauscaling,totcloudfrac,wstar,watercap,perennial_co2ice, & 13 13 def_slope,def_slope_mean,subslope_dist) 14 14 … … 75 75 real,intent(out) :: wstar(ngrid) ! Max vertical velocity in thermals (m/s) 76 76 real,intent(out) :: watercap(ngrid,nslope) ! h2o_ice_cover 77 real,intent(out) :: peren ial_co2ice(ngrid,nslope) ! perenial co2 ice(kg/m^2)77 real,intent(out) :: perennial_co2ice(ngrid,nslope) ! perennial co2 ice(kg/m^2) 78 78 real,intent(out) :: def_slope(nslope+1) !boundaries for bining of the slopes 79 79 real,intent(out) :: def_slope_mean(nslope) … … 753 753 endif 754 754 755 ! Diffu esion coeficent755 ! Diffusion coeficent 756 756 call get_field("d_coef",d_coef,found,indextime) 757 757 if (.not.found) then … … 761 761 endif 762 762 763 764 ! Depth of CO2 lag 763 ! Depth of CO2 lag 765 764 call get_field("lag_co2_ice",lag_co2_ice,found,indextime) 766 765 if (.not.found) then … … 769 768 lag_co2_ice(:,:) = -1. 770 769 endif 771 772 ! Perenial CO2 ice773 call get_field("perenial_co2ice",perenial_co2ice,found,indextime)774 if (.not.found) then775 write(*,*) "phyetat0: Failed loading <perenial_co2ice> : ", &776 "<perenial_co2ice> is set as 10m at the South Pole"777 perenial_co2ice(:,:) = 0.778 if (abs(latitude(ngrid)-(-pi/2.)).lt.1.e-5) then779 DO islope = 1,nslope780 perenial_co2ice(ngrid,islope) = 10*1.6e3 ! 10m which is convert to kg/m^2781 qsurf(ngrid,igcm_co2_tmp,islope) = qsurf(ngrid-1,igcm_co2_tmp,islope) + & ! perenial ice + frost782 perenial_co2ice(ngrid,islope)783 ENDDO784 endif785 endif ! notfound786 770 else ! no startfiphyle 787 771 h2o_ice_depth(:,:) = -1. 788 772 lag_co2_ice(:,:) = -1. 789 perenial_co2ice(:,:) = 0.790 773 d_coef(:,:)= 4.e-4 791 if (abs(latitude(ngrid)-(-pi/2.)).lt.1.e-5) then792 DO islope = 1,nslope793 perenial_co2ice(ngrid,islope) = 10*1.6e3 ! 10m which is convert to kg/m^2794 qsurf(ngrid,igcm_co2_tmp,islope) = qsurf(ngrid-1,igcm_co2_tmp,islope) + & ! perenial ice + frost795 perenial_co2ice(ngrid,islope)796 ENDDO797 endif798 774 endif !startphy_file 799 775 else 800 776 h2o_ice_depth(:,:) = -1. 801 777 lag_co2_ice(:,:) = -1. 802 perenial_co2ice(:,:) = 0.803 778 d_coef(:,:)= 4.e-4 804 779 endif !paleoclimate 780 781 ! Perennial CO2 ice 782 perennial_co2ice(:,:) = 0. 783 if (startphy_file) then 784 call get_field("perennial_co2ice",perennial_co2ice,found,indextime) 785 if (.not. found) then 786 write(*,*) "phyetat0: Failed loading <perennial_co2ice> : ", & 787 "<perennial_co2ice> is set as 10m at the South Pole" 788 if (abs(latitude(ngrid) - (-pi/2.)) < 1.e-5) then 789 do islope = 1,nslope 790 perennial_co2ice(ngrid,islope) = 10*1.6e3 ! 10m which is convert to kg/m^2 791 qsurf(ngrid,igcm_co2_tmp,islope) = qsurf(ngrid - 1,igcm_co2_tmp,islope) + perennial_co2ice(ngrid,islope) ! perennial ice + frost 792 enddo 793 endif 794 endif ! not found 795 else 796 if (abs(latitude(ngrid) - (-pi/2.)) < 1.e-5) then 797 do islope = 1,nslope 798 perennial_co2ice(ngrid,islope) = 10*1.6e3 ! 10m which is convert to kg/m^2 799 qsurf(ngrid,igcm_co2_tmp,islope) = qsurf(ngrid - 1,igcm_co2_tmp,islope) + perennial_co2ice(ngrid,islope) ! perennial ice + frost 800 enddo 801 endif 802 endif !startphy_file 805 803 806 804 ! close file: -
trunk/LMDZ.MARS/libf/phymars/phyredem.F90
r3113 r3130 168 168 albedo,emis,q2,qsurf,qsoil,& 169 169 tauscaling,totcloudfrac,wstar, & 170 watercap,peren ial_co2ice)170 watercap,perennial_co2ice) 171 171 ! write time-dependent variable to restart file 172 172 use iostart, only : open_restartphy, close_restartphy, & … … 205 205 real,intent(in) :: wstar(ngrid) 206 206 real,intent(in) :: watercap(ngrid,nslope) 207 real,intent(in) :: peren ial_co2ice(ngrid,nslope)207 real,intent(in) :: perennial_co2ice(ngrid,nslope) 208 208 209 209 integer :: iq … … 226 226 call put_field("watercap","H2O ice cover",watercap,time) 227 227 228 ! Perenial CO2 ice layer229 if (paleoclimate) call put_field("perenial_co2ice","CO2 ice cover",perenial_co2ice,time)228 ! Perennial CO2 ice layer 229 call put_field("perennial_co2ice","CO2 ice cover",perennial_co2ice,time) 230 230 231 231 ! Surface temperature -
trunk/LMDZ.MARS/libf/phymars/physiq_mod.F
r3122 r3130 59 59 & capcal, fluxgrd, qsurf, 60 60 & hmons,summit,base,watercap,watercaptag, 61 & peren ial_co2ice61 & perennial_co2ice 62 62 use comsaison_h, only: dist_sol, declin, zls, 63 63 & mu0, fract, local_time … … 604 604 & tsurf,tsoil,albedo,emis, 605 605 & q2,qsurf,qsoil,tauscaling,totcloudfrac,wstar, 606 & watercap,peren ial_co2ice,606 & watercap,perennial_co2ice, 607 607 & def_slope,def_slope_mean,subslope_dist) 608 608 … … 2209 2209 $ capcal,zplay,zplev,tsurf,pt, 2210 2210 $ pphi,pdt,pdu,pdv,zdtsurf,pu,pv,pq,pdq, 2211 $ qsurf(:,igcm_co2,:),peren ial_co2ice,2211 $ qsurf(:,igcm_co2,:),perennial_co2ice, 2212 2212 $ albedo,emis,rdust, 2213 2213 $ zdtc,zdtsurfc,pdpsrf,zduc,zdvc,zdqc, … … 2625 2625 . tsurf,tsoil,inertiesoil,albedo, 2626 2626 . emis,q2,qsurf,qsoil,tauscaling,totcloudfrac, 2627 . wstar,watercap,peren ial_co2ice)2627 . wstar,watercap,perennial_co2ice) 2628 2628 ENDIF ! of IF (write_restart) 2629 2629 … … 3205 3205 & "Perennial water ice thickness" 3206 3206 & ,"kg.m-2",watercap(:,islope)) 3207 ENDDO 3208 call write_output("perennial_co2ice", 3209 & "Perennial co2 ice thickness","kg.m-2", 3210 & perennial_co2ice(:,iflat)) 3211 do islope=1,nslope 3212 write(str2(1:2),'(i2.2)') islope 3213 call write_output("perennial_co2ice_slope"//str2, 3214 & "Perennial c ice thickness" 3215 & ,"kg.m-2",perennial_co2ice(:,islope)) 3207 3216 ENDDO 3208 3217 call write_output("temp_layer1","temperature in layer 1", -
trunk/LMDZ.MARS/libf/phymars/surfdat_h.F90
r3111 r3130 53 53 REAL,ALLOCATABLE,SAVE :: qsurf(:,:,:) ! tracer on surface (e.g. kg.m-2) 54 54 REAL,SAVE,ALLOCATABLE :: watercap(:,:) ! Surface water ice (kg.m-2) 55 REAL,SAVE,ALLOCATABLE :: peren ial_co2ice(:,:) ! Perenial CO2 ice (kg.m-2)56 !$OMP THREADPRIVATE(tsurf,emis,capcal,fluxgrd,qsurf,watercap,peren ial_co2ice)55 REAL,SAVE,ALLOCATABLE :: perennial_co2ice(:,:) ! Perennial CO2 ice (kg.m-2) 56 !$OMP THREADPRIVATE(tsurf,emis,capcal,fluxgrd,qsurf,watercap,perennial_co2ice) 57 57 58 58 contains … … 77 77 allocate(tsurf(ngrid,nslope)) 78 78 allocate(watercap(ngrid,nslope)) 79 allocate(peren ial_co2ice(ngrid,nslope))79 allocate(perennial_co2ice(ngrid,nslope)) 80 80 allocate(emis(ngrid,nslope)) 81 81 allocate(capcal(ngrid,nslope)) … … 108 108 if (allocated(tsurf)) deallocate(tsurf) 109 109 if (allocated(watercap)) deallocate(watercap) 110 if (allocated(peren ial_co2ice)) deallocate(perenial_co2ice)110 if (allocated(perennial_co2ice)) deallocate(perennial_co2ice) 111 111 if (allocated(emis)) deallocate(emis) 112 112 if (allocated(capcal)) deallocate(capcal) … … 130 130 allocate(tsurf(ngrid,nslope)) 131 131 allocate(watercap(ngrid,nslope)) 132 allocate(peren ial_co2ice(ngrid,nslope))132 allocate(perennial_co2ice(ngrid,nslope)) 133 133 allocate(emis(ngrid,nslope)) 134 134 allocate(capcal(ngrid,nslope)) … … 144 144 if (allocated(tsurf)) deallocate(tsurf) 145 145 if (allocated(watercap)) deallocate(watercap) 146 if (allocated(peren ial_co2ice)) deallocate(perenial_co2ice)146 if (allocated(perennial_co2ice)) deallocate(perennial_co2ice) 147 147 if (allocated(emis)) deallocate(emis) 148 148 if (allocated(capcal)) deallocate(capcal)
Note: See TracChangeset
for help on using the changeset viewer.