multilayer_reflect - multilayer reflection of rays from a surface
multilayer_reflect D19980929
multilayer_reflect uses an IRAF-compatible parameter interface. A template parameter file is in /proj/axaf/simul/lib/uparm/multilayer_reflect.par.
input
This parameter specifies the name of the file/stream for the input
bpipe
. If the filename is the string stdin
, it reads UNIX
standard input.
output
This parameter specifies the name of the file/stream for the output
bpipe
. If the filename is the string stdout
, it writes to UNIX
standard output.
logfile
This parameter specifies the name of the file to contain the raytrace summary and error messages.
layerdata_rdb
This parameter specifies the name of the rdb file which contains information about the layers. The rdb file currently has one row per material, with the first being the first nonvacuum layer and the last row being the substrate; there must be at least one row in the table.
The rdb columns are:
material
This column provides ascii names for the materials making up the multilayer. This column is required.
thickness
This column gives the thickness of the layer in Angstroms. The substrate is infinitely thick; typically a value of 1.e30 is used. This column is required.
bulkdensity
This column scales the bulk densities for the materials. Normally this should be a value between 0 (equivalent to vacuum) and 1 (appropriate to full density). This column is required.
roughness_type
This column indicates the type of surface "roughness". This column is optional; if it is not present, a value of "none" is assumed for all rows. The currently supported (case-insensitive) values for this column are:
none
No "roughness" factor; the corresponding srough
value is ignored.
(Case-insensitive.)
DW
Debye-Waller "roughness" factor; the corresponding srough
value is
interpreted as the sigma for the interface roughness. (Case-insensitive.)
MDW
Modified Debye-Waller "roughness" factor; the corresponding srough
value is interpreted as the sigma for the interface roughness.
This differs from the Nevot-Croce factor in its treatment of the
complex cosine terms and factors of index of refraction.
(Case-insensitive.)
NC
Nevot-Croce "roughness" factor; the corresponding srough
value is
interpreted as the sigma for the interface roughness.
(Case-insensitive.)
srough
This column provides the "sigma" for the roughness factors. The
units are Angstroms. This column is required only if
the roughness_type
column is present.
optconst_rdb
This column provides file names (with optional path) for the rdb tables containing the optical constant data for each surface. Currently, only optical constants in the form of complex dielectric constant decrements are supported. The rdb table has at least two rows and 3 columns: energy (in keV), alpha, gamma. The complex dielectric constant is (1 - alpha, -gamma).
energy_xfrm
This parameter specifies the type of transform to be applied to energy in constructing the reflectance table. Valid values are lin (linear) or log (log), for linear and logarithmic transformations, respectively.
reflectance_xfrm
This parameter specifies the type of transform to be applied to reflectance parameters (e.g., alpha, gamma) in constructing the reflectance table. Valid values are lin (linear) or log (log), for linear and logarithmic transformations, respectively.
help
Boolean; if yes
, print out a simple help message and exit.
version
Boolean; if yes
, print out multilayer_reflect's version and exit.
debug
A list of debug flags. The presently supported flags are:
summary
print out a summary to the unix stderr
stream.
bad_ndotv
The projection of the ray direction vector on the surface normal is assumed to be nonnegative; if this projection is negative, the ray has hit the wrong side of the optic.
If the bad_ndotv
flag is set, information is written to the
log file for each ray which hits the wrong side of the surface.
multilayer_reflect reads BPipe format rays and applies a multilayer reflection to the rays. Each ray is assumed to be at the intercept of the ray with the optic just prior to reflection. The reflected ray is writted to an output BPipe.
If the ray was generated with SAOdrat, note that SAOdrat must
be run with the SAOdrat parameter do_osac_reflection
set to no
.
Otherwise, the ray is reflected twice which amounts to a ray
traveling in the direction of the incident ray before reflection
but with diminished intensity.
The C++ multilayer_reflect code is based on a C code (reflect) written by T. Gaetz, which in turn made use of algorithms from OSAC.
Multilayer support was added by D. Nguyen based on a Fortran code written by Ron Elsner (MSFC/Project Science).
Most of the functionality of reflect
was extracted
and placed in C++ libraries; see vm_math
, dvm3
, rl_raylib
,
and rl_raysuplib
.
Copyright 2006 Smithsonian Astrophysical Observatory
This software is released under the GNU General Public License. You may find a copy at
http://www.fsf.org/copyleft/gpl.html
This documents version 0.0.9 of multilayer_reflect.
T. Gaetz (tgaetz@cfa.harvard.edu)