00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00036 #ifndef optproperties_h
00037 #define optproperties_h
00038
00039 #include "matpackVII.h"
00040 #include "mystring.h"
00041
00042
00044
00054 typedef enum{
00055 PTYPE_GENERAL = 10,
00056 PTYPE_MACROS_ISO = 20,
00057 PTYPE_HORIZ_AL = 30,
00058 PTYPE_SPHERICAL = 40
00059 } PType;
00060
00061
00062
00063
00064
00065
00066
00068
00073 struct SingleScatteringData {
00074 PType ptype;
00075 String description;
00076 Vector f_grid;
00077 Vector T_grid;
00078 Vector za_grid;
00079 Vector aa_grid;
00080 Tensor7 pha_mat_data;
00081 Tensor5 ext_mat_data;
00082 Tensor5 abs_vec_data;
00083 };
00084
00085 typedef Array<SingleScatteringData> ArrayOfSingleScatteringData;
00086
00087 ostream& operator<< (ostream& os, const SingleScatteringData& ssd);
00088 ostream& operator<< (ostream& os, const ArrayOfSingleScatteringData& assd);
00089
00090
00091
00092
00093
00094 void abs_vecTransform(
00095 VectorView abs_vec_lab,
00096
00097 ConstTensor3View abs_vec_data,
00098 ConstVectorView za_datagrid,
00099 ConstVectorView aa_datagrid,
00100 const PType& ptype,
00101 const Numeric& za_sca,
00102 const Numeric& aa_sca);
00103
00104
00105 void ext_matTransform(
00106 MatrixView ext_mat_lab,
00107
00108 ConstTensor3View ext_mat_data,
00109 ConstVectorView za_datagrid,
00110 ConstVectorView aa_datagrid,
00111 const PType& ptype,
00112 const Numeric& za_sca,
00113 const Numeric& aa_sca);
00114
00115
00116 void pha_matTransform(
00117 MatrixView pha_mat_lab,
00118
00119 ConstTensor5View pha_mat_data,
00120 ConstVectorView za_datagrid,
00121 ConstVectorView aa_datagrid,
00122 const PType& ptype,
00123 const Index& za_sca_idx,
00124 const Index& aa_sca_idx,
00125 const Index& za_inc_idx,
00126 const Index& aa_inc_idx,
00127 ConstVectorView scat_za_grid,
00128 ConstVectorView scat_aa_grid
00129 );
00130
00131
00132
00133
00134
00135
00136 void interpolate_scat_angle(
00137 VectorView pha_mat_int,
00138 Numeric& theta_rad,
00139
00140 ConstTensor5View pha_mat_data,
00141 ConstVectorView za_datagrid,
00142 const Numeric& za_sca,
00143 const Numeric& aa_sca,
00144 const Numeric& za_inc,
00145 const Numeric& aa_inc);
00146
00147
00148 void pha_mat_labCalc(
00149 MatrixView pha_mat_lab,
00150
00151 ConstVectorView pha_mat_int,
00152 const Numeric& za_sca,
00153 const Numeric& aa_sca,
00154 const Numeric& za_inc,
00155 const Numeric& aa_inc,
00156 const Numeric& theta_rad);
00157
00158
00159 #endif //optproperties_h