Changeset 3581
- Timestamp:
- Jan 15, 2025, 6:35:44 PM (13 days ago)
- Location:
- trunk/LMDZ.MARS
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/changelog.txt
r3580 r3581 4752 4752 == 15/01/2025 == JBC 4753 4753 Improvement of Bash scripts for the 1D in the deftank with an automatic error detection which ends the script with a message. 4754 4755 == 15/01/2025 == JBC 4756 - Deletion of the variable 'albedo_co2_cap' which was redundant with 'albedo_perennialco2'. 4757 - 'albedo_perennialco2' is now a vector of dimension 2 to account for different albedos of CO2 ice between the northern and southern hemispheres (by default 0.6 and 0.85 respectively). -
trunk/LMDZ.MARS/libf/phymars/albedocaps.F90
r3418 r3581 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_perennialco2,albedo_co2_cap13 USE paleoclimate_mod, ONLY: paleoclimate, albedo_perennialco2 14 14 15 15 implicit none … … 42 42 integer,parameter :: TESlonsize=72 43 43 ! longitudes, in TES files, in degrees, from TESlon(1)=-177.5 to TESlon(72)=177.5 44 real,save :: TESlon(TESlonsize) 44 real,save :: TESlon(TESlonsize) 45 45 integer,parameter :: TESlatsize=30 46 46 ! latitudes (north hemisphere file), in degrees, from TESlatn(1)=31, … … 67 67 if (firstcall) then 68 68 ! find out if user wants to use TES cap albedoes or not 69 TESicealbedo=.false. ! default value 69 TESicealbedo=.false. ! default value 70 70 write(*,*)" albedocaps: Use TES Cap albedoes ?" 71 71 call getin_p("TESicealbedo",TESicealbedo) 72 72 write(*,*)" albedocaps: TESicealbedo = ",TESicealbedo 73 73 74 74 ! if using TES albedoes, load coeffcients 75 75 if (TESicealbedo) then … … 78 78 call getin_p("TESice_Ncoef",TESice_Ncoef) 79 79 write(*,*)" albedocaps: TESice_Ncoef = ",TESice_Ncoef 80 80 81 81 write(*,*)" albedocaps: Coefficient for Southern Cap ?" 82 82 TESice_Scoef=1.0 ! default value … … 84 84 write(*,*)" albedocaps: TESice_Scoef = ",TESice_Scoef 85 85 endif 86 86 87 87 call read_TES_icecap_albedo(zls_old,pi,radeg,TESlon,TESlatn,TESlats,TESls,TESalbn,TESalbs) 88 88 89 89 firstcall=.false. 90 90 endif ! of if (firstcall) 91 92 do ig=1,ngrid 93 if (latitude(ig).lt.0.) then 94 icap=2 ! Southern hemisphere 95 else 96 icap=1 ! Northern hemisphere 97 endif 98 99 if (piceco2(ig).gt.0) then 100 ! set emissivity of surface to be the ice emissivity 101 emisref(ig)=emisice(icap) 102 ! set the surface albedo to be the ice albedo 103 if (TESicealbedo) then 104 call TES_icecap_albedo(zls,ig,psolaralb(ig,1),icap,zls_old,pi,radeg,TESlon,TESlatn,TESlats,TESls,TESalbn,TESalbs) 105 psolaralb(ig,2)=psolaralb(ig,1) 91 92 do ig = 1,ngrid 93 if (latitude(ig) < 0.) then 94 icap = 2 ! Southern hemisphere 106 95 else 107 if(paleoclimate) then 108 psolaralb(ig,1) = albedo_co2_cap 109 psolaralb(ig,2) = albedo_co2_cap 110 else 96 icap = 1 ! Northern hemisphere 97 endif 98 99 if (piceco2(ig) > 0) then ! CO2 frost 100 ! set emissivity of surface to be the ice emissivity 101 emisref(ig) = emisice(icap) 102 ! set the surface albedo to be the ice albedo 103 if (TESicealbedo) then 104 call TES_icecap_albedo(zls,ig,psolaralb(ig,1),icap,zls_old,pi,radeg,TESlon,TESlatn,TESlats,TESls,TESalbn,TESalbs) 105 psolaralb(ig,2) = psolaralb(ig,1) 106 else 111 107 psolaralb(ig,1) = albedice(icap) 112 108 psolaralb(ig,2) = albedice(icap) 113 endif 114 endif 115 else if(paleoclimate .and. piceco2_peren(ig) > 0.) then 116 psolaralb(ig,1) = albedo_perennialco2 117 psolaralb(ig,2) = albedo_perennialco2 118 emisref(ig)=emisice(icap) 119 else if (watercaptag(ig) .and. water) then 120 ! there is a water ice cap: set the surface albedo to the water ice one 121 ! to do : emissivity 122 emisref(ig) = 1 123 psolaralb(ig,1)=albedo_h2o_cap 124 psolaralb(ig,2)=albedo_h2o_cap 125 else 126 ! set emissivity of surface to be bare ground emissivity 127 emisref(ig)=emissiv 128 ! set the surface albedo to bare ground albedo 129 psolaralb(ig,1)=albedodat(ig) 130 psolaralb(ig,2)=albedodat(ig) 131 endif ! of if (piceco2(ig).gt.0) 109 endif 110 else if (paleoclimate .and. piceco2_peren(ig) > 0.) then ! CO2 perennial ice 111 psolaralb(ig,1) = albedo_perennialco2(icap) 112 psolaralb(ig,2) = albedo_perennialco2(icap) 113 emisref(ig) = emisice(icap) 114 else if (watercaptag(ig) .and. water) then ! H2O ice in polar caps 115 ! there is a water ice cap: set the surface albedo to the water ice one 116 ! to do : emissivity 117 emisref(ig) = 1 118 psolaralb(ig,:) = albedo_h2o_cap 119 else ! Bare ground 120 ! set emissivity of surface to be bare ground emissivity 121 emisref(ig) = emissiv 122 ! set the surface albedo to bare ground albedo 123 psolaralb(ig,:) = albedodat(ig) 124 endif ! of if (piceco2(ig).gt.0) 132 125 enddo ! of ig=1,ngrid 133 126 … … 143 136 USE mod_phys_lmdz_para, ONLY: is_master 144 137 USE mod_phys_lmdz_transfert_para, ONLY: bcast 145 138 146 139 implicit none 147 140 … … 156 149 integer,parameter:: TESlonsize=72 157 150 ! longitudes, in TES files, in degrees, from TESlon(1)=-177.5 to TESlon(72)=177.5 158 real:: TESlon(TESlonsize) 151 real:: TESlon(TESlonsize) 159 152 integer,parameter:: TESlatsize=30 160 153 ! latitudes (north hemisphere file), in degrees, from TESlatn(1)=31, … … 195 188 write(*,*) "albedocaps: using file ",trim(datadir)//"/npsc_albedo.nc" 196 189 ENDIF 197 190 198 191 ierr=nf90_inq_varid(nid,"longitude",nvarid) 199 192 if (ierr.ne.NF90_NOERR) then … … 209 202 endif 210 203 endif 211 204 212 205 ierr=nf90_inq_varid(nid,"latitude",nvarid) 213 206 if (ierr.ne.NF90_NOERR) then … … 223 216 endif 224 217 endif 225 218 226 219 ierr=nf90_inq_varid(nid,"time",nvarid) 227 220 if (ierr.ne.NF90_NOERR) then … … 237 230 endif 238 231 endif 239 232 240 233 ierr=nf90_inq_varid(nid,"albedo",nvarid) 241 234 if (ierr.ne.NF90_NOERR) then … … 304 297 305 298 zls_old=-999 ! dummy initialization 306 299 307 300 endif !is_master 308 301 309 302 call bcast(TESlon) 310 303 call bcast(TESlatn) … … 316 309 call bcast(zls_old) 317 310 call bcast(radeg) 318 311 319 312 end subroutine read_TES_icecap_albedo 320 313 … … 327 320 nf90_strerror, nf90_inq_varid, nf90_get_var, nf90_close 328 321 USE mod_phys_lmdz_transfert_para, ONLY: bcast 329 322 330 323 implicit none 331 324 … … 364 357 integer,parameter:: TESlonsize=72 365 358 ! longitudes, in TES files, in degrees, from TESlon(1)=-177.5 to TESlon(72)=177.5 366 real:: TESlon(TESlonsize) 359 real:: TESlon(TESlonsize) 367 360 integer,parameter:: TESlatsize=30 368 361 ! latitudes (north hemisphere file), in degrees, from TESlatn(1)=31, … … 380 373 real:: TESalbs(TESlonsize,TESlatsize,TESlssize) 381 374 ! encompassing nodes arranged as follow : 4 3 382 real :: val(4) ! 1 2 375 real :: val(4) ! 1 2 383 376 384 377 ! 1. Identify encompassing latitudes … … 439 432 if (zls.ne.zls_old) then 440 433 zlsd=zls*radeg ! solar longitude, in degrees 441 434 442 435 if (zlsd.lt.TESls(1)) then 443 436 tinf=TESlssize … … 461 454 endif 462 455 endif ! of if (zlsd.lt.TESls(1)) 463 456 464 457 zls_old=zls ! store current zls 465 458 endif ! of if (zls.ne.zls_old) -
trunk/LMDZ.MARS/libf/phymars/conf_phys.F
r3468 r3581 38 38 USE mod_phys_lmdz_transfert_para, ONLY: bcast 39 39 USE paleoclimate_mod,ONLY: paleoclimate,albedo_perennialco2, 40 & albedo_co2_cap,41 40 & lag_layer, include_waterbuoyancy 42 41 use microphys_h, only: mteta … … 57 56 58 57 real :: ecritphy ! to check that this obsolete flag is no longer used... 58 real :: value_albed 59 59 60 60 CHARACTER ch1*12 … … 384 384 write(*,*)"paleoclimate = ",paleoclimate 385 385 386 write(*,*)"Albedo for perennial CO2 ice?" 387 albedo_perennialco2 = 0.85 ! default value 388 call getin_p("albedo_perennialco2",albedo_perennialco2) 389 write(*,*)"albedo_perennialco2 = ",albedo_perennialco2 390 391 write(*,*)"Albedo for seasonal CO2 ice?" 392 albedo_co2_cap = 0.6 ! default value 393 call getin_p("albedo_co2_cap",albedo_co2_cap) 394 write(*,*)"albedo_co2_cap = ",albedo_co2_cap 386 write(*,*)"Albedo for perennial CO2 ice (northern hemisphere)?" 387 albedo_perennialco2(1) = 0.6 ! default value 388 call getin_p("albedo_perennialco2_north",value_albed) 389 albedo_perennialco2(1) = value_albed 390 write(*,*)"albedo_perennialco2(1) = ",albedo_perennialco2(1) 391 392 write(*,*)"Albedo for perennial CO2 ice (southern hemisphere)?" 393 albedo_perennialco2(2) = 0.85 ! default value 394 call getin_p("albedo_perennialco2_south",value_albed) 395 albedo_perennialco2(2) = value_albed 396 write(*,*)"albedo_perennialco2(2) = ",albedo_perennialco2(2) 395 397 396 398 write(*,*)"Include water buoyancy effect??" -
trunk/LMDZ.MARS/libf/phymars/paleoclimate_mod.F90
r3343 r3581 11 11 implicit none 12 12 13 logical, save :: paleoclimate ! False by default, is activate for paleoclimates specific processes (e.g., lag layer) 14 ! is initialized in conf_phys 13 logical :: paleoclimate ! False by default, is activate for paleoclimates specific processes (e.g., lag layer) is initialized in conf_phys 15 14 16 15 !$OMP THREADPRIVATE(paleoclimate) 17 real, save, allocatable, dimension(:,:) :: h2o_ice_depth ! Thickness of the lag before H2O ice [m] 18 real, save, allocatable, dimension(:,:) :: lag_co2_ice ! Thickness of the lag before CO2 ice [m] 19 real, save, allocatable, dimension(:,:) :: d_coef ! Diffusion coefficent 20 real, save :: albedo_perennialco2 ! Albedo for perennial co2 ice [1] 21 logical, save :: lag_layer ! Does lag layer is present? 22 logical, save :: include_waterbuoyancy ! Include the effect of water buoyancy when computing the sublimation of water ice ? 23 real, save :: albedo_co2_cap 24 !$OMP THREADPRIVATE(h2o_ice_depth,lag_co2_ice,d_coef,albedo_perennialco2,lag_layer,include_waterbuoyancy,albedo_co2_cap) 16 real, allocatable, dimension(:,:) :: h2o_ice_depth ! Thickness of the lag before H2O ice [m] 17 real, allocatable, dimension(:,:) :: lag_co2_ice ! Thickness of the lag before CO2 ice [m] 18 real, allocatable, dimension(:,:) :: d_coef ! Diffusion coefficent 19 real, dimension(2) :: albedo_perennialco2 ! Albedo for perennial co2 ice [1] 20 logical :: lag_layer ! Does lag layer is present? 21 logical :: include_waterbuoyancy ! Include the effect of water buoyancy when computing the sublimation of water ice ? 22 !$OMP THREADPRIVATE(h2o_ice_depth,lag_co2_ice,d_coef,albedo_perennialco2,lag_layer,include_waterbuoyancy) 25 23 26 24 !======================================================================= -
trunk/LMDZ.MARS/libf/phymars/surfdat_h.F90
r3130 r3581 4 4 real,save,allocatable :: albedodat(:) ! albedo of bare ground 5 5 real,save,allocatable :: phisfi(:) ! geopotential at ground level 6 real, save :: albedice(2) ! default albedo for ice (1: North H. 2: South H.)7 real, save :: emisice(2) ! ice emissivity; 1:Northern hemisphere 2:Southern hemisphere6 real, dimension(2) :: albedice ! default albedo for ice (1:Northern hemisphere 2:Southern hemisphere) 7 real, dimension(2) :: emisice ! ice emissivity (1:Northern hemisphere 2:Southern hemisphere) 8 8 real,save :: emissiv ! emissivity of bare ground 9 9 logical,save :: TESicealbedo ! use TES ice cap albedoes (if set to .true.)
Note: See TracChangeset
for help on using the changeset viewer.