NAME

multilayer_reflect - multilayer reflection of rays from a surface


VERSION

multilayer_reflect D19980929


PARAMETERS

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.


DESCRIPTION

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.


OTHER

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 & LICENSE

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


VERSION

This documents version 0.0.7 of multilayer_reflect.


AUTHORS

T. Gaetz (tgaetz@cfa.harvard.edu)