Skip to content

Commit 614c320

Browse files
jhruppertvlakshmanan-scala
authored andcommitted
Clear sky 3D radiative heat tendencies added as output variables with CAM and all RRTMG radiation schemes (wrf-model#1258)
TYPE: enhancement KEYWORDS: radiation, clear-sky heating, CAM, RRTM, RRTMG, RRTMG-fast, RRTMG-K SOURCE: James Ruppert (Penn State University) DESCRIPTION OF CHANGES: Three-dimensional clear sky radiative heat tendencies are made available as output variables when using the following radiation schemes: * RRTM longwave (ra_lw_phys=1) * CAM shortwave and longwave (ra_sw_phys, ra_lw_phys=3) * RRTMG shortwave and longwave (ra_sw_phys, ra_lw_phys=4) * RRTMG-fast version shortwave and longwave (ra_sw_phys, ra_lw_phys=24) * RRTMG-K shortwave and longwave (ra_sw_phys, ra_lw_phys=14). Two new variables are added only to the restart stream in Registry.EM_COMMON, defined as "UNCOUPLED THETA TEND DUE TO CLEAR SKY LONG [or SHORT] WAVE RAD", and with the units "K s-1". * RTHRATENLWC ("RTHRATLWC" in history files) * RTHRATENSWC ("RTHRATSWC") In the case of the three RRTMG schemes, the clear sky tendencies were already calculated, and hence just needed to be passed up to the main radiation driver (module_radiation_driver.F) and RK driver (module_first_rk_step_part1.F). For CAM, the clear-sky fluxes were calculated but not the corresponding heating rates. The appropriate code was added to do so, mimicking the calculations for all-sky but invoking only clear-sky fluxes. LIST OF MODIFIED FILES: M Registry/Registry.EM_COMMON M dyn_em/module_first_rk_step_part1.F M dyn_nmm/module_PHYSICS_CALLS.F M phys/module_ra_cam.F M phys/module_ra_rrtm.F M phys/module_ra_rrtmg_lw.F M phys/module_ra_rrtmg_lwf.F M phys/module_ra_rrtmg_sw.F M phys/module_ra_rrtmg_swf.F M phys/module_ra_rrtmg_swk.F M phys/module_radiation_driver.F TESTS CONDUCTED: 1. Compiled okay with Intel. Verified that the clear-sky radiative heat tendencies are nearly identical to corresponding all-sky tendencies on the large scale, with much less variance at the cloud scales. All-sky total radiative heat tendency (RTHRATEN) is unchanged, as are the uncoupled longwave and shortwave tendencies (RTHRATENLW, RTHRATENSW). 2. Jenkins testing OK RELEASE NOTE: Three-dimensional clear sky radiative heat tendencies are now available as output variables when using the following radiation schemes: RRTM longwave (ra_lw_phys=1), CAM shortwave and longwave (ra_sw_phys, ra_lw_phys=3), RRTMG shortwave and longwave (ra_sw_phys, ra_lw_phys=4), RRTMG-fast version shortwave and longwave (ra_sw_phys, ra_lw_phys=24), and RRTMG-K shortwave and longwave (ra_sw_phys, ra_lw_phys=14). Similar to the all-sky longwave and shortwave radiative heat tendencies (RTHRATLW and RTHRATSW), the clear-sky tendencies are not included in the default history output stream, but can now be added to it. They can be found in Registry.EM_COMMON as RTHRATLWC for longwave clear-sky heating rate and RTHRATSWC for shortwave clear-sky heating rate.
1 parent 629a6fb commit 614c320

11 files changed

+115
-32
lines changed

Registry/Registry.EM_COMMON

+2
Original file line numberDiff line numberDiff line change
@@ -1619,7 +1619,9 @@ state integer STEPCU - misc 1 - r "S
16191619

16201620
state real RTHRATEN ikj misc 1 - rd "RTHRATEN" "THETA TENDENCY DUE TO RADIATION" "K s-1"
16211621
state real RTHRATENLW ikj misc 1 - r "RTHRATLW" "UNCOUPLED THETA TENDENCY DUE TO LONG WAVE RADIATION" "K s-1"
1622+
state real RTHRATENLWC ikj misc 1 - r "RTHRATLWC" "UNCOUPLED THETA TEND DUE TO CLEAR SKY LONG WAVE RAD" "K s-1"
16221623
state real RTHRATENSW ikj misc 1 - r "RTHRATSW" "UNCOUPLED THETA TENDENCY DUE TO SHORT WAVE RADIATION" "K s-1"
1624+
state real RTHRATENSWC ikj misc 1 - r "RTHRATSWC" "UNCOUPLED THETA TEND DUE TO CLEAR SKY SHORT WAVE RAD" "K s-1"
16231625
state real CLDFRA ikj misc 1 - i0rh "CLDFRA" "CLOUD FRACTION" ""
16241626
state real CONVCLD ij misc 1 - r "CONVCLD" "BMJ CONVECTIVE CLOUD" "kg m-2"
16251627
state real CCLDFRA ikj misc 1 - r "CCLDFRA" "CONVECTIVE CLOUD FRACTION" ""

dyn_em/module_first_rk_step_part1.F

+1
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ SUBROUTINE first_rk_step_part1 ( grid , config_flags &
273273
& ,RHO=grid%rho ,RLWTOA=grid%rlwtoa &
274274
& ,RSWTOA=grid%rswtoa ,RTHRATEN=grid%rthraten &
275275
& ,RTHRATENLW=grid%rthratenlw ,RTHRATENSW=grid%rthratensw &
276+
& ,RTHRATENLWC=grid%rthratenlwc ,RTHRATENSWC=grid%rthratenswc &
276277
& ,SNOW=grid%snow ,STEPRA=grid%stepra ,SWDOWN=grid%swdown &
277278
& ,SWDOWNC=grid%swdownc ,SW_PHYSICS=config_flags%ra_sw_physics &
278279
& ,T8W=t8w ,T=grid%t_phy ,TAUCLDC=grid%taucldc &

dyn_nmm/module_PHYSICS_CALLS.F

+5-2
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,6 @@ SUBROUTINE RADIATION(NTSD,DT,JULDAY,JULYR,XTIME,JULIAN &
196196
SWVISDIF, &
197197
SWNIRDIR, &
198198
SWNIRDIF
199-
200199
!
201200
!..Additions for coupling cloud physics effective radii and radiation. G. Thompson
202201
REAL,DIMENSION(IMS:IME,JMS:JME,KMS:KME),INTENT(INOUT):: re_cloud, re_ice, re_snow
@@ -235,7 +234,8 @@ SUBROUTINE RADIATION(NTSD,DT,JULDAY,JULYR,XTIME,JULIAN &
235234
& ,P8W,P_PHY,PI_PHY &
236235
& ,RR,T8W &
237236
& ,THRATENLW,THRATENSW &
238-
& ,TH_PHY,T_PHY,Z_PHY
237+
& ,TH_PHY,T_PHY,Z_PHY &
238+
& ,RTHRATENLWC,RTHRATENSWC
239239
!
240240
REAL,DIMENSION(:,:,:,:),ALLOCATABLE :: MOIST_TRANS
241241
!
@@ -313,6 +313,8 @@ SUBROUTINE RADIATION(NTSD,DT,JULDAY,JULYR,XTIME,JULIAN &
313313
& /(P_PHY(I,K,J)*G)
314314
!
315315
RTHRATEN(I,K,J)=0.
316+
RTHRATENLWC(I,K,J)=0.
317+
RTHRATENSWC(I,K,J)=0.
316318
THRATENLW(I,K,J)=0.
317319
THRATENSW(I,K,J)=0.
318320
! PM2_5_DRY(I,K,J)=0.
@@ -424,6 +426,7 @@ SUBROUTINE RADIATION(NTSD,DT,JULDAY,JULYR,XTIME,JULIAN &
424426
& ,aer_ssa_opt=config_flags%aer_ssa_opt,aer_ssa_val=config_flags%aer_ssa_val &
425427
& ,aer_asy_opt=config_flags%aer_asy_opt,aer_asy_val=config_flags%aer_asy_val &
426428
& ,RTHRATENLW=THRATENLW,RTHRATENSW=THRATENSW &
429+
& ,RTHRATENLWC=RTHRATENLWC,RTHRATENSWC=RTHRATENSWC &
427430
& ,RTHRATEN=RTHRATEN &
428431
& ,CEN_LAT=grid%cen_lat &
429432
& ,GLW=TOTLWDN,GSW=SWNETDN,SWDOWN=TOTSWDN &

phys/module_ra_cam.F

+41-11
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ MODULE module_ra_cam
195195
data amo / 48.0000 /
196196
197197
contains
198-
subroutine camrad(RTHRATENLW,RTHRATENSW, &
198+
subroutine camrad(RTHRATENLW,RTHRATENSW,RTHRATENLWC,RTHRATENSWC, &
199199
dolw,dosw, &
200200
SWUPT,SWUPTC,SWDNT,SWDNTC, &
201201
LWUPT,LWUPTC,LWDNT,LWDNTC, &
@@ -276,7 +276,9 @@ subroutine camrad(RTHRATENLW,RTHRATENSW, &
276276
277277
REAL, DIMENSION( ims:ime, kms:kme, jms:jme ), &
278278
INTENT(INOUT) :: RTHRATENLW, &
279-
RTHRATENSW
279+
RTHRATENLWC, &
280+
RTHRATENSW, &
281+
RTHRATENSWC
280282
!
281283
REAL, DIMENSION( ims:ime, jms:jme ), &
282284
INTENT(IN ) :: XLAT, &
@@ -421,10 +423,12 @@ subroutine camrad(RTHRATENLW,RTHRATENSW, &
421423
real(r8), dimension( 1:ite-its+1 ) :: solsd ! Downward solar rad onto surface (sw diffuse)
422424
real(r8), dimension( 1:ite-its+1 ) :: solld ! Downward solar rad onto surface (lw diffuse)
423425
real(r8), dimension( 1:ite-its+1, 1:kte-kts+1 ) :: qrs ! Solar heating rate
426+
real(r8), dimension( 1:ite-its+1, 1:kte-kts+1 ) :: qrscs ! Clear sky solar heating rate
424427
real(r8), dimension( 1:ite-its+1 ) :: fsds ! Flux Shortwave Downwelling Surface
425428
real(r8), dimension( 1:ite-its+1 ) :: fsdsdir ! Flux Shortwave Direct Downwelling Surface
426429
real(r8), dimension( 1:ite-its+1 ) :: fsdsdif ! Flux Shortwave Diffuse Downwelling Surface
427430
real(r8), dimension( 1:ite-its+1, 1:kte-kts+1 ) :: qrl ! Longwave cooling rate
431+
real(r8), dimension( 1:ite-its+1, 1:kte-kts+1 ) :: qrlcs ! Clear sky longwave cooling rate
428432
real(r8), dimension( 1:ite-its+1 ) :: flwds ! Surface down longwave flux
429433
real(r8), dimension( 1:ite-its+1, levsiz, num_months ) :: ozmixmj ! monthly ozone mixing ratio
430434
real(r8), dimension( 1:ite-its+1, levsiz ) :: ozmix ! ozone mixing ratio (time interpolated)
@@ -770,7 +774,7 @@ subroutine camrad(RTHRATENLW,RTHRATENSW, &
770774
fsdndir ,fsdncdir,fsdndif ,fsdncdif, & ! amontornes-bcodina (2014-04-20) Dir/Dif fluxes
771775
flup, flupc, fldn, fldnc, swcftoa, lwcftoa, olrtoa, &
772776
fsns, fsnt ,flns ,flnt , &
773-
qrs, qrl, flwds, rel, rei, &
777+
qrs, qrscs, qrl, qrlcs, flwds, rel, rei, &
774778
sols, soll, solsd, solld, &
775779
!ccc
776780
#ifdef CLWRFGHG
@@ -786,6 +790,8 @@ subroutine camrad(RTHRATENLW,RTHRATENSW, &
786790
ii = i - its + 1
787791
if(dolw)RTHRATENLW(I,K,J) = 1.e4*qrl(ii,kk)/(cpair*pi_phy(i,k,j))
788792
if(dosw)RTHRATENSW(I,K,J) = 1.e4*qrs(ii,kk)/(cpair*pi_phy(i,k,j))
793+
if(dolw)RTHRATENLWC(I,K,J) = 1.e4*qrlcs(ii,kk)/(cpair*pi_phy(i,k,j))
794+
if(dosw)RTHRATENSWC(I,K,J) = 1.e4*qrscs(ii,kk)/(cpair*pi_phy(i,k,j))
789795
cemiss(i,k,j) = emis(ii,kk)
790796
taucldc(i,k,j) = tauxcl(ii,kk)
791797
taucldi(i,k,j) = tauxci(ii,kk)
@@ -1578,7 +1584,7 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
15781584
flup ,flupc ,fldn ,fldnc , &
15791585
swcf ,lwcf ,flut , &
15801586
fsns ,fsnt ,flns ,flnt , &
1581-
qrs ,qrl ,flwds ,rel ,rei , &
1587+
qrs ,qrscs ,qrl ,qrlcs ,flwds ,rel ,rei , &
15821588
sols ,soll ,solsd ,solld , &
15831589
!ccc
15841590
#ifdef CLWRFGHG
@@ -1694,6 +1700,7 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
16941700
real(r8), intent(out) :: solsd(pcols) ! Downward solar rad onto surface (sw diffuse)
16951701
real(r8), intent(out) :: solld(pcols) ! Downward solar rad onto surface (lw diffuse)
16961702
real(r8), intent(out) :: qrs(pcols,pver) ! Solar heating rate
1703+
real(r8), intent(out) :: qrscs(pcols,pver) ! Clear sky solar heating rate
16971704
real(r8), intent(out) :: fsds(pcols) ! Flux Shortwave Downwelling Surface
16981705
real(r8), intent(out) :: fsdsdir(pcols) ! Flux Shortwave Direct Downwelling Surface (amontornes-bcodina 2014-04-20)
16991706
real(r8), intent(out) :: fsdsdif(pcols) ! Flux Shortwave Diffuse Downwelling Surface (amontornes-bcodina 2014-04-20)
@@ -1717,6 +1724,7 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
17171724
! Output longwave arguments
17181725
!
17191726
real(r8), intent(out) :: qrl(pcols,pver) ! Longwave cooling rate
1727+
real(r8), intent(out) :: qrlcs(pcols,pver) ! Clear sky longwave cooling rate
17201728
real(r8), intent(out) :: flwds(pcols) ! Surface down longwave flux
17211729

17221730
real(r8), intent(inout) :: abstot(pcols,pverp,pverp) ! Total absorptivity
@@ -1846,7 +1854,7 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
18461854
! rei ,eccf ,coszrs ,scon ,solin ,solcon , &
18471855
rei ,tauxcl ,tauxci ,eccf ,coszrs ,scon ,solin ,solcon , &
18481856
asdir ,asdif ,aldir ,aldif ,nmxrgnrf, &
1849-
pmxrgnrf,qrs ,fsnt ,fsntc ,fsntoa , &
1857+
pmxrgnrf,qrs ,qrscs ,fsnt ,fsntc ,fsntoa , &
18501858
fsntoac ,fsnirt ,fsnrtc ,fsnirtsq,fsns , &
18511859
fsnsc ,fsdsc ,fsds ,sols ,soll , &
18521860
solsd ,solld ,frc_day , &
@@ -1896,7 +1904,7 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
18961904
! rei ,eccf ,coszrs ,scon ,solin ,solcon , &
18971905
rei ,tauxcl ,tauxci ,eccf ,coszrs ,scon ,solin ,solcon , &
18981906
asdir ,asdif ,aldir ,aldif ,nmxrgn , &
1899-
pmxrgn ,qrs ,fsnt ,fsntc ,fsntoa , &
1907+
pmxrgn ,qrs ,qrscs ,fsnt ,fsntc ,fsntoa , &
19001908
fsntoac ,fsnirt ,fsnrtc ,fsnirtsq,fsns , &
19011909
fsnsc ,fsdsc ,fsds ,sols ,soll , &
19021910
solsd ,solld ,frc_day , &
@@ -2014,8 +2022,9 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
20142022
pbr ,pnm ,pmln ,piln , &
20152023
qm1(1,1,in2o) ,qm1(1,1,ich4) , &
20162024
qm1(1,1,if11) ,qm1(1,1,if12) , &
2017-
cld ,emis ,pmxrgn ,nmxrgn ,qrl , &
2018-
doabsems, abstot, absnxt, emstot, &
2025+
cld ,emis ,pmxrgn ,nmxrgn , &
2026+
qrl ,qrlcs , &
2027+
doabsems,abstot ,absnxt ,emstot , &
20192028
flns ,flnt ,flnsc ,flntc ,flwds , &
20202029
flut ,flutc , &
20212030
flup ,flupc ,fldn ,fldnc , &
@@ -2049,7 +2058,7 @@ subroutine radctl(j, lchnk ,ncol , pcols, pver, pverp, pverr, pverrp, ppcns
20492058
pbr ,pnm ,pmln ,piln , &
20502059
n2o ,ch4 ,cfc11 ,cfc12 , &
20512060
cld ,emis ,pmxrgn ,nmxrgn ,qrl , &
2052-
doabsems, abstot, absnxt, emstot, &
2061+
qrlcs, doabsems, abstot, absnxt, emstot, &
20532062
flns ,flnt ,flnsc ,flntc ,flwds , &
20542063
flut ,flutc , &
20552064
flup ,flupc ,fldn ,fldnc , &
@@ -4756,7 +4765,7 @@ subroutine radclwmx(lchnk ,ncol ,pcols, pver, pverp, &
47564765
pmid ,pint ,pmln ,piln , &
47574766
n2o ,ch4 ,cfc11 ,cfc12 , &
47584767
cld ,emis ,pmxrgn ,nmxrgn ,qrl , &
4759-
doabsems, abstot, absnxt, emstot, &
4768+
qrlcs, doabsems, abstot, absnxt, emstot, &
47604769
flns ,flnt ,flnsc ,flntc ,flwds , &
47614770
flut ,flutc , &
47624771
flup ,flupc ,fldn ,fldnc , &
@@ -4834,6 +4843,7 @@ subroutine radclwmx(lchnk ,ncol ,pcols, pver, pverp, &
48344843
! Output arguments
48354844
!
48364845
real(r8), intent(out) :: qrl(pcols,pver) ! Longwave heating rate
4846+
real(r8), intent(out) :: qrlcs(pcols,pver) ! Clear sky longwave heating rate
48374847
real(r8), intent(out) :: flns(pcols) ! Surface cooling flux
48384848
real(r8), intent(out) :: flnt(pcols) ! Net outgoing flux
48394849
real(r8), intent(out) :: flut(pcols) ! Upward flux at top of model
@@ -5674,9 +5684,17 @@ subroutine radclwmx(lchnk ,ncol ,pcols, pver, pverp, &
56745684
1.E-4*gravit/((pint(i,k) - pint(i,k+1)))
56755685
end do
56765686
end do
5687+
! Repeat for clear sky
5688+
do k=ntoplw,pver
5689+
do i=1,ncol
5690+
qrlcs(i,k) = (fsul(i,k) - fsdl(i,k) - fsul(i,k+1) + fsdl(i,k+1))* &
5691+
1.E-4*gravit/((pint(i,k) - pint(i,k+1)))
5692+
end do
5693+
end do
56775694
! Return 0 above solution domain
56785695
if ( ntoplw > 1 )then
56795696
qrl(:ncol,:ntoplw-1) = 0.
5697+
qrlcs(:ncol,:ntoplw-1) = 0.
56805698
end if
56815699

56825700
! Added downward/upward total and clear sky fluxes
@@ -5706,7 +5724,7 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
57065724
! rei ,eccf ,coszrs ,scon ,solin ,solcon, &
57075725
rei ,tauxcl ,tauxci ,eccf ,coszrs ,scon ,solin ,solcon, &
57085726
asdir ,asdif ,aldir ,aldif ,nmxrgn , &
5709-
pmxrgn ,qrs ,fsnt ,fsntc ,fsntoa , &
5727+
pmxrgn ,qrs ,qrscs ,fsnt ,fsntc ,fsntoa , &
57105728
fsntoac ,fsnirtoa,fsnrtoac,fsnrtoaq,fsns , &
57115729
fsnsc ,fsdsc ,fsds ,sols ,soll , &
57125730
solsd ,solld ,frc_day , &
@@ -5882,6 +5900,7 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
58825900

58835901
real(r8), intent(out) :: solin(pcols) ! Incident solar flux
58845902
real(r8), intent(out) :: qrs(pcols,pver) ! Solar heating rate
5903+
real(r8), intent(out) :: qrscs(pcols,pver)! Clear sky solar heating rate
58855904
real(r8), intent(out) :: fsns(pcols) ! Surface absorbed solar flux
58865905
real(r8), intent(out) :: fsnt(pcols) ! Total column absorbed solar flux
58875906
real(r8), intent(out) :: fsntoa(pcols) ! Net solar flux at TOA
@@ -6072,6 +6091,7 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
60726091
real(r8) solflx ! Solar flux in current interval
60736092
real(r8) sfltot ! Spectrally summed total solar flux
60746093
real(r8) totfld(0:pver) ! Spectrally summed flux divergence
6094+
real(r8) totfldc(0:pver) ! Spectrally summed clear sky flux divergence
60756095
real(r8) fswup(0:pverp) ! Spectrally summed up flux
60766096
real(r8) fswdn(0:pverp) ! Spectrally summed down flux
60776097
real(r8) fswupc(0:pverp) ! Spectrally summed up clear sky flux
@@ -6345,6 +6365,7 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
63456365

63466366
do k=1, pver
63476367
qrs(i,k) = 0.0_r8
6368+
qrscs(i,k) = 0.0_r8
63486369
end do
63496370

63506371
! initialize aerosol diagnostic fields to 0.0
@@ -7181,6 +7202,7 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
71817202
!
71827203
do k=0,pver
71837204
totfld(k) = 0.0_r8
7205+
totfldc(k) = 0.0_r8
71847206
fswup (k) = 0.0_r8
71857207
fswdn (k) = 0.0_r8
71867208
fswupc (k) = 0.0_r8
@@ -7514,6 +7536,13 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
75147536
fswdncdir(k) = fswdncdir(k) + solflx*exptdnc(k) ! Beer's Law amontornes-bcodina (2014-04-20)
75157537
end do
75167538
7539+
! For clear sky heating rate
7540+
do k=0,pver
7541+
kp1 = k+1
7542+
flxdiv = (fluxdn(k ) - fluxdn(kp1)) + (fluxup(kp1) - fluxup(k))
7543+
totfldc(k) = totfldc(k) + solflx*flxdiv
7544+
end do
7545+
75177546
fsntc(i) = fsntc(i)+solflx*(fluxdn(1)-fluxup(1))
75187547
fsntoac(i) = fsntoac(i)+solflx*(fluxdn(0)-fluxup(0))
75197548
fsnsc(i) = fsnsc(i)+solflx*(fluxdn(pverp)-fluxup(pverp))
@@ -7532,6 +7561,7 @@ subroutine radcswmx(jj, lchnk ,ncol ,pcols, pver, pverp, &
75327561
!
75337562
do k=1,pver
75347563
qrs(i,k) = -1.E-4*gravit*totfld(k)/(pint(i,k) - pint(i,k+1))
7564+
qrscs(i,k) = -1.E-4*gravit*totfldc(k)/(pint(i,k) - pint(i,k+1))
75357565
end do
75367566
75377567
! Added downward/upward total and clear sky fluxes

0 commit comments

Comments
 (0)