|
@@ -296,8 +296,12 @@ class MultiLayerMie {
|
|
std::vector<std::complex<FloatType>> GetS1();
|
|
std::vector<std::complex<FloatType>> GetS1();
|
|
std::vector<std::complex<FloatType>> GetS2();
|
|
std::vector<std::complex<FloatType>> GetS2();
|
|
|
|
|
|
- std::vector<std::complex<FloatType>> GetAn() { return an_; };
|
|
|
|
- std::vector<std::complex<FloatType>> GetBn() { return bn_; };
|
|
|
|
|
|
+ std::vector<std::complex<FloatType>> GetAn() {
|
|
|
|
+ return an_;
|
|
|
|
+ };
|
|
|
|
+ std::vector<std::complex<FloatType>> GetBn() {
|
|
|
|
+ return bn_;
|
|
|
|
+ };
|
|
|
|
|
|
std::vector<std::vector<std::complex<FloatType>>> GetLayerAn() {
|
|
std::vector<std::vector<std::complex<FloatType>>> GetLayerAn() {
|
|
return aln_;
|
|
return aln_;
|
|
@@ -347,9 +351,13 @@ class MultiLayerMie {
|
|
void SetMaxTerms(int nmax);
|
|
void SetMaxTerms(int nmax);
|
|
|
|
|
|
// Get maximum number of terms
|
|
// Get maximum number of terms
|
|
- int GetMaxTerms() { return nmax_; };
|
|
|
|
|
|
+ int GetMaxTerms() {
|
|
|
|
+ return nmax_;
|
|
|
|
+ };
|
|
|
|
|
|
- bool isMieCalculated() { return isMieCalculated_; };
|
|
|
|
|
|
+ bool isMieCalculated() {
|
|
|
|
+ return isMieCalculated_;
|
|
|
|
+ };
|
|
|
|
|
|
// Clear layer information
|
|
// Clear layer information
|
|
void ClearLayers();
|
|
void ClearLayers();
|
|
@@ -360,25 +368,39 @@ class MultiLayerMie {
|
|
// Get total size parameter of particle
|
|
// Get total size parameter of particle
|
|
FloatType GetSizeParameter();
|
|
FloatType GetSizeParameter();
|
|
// Returns size of all layers
|
|
// Returns size of all layers
|
|
- std::vector<FloatType> GetLayersSize() { return size_param_; };
|
|
|
|
|
|
+ std::vector<FloatType> GetLayersSize() {
|
|
|
|
+ return size_param_;
|
|
|
|
+ };
|
|
// Returns refractive index of all layers
|
|
// Returns refractive index of all layers
|
|
std::vector<std::complex<FloatType>> GetLayersIndex() {
|
|
std::vector<std::complex<FloatType>> GetLayersIndex() {
|
|
return refractive_index_;
|
|
return refractive_index_;
|
|
};
|
|
};
|
|
// Returns scattering (theta) angles
|
|
// Returns scattering (theta) angles
|
|
- std::vector<FloatType> GetAngles() { return theta_; };
|
|
|
|
|
|
+ std::vector<FloatType> GetAngles() {
|
|
|
|
+ return theta_;
|
|
|
|
+ };
|
|
// Returns coordinates used for field calculation
|
|
// Returns coordinates used for field calculation
|
|
- std::vector<std::vector<FloatType>> GetFieldCoords() { return coords_; };
|
|
|
|
|
|
+ std::vector<std::vector<FloatType>> GetFieldCoords() {
|
|
|
|
+ return coords_;
|
|
|
|
+ };
|
|
// Returns index of PEC layer
|
|
// Returns index of PEC layer
|
|
- int GetPECLayer() { return PEC_layer_position_; };
|
|
|
|
|
|
+ int GetPECLayer() {
|
|
|
|
+ return PEC_layer_position_;
|
|
|
|
+ };
|
|
|
|
|
|
std::vector<std::vector<std::complex<FloatType>>> GetFieldE() {
|
|
std::vector<std::vector<std::complex<FloatType>>> GetFieldE() {
|
|
return E_;
|
|
return E_;
|
|
}; // {X[], Y[], Z[]}
|
|
}; // {X[], Y[], Z[]}
|
|
- std::vector<std::vector<std::complex<FloatType>>> GetFieldH() { return H_; };
|
|
|
|
|
|
+ std::vector<std::vector<std::complex<FloatType>>> GetFieldH() {
|
|
|
|
+ return H_;
|
|
|
|
+ };
|
|
|
|
|
|
- std::vector<FloatType> GetFieldEabs() { return Eabs_; }; // {X[], Y[], Z[]}
|
|
|
|
- std::vector<FloatType> GetFieldHabs() { return Habs_; };
|
|
|
|
|
|
+ std::vector<FloatType> GetFieldEabs() {
|
|
|
|
+ return Eabs_;
|
|
|
|
+ }; // {X[], Y[], Z[]}
|
|
|
|
+ std::vector<FloatType> GetFieldHabs() {
|
|
|
|
+ return Habs_;
|
|
|
|
+ };
|
|
bool GetFieldConvergence();
|
|
bool GetFieldConvergence();
|
|
|
|
|
|
// Get fields in spherical coordinates.
|
|
// Get fields in spherical coordinates.
|
|
@@ -540,8 +562,17 @@ class MesoMie {
|
|
std::vector<std::complex<FloatType>> GetBn() { return bn_; };
|
|
std::vector<std::complex<FloatType>> GetBn() { return bn_; };
|
|
|
|
|
|
FloatType Qsca_ = 0.0, Qext_ = 0.0;
|
|
FloatType Qsca_ = 0.0, Qext_ = 0.0;
|
|
- FloatType GetQsca() { return Qsca_; };
|
|
|
|
- FloatType GetQext() { return Qext_; };
|
|
|
|
|
|
+
|
|
|
|
+ template <typename outputType = FloatType>
|
|
|
|
+ outputType GetQsca() {
|
|
|
|
+ return static_cast<outputType>(Qsca_);
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ template <typename outputType = FloatType>
|
|
|
|
+ outputType GetQext() {
|
|
|
|
+ return static_cast<outputType>(Qext_);
|
|
|
|
+ };
|
|
|
|
+
|
|
void calc_ab(FloatType R,
|
|
void calc_ab(FloatType R,
|
|
std::complex<FloatType> xd,
|
|
std::complex<FloatType> xd,
|
|
std::complex<FloatType> xm,
|
|
std::complex<FloatType> xm,
|