Changeset 4073 for trunk/LMDZ.PLUTO/libf/phypluto
- Timestamp:
- Feb 16, 2026, 3:47:40 PM (8 weeks ago)
- Location:
- trunk/LMDZ.PLUTO/libf/phypluto
- Files:
-
- 2 edited
-
callcorrk.F90 (modified) (1 diff)
-
physiq_mod.F90 (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/phypluto/callcorrk.F90
r3982 r4073 1219 1219 1220 1220 ! OLR vs altitude: do it as a .txt file. 1221 OLRz=. false.1221 OLRz=.true. 1222 1222 if(OLRz)then 1223 1223 print*,'saving IR vertical flux for OLRz...' -
trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90
r4040 r4073 23 23 use aerosol_mod, only: i_haze, haze_prof 24 24 use surfdat_h, only: phisfi, zmea, zstd, zsig, zgam, zthe, & 25 dryness , qsurfyear, phisfibed25 dryness 26 26 use comdiurn_h, only: coslat, sinlat, coslon, sinlon 27 27 use comsaison_h, only: mu0, fract, dist_star, declin, right_ascen … … 29 29 use geometry_mod, only: latitude, longitude, cell_area, & 30 30 cell_area_for_lonlat_outputs 31 use control_mod, only: iphysiq32 31 USE comgeomfi_h, only: totarea, totarea_planet 33 32 USE tracer_h, only: noms, mmol, radius, rho_q, qext, & … … 253 252 ! ---------------------- 254 253 integer,save :: day_ini ! Initial date of the run (sol since Ls=0). 255 real,save :: time_phys ! Initial time of day of the run256 254 integer,save :: icount ! Counter of calls to physiq during the run. 257 255 !$OMP THREADPRIVATE(day_ini,icount) 258 256 259 ! Pluto specific257 !Pluto specific 260 258 REAL,save :: acond,bcond 261 259 REAL,save :: tcond1p4Pa … … 264 262 ! Local variables : 265 263 ! ----------------- 266 ! Variables for the paleoclimate mode 267 REAL qsurfpal(ngrid,nq) ! qsurf after a paleoclimate step : for physdem1 and restartfi 268 REAL phisfipal(ngrid) ! geopotential after a paleoclimate step : for physdem1 and restartfi 264 ! Tendencies for the paleoclimate mode 265 REAL qsurfyear(ngrid,nq) ! kg.m-2 averaged mass of ice lost/gained in the last Pluto year of the run 266 REAL phisfinew(ngrid) ! geopotential of the bedrock (= phisfi-qsurf/1000*g) 267 REAL qsurfpal(ngrid,nq) ! qsurf after a paleoclimate step : for physdem1 and restartfi 268 REAL phisfipal(ngrid) ! geopotential after a paleoclimate step : for physdem1 and restartfi 269 269 REAL oblipal ! change of obliquity 270 270 REAL peri_daypal ! new periday … … 274 274 REAL pdaypal ! new pday = day_ini + step 275 275 REAL zdt_tot ! time range corresponding to the flux of qsurfyear 276 REAL massacc(nq) ! accumulated mass 277 REAL masslost(nq) ! accumulated mass 278 REAL qsurf1(ngrid,nq) ! saving qsurf to calculate flux over long timescales kg.m-2 279 REAL flusurf(ngrid,nq) ! flux cond/sub kg.m-2.s-1 280 REAL flusurfold(ngrid,nq) ! old flux cond/sub kg.m-2.s-1 281 REAL globaveice(nq) ! globalaverage 2D ice 282 REAL globavenewice(nq) ! globalaverage 2D ice 276 REAL massacc(nq) ! accumulated mass 277 REAL masslost(nq) ! accumulated mass 278 279 REAL globave ! globalaverage 2D ps 280 REAL globaveice(nq) ! globalaverage 2D ice 281 REAL globavenewice(nq) ! globalaverage 2D ice 282 INTEGER lecttsoil ! lecture of tsoil from proftsoil 283 REAL qsurf1(ngrid,nq) ! saving qsurf to calculate flux over long timescales kg.m-2 284 REAL flusurf(ngrid,nq) ! flux cond/sub kg.m-2.s-1 285 REAL flusurfold(ngrid,nq) ! old flux cond/sub kg.m-2.s-1 286 REAL zplev(ngrid,nlayer+1),zplay(ngrid,nlayer) 287 REAL vecnull(ngrid,nq) ! null vector used to check conservation of tracer 283 288 284 289 REAL,SAVE :: ptime0 ! store the first time 285 290 REAL dstep 286 291 REAL,SAVE :: glastep=20 ! step in pluto day to spread glacier 287 288 ! Other variables289 REAL globave ! globalaverage 2D ps290 INTEGER lecttsoil ! lecture of tsoil from proftsoil291 REAL zplev(ngrid,nlayer+1),zplay(ngrid,nlayer) ! pressure density levels292 REAL vecnull(ngrid,nq) ! null vector used to check conservation of tracer293 292 294 293 ! Aerosol (dust or ice) extinction optical depth at reference wavelength … … 342 341 real zdqsed(ngrid,nlayer,nq) ! Callsedim routine. 343 342 real zdqmr(ngrid,nlayer,nq) ! Mass_redistribution routine. 343 REAL,allocatable,save :: zdqchim(:,:,:) ! Calchim_asis routine 344 REAL,allocatable,save :: zdqschim(:,:) ! Calchim_asis routine 345 !$OMP THREADPRIVATE(zdqchim,zdqschim) 344 346 345 347 !! PLUTO variables … … 436 438 real reff(ngrid,nlayer) ! Effective dust radius (used if doubleq=T). 437 439 real vmr(ngrid,nlayer) ! volume mixing ratio 440 real time_phys 438 441 439 442 real ISR,ASR,OLR,GND,DYN,GSR,Ts1,Ts2,Ts3,TsS ! for Diagnostic. … … 651 654 endif 652 655 653 ! Initialize paleo variables654 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~655 if (paleo) then656 IF (.not. ALLOCATED(qsurfyear)) ALLOCATE(qsurfyear(ngrid,nq))657 IF (.not. ALLOCATED(phisfibed)) ALLOCATE(phisfibed(ngrid))658 write(*,*) 'Paleo time tpal = ',tpal659 qsurfyear(:,:)=0.660 DO ig=1,ngrid661 phisfibed(ig)=phisfi(ig)-qsurf(ig,igcm_n2)*g/rho_q(igcm_n2) ! topo of bedrock below the ice662 ENDDO663 endif664 665 656 ! Initialize correlated-k. 666 657 ! ~~~~~~~~~~~~~~~~~~~~~~~~ … … 794 785 enddo 795 786 796 !Altitude of top interface (nlayer+1), using the thickness of the level below the top one. LT22787 !Altitude of top interface (nlayer+1), using the thicknesss of the level below the top one. LT22 797 788 798 789 zzlev(1:ngrid,nlayer+1) = 2*zzlev(1:ngrid,nlayer)-zzlev(1:ngrid,nlayer-1) … … 1931 1922 IF (paleo) then 1932 1923 call spreadglacier_paleo(ngrid,nq,qsurf, & 1933 phisfi bed,dstep,tsurf)1924 phisfinew,dstep,tsurf) 1934 1925 else 1935 1926 call spreadglacier_simple(ngrid,nq,qsurf,dstep) … … 2233 2224 2234 2225 ! update new geopotential depending on the ice reservoir 2235 phisfipal(:)=phisfi bed(:)+qsurfpal(:,igcm_n2)*g/rho_q(igcm_n2)2226 phisfipal(:)=phisfinew(:)+qsurfpal(:,igcm_n2)*g/1000. 2236 2227 !phisfipal(ig)=phisfi(ig) 2237 2228 … … 2263 2254 ! create restartfi 2264 2255 if (ngrid.ne.1) then 2265 ztime_restart = ptime + ptimestep/(iphysiq*daysec)2266 2256 call physdem0pal("restartfi.nc",longitude,latitude,nsoilmx,ngrid,nlayer,nq, & 2267 ptimestep,pdaypal, ztime_restart,cell_area, &2257 ptimestep,pdaypal,time_phys,cell_area, & 2268 2258 albedo_bareground,zmea,zstd,zsig,zgam,zthe, & 2269 2259 oblipal,eccpal,tpalnew,adjustnew,phisfipal,peri_daypal) 2260 2261 !call physdem1pal("restartfi.nc",long,lati,nsoilmx,nq, & 2262 ! ptimestep,pdaypal, & 2263 ! ztime_restart,tsurf,tsoil,emis,q2,qsurfpal, & 2264 ! cell_area,albedodat,therm_inertia,zmea,zstd,zsig, & 2265 ! zgam,zthe,oblipal,eccpal,tpalnew,adjustnew,phisfipal, & 2266 ! peri_daypal) 2270 2267 endif 2268 else ! 'paleo' 2269 2271 2270 2272 2271 endif ! end of 'paleo' … … 2287 2286 ! in 'restart'. Between now and the writing of 'restart', 2288 2287 ! there will have been the itau=itau+1 instruction and 2289 ! a reset of 'time' (last call = .true. when itau+1= itaufin)2288 ! a reset of 'time' (lastacll = .true. when itau+1= itaufin) 2290 2289 ! thus we store for time=time+dtvr 2291 2290 … … 2306 2305 endif ! ngrid 2307 2306 endif ! is_omp_master 2308 if (lastcall.and.paleo) then 2309 call physdem1("restartfi.nc",nsoilmx,ngrid,nlayer,nq, & 2310 ptimestep,ztime_restart,tsurf, & 2311 tsoil,therm_inertia,emis,albedo,q2,qsurfpal,n2frac) 2312 if (is_master) write(*,*)'PHYSIQ: writing restartfi at time =',ztime_restart 2313 endif 2307 2314 2308 2315 2309 … … 2426 2420 ! Diagnostics of optical thickness (dtau = dtau_gas + dtau_rayaer + dtau_cont). 2427 2421 ! Warning this is exp(-dtau), I let you postproc with -log to have tau and k itself 2428 !! VI 2429 !call write_output('dtauv_4656nm','Layer optical thickness attenuation in VI band','',int_dtauv(:,nlayer:1:-1,2)) ! 4.656 um (28 VIS Bands) 2430 !call write_output('dtauv_1181nm','Layer optical thickness attenuation in VI band','',int_dtauv(:,nlayer:1:-1,21)) ! 1.181 um (28 VIS Bands) 2431 !call write_output('dtauv_700nm','Layer optical thickness attenuation in VI band','',int_dtauv(:,nlayer:1:-1,24)) ! 0.700 um (28 VIS Bands) 2432 !call write_output('dtauv_185nm','Layer optical thickness attenuation in VI band','',int_dtauv(:,nlayer:1:-1,27)) ! 0.185 um (28 VIS Bands) 2433 !call write_output('dtauv_118nm','Layer optical thickness attenuation in VI band','',int_dtauv(:,nlayer:1:-1,28)) ! 0.118 um (28 VIS Bands) 2434 !! IR 2435 !call write_output('dtaui_81250nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,2)) ! 81.250 um (17 IR Bands) 2436 !call write_output('dtaui_3859nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,16)) ! 3.859 um (17 IR Bands) 2437 2438 !call write_output('dtaui_25250nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,4)) ! 25.250 um (25 IR Bands) 2439 !call write_output('dtaui_20800nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,6)) ! 20.800 um (25 IR Bands) 2440 !call write_output('dtaui_18000nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,8)) ! 18.000 um (25 IR Bands) 2441 !call write_output('dtaui_15050nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,10)) ! 15.050 um (25 IR Bands) 2442 2422 ! VI diagnostics for ALICE (/!\ for 28+3 VI bands) 2423 call write_output('dtauv_185nm','Layer optical thickness attenuation in VI band','',int_dtauv(:,nlayer:1:-1,31)) ! 0.185 um 2424 ! IR diagnostics for JWST (/!\ for 20+6 IR bands) 2425 call write_output('dtaui_25250nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,3)) ! 25.250 um 2426 call write_output('dtaui_20800nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,5)) ! 20.800 um 2427 call write_output('dtaui_18000nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,7)) ! 18.000 um 2428 call write_output('dtaui_15050nm','Layer optical thickness attenuation in IR band','',int_dtaui(:,nlayer:1:-1,9)) ! 15.050 um 2443 2429 !if (callmufi) then 2444 ! Aerosol optical thickness 2445 !call write_output('dtauv_aers_4656nm','Layer sph. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,2,1)) 2446 !call write_output('dtauv_aerf_4656nm','Layer fra. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,2,2)) 2447 !call write_output('dtauv_aers_1181nm','Layer sph. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,21,1)) 2448 !call write_output('dtauv_aerf_1181nm','Layer fra. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,21,2)) 2449 !call write_output('dtauv_aers_700nm','Layer sph. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,24,1)) 2450 !call write_output('dtauv_aerf_700nm','Layer fra. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,24,2)) 2451 !call write_output('dtauv_aers_185nm','Layer sph. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,27,1)) 2452 !call write_output('dtauv_aerf_185nm','Layer fra. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,27,2)) 2453 !call write_output('dtauv_aers_118nm','Layer sph. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,28,1)) 2454 !call write_output('dtauv_aerf_118nm','Layer fra. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,28,2)) 2455 !! Aerosols single scattering albedo 2456 !call write_output('wbarv_aers_4656nm','Layer sph. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,2,1)) 2457 !call write_output('wbarv_aerf_4656nm','Layer fra. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,2,2)) 2458 !call write_output('wbarv_aers_1181nm','Layer sph. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,21,1)) 2459 !call write_output('wbarv_aerf_1181nm','Layer fra. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,21,2)) 2460 !call write_output('wbarv_aers_700nm','Layer sph. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,24,1)) 2461 !call write_output('wbarv_aerf_700nm','Layer fra. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,24,2)) 2462 !call write_output('wbarv_aers_185nm','Layer sph. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,27,1)) 2463 !call write_output('wbarv_aerf_185nm','Layer fra. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,27,2)) 2464 !call write_output('wbarv_aers_118nm','Layer sph. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,28,1)) 2465 !call write_output('wbarv_aerf_118nm','Layer fra. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,28,2)) 2430 ! ! Aerosol optical thickness 2431 ! call write_output('dtauv_aers_185nm','Layer sph. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,31,1)) 2432 ! call write_output('dtauv_aerf_185nm','Layer fra. aer. optical thickness attenuation in VI band','',int_dtauv_aer(:,nlayer:1:-1,31,2)) 2433 ! ! Aerosols single scattering albedo 2434 ! call write_output('wbarv_aers_185nm','Layer sph. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,31,1)) 2435 ! call write_output('wbarv_aerf_185nm','Layer fra. aer. single scattering albedo in VI band','',int_wbarv_aer(:,nlayer:1:-1,31,2)) 2466 2436 !endif ! end callmufi 2467 2437
Note: See TracChangeset
for help on using the changeset viewer.
