section M of routines in multi.i

yorick banner




Global Index


Quick Reference

functions in multi.i - M


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