00001 #ifndef rl_Multilayer_rdb_h_INCLUDED 00002 #define rl_Multilayer_rdb_h_INCLUDED 00003 00004 // File: rl_Multilayer_rdb.h 00005 // Author: Terry Gaetz 00006 00007 /* --8<--8<--8<--8<-- 00008 * 00009 * Copyright (C) 2006 Smithsonian Astrophysical Observatory 00010 * 00011 * This file is part of rl_ray 00012 * 00013 * rl_ray is free software; you can redistribute it and/or 00014 * modify it under the terms of the GNU General Public License 00015 * as published by the Free Software Foundation; either version 2 00016 * of the License, or (at your option) any later version. 00017 * 00018 * rl_ray is distributed in the hope that it will be useful, 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 * GNU General Public License for more details. 00022 * 00023 * You should have received a copy of the GNU General Public License 00024 * along with this program; if not, write to the 00025 * Free Software Foundation, Inc. 00026 * 51 Franklin Street, Fifth Floor 00027 * Boston, MA 02110-1301, USA 00028 * 00029 * -->8-->8-->8-->8-- */ 00030 00031 #include <cstddef> // ptrdiff_t 00032 #include <rl_raylib/rl_Traits.h> // rl_Traits::rl_DielectricPOD 00033 #include <rl_raylib/rl_Multilayer.h> // rl_Multilayer 00034 00035 //######################################################################## 00036 // rl_Multilayer_rdb 00037 //######################################################################## 00038 00039 00040 // 00041 /*** 00042 * /class rl_Multilayer_rdb 00043 * 00044 * Construct or initialize rl_Multilayer based on contents of an /rdb table. 00045 * The rdb table is assumed to contain one row for each layer 00046 * of the multilayer, ordered from the top (adjacent to vacuum) layer 00047 * to the substrate (conventionally with thickness of 1.e30). 00048 * The rdb table is assumed to contain the following columns: 00049 * - material: an ascii string containing the compostion of 00050 * the layer; used for labeling and i/o. This column is required. 00051 * - thickness: thickness of the layer in Angstroms 00052 * - bulkdensity: relative bulk density of the layer; 1.0 is full 00053 * nominal bulk density. This column is required. 00054 * - roughness_type: type of interlayer grading. 00055 * This column is optional; if it is not present, "none" is assumed. 00056 * Currently acceptable values are (case-insensitive): 00057 * - none: no interlayer grading 00058 * - DW_RSAO: Debye-Waller factor (SAO variant on Windt's DW, 00059 * taking only the real part of the factor) 00060 * - DW_CSAO: Debye-Waller factor (SAO variant on Windt's DW, 00061 * using the complex factor) 00062 * - DW_SPILLER: Debye-Waller factor (variant on DW from a paper by 00063 * Spiller (1988) 00064 * - MDW: "Modified Debye-Waller" factor 00065 * - NC: Nevot-Croce factor 00066 * - srough: interlayer grading "roughness" sigma (in Angstroms); 00067 * This column is required only if the roughness_type column is present. 00068 * - pathname</code> - This contains a string containing the filename 00069 * (optionally prefixed with a path) for the /rdb table containing the 00070 * optical constant data for this layer. The layer is optical 00071 * constants are initialized using rl_DielectricPOD_rdb to read 00072 * the /rdb data. 00073 */ 00074 class rl_Multilayer_rdb 00075 : public rl_Multilayer 00076 { 00077 public: 00078 00082 ~rl_Multilayer_rdb(); 00083 00098 rl_Multilayer_rdb( char const rdb_file[], rl_Traits::EInterpMode interp_mode ); 00099 00113 void init_from_rdb( char const rdb_file[], rl_Traits::EInterpMode interp_mode ); 00114 }; 00115 00116 // rl_Multilayer_rdb_h_INCLUDED 00117 #endif