Cloud_ICA: A deterministic cloud-overlap algorithm for generating a complete set of independent column atmospheres
Data files
May 15, 2024 version files 1.75 MB
-
atmos_PTClds.dat
-
ICA_nica640.out
-
ICA-print1.out
-
README.md
Abstract
In calculating solar radiation, climate models make many simplifications, in part to reduce computational cost and enable climate modeling, and in part from lack of understanding of critical atmospheric information. Whether known errors or unknown errors, the community's concern is how these could impact the modeled climate. The simplifications are well known and most have published studies evaluating them, but with individual studies it is difficult to compare. Here, we collect a wide range of such simplifications in either radiative transfer modeling or atmospheric conditions and assess potential errors within a consistent framework on climate‐relevant scales. We build benchmarking capability around a solar heating code (Solar‐J) that doubles as a photolysis code for chemistry and can be readily adapted to consider other errors and uncertainties. The broad classes here include: use of broad wavelength bands to integrate over spectral features; scattering approximations that alter phase function and optical depths for clouds and gases; uncertainty in ice‐cloud optics; treatment of fractional cloud cover including overlap; and variability of ocean surface albedo. We geographically map the errors in W m−2 using a full climate re‐creation for January 2015 from a weather forecasting model. For many approximations assessed here, mean errors are ∼2 W m−2 with greater latitudinal biases and are likely to affect a model's ability to match the current climate state. Combining this work with previous studies, we make priority recommendations for fixing these simplifications based on both the magnitude of error and the ease or computational cost of the fix.
README: Assessing Uncertainties and Approximations in Solar Heating of the Climate System
https://doi.org/10.5061/dryad.w9ghx3fxz
The primary goal of the computer code published here is to provide an algorithm for sorting an atmosphere of overlapping clouds into a complete and finite set of independent column atmospheres (ICAs), wherein each layer is horizontally homogenous (i.e., plane parallel) and either uniformly cloudy or clear. Many current solar heating codes can only estimate the distribution of ICAs with Monte Carlo sampling. This algorithm gets around that problem. It has been in use with UCI photochemistry codes, but it was so deeply embedded as to make it unusable by others. Here we extract that algorithm to enable ready use in other Earth system modeling codes.
This work presents a stand-alone FORTRAN 90 computer code Cloud-ICA that reads in a single column atmosphere (p at edges, T in layer) where each layer includes a cloud fraction (CldF = 0-1) plus the liquid- and/or ice-water path of the cloud in the layer (not the average over the clear and cloudy layer). The cloud data are used to calculate the visible optical depth of the cloud itself (CldTau), not the average optical depth of the layer. With these two quantities and an overlap algorithm, the code calculates a subset of independent column atmospheres (ICAs), each occupying a fraction of the original cell (wtICA) and each with layers that are either 100% cloudy or clear, thus enabling plane-parallel radiative transfer solutions.
Description of the data and file structure
There are two sample output files:
ICA_print1.out = detailed printout for the first cloudy atmosphere that has only 36 ICAs. This gives the values for the grouping indices and the profiles of the 36 ICAs in terms of cloud visible optical depth in leach model layer. See the rest of this readme file for a description of the variables.
ICA_nica640.out = a quick scan through 640 different tropical atmospherrs listing the number of ICAs in each (NICA) the resulting QCAs in terms of weights and column optical depth.
atmos_PTClds.dat = gives a standard atmospheric profile (p, T) and then 640 different profiles of cloud systems, sampled from ECMWF fields in the tropics.
Variables in the printout examples
>>>>>atmospheric data
L = model layer, must be from surface(L=1) to top-of-atmosphere (L=58)in this case. The inverse layering notation (L=1=toa)is not supported and may not work.
For physics, in our model L=1:LATM_
For clouds, it is limited to L=1:CLD_ (<LATM_)
z (km), geometric altitude at the bottom of the layer from integrating the hydrostatic equation
p (hPa) at the bottom edge of the layer
T (K) temperature of the layer.
CLF (dimensionless, 0.00 to 1.00) = cloud fraction in layer L = 1:LCLD, aka CLDF in some modules
LWP/IWP (g/m2) = liquid/ice water path in the cloud (not average in the layer)
WLC/WIC (g-water/kg-air) = cloud liquid/ice water content
CLTAU (optical depth)= approximate visible OD for cloud (not average in layer)
REFFL/REFFI (microns) = effective radius of liquid/ice water cloud used to calculate CLTAU
CLDCOR (0.00 to 1.00) decorrelation factor between adjacent maximally overlapped cloud groups. The decorrelation factor with a cloud group 2 above it is CLDCOR**2
>>>>>cloud overlap groups and quantization
FBIN (integer) number of quantized bins allowed for CLDF. Example, if FBIN = 10, then CLDF is quantized into fixed fractions: 0.0, 0.1, 0.2, … 0.9, 1.0. Note that if CLF < CLF_MIN = 0.02) then CLDF = 0.0 and the layer is cleared of clouds! The optical depth of the cloud (CLTAU) is scaled to conserve CLF*CLTAU. Quantized CLDF means any max-overlap group has at most 10 possible combinations.
NCLDF(1:LCLD_) = cloud fraction quantum number (1:FBIN) for layer. NCLDF = 0 means NO clouds
LNRG (= 0, 3, 6) index for Cloud-J to establish the number of semi-independent maximally overlapped cloud groups in an atmospheric column.
LNRG=0. Defines a break in the max-overlap cloud groups by the cloud optical depth quantum. NG_BRK=0 is default = clear layer, see FBIN and NCLDF below.
LNRG=3: Defines 3 separate max-overlap groups strictly by altitude, that is presently locked to our ECMWF L57 grid: GRP=1 is L=1:8 (surf to +1 km); GRP=2 is L=9 to uppermost liquid water cloud; GRP=3 is for all-ice clouds. Note that mixed-phase clouds count as liquid water since they dominate the liquid water cloud opacity. These groups may be merged if they are without clouds.
LNRG=6: Current recommendation is for correlated groups of max-overlap clouds. Uses altitude (actually calculated for the true model grid, not presumed to be ECMWF L57) to create 6 max-overlap groups, based on observed correlation lengths (see Cloud-J papers). GRP#1 is 0-1.5km, GRP#2 is 1.5-3.5km, GRP#3 is 3.5-6km, GRP#4 is 6-9km, GRP#5 is 9-13km, and GRP#6 is 13km+.
LCIRRUS = layer number of the top cirrus shield group (if there is one). New Group: if there is a CLF~1 cirrus shield, pull it off the top of the maximum GRP, and create a separate GRP#7. (Could be lower GRP# is some of GRP#1-6 have no clouds.
NRG (integer) final number of maximally overlapped groups, should be 1 to 7 in current code depending on numer of groups w/o clouds. Code is dimensioned to accommodate 9 total groups.
GMIN(1:NRG), GMAX(1:NRG) = layer number of the bottom and top of each max-ran group. All possible cloud layers (1:LCLD_) must be in a group. The numbers start with GMIN(1)=1 and end with GMAX(NRG) = LCLD_.
GNR(1:NRG) = no. of unique quantized cloud fractions in group, .le.FBIN+1
GBOT(1:NRG) = lowest model layer of max-overlap group (similar to GMIN)
GTOP(1:NRG) = uppermost model layer of max-overlap group (similar to GMAX)
GCMX(1:NRG) = maximum cloud fraction (quantum # 1:FBIN) of the max-overlap group
GLVL(1:NRG) = G6 group # (1:7,for LNRG=6 only) of the NRG group #. This keeps track of a missing (uncloudy) G6 group so that the decorrelation factor is calculated correctly, with extra factor for missing groups. Note that there can be 7 G6 groups if the upper cirrus shield is separated so as to be decorrelated with clouds below.
GFNR(1:NRG,1:GNR) = GFNR(N,G) = cloud fraction quantum no. (1 to CBIN_) for max-overlap group N’s cloud fraction # G.
>>>>>independent column atmospheres
ICA_ = dimensioned size for ICAs, currently 20,000. Can be larger. With LNRG=6 and FBIN=10, the maximum possible is about 5e6, but for LNRG=0, the maximum could be 2**(LCLD_/2) (i.e., alternating cloudy and clear layers).
NICA = total number of ICAs
WCOL(1:NICA) = fractional area weight of each ICA
OCOL(1:NICA) = column visible optical depth of each ICA
OPRF(1:LCLD_,1:NICA) = visible optical depth in each layer of each ICA
ISORT(1:NICA) = number of ICA (original sequence generated by groups) when sorted in order from smallest OCOL to largest OCOL.
>>>>>quadrature column atmospheres
N.B. These QCA variables are not returned in the main subroutine CLOUD-ICA because QCAs may not necessarily be invoked (need CLDFLAG = 7 or 8). In Cloud_j, the QCA calculation is called internally. These can be extracted if the QCAs are desired.
WTQCA(1:NQD_) = fractional area weight of QCA = 1:4, may be 0.
ODQCA(1:NQD_) = column cloud visible optical depth of QCA
QCOLN(1:LCLD_,1:NDQ_) = visible optical depth in each layer of each ICA
NQ1(1:NQD_) = starting ICA number in the QCA group (based on ISORT, sorted ICAs!)
NQ2(1:NQD_) = ending ICA number in the QCA group (from ISORT)
Code/Software
The core computer program and standalone driver is archived in the accompanying zenodo files. These are FORTRAN 90 files, written on a pc (cr/lf).
Methods
Note added (2024/05/20): The program as written limits the number of ICAs to the dimension size ICA_ = 20,000 = 2 x 104. If using the preferred 6 max-overlap vertical blocks plus cirrus shield (LNRG=6) and the quantization of cloud fraction in units of 1/10, then the maximum number of ICAs is limited to about 5 x 106. While this maximum number has not been found by us with realistic atmospheres, it is possible. We did not want to dimension and scan/sort such large numbers of ICAs when running multi-year CTM simulations and thus truncated it at 2 x 104. This truncation is a soft landing and just combines upper level decorrelated blocks into a single max-overlap block until the ICA_ limit is met. The invocation of this limit does invoke a 'write' statement that may disrupt parallel optimization, and it can be commented away.
NICA greater than ICA_ 22680 20000 7560 7 6
Beware that if you run LNRG=0, then alternating cloudy and clear layers can generate 2CLD_/2 ICAs.