diff --git a/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.cpp b/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.cpp index 1a07bb882de6460c0d081a43d8074a27740c32ec..46f3c72de6c95e04940fa4d01c960b049d5bb3d4 100644 --- a/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.cpp +++ b/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.cpp @@ -53,8 +53,8 @@ double SizeSpacingCorrelationApproximationStrategy::evaluateForList( double fraction = m_weighted_ffs[i]->m_abundance / m_total_abundance; diffuse_intensity += fraction * std::norm(ff); } - complex_t mcff = getMeanCharacteristicFF (qp, m_ff); - complex_t mcffc = getMeanConjCharacteristicFF(qp, m_ff); + complex_t mcff = getMeanCharacteristicFF (qp); + complex_t mcffc = getMeanConjCharacteristicFF(qp); complex_t p2kappa = getCharacteristicSizeCoupling(qp, 2.0 * m_kappa); complex_t omega = getCharacteristicDistribution(qp); double interference_intensity = 2.0 * (mcff * mcffc * omega / (1.0 - p2kappa * omega)).real(); @@ -78,8 +78,8 @@ double SizeSpacingCorrelationApproximationStrategy::evaluateForMatrixList( double fraction = m_weighted_ffs[i]->m_abundance / m_total_abundance; diffuse_matrix += fraction * (ff * sim_element.getPolarization() * ff.adjoint()); } - Eigen::Matrix2cd mcff = getMeanCharacteristicMatrixFF (sim_element.getMeanQ(), m_ff_pol); - Eigen::Matrix2cd mcffc = getMeanConjCharacteristicMatrixFF(sim_element.getMeanQ(), m_ff_pol); + Eigen::Matrix2cd mcff = getMeanCharacteristicMatrixFF (qp); + Eigen::Matrix2cd mcffc = getMeanConjCharacteristicMatrixFF(qp); complex_t p2kappa = getCharacteristicSizeCoupling(qp, 2.0 * m_kappa); complex_t omega = getCharacteristicDistribution(qp); Eigen::Matrix2cd interference_matrix @@ -92,44 +92,42 @@ double SizeSpacingCorrelationApproximationStrategy::evaluateForMatrixList( } complex_t SizeSpacingCorrelationApproximationStrategy::getMeanCharacteristicFF( - double qp, const std::vector<complex_t> &ff_list) const + double qp) const { complex_t result(0.0, 0.0); for (size_t i = 0; i < m_weighted_ffs.size(); ++i) - result += m_weighted_ffs[i]->m_abundance * ff_list[i] + result += m_weighted_ffs[i]->m_abundance * m_ff[i] * calculatePositionOffsetPhase(qp, m_kappa, i); return result / m_total_abundance; } complex_t SizeSpacingCorrelationApproximationStrategy::getMeanConjCharacteristicFF( - double qp, const std::vector<complex_t>& ff_list) const + double qp) const { complex_t result(0.0, 0.0); for (size_t i = 0; i < m_weighted_ffs.size(); ++i) - result += m_weighted_ffs[i]->m_abundance * std::conj(ff_list[i]) + result += m_weighted_ffs[i]->m_abundance * std::conj(m_ff[i]) * calculatePositionOffsetPhase(qp, m_kappa, i); return result / m_total_abundance; } Eigen::Matrix2cd SizeSpacingCorrelationApproximationStrategy::getMeanCharacteristicMatrixFF( - const kvector_t q, const matrixFFVector_t& ff_list) const + double qp) const { - double qp = q.magxy(); Eigen::Matrix2cd result = Eigen::Matrix2cd::Zero(); for (size_t i = 0; i < m_weighted_ffs.size(); ++i) result += m_weighted_ffs[i]->m_abundance * calculatePositionOffsetPhase(qp, m_kappa, i) - * ff_list[i]; + * m_ff_pol[i]; return result / m_total_abundance; } Eigen::Matrix2cd SizeSpacingCorrelationApproximationStrategy::getMeanConjCharacteristicMatrixFF( - const kvector_t q, const matrixFFVector_t& ff_list) const + double qp) const { - double qp = q.magxy(); Eigen::Matrix2cd result = Eigen::Matrix2cd::Zero(); for (size_t i = 0; i < m_weighted_ffs.size(); ++i) result += m_weighted_ffs[i]->m_abundance * calculatePositionOffsetPhase(qp, m_kappa, i) - * ff_list[i].adjoint(); + * m_ff_pol[i].adjoint(); return result / m_total_abundance; } diff --git a/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.h b/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.h index 46f72e582a54ec08d778ac5eed7285e82632557b..62ed20c6244e7348b39f37ebda2358b35f408ea7 100644 --- a/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.h +++ b/Core/Multilayer/SizeSpacingCorrelationApproximationStrategy.h @@ -36,18 +36,16 @@ private: double evaluateForList(const SimulationElement& sim_element) const final; double evaluateForMatrixList(const SimulationElement& sim_element) const final; - complex_t getMeanCharacteristicFF( - double qp, const std::vector<complex_t>& ff_list) const; - complex_t getMeanConjCharacteristicFF( - double qp, const std::vector<complex_t>& ff_list) const; - Eigen::Matrix2cd getMeanCharacteristicMatrixFF( - const kvector_t q, const matrixFFVector_t& ff_list) const; - Eigen::Matrix2cd getMeanConjCharacteristicMatrixFF( - const kvector_t q, const matrixFFVector_t& ff_list) const; + complex_t getMeanCharacteristicFF(double qp) const; + complex_t getMeanConjCharacteristicFF(double qp) const; + Eigen::Matrix2cd getMeanCharacteristicMatrixFF(double qp) const; + Eigen::Matrix2cd getMeanConjCharacteristicMatrixFF(double qp) const; + complex_t getCharacteristicDistribution(double qp) const; complex_t getCharacteristicSizeCoupling(double qp, double kappa) const; complex_t calculatePositionOffsetPhase(double qp, double kappa, size_t index) const; void initMeanRadius(); + double m_mean_radius; double m_kappa; };