MultiFile
|
MultiFile
struct MultiFile {
string f; /* name of the file variable for this file
-- no such thing as address of a file variable */
string oname; /* name of the opacity variable in f
-- default is "opac" if present in the file */
string ename; /* name of the emissivity variable in f, or 0 if
source function used instead
-- default is "emiss" if present in the file */
string sname; /* name of the source function variable in f,
ignored if ename!=0
-- default is "srcf" if present in the file */
double oscale; /* scale factor for correcting opacity units */
double escale; /* scale factor for correcting emissivity units
-- will be used to correct srcf*opac if srcf used */
pointer zuse; /* pointer to list of zone indices to use in this file
-- If &[], all zones in this file are used.
-- As a special case, if &array(0), use no zones. */
pointer zones; /* list of master file zone indices for the zones which
are present in this post-processing file
-- The length of this list must be the same as the
product of the non-spectral dimensions of the opacity
and emissivity arrays, or the same length as *zuse,
if that array is present.
-- zones==0 means that all zones in the master file
(including zeroes in the first row and column) are
present in this file. */
/* This standard interface supports two spectral models:
(1) Zone-centered model: Opacities and emissivities are defined as
integrals over photon energy bins, so that the group structure
is specified by a bin boundary energy list gb.
(2) Point-centered model: Opacities and emissivities are defined at
particular discrete photon energies, so that the group structure
is specified by a photon energy list gav.
In case (1), gav==0, and in case (2), gb==0.
In either case, gb or gav must be a strictly increasing list of
photon energies. However, a single file may contain data in several
disjoint spectral regions. This information, together with spectral
chunking information, is stored in the index array, nu.
pointer gb; /* bin boundary array list for this file */
pointer gav; /* photon energy array list for this file */
pointer gexist; /* group existence map (if gb!=0) or connection map
(if gav!=0), or 0 if all groups exist or all
photon energies are connected */
pointer gx;
/* (*gx) is a pointer to a n_spectral_regions -by- 2 array
of extreme values of each spectral region, used to limit the
interpolation boundaries. (*gx)(,1) is the lower boundary,
while (*gx)(,2) is the upper boundary. */
pointer nu;
/* (*nu) is 6 -by- n_spectral_regions -by- n_chunks index array:
(*nu)(, spectral-region, chunk)
can be written [i1,i2,i3,i4,i5,i6] where:
gb(i1:i2+1) or gav(i1:i2) are the bins required to compute this
chunk in this spectral region.
i1==0 if, and only if, this file make no contribution at all
to this chunk in this spectral region.
multi_gb(i3:i4) are the master bins affected by this chunk
If i6!=0, opacity(i4+1:i5) will be extrapolated as 1/nu^3 from the
value at gb(i6:i6+1) or gav(i6). This will be done even if i1==0. */
double tscale; /* scale factor for correcting time units */
int noextrap; /* 1/nu^3 extrapolation will be done unless non-zero */
int freqfirst; /* frequency index is last unless non-zero */
}
structure, defined at i/multi.i line 629
|