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.7 of multilayer_reflect.
T. Gaetz (tgaetz@cfa.harvard.edu)