16#ifndef optproperties_h
17#define optproperties_h
20#include "matpack_data.h"
23#include "propagationmatrix.h"
113 const ArrayOfTensor5& ext_mat_ss,
114 const ArrayOfTensor4& abs_vec_ss,
118 ArrayOfTensor5& ext_mat,
119 ArrayOfTensor4& abs_vec,
122 const ArrayOfArrayOfTensor5& ext_mat_se,
123 const ArrayOfArrayOfTensor4& abs_vec_se,
125 ConstMatrixView pnds,
126 ConstMatrixView t_ok);
129 ArrayOfArrayOfTensor5& ext_mat,
130 ArrayOfArrayOfTensor4& abs_vec,
135 const Index& stokes_dim,
136 const Vector& T_array,
137 const Matrix& dir_array,
138 const Index& f_index,
139 const Index& t_interp_order = 1);
148 const Vector& T_array,
149 const Matrix& dir_array,
150 const Index& f_index,
151 const Index& t_interp_order = 1);
154 MatrixView ext_mat_stokes,
156 ConstVectorView ext_mat_ssd,
157 const Index& stokes_dim,
161 VectorView abs_vec_stokes,
163 ConstVectorView abs_vec_ssd,
164 const Index& stokes_dim,
171 const ArrayOfTensor6& pha_mat_ss,
175 ArrayOfTensor6& pha_mat,
178 const ArrayOfArrayOfTensor6& pha_mat_se,
180 ConstMatrixView pnds,
181 ConstMatrixView t_ok);
184 ArrayOfArrayOfTensor6& pha_mat,
189 const Index& stokes_dim,
190 const Vector& T_array,
191 const Matrix& pdir_array,
192 const Matrix& idir_array,
193 const Index& f_index,
194 const Index& t_interp_order = 1);
202 const Vector& T_array,
203 const Matrix& pdir_array,
204 const Matrix& idir_array,
205 const Index& f_start,
206 const Index& t_interp_order = 1);
209 StokesVector& abs_vec_lab,
211 ConstTensor3View abs_vec_data,
212 ConstVectorView za_datagrid,
213 ConstVectorView aa_datagrid,
215 const Numeric& za_sca,
216 const Numeric& aa_sca,
220 PropagationMatrix& ext_mat_lab,
222 ConstTensor3View ext_mat_data,
223 ConstVectorView za_datagrid,
224 ConstVectorView aa_datagrid,
226 const Numeric& za_sca,
227 const Numeric& aa_sca,
231 MatrixView pha_mat_lab,
233 ConstTensor5View pha_mat_data,
234 ConstVectorView za_datagrid,
235 ConstVectorView aa_datagrid,
237 const Index& za_sca_idx,
238 const Index& aa_sca_idx,
239 const Index& za_inc_idx,
240 const Index& aa_inc_idx,
241 ConstVectorView za_grid,
242 ConstVectorView aa_grid,
248 ConstVectorView abs_vec,
249 const Index& stokes_dim);
255 const Numeric& aa_sca,
256 const Numeric& za_inc,
257 const Numeric& aa_inc);
260 VectorView pha_mat_int,
262 ConstTensor5View pha_mat_data,
263 ConstVectorView za_datagrid,
264 const Numeric theta);
267 MatrixView pha_mat_lab,
269 ConstVectorView pha_mat_int,
270 const Numeric& za_sca,
271 const Numeric& aa_sca,
272 const Numeric& za_inc,
273 const Numeric& aa_inc,
274 const Numeric& theta_rad);
280 PropagationMatrix& ext_mat,
281 StokesVector& abs_vec,
283 const PropagationMatrix& propmat_clearsky);
293 const String& particle_ssdmethod_string);
300 Tensor3View pfun_data,
303 ConstMatrixView pnd_data,
305 ConstVectorView T_grid,
306 ConstVectorView sa_grid,
307 const Index f_index = -1);
This can be used to make arrays out of anything.
Implementation of gridded fields.
Declarations having to do with the four output streams.
This file contains the definition of String, the ARTS string class.
PType PType2FromString(const String &ptype_string)
Convert ptype name to enum value.
PType
An attribute to classify the particle type (ptype) of a SingleScatteringData.
void pha_mat_NScatElems(ArrayOfArrayOfTensor6 &pha_mat, ArrayOfArrayOfIndex &ptypes, Matrix &t_ok, const ArrayOfArrayOfSingleScatteringData &scat_data, const Index &stokes_dim, const Vector &T_array, const Matrix &pdir_array, const Matrix &idir_array, const Index &f_index, const Index &t_interp_order=1)
Phase matrices from all scattering elements.
void ext_mat_SSD2Stokes(MatrixView ext_mat_stokes, ConstVectorView ext_mat_ssd, const Index &stokes_dim, const Index &ptype)
Extinction matrix scat_data to stokes format conversion.
void opt_prop_ScatSpecBulk(ArrayOfTensor5 &ext_mat, ArrayOfTensor4 &abs_vec, ArrayOfIndex &ptype, const ArrayOfArrayOfTensor5 &ext_mat_se, const ArrayOfArrayOfTensor4 &abs_vec_se, const ArrayOfArrayOfIndex &ptypes_se, ConstMatrixView pnds, ConstMatrixView t_ok)
Scattering species bulk extinction and absorption.
Array< ScatteringMetaData > ArrayOfScatteringMetaData
ParticleSSDMethod
An attribute to classify the method to be used for SingleScatteringData.
@ PARTICLE_SSDMETHOD_NONE
@ PARTICLE_SSDMETHOD_TMATRIX
void ext_matFromabs_vec(MatrixView ext_mat, ConstVectorView abs_vec, const Index &stokes_dim)
Derive extinction matrix from absorption vector.
void opt_prop_sum_propmat_clearsky(PropagationMatrix &ext_mat, StokesVector &abs_vec, const PropagationMatrix &propmat_clearsky)
Get optical properties from propmat_clearsky.
void opt_prop_NScatElems(ArrayOfArrayOfTensor5 &ext_mat, ArrayOfArrayOfTensor4 &abs_vec, ArrayOfArrayOfIndex &ptypes, Matrix &t_ok, const ArrayOfArrayOfSingleScatteringData &scat_data, const Index &stokes_dim, const Vector &T_array, const Matrix &dir_array, const Index &f_index, const Index &t_interp_order=1)
Extinction and absorption from all scattering elements.
Numeric scat_angle(const Numeric &za_sca, const Numeric &aa_sca, const Numeric &za_inc, const Numeric &aa_inc)
Calculates the scattering angle.
String ParticleSSDMethodToString(const ParticleSSDMethod &particle_ssdmethod_type)
Array< SingleScatteringData > ArrayOfSingleScatteringData
void ext_abs_pfun_from_tro(MatrixView ext_data, MatrixView abs_data, Tensor3View pfun_data, const ArrayOfSingleScatteringData &scat_data, const Index &iss, ConstMatrixView pnd_data, ArrayOfIndex &cloudbox_limits, ConstVectorView T_grid, ConstVectorView sa_grid, const Index f_index=-1)
Extinction, absorption and phase function for one scattering species, 1D and TRO.
void pha_mat_labCalc(MatrixView pha_mat_lab, ConstVectorView pha_mat_int, const Numeric &za_sca, const Numeric &aa_sca, const Numeric &za_inc, const Numeric &aa_inc, const Numeric &theta_rad)
Calculate phase matrix in laboratory coordinate system.
void abs_vecTransform(StokesVector &abs_vec_lab, ConstTensor3View abs_vec_data, ConstVectorView za_datagrid, ConstVectorView aa_datagrid, const PType &ptype, const Numeric &za_sca, const Numeric &aa_sca, const Verbosity &verbosity)
Transformation of absorption vector.
Array< Array< SingleScatteringData > > ArrayOfArrayOfSingleScatteringData
void opt_prop_1ScatElem(Tensor5View ext_mat, Tensor4View abs_vec, Index &ptype, VectorView t_ok, const SingleScatteringData &ssd, const Vector &T_array, const Matrix &dir_array, const Index &f_index, const Index &t_interp_order=1)
Preparing extinction and absorption from one scattering element.
PType PTypeFromString(const String &ptype_string)
Convert ptype name to enum value.
void pha_mat_ScatSpecBulk(ArrayOfTensor6 &pha_mat, ArrayOfIndex &ptype, const ArrayOfArrayOfTensor6 &pha_mat_se, const ArrayOfArrayOfIndex &ptypes_se, ConstMatrixView pnds, ConstMatrixView t_ok)
Scattering species bulk phase matrices.
void pha_mat_Bulk(Tensor6 &pha_mat, Index &ptype, const ArrayOfTensor6 &pha_mat_ss, const ArrayOfIndex &ptypes_ss)
Scattering species bulk phase matrix.
void ext_matTransform(PropagationMatrix &ext_mat_lab, ConstTensor3View ext_mat_data, ConstVectorView za_datagrid, ConstVectorView aa_datagrid, const PType &ptype, const Numeric &za_sca, const Numeric &aa_sca, const Verbosity &verbosity)
Transformation of extinction matrix.
void ConvertAzimuthallyRandomSingleScatteringData(SingleScatteringData &ssd)
Convert azimuthally-random oriented SingleScatteringData to latest version.
void abs_vec_SSD2Stokes(VectorView abs_vec_stokes, ConstVectorView abs_vec_ssd, const Index &stokes_dim, const Index &ptype)
Absorption vector scat_data to stokes format conversion.
void opt_prop_Bulk(Tensor5 &ext_mat, Tensor4 &abs_vec, Index &ptype, const ArrayOfTensor5 &ext_mat_ss, const ArrayOfTensor4 &abs_vec_ss, const ArrayOfIndex &ptypes_ss)
one-line descript
ParticleSSDMethod ParticleSSDMethodFromString(const String &particle_ssdmethod_string)
Convert particle ssd method name to enum value.
Array< Array< ScatteringMetaData > > ArrayOfArrayOfScatteringMetaData
void pha_mat_1ScatElem(Tensor6View pha_mat, Index &ptype, VectorView t_ok, const SingleScatteringData &ssd, const Vector &T_array, const Matrix &pdir_array, const Matrix &idir_array, const Index &f_start, const Index &t_interp_order=1)
Preparing phase matrix from one scattering element.
void interpolate_scat_angle(VectorView pha_mat_int, ConstTensor5View pha_mat_data, ConstVectorView za_datagrid, const Numeric theta)
Interpolate data on the scattering angle.
void pha_matTransform(MatrixView pha_mat_lab, ConstTensor5View pha_mat_data, ConstVectorView za_datagrid, ConstVectorView aa_datagrid, const PType &ptype, const Index &za_sca_idx, const Index &aa_sca_idx, const Index &za_inc_idx, const Index &aa_inc_idx, ConstVectorView za_grid, ConstVectorView aa_grid, const Verbosity &verbosity)
Transformation of phase matrix.
String PTypeToString(const PType &ptype)
Convert particle type enum value to String.
friend ostream & operator<<(ostream &os, const SingleScatteringData &ssd)