rl_raysuplib  1.0.13
rl_Multilayer_rdb.h
1 #ifndef rl_Multilayer_rdb_h_INCLUDED
2 #define rl_Multilayer_rdb_h_INCLUDED
3 
4 // File: rl_Multilayer_rdb.h
5 // Author: Terry Gaetz
6 
7 /* --8<--8<--8<--8<--
8  *
9  * Copyright (C) 2006 Smithsonian Astrophysical Observatory
10  *
11  * This file is part of rl_ray
12  *
13  * rl_ray is free software; you can redistribute it and/or
14  * modify it under the terms of the GNU General Public License
15  * as published by the Free Software Foundation; either version 2
16  * of the License, or (at your option) any later version.
17  *
18  * rl_ray is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with this program; if not, write to the
25  * Free Software Foundation, Inc.
26  * 51 Franklin Street, Fifth Floor
27  * Boston, MA 02110-1301, USA
28  *
29  * -->8-->8-->8-->8-- */
30 
31 #include <cstddef> // ptrdiff_t
32 #include <rl_raylib/rl_Traits.h> // rl_Traits::rl_DielectricPOD
33 #include <rl_raylib/rl_Multilayer.h> // rl_Multilayer
34 
35 //########################################################################
36 // rl_Multilayer_rdb
37 //########################################################################
38 
39 
40 //
41  /***
42  * /class rl_Multilayer_rdb
43  *
44  * Construct or initialize rl_Multilayer based on contents of an /rdb table.
45  * The rdb table is assumed to contain one row for each layer
46  * of the multilayer, ordered from the top (adjacent to vacuum) layer
47  * to the substrate (conventionally with thickness of 1.e30).
48  * The rdb table is assumed to contain the following columns:
49  * - material: an ascii string containing the compostion of
50  * the layer; used for labeling and i/o. This column is required.
51  * - thickness: thickness of the layer in Angstroms
52  * - bulkdensity: relative bulk density of the layer; 1.0 is full
53  * nominal bulk density. This column is required.
54  * - roughness_type: type of interlayer grading.
55  * This column is optional; if it is not present, "none" is assumed.
56  * Currently acceptable values are (case-insensitive):
57  * - none: no interlayer grading
58  * - DW_RSAO: Debye-Waller factor (SAO variant on Windt's DW,
59  * taking only the real part of the factor)
60  * - DW_CSAO: Debye-Waller factor (SAO variant on Windt's DW,
61  * using the complex factor)
62  * - DW_SPILLER: Debye-Waller factor (variant on DW from a paper by
63  * Spiller (1988)
64  * - MDW: "Modified Debye-Waller" factor
65  * - NC: Nevot-Croce factor
66  * - srough: interlayer grading "roughness" sigma (in Angstroms);
67  * This column is required only if the roughness_type column is present.
68  * - pathname</code> - This contains a string containing the filename
69  * (optionally prefixed with a path) for the /rdb table containing the
70  * optical constant data for this layer. The layer is optical
71  * constants are initialized using rl_DielectricPOD_rdb to read
72  * the /rdb data.
73  */
74 class rl_Multilayer_rdb
75  : public rl_Multilayer
76 {
77 public:
78 
82  ~rl_Multilayer_rdb();
83 
98  rl_Multilayer_rdb( char const rdb_file[], rl_Traits::EInterpMode interp_mode );
99 
113  void init_from_rdb( char const rdb_file[], rl_Traits::EInterpMode interp_mode );
114 };
115 
116 // rl_Multilayer_rdb_h_INCLUDED
117 #endif