diff --git a/Core/FormFactors/FormFactorAnisoPyramid.cpp b/Core/FormFactors/FormFactorAnisoPyramid.cpp index 4a9d1eca0f0e732705313c13278b31393cede16c..c4b22255ca07387ee1501c868ad2723fcb7e361d 100644 --- a/Core/FormFactors/FormFactorAnisoPyramid.cpp +++ b/Core/FormFactors/FormFactorAnisoPyramid.cpp @@ -18,13 +18,14 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorAnisoPyramid::topology = { - { { 3, 2, 1, 0 }, false }, - { { 0, 1, 5, 4 }, false }, - { { 1, 2, 6, 5 }, false }, - { { 2, 3, 7, 6 }, false }, - { { 3, 0, 4, 7 }, false }, - { { 4, 5, 6, 7 }, false } -}; + { + { { 3, 2, 1, 0 }, true }, + { { 0, 1, 5, 4 }, false }, + { { 1, 2, 6, 5 }, false }, + { { 2, 3, 7, 6 }, false }, + { { 3, 0, 4, 7 }, false }, + { { 4, 5, 6, 7 }, true } + }, false }; //! @brief Pyramid constructor //! @param base_edge of one side of Pyramid's square base @@ -72,7 +73,7 @@ void FormFactorAnisoPyramid::onChange() double zcom = m_height * ( .5 - (r+s)/3 + r*s/4 ) / ( 1 - (r+s)/2 + r*s/3 ); // center of mass - setPolyhedron( topology, -zcom, false, { + setPolyhedron( topology, -zcom, { // base: { -D, -W, -zcom }, { D, -W, -zcom }, diff --git a/Core/FormFactors/FormFactorCone6.cpp b/Core/FormFactors/FormFactorCone6.cpp index d9f13c0326647ea52a8012c56a53c57cc8e6e65e..4e8915db93c5a2cad1806d60ccde257a4e41d66d 100644 --- a/Core/FormFactors/FormFactorCone6.cpp +++ b/Core/FormFactors/FormFactorCone6.cpp @@ -18,15 +18,16 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorCone6::topology = { - { { 5, 4, 3, 2, 1, 0 }, true }, - { { 0, 1, 7, 6 }, false }, - { { 1, 2, 8, 7 }, false }, - { { 2, 3, 9, 8 }, false }, - { { 3, 4, 10, 9 }, false }, - { { 4, 5, 11, 10 }, false }, - { { 5, 0, 6, 11 }, false }, - { { 6, 7, 8, 9, 10, 11 }, true } -}; + { + { { 5, 4, 3, 2, 1, 0 }, true }, + { { 0, 1, 7, 6 }, false }, + { { 1, 2, 8, 7 }, false }, + { { 2, 3, 9, 8 }, false }, + { { 3, 4, 10, 9 }, false }, + { { 4, 5, 11, 10 }, false }, + { { 5, 0, 6, 11 }, false }, + { { 6, 7, 8, 9, 10, 11 }, true } + }, false }; //! Cone6 constructor //! @param base_edge of hexagonal base (different from R in IsGisaxs) @@ -70,7 +71,7 @@ void FormFactorCone6::onChange() double zcom = m_height * ( .5 - 2*r/3 + r*r/4 ) / ( 1 - r + r*r/3 ); // center of mass - setPolyhedron( topology, -zcom, false, { + setPolyhedron( topology, -zcom, { // base: { a, 0., -zcom }, { as, ac, -zcom }, diff --git a/Core/FormFactors/FormFactorCuboctahedron.cpp b/Core/FormFactors/FormFactorCuboctahedron.cpp index 3d874a44340deb9209190616876fc4bc4cb2a370..c56449eaaa057064519a6d293d873a0d84d15fea 100644 --- a/Core/FormFactors/FormFactorCuboctahedron.cpp +++ b/Core/FormFactors/FormFactorCuboctahedron.cpp @@ -19,17 +19,18 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorCuboctahedron::topology = { - { { 3, 2, 1, 0 }, true }, - { { 0, 1, 5, 4 }, false }, - { { 1, 2, 6, 5 }, false }, - { { 2, 3, 7, 6 }, false }, - { { 3, 0, 4, 7 }, false }, - { { 4, 5, 9, 8 }, false }, - { { 5, 6, 10, 9 }, false }, - { { 6, 7, 11, 10 }, false }, - { { 7, 4, 8, 11 }, false }, - { { 8, 9, 10, 11 }, true } -}; + { + { { 3, 2, 1, 0 }, true }, + { { 0, 1, 5, 4 }, false }, + { { 1, 2, 6, 5 }, false }, + { { 2, 3, 7, 6 }, false }, + { { 3, 0, 4, 7 }, false }, + { { 4, 5, 9, 8 }, false }, + { { 5, 6, 10, 9 }, false }, + { { 6, 7, 11, 10 }, false }, + { { 7, 4, 8, 11 }, false }, + { { 8, 9, 10, 11 }, true } + }, false }; //! @brief Cuboctahedron constructor //! @param length of one side of Cuboctahedron's square base @@ -81,7 +82,7 @@ void FormFactorCuboctahedron::onChange() double zb = -dzcom; double zc = -dzcom+x*m_height; - setPolyhedron( topology, za, false, { + setPolyhedron( topology, za, { // base: { -a, -a, za }, { a, -a, za }, diff --git a/Core/FormFactors/FormFactorDodecahedron.cpp b/Core/FormFactors/FormFactorDodecahedron.cpp index 43a15ba8d50e038cf454740dbd7c27211b221055..b6d928feb98833f01938554370da197213180ea4 100644 --- a/Core/FormFactors/FormFactorDodecahedron.cpp +++ b/Core/FormFactors/FormFactorDodecahedron.cpp @@ -19,23 +19,24 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorDodecahedron::topology = { - // bottom: - { { 0, 4, 3, 2, 1 }, false }, - // lower ring: - { { 0, 5, 12, 9, 4 }, false }, - { { 4, 9, 11, 8, 3 }, false }, - { { 3, 8, 10, 7, 2 }, false }, - { { 2, 7, 14, 6, 1 }, false }, - { { 1, 6, 13, 5, 0 }, false }, - // upper ring: - { { 8, 11, 16, 15, 10 }, false }, - { { 9, 12, 17, 16, 11 }, false }, - { { 5, 13, 18, 17, 12 }, false }, - { { 6, 14, 19, 18, 13 }, false }, - { { 7, 10, 15, 19, 14 }, false }, - // top: - { { 15, 16, 17, 18, 19 }, false } -}; + { + // bottom: + { { 0, 4, 3, 2, 1 }, false }, + // lower ring: + { { 0, 5, 12, 9, 4 }, false }, + { { 4, 9, 11, 8, 3 }, false }, + { { 3, 8, 10, 7, 2 }, false }, + { { 2, 7, 14, 6, 1 }, false }, + { { 1, 6, 13, 5, 0 }, false }, + // upper ring: + { { 8, 11, 16, 15, 10 }, false }, + { { 9, 12, 17, 16, 11 }, false }, + { { 5, 13, 18, 17, 12 }, false }, + { { 6, 14, 19, 18, 13 }, false }, + { { 7, 10, 15, 19, 14 }, false }, + // top: + { { 15, 16, 17, 18, 19 }, false } + }, true }; FormFactorDodecahedron::FormFactorDodecahedron(double edge) @@ -50,7 +51,7 @@ FormFactorDodecahedron::FormFactorDodecahedron(double edge) void FormFactorDodecahedron::onChange() { double a = m_edge; - setPolyhedron( topology, -1.113516364411607*a, true, { + setPolyhedron( topology, -1.113516364411607*a, { { 0.8506508083520399*a, 0*a, -1.113516364411607*a}, { 0.2628655560595668*a, 0.8090169943749473*a, -1.113516364411607*a}, { -0.6881909602355868*a, 0.5*a, -1.113516364411607*a}, diff --git a/Core/FormFactors/FormFactorIcosahedron.cpp b/Core/FormFactors/FormFactorIcosahedron.cpp index de9dfc645f3d3d0ba7153c069ca22ad158c7f6eb..93f21cfee8ff45f1db9e5e6b3879c9f81f0ff49b 100644 --- a/Core/FormFactors/FormFactorIcosahedron.cpp +++ b/Core/FormFactors/FormFactorIcosahedron.cpp @@ -19,33 +19,34 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorIcosahedron::topology = { - // bottom: - { { 0, 2, 1 }, false }, - // 1st row: - { { 0, 5, 2 }, false }, - { { 2, 3, 1 }, false }, - { { 1, 4, 0 }, false }, - // 2nd row: - { { 0, 6, 5 }, false }, - { { 2, 5, 8 }, false }, - { { 2, 8, 3 }, false }, - { { 1, 3, 7 }, false }, - { { 1, 7, 4 }, false }, - { { 0, 4, 6 }, false }, - // 3rd row: - { { 3, 8, 9 }, false }, - { { 5, 11, 8 }, false }, - { { 5, 6, 11 }, false }, - { { 4, 10, 6 }, false }, - { { 4, 7, 10 }, false }, - { { 3, 9, 7 }, false }, - // 4th row: - { { 8, 11, 9 }, false }, - { { 6, 10, 11 }, false }, - { { 7, 9, 10 }, false }, - // top: - { { 9, 11, 10 }, false } -}; + { + // bottom: + { { 0, 2, 1 }, false }, + // 1st row: + { { 0, 5, 2 }, false }, + { { 2, 3, 1 }, false }, + { { 1, 4, 0 }, false }, + // 2nd row: + { { 0, 6, 5 }, false }, + { { 2, 5, 8 }, false }, + { { 2, 8, 3 }, false }, + { { 1, 3, 7 }, false }, + { { 1, 7, 4 }, false }, + { { 0, 4, 6 }, false }, + // 3rd row: + { { 3, 8, 9 }, false }, + { { 5, 11, 8 }, false }, + { { 5, 6, 11 }, false }, + { { 4, 10, 6 }, false }, + { { 4, 7, 10 }, false }, + { { 3, 9, 7 }, false }, + // 4th row: + { { 8, 11, 9 }, false }, + { { 6, 10, 11 }, false }, + { { 7, 9, 10 }, false }, + // top: + { { 9, 11, 10 }, false } + }, true }; FormFactorIcosahedron::FormFactorIcosahedron(double edge) @@ -60,7 +61,7 @@ FormFactorIcosahedron::FormFactorIcosahedron(double edge) void FormFactorIcosahedron::onChange() { double a = m_edge; - setPolyhedron( topology, -0.7557613140761708*a, true, { + setPolyhedron( topology, -0.7557613140761708*a, { { 0.5773502691896258*a, 0*a, -0.7557613140761708*a}, { -0.288675134594813*a, 0.5*a, -0.7557613140761708*a}, { -0.288675134594813*a, -0.5*a, -0.7557613140761708*a}, diff --git a/Core/FormFactors/FormFactorPolyhedron.cpp b/Core/FormFactors/FormFactorPolyhedron.cpp index 69765a88451d46dec308ca91225cfac3120a72cf..13518fb8edb6d9e3ca6baf48c1cf0239b30a869c 100644 --- a/Core/FormFactors/FormFactorPolyhedron.cpp +++ b/Core/FormFactors/FormFactorPolyhedron.cpp @@ -43,7 +43,7 @@ static double eps(2e-16); extern Diagnosis diagnosis; #endif -double PolyhedralFace::qpa_limit_series = 1e-3; +double PolyhedralFace::qpa_limit_series = 1e-2; int PolyhedralFace::n_limit_series = 20; double FormFactorPolyhedron::q_limit_series = 1e-5; @@ -202,7 +202,7 @@ complex_t PolyhedralFace::ff_n_core( int m, const cvector_t q ) const { cvector_t prevec = 2.*m_normal.cross( q ); // complex conjugation will take place in .dot complex_t ret = 0; - for( const PolyhedralEdge& e: edges ) + for( const PolyhedralEdge& e: edges ) // TODO improve accuracy as in qpa expansion ret += e.contrib(m, prevec, q); return ret; } @@ -228,6 +228,71 @@ complex_t PolyhedralFace::ff_n( int n, const cvector_t q ) const } } +//! Returns sum of n>=1 terms of qpa expansion of 2d form factor + +complex_t PolyhedralFace::expansion( + complex_t fac_even, complex_t fac_odd, cvector_t qpa, double abslevel ) const +{ +#ifdef POLYHEDRAL_DIAGNOSTIC + diagnosis.nExpandedFaces += 1; +#endif + complex_t sum = 0; + complex_t n_fac = I; + int count_return_condition = 0; + for( int n=1; n<n_limit_series; ++n ) { +#ifdef POLYHEDRAL_DIAGNOSTIC + diagnosis.maxOrder = std::max( diagnosis.maxOrder, n ); +#endif + complex_t term = n_fac * ( n&1 ? fac_odd : fac_even ) * ff_n_core(n, qpa) / qpa.mag2(); +#ifdef POLYHEDRAL_DIAGNOSTIC + if( diagnosis.debmsg>=2 ) + std::cout<<std::setprecision(16)<<" sum="<<sum<<" +term="<<term<<"\n"; +#endif + sum += term; + if( std::abs(term)<=eps*std::abs(sum) || std::abs(sum)<eps*abslevel ) + ++count_return_condition; + else + count_return_condition = 0; + if( count_return_condition>2 ) + return sum; // regular exit + n_fac *= I; + } +#ifdef POLYHEDRAL_DIAGNOSTIC + if( !diagnosis.request_convergence ) + return sum; +#endif + throw std::runtime_error("Bug in formfactor computation: series f(q_pa) not converged"); +} + +//! Returns core contribution to analytic 2d form factor. + +complex_t PolyhedralFace::edge_sum_ff( cvector_t q, cvector_t qpa, bool sym_Ci ) const +{ + cvector_t prevec = m_normal.cross( qpa ); // complex conjugation will take place in .dot + complex_t sum = 0; + complex_t vfacsum = 0; + for( size_t i=0; i<edges.size(); ++i ) { + const PolyhedralEdge& e = edges[i]; + complex_t qE = e.qE(qpa); + complex_t qR = e.qR(qpa); + complex_t Rfac = sym_S2 ? sin(qR) : ( sym_Ci ? cos(e.qR(q)) : exp(I*qR) ); + complex_t vfac; + if( sym_S2 || i<edges.size()-1 ) { + vfac = prevec.dot(e.E()); + vfacsum += vfac; + } else { + vfac = - vfacsum; // to improve numeric accuracy: qcE_J = - sum_{j=0}^{J-1} qcE_j + } + complex_t term = vfac * MathFunctions::sinc(qE) * Rfac; + sum += term; +#ifdef POLYHEDRAL_DIAGNOSTIC + if( diagnosis.debmsg>=2 ) + std::cout<<std::scientific<<std::showpos<<std::setprecision(16)<<" sum="<<sum<<" term="<<term<<" vf="<<vfac<<" qE="<<qE<<" qR="<<qR<<" sinc="<<MathFunctions::sinc(qE)<<" Rfac="<<Rfac<<"\n"; +#endif + } + return sum; +} + //! Returns the contribution ff(q) of this face to the polyhedral form factor. complex_t PolyhedralFace::ff( const cvector_t q, const bool sym_Ci ) const @@ -237,13 +302,11 @@ complex_t PolyhedralFace::ff( const cvector_t q, const bool sym_Ci ) const decompose_q( q, qperp, qpa ); double qpa_red = m_radius_2d * qpa.mag(); complex_t qr_perp = qperp*m_rperp; + complex_t ff0 = (sym_Ci ? 2.*I*sin(qr_perp) : exp(I*qr_perp)) * m_area; if ( qpa_red==0 ) { - return (sym_Ci ? 2.*I*sin(qr_perp) : exp(I*qr_perp)) * m_area; + return ff0; } else if ( qpa_red < qpa_limit_series && !sym_S2 ) { // summation of power series -#ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis.nExpandedFaces += 1; -#endif complex_t fac_even; complex_t fac_odd; if( sym_Ci ) { @@ -253,38 +316,19 @@ complex_t PolyhedralFace::ff( const cvector_t q, const bool sym_Ci ) const fac_even = exp( I*qr_perp ); fac_odd = fac_even; } - complex_t sum = fac_even * m_area; - complex_t n_fac = I; - for( int n=1; n<n_limit_series; ++n ) { -#ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis.maxOrder = std::max( diagnosis.maxOrder, n ); -#endif - complex_t term = n_fac * ( n&1 ? fac_odd : fac_even ) * ff_n_core(n, qpa) / qpa.mag2(); - sum += term; - // std::cout<<std::setprecision(16)<<" sum="<<sum<<" term="<<term<<"\n"; - if( !(n&1) && std::abs(term)<=eps*std::abs(sum) ) - return sum; - n_fac *= I; - } -#ifdef POLYHEDRAL_DIAGNOSTIC - return sum; -#else - throw std::runtime_error("Bug in formfactor computation: series f(q_pa) not converged"); -#endif + return ff0 + expansion( fac_even, fac_odd, qpa, std::abs(ff0) ); } else { // direct evaluation of analytic formula - cvector_t prevec = m_normal.cross( qpa ); // complex conjugation will take place in .dot - complex_t prefac = 2.; + complex_t prefac; if( sym_S2 ) - prefac *= sym_Ci ? -4.*sin(qr_perp) : 2.*I*exp(I*qr_perp); - complex_t sum = 0; - for( const PolyhedralEdge& e: edges ) { - complex_t qE = e.qE(q); - complex_t qR = e.qR(q); - complex_t Rfac = sym_S2 ? sin(e.qR(qpa)) : ( sym_Ci ? 2.*cos(qR) : exp(I*qR) ); - sum += prevec.dot(e.E()) * MathFunctions::sinc(qE) * Rfac; - } - return prefac * sum / ( I*qpa.mag2() ); + prefac = sym_Ci ? -8.*sin(qr_perp) : 4.*I*exp(I*qr_perp); + else + prefac = sym_Ci ? 4. : 2.*exp(I*qr_perp); +#ifdef POLYHEDRAL_DIAGNOSTIC + if( diagnosis.debmsg>=2 ) + std::cout<<" qrperp="<<qr_perp<<" => prefac="<<prefac<<"\n"; +#endif + return prefac * edge_sum_ff( q, qpa, sym_Ci ) / ( I*qpa.mag2() ); } } @@ -299,37 +343,16 @@ complex_t PolyhedralFace::ff_2D( const cvector_t qpa ) const return m_area; } else if ( qpa_red < qpa_limit_series && !sym_S2 ) { // summation of power series -#ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis.nExpandedFaces += 1; -#endif - complex_t sum = m_area; - complex_t n_fac = I; - for( int n=1; n<n_limit_series; ++n ) { -#ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis.maxOrder = std::max( diagnosis.maxOrder, n ); -#endif - complex_t term = n_fac * ff_n_core(n, qpa) / qpa.mag2(); - sum += term; - if( !(n&1) && std::abs(term)<=eps*std::abs(sum) ) - return sum; - n_fac *= I; - } -#ifdef POLYHEDRAL_DIAGNOSTIC - return sum; -#else - throw std::runtime_error("Bug in formfactor computation: series f(q_pa) not converged"); -#endif + return m_area + expansion( 1., 1., qpa, std::abs(m_area) ); } else { // direct evaluation of analytic formula - cvector_t prevec = m_normal.cross( qpa ); // complex conjugation will take place in .dot - complex_t sum = 0; - for( const PolyhedralEdge& e: edges ) { - complex_t qE = e.qE(qpa); - complex_t qR = e.qR(qpa); - complex_t Rfac = sym_S2 ? sin(e.qR(qpa)) : exp(I*qR); - sum += prevec.dot(e.E()) * MathFunctions::sinc(qE) * Rfac; - } - return sum * (sym_S2 ? 4. : 2./I ) / qpa.mag2(); + complex_t ff = edge_sum_ff( qpa, qpa, false ); + complex_t ret = (sym_S2 ? 4. : 2./I ) * ff / qpa.mag2(); +#ifdef POLYHEDRAL_DIAGNOSTIC + if( diagnosis.debmsg>=2 ) + std::cout<<std::setprecision(16)<<" ret="<<ret<<" ff="<<ff<<"\n"; +#endif + return ret; } } @@ -356,10 +379,10 @@ void FormFactorPolyhedron::setLimits( double _q, int _n ) { q_limit_series=_q; n //! Called by child classes to set faces and other internal variables. void FormFactorPolyhedron::setPolyhedron( - const Topology& topology, double z_origin, bool sym_Ci, const std::vector<kvector_t>& vertices ) + const Topology& topology, double z_origin, const std::vector<kvector_t>& vertices ) { m_z_origin = z_origin; - m_sym_Ci = sym_Ci; + m_sym_Ci = topology.symmetry_Ci; double diameter = 0; for ( size_t j=0; j<vertices.size(); ++j ) @@ -367,7 +390,7 @@ void FormFactorPolyhedron::setPolyhedron( diameter = std::max( diameter, (vertices[j]-vertices[jj]).mag() ); m_faces.clear(); - for( const TopologyFace& tf: topology ) { + for( const TopologyFace& tf: topology.faces ) { std::vector<kvector_t> corners; // of one face for( int i: tf.vertexIndices ) corners.push_back( vertices[i] ); @@ -410,14 +433,16 @@ complex_t FormFactorPolyhedron::evaluate_centered( const cvector_t q ) const { double q_red = m_radius * q.mag(); #ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis = { 0, 0 }; + diagnosis.maxOrder = 0; + diagnosis.nExpandedFaces = 0; #endif if( q_red==0 ) { return m_volume; } else if ( q_red < q_limit_series ) { // summation of power series - complex_t sum = m_volume; + complex_t sum = 0; complex_t n_fac = ( m_sym_Ci ? -2 : -1 ) / q.mag2(); + int count_return_condition = 0; for( int n=2; n<n_limit_series; ++n ) { if( m_sym_Ci && n&1 ) continue; @@ -428,17 +453,24 @@ complex_t FormFactorPolyhedron::evaluate_centered( const cvector_t q ) const for( const PolyhedralFace& Gk: m_faces ) term += Gk.ff_n( n+1, q ); term *= n_fac; +#ifdef POLYHEDRAL_DIAGNOSTIC + if( diagnosis.debmsg>=1 ) + std::cout<<std::setprecision(16)<<" SUM="<<sum<<" +TERM="<<term<<"\n"; +#endif sum += term; - // std::cout<<std::setprecision(16)<<" sum="<<sum<<" term="<<term<<"\n"; - if( !(n&1) && std::abs(term)<eps*std::abs(sum) ) - return sum; + if( std::abs(term)<=eps*std::abs(sum) || std::abs(sum)<eps*m_volume ) + ++count_return_condition; + else + count_return_condition = 0; + if( count_return_condition>2 ) + return m_volume + sum; // regular exit n_fac *= ( m_sym_Ci ? -1 : I ); } #ifdef POLYHEDRAL_DIAGNOSTIC - return sum; -#else - throw std::runtime_error("Bug in formfactor computation: series F(q) not converged"); + if( !diagnosis.request_convergence ) + return sum; #endif + throw std::runtime_error("Bug in formfactor computation: series F(q) not converged"); } else { // direct evaluation of analytic formula (coefficients may involve series) complex_t sum = 0; @@ -446,7 +478,12 @@ complex_t FormFactorPolyhedron::evaluate_centered( const cvector_t q ) const complex_t qn = Gk.normalProjectionConj( q ); // conj(q)*normal if ( std::abs(qn)<eps*q.mag() ) continue; - sum += qn * Gk.ff(q, m_sym_Ci ); + complex_t ff = Gk.ff(q, m_sym_Ci ); + sum += qn * ff; +#ifdef POLYHEDRAL_DIAGNOSTIC + if( diagnosis.debmsg>=1 ) + std::cout<<std::scientific<<std::showpos<<std::setprecision(16)<<" SUM="<<sum<<" TERM="<<qn*ff<<" qn="<<qn.real()<<" ff="<<ff<<"\n"; +#endif } return sum / (I * q.mag2()); } @@ -463,7 +500,7 @@ void FormFactorPolyhedron::assert_platonic() const pyramidal_volume /= m_faces.size(); for( const auto& Gk: m_faces ) if (std::abs(Gk.pyramidalVolume()-pyramidal_volume) > 160*eps*pyramidal_volume) { - std::cout<<std::setprecision(16)<<"BUG: pyr_volume(this face)="<< + std::cerr<<std::setprecision(16)<<"BUG: pyr_volume(this face)="<< Gk.pyramidalVolume()<<" vs pyr_volume(avge)="<<pyramidal_volume<<"\n"; throw std::runtime_error("Deviant pyramidal volume"); } @@ -488,7 +525,8 @@ double FormFactorPolygonalPrism::getVolume() const { return m_height * m_base->a complex_t FormFactorPolygonalPrism::evaluate_for_q( const cvector_t q ) const { #ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis = { 0, 0 }; + diagnosis.maxOrder = 0; + diagnosis.nExpandedFaces = 0; #endif const cvector_t qxy( q.x(), q.y(), 0. ); return m_height * exp(I*(m_height/2)*q.z()) * MathFunctions::sinc(m_height/2*q.z()) * @@ -503,7 +541,8 @@ complex_t FormFactorPolygonalPrism::evaluate_for_q( const cvector_t q ) const complex_t FormFactorPolygonalSurface::evaluate_for_q( const cvector_t q ) const { #ifdef POLYHEDRAL_DIAGNOSTIC - diagnosis = { 0, 0 }; + diagnosis.maxOrder = 0; + diagnosis.nExpandedFaces = 0; #endif return m_base->ff( q, false ); } diff --git a/Core/FormFactors/FormFactorPolyhedron.h b/Core/FormFactors/FormFactorPolyhedron.h index 9cae7cbf56cb22b1fdcacb2376a9a0bb671ae309..a848cffb9200dc462cf94457b9398d2c52dfe0df 100644 --- a/Core/FormFactors/FormFactorPolyhedron.h +++ b/Core/FormFactors/FormFactorPolyhedron.h @@ -61,7 +61,7 @@ public: double pyramidalVolume() const { return m_rperp*m_area/3; } double radius3d() const { return m_radius_3d; } //! Returns conj(q)*normal [BasicVector3D::dot is antilinear in 'this' argument] - complex_t normalProjectionConj( cvector_t q ) const { return q.dot(m_normal); } + complex_t normalProjectionConj( cvector_t q ) const { return q.dot(m_normal); } complex_t ff_n( int m, const cvector_t q ) const; complex_t ff( const cvector_t q, const bool sym_Ci ) const; complex_t ff_2D( const cvector_t qpa ) const; @@ -82,6 +82,9 @@ private: void decompose_q( const cvector_t q, complex_t& qperp, cvector_t& qpa ) const; complex_t ff_n_core( int m, const cvector_t qpa ) const; + complex_t edge_sum_ff( cvector_t q, cvector_t qpa, bool sym_Ci ) const; + complex_t expansion( + complex_t fac_even, complex_t fac_odd, cvector_t qpa, double abslevel ) const; }; @@ -98,10 +101,15 @@ public: std::vector<int> vertexIndices; bool symmetry_S2; }; - typedef std::vector<TopologyFace> Topology; + class Topology { + public: + std::vector<TopologyFace> faces; + bool symmetry_Ci; + }; FormFactorPolyhedron() {} + virtual void onChange() = 0; virtual complex_t evaluate_for_q(const cvector_t q ) const final; complex_t evaluate_centered( const cvector_t q ) const; @@ -113,7 +121,7 @@ protected: double m_z_origin; bool m_sym_Ci; //!< if true, then faces obtainable by inversion are not provided - void setPolyhedron( const Topology& topology, double z_origin, bool sym_Ci, + void setPolyhedron( const Topology& topology, double z_origin, const std::vector<kvector_t>& vertices ); private: diff --git a/Core/FormFactors/FormFactorPyramid.cpp b/Core/FormFactors/FormFactorPyramid.cpp index 2d1fbb628363ffe624009941697a7efb8d23929b..845f6d369348f33741d80164a89af4089f092585 100644 --- a/Core/FormFactors/FormFactorPyramid.cpp +++ b/Core/FormFactors/FormFactorPyramid.cpp @@ -18,13 +18,14 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorPyramid::topology = { - { { 3, 2, 1, 0 }, true }, // TODO -> true - { { 0, 1, 5, 4 }, false }, - { { 1, 2, 6, 5 }, false }, - { { 2, 3, 7, 6 }, false }, - { { 3, 0, 4, 7 }, false }, - { { 4, 5, 6, 7 }, true } // TODO -> true -}; + { + { { 3, 2, 1, 0 }, true }, // TODO -> true + { { 0, 1, 5, 4 }, false }, + { { 1, 2, 6, 5 }, false }, + { { 2, 3, 7, 6 }, false }, + { { 3, 0, 4, 7 }, false }, + { { 4, 5, 6, 7 }, true } // TODO -> true + }, false }; //! @brief Pyramid constructor //! @param base_edge of one side of Pyramid's square base @@ -65,7 +66,7 @@ void FormFactorPyramid::onChange() double zcom = m_height * ( .5 - 2*r/3 + r*r/4 ) / ( 1 - r + r*r/3 ); // center of mass - setPolyhedron( topology, -zcom, false, { + setPolyhedron( topology, -zcom, { // base: { -a, -a, -zcom }, { a, -a, -zcom }, diff --git a/Core/FormFactors/FormFactorTetrahedron.cpp b/Core/FormFactors/FormFactorTetrahedron.cpp index 50d9526596adae04bd0e40adaa7ef3244da2d599..37d8be26fb3bb730240054b0c8a1045293ed80be 100644 --- a/Core/FormFactors/FormFactorTetrahedron.cpp +++ b/Core/FormFactors/FormFactorTetrahedron.cpp @@ -19,12 +19,13 @@ #include "IntegratorComplex.h" const FormFactorPolyhedron::Topology FormFactorTetrahedron::topology = { - { { 2, 1, 0 }, false }, - { { 0, 1, 4, 3 }, false }, - { { 1, 2, 5, 4 }, false }, - { { 2, 0, 3, 5 }, false }, - { { 3, 4, 5 }, false } -}; + { + { { 2, 1, 0 }, false }, + { { 0, 1, 4, 3 }, false }, + { { 1, 2, 5, 4 }, false }, + { { 2, 0, 3, 5 }, false }, + { { 3, 4, 5 }, false } + }, false }; //! @brief Tetrahedron constructor @@ -72,7 +73,7 @@ void FormFactorTetrahedron::onChange() double zcom = m_height * ( .5 - 2*r/3 + r*r/4 ) / ( 1 - r + r*r/3 ); // center of mass - setPolyhedron( topology, -zcom, false, { + setPolyhedron( topology, -zcom, { // base: { -ac, as, -zcom }, { -ac, -as, -zcom }, diff --git a/Core/FormFactors/FormFactorTruncatedCube.cpp b/Core/FormFactors/FormFactorTruncatedCube.cpp index 1cdc576870bd317b703263bf935d9e6739405463..ac5df0fbdc21eb3688013facc492c51bf77707a5 100644 --- a/Core/FormFactors/FormFactorTruncatedCube.cpp +++ b/Core/FormFactors/FormFactorTruncatedCube.cpp @@ -19,21 +19,22 @@ #include "MathFunctions.h" const FormFactorPolyhedron::Topology FormFactorTruncatedCube::topology = { - { { 0, 1, 7, 6, 9,10, 4, 3 }, true }, - { { 0, 2, 1 }, false }, - { { 3, 4, 5 }, false }, - { { 9,11,10 }, false }, - { { 6, 7, 8 }, false }, - { { 0, 3, 5,17, 15,12,14, 2 }, true }, - { { 4,10,11,23, 22,16,17, 5 }, true }, - { { 1, 2,14,13, 19,20, 8, 7 }, true }, - { { 6, 8,20,18, 21,23,11, 9 }, true }, - { { 15,17,16 }, false }, - { { 12,13,14 }, false }, - { { 18,20,19 }, false }, - { { 21,22,23 }, false }, - { { 12,15,16,22, 21,18,19,13 }, true } -}; + { + { { 0, 1, 7, 6, 9,10, 4, 3 }, true }, + { { 0, 2, 1 }, false }, + { { 3, 4, 5 }, false }, + { { 9,11,10 }, false }, + { { 6, 7, 8 }, false }, + { { 0, 3, 5,17, 15,12,14, 2 }, true }, + { { 4,10,11,23, 22,16,17, 5 }, true }, + { { 1, 2,14,13, 19,20, 8, 7 }, true }, + { { 6, 8,20,18, 21,23,11, 9 }, true }, + { { 15,17,16 }, false }, + { { 12,13,14 }, false }, + { { 18,20,19 }, false }, + { { 21,22,23 }, false }, + { { 12,15,16,22, 21,18,19,13 }, true } + }, true }; //! @param side length of the full cube //! @param side length of the trirectangular tetrahedron removed from each vertex of the cube @@ -64,7 +65,7 @@ void FormFactorTruncatedCube::onChange() double a = m_length/2; double b = m_removed_length; - setPolyhedron( topology, -a, true, { + setPolyhedron( topology, -a, { { -a+b, -a , -a }, { -a , -a+b, -a }, { -a , -a , -a+b }, diff --git a/Core/FormFactors/IFormFactorBorn.h b/Core/FormFactors/IFormFactorBorn.h index 8442ceda58072ab7982febe65d487ed8d144f281..5d97f5296d99018e6b94db1807e0d09daf2bc829 100644 --- a/Core/FormFactors/IFormFactorBorn.h +++ b/Core/FormFactors/IFormFactorBorn.h @@ -54,6 +54,8 @@ class Diagnosis { public: int maxOrder; int nExpandedFaces; + int debmsg; + bool request_convergence; bool operator!=( const Diagnosis& other ) const { return maxOrder!=other.maxOrder || nExpandedFaces!=other.nExpandedFaces; } friend std::ostream& operator<< (std::ostream& stream, const Diagnosis& diag) { diff --git a/Core/PythonAPI/libBornAgainCore.py b/Core/PythonAPI/libBornAgainCore.py index 91d0f5e6d7068a4ddc20c4305594075ca5bc6b2a..f366ddfb6fe865ea801807c26de9b680e8a37bf0 100644 --- a/Core/PythonAPI/libBornAgainCore.py +++ b/Core/PythonAPI/libBornAgainCore.py @@ -8257,6 +8257,11 @@ class PolyhedralFace(_object): return _libBornAgainCore.PolyhedralFace_radius3d(self) + def normalProjectionConj(self, q): + """normalProjectionConj(PolyhedralFace self, cvector_t q) -> complex_t""" + return _libBornAgainCore.PolyhedralFace_normalProjectionConj(self, q) + + def ff_n(self, m, q): """ ff_n(PolyhedralFace self, int m, cvector_t q) -> complex_t @@ -8464,6 +8469,67 @@ class FormFactorPolygonalPrism(IFormFactorBorn): FormFactorPolygonalPrism_swigregister = _libBornAgainCore.FormFactorPolygonalPrism_swigregister FormFactorPolygonalPrism_swigregister(FormFactorPolygonalPrism) +class FormFactorPolygonalSurface(IFormFactorBorn): + """Proxy of C++ FormFactorPolygonalSurface class""" + __swig_setmethods__ = {} + for _s in [IFormFactorBorn]: + __swig_setmethods__.update(getattr(_s, '__swig_setmethods__', {})) + __setattr__ = lambda self, name, value: _swig_setattr(self, FormFactorPolygonalSurface, name, value) + __swig_getmethods__ = {} + for _s in [IFormFactorBorn]: + __swig_getmethods__.update(getattr(_s, '__swig_getmethods__', {})) + __getattr__ = lambda self, name: _swig_getattr(self, FormFactorPolygonalSurface, name) + + def __init__(self, *args, **kwargs): + raise AttributeError("No constructor defined - class is abstract") + __repr__ = _swig_repr + + def evaluate_for_q(self, q): + """ + evaluate_for_q(FormFactorPolygonalSurface self, cvector_t q) -> complex_t + + virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0 + + evaluate scattering amplitude for complex wavevector + + Parameters: + ----------- + + q: + wavevector transfer q=k_i-k_f + + """ + return _libBornAgainCore.FormFactorPolygonalSurface_evaluate_for_q(self, q) + + + def getVolume(self): + """ + getVolume(FormFactorPolygonalSurface self) -> double + + double IFormFactor::getVolume() const + + Returns the total volume of the particle of this form factor's shape. + + """ + return _libBornAgainCore.FormFactorPolygonalSurface_getVolume(self) + + + def getRadius(self): + """ + getRadius(FormFactorPolygonalSurface self) -> double + + virtual double IFormFactor::getRadius() const =0 + + Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations + + """ + return _libBornAgainCore.FormFactorPolygonalSurface_getRadius(self) + + __swig_destroy__ = _libBornAgainCore.delete_FormFactorPolygonalSurface + __del__ = lambda self: None +FormFactorPolygonalSurface_swigregister = _libBornAgainCore.FormFactorPolygonalSurface_swigregister +FormFactorPolygonalSurface_swigregister(FormFactorPolygonalSurface) + class FormFactorAnisoPyramid(FormFactorPolyhedron): """ diff --git a/Core/PythonAPI/libBornAgainCore_wrap.cxx b/Core/PythonAPI/libBornAgainCore_wrap.cxx index 313c57c9b8bf87db9d87cbcce57f7e7d5df9a6dc..9e54a41f47ed8c8ca75d6571415977c6de8854e3 100644 --- a/Core/PythonAPI/libBornAgainCore_wrap.cxx +++ b/Core/PythonAPI/libBornAgainCore_wrap.cxx @@ -3481,191 +3481,192 @@ namespace Swig { #define SWIGTYPE_p_FormFactorLongRipple2Lorentz swig_types[63] #define SWIGTYPE_p_FormFactorLorentz swig_types[64] #define SWIGTYPE_p_FormFactorPolygonalPrism swig_types[65] -#define SWIGTYPE_p_FormFactorPolyhedron swig_types[66] -#define SWIGTYPE_p_FormFactorPrism3 swig_types[67] -#define SWIGTYPE_p_FormFactorPrism6 swig_types[68] -#define SWIGTYPE_p_FormFactorPyramid swig_types[69] -#define SWIGTYPE_p_FormFactorRipple1 swig_types[70] -#define SWIGTYPE_p_FormFactorRipple2 swig_types[71] -#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[72] -#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[73] -#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[74] -#define SWIGTYPE_p_FormFactorTetrahedron swig_types[75] -#define SWIGTYPE_p_FormFactorTrivial swig_types[76] -#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[77] -#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[78] -#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[79] -#define SWIGTYPE_p_FormFactorWeighted swig_types[80] -#define SWIGTYPE_p_GISASSimulation swig_types[81] -#define SWIGTYPE_p_Geometry__BasicVector3DT_double_t swig_types[82] -#define SWIGTYPE_p_Geometry__BasicVector3DT_int_t swig_types[83] -#define SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t swig_types[84] -#define SWIGTYPE_p_Geometry__Ellipse swig_types[85] -#define SWIGTYPE_p_Geometry__HorizontalLine swig_types[86] -#define SWIGTYPE_p_Geometry__IShape2D swig_types[87] -#define SWIGTYPE_p_Geometry__Line swig_types[88] -#define SWIGTYPE_p_Geometry__Polygon swig_types[89] -#define SWIGTYPE_p_Geometry__Rectangle swig_types[90] -#define SWIGTYPE_p_Geometry__Transform3D swig_types[91] -#define SWIGTYPE_p_Geometry__VerticalLine swig_types[92] -#define SWIGTYPE_p_Histogram1D swig_types[93] -#define SWIGTYPE_p_Histogram2D swig_types[94] -#define SWIGTYPE_p_HomogeneousMagneticMaterial swig_types[95] -#define SWIGTYPE_p_HomogeneousMaterial swig_types[96] -#define SWIGTYPE_p_IAbstractParticle swig_types[97] -#define SWIGTYPE_p_IAxis swig_types[98] -#define SWIGTYPE_p_ICloneable swig_types[99] -#define SWIGTYPE_p_IClusteredParticles swig_types[100] -#define SWIGTYPE_p_IComponentService swig_types[101] -#define SWIGTYPE_p_ICompositeSample swig_types[102] -#define SWIGTYPE_p_IDetector2D swig_types[103] -#define SWIGTYPE_p_IDetectorResolution swig_types[104] -#define SWIGTYPE_p_IDistribution1D swig_types[105] -#define SWIGTYPE_p_IFTDecayFunction1D swig_types[106] -#define SWIGTYPE_p_IFTDecayFunction2D swig_types[107] -#define SWIGTYPE_p_IFTDistribution1D swig_types[108] -#define SWIGTYPE_p_IFTDistribution2D swig_types[109] -#define SWIGTYPE_p_IFormFactor swig_types[110] -#define SWIGTYPE_p_IFormFactorBorn swig_types[111] -#define SWIGTYPE_p_IFormFactorDecorator swig_types[112] -#define SWIGTYPE_p_IHistogram swig_types[113] -#define SWIGTYPE_p_IIntensityFunction swig_types[114] -#define SWIGTYPE_p_IInterferenceFunction swig_types[115] -#define SWIGTYPE_p_ILayerRTCoefficients swig_types[116] -#define SWIGTYPE_p_ILayout swig_types[117] -#define SWIGTYPE_p_IMaterial swig_types[118] -#define SWIGTYPE_p_INamed swig_types[119] -#define SWIGTYPE_p_IObservable swig_types[120] -#define SWIGTYPE_p_IObserver swig_types[121] -#define SWIGTYPE_p_IParameterized swig_types[122] -#define SWIGTYPE_p_IParticle swig_types[123] -#define SWIGTYPE_p_IPixelMap swig_types[124] -#define SWIGTYPE_p_IResolutionFunction2D swig_types[125] -#define SWIGTYPE_p_IRotation swig_types[126] -#define SWIGTYPE_p_IRoughness swig_types[127] -#define SWIGTYPE_p_ISample swig_types[128] -#define SWIGTYPE_p_ISampleBuilder swig_types[129] -#define SWIGTYPE_p_ISampleVisitor swig_types[130] -#define SWIGTYPE_p_ISelectionRule swig_types[131] -#define SWIGTYPE_p_Instrument swig_types[132] -#define SWIGTYPE_p_IntensityDataFunctions swig_types[133] -#define SWIGTYPE_p_IntensityDataIOFactory swig_types[134] -#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[135] -#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[136] -#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[137] -#define SWIGTYPE_p_InterferenceFunctionNone swig_types[138] -#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[139] -#define SWIGTYPE_p_IsGISAXSDetector swig_types[140] -#define SWIGTYPE_p_KVectorContainer swig_types[141] -#define SWIGTYPE_p_Lattice swig_types[142] -#define SWIGTYPE_p_Lattice1DParameters swig_types[143] -#define SWIGTYPE_p_Lattice2DParameters swig_types[144] -#define SWIGTYPE_p_Layer swig_types[145] -#define SWIGTYPE_p_LayerDWBASimulation swig_types[146] -#define SWIGTYPE_p_LayerInterface swig_types[147] -#define SWIGTYPE_p_LayerRTCoefficients_t swig_types[148] -#define SWIGTYPE_p_LayerRoughness swig_types[149] -#define SWIGTYPE_p_MSG__Logger swig_types[150] -#define SWIGTYPE_p_Mask swig_types[151] -#define SWIGTYPE_p_MesoCrystal swig_types[152] -#define SWIGTYPE_p_MultiLayer swig_types[153] -#define SWIGTYPE_p_MultiLayerDWBASimulation swig_types[154] -#define SWIGTYPE_p_MultiLayerRTCoefficients_t swig_types[155] -#define SWIGTYPE_p_OffSpecSimulation swig_types[156] -#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[157] -#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[158] -#define SWIGTYPE_p_OutputDataT_double_t swig_types[159] -#define SWIGTYPE_p_OutputDataT_std__complexT_double_t_t swig_types[160] -#define SWIGTYPE_p_ParameterDistribution swig_types[161] -#define SWIGTYPE_p_ParameterPattern swig_types[162] -#define SWIGTYPE_p_ParameterPool swig_types[163] -#define SWIGTYPE_p_Particle swig_types[164] -#define SWIGTYPE_p_ParticleComposition swig_types[165] -#define SWIGTYPE_p_ParticleCoreShell swig_types[166] -#define SWIGTYPE_p_ParticleDistribution swig_types[167] -#define SWIGTYPE_p_ParticleLayout swig_types[168] -#define SWIGTYPE_p_PolyhedralEdge swig_types[169] -#define SWIGTYPE_p_PolyhedralFace swig_types[170] -#define SWIGTYPE_p_RealParameterWrapper swig_types[171] -#define SWIGTYPE_p_RectPixelMap swig_types[172] -#define SWIGTYPE_p_RectangularDetector swig_types[173] -#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[174] -#define SWIGTYPE_p_RotationEuler swig_types[175] -#define SWIGTYPE_p_RotationX swig_types[176] -#define SWIGTYPE_p_RotationY swig_types[177] -#define SWIGTYPE_p_RotationZ swig_types[178] -#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[179] -#define SWIGTYPE_p_SampleBuilderFactory swig_types[180] -#define SWIGTYPE_p_SimpleSelectionRule swig_types[181] -#define SWIGTYPE_p_Simulation swig_types[182] -#define SWIGTYPE_p_SimulationOptions swig_types[183] -#define SWIGTYPE_p_SimulationRegistry swig_types[184] -#define SWIGTYPE_p_SpecularSimulation swig_types[185] -#define SWIGTYPE_p_SphericalDetector swig_types[186] -#define SWIGTYPE_p_ThreadInfo swig_types[187] -#define SWIGTYPE_p_Topology swig_types[188] -#define SWIGTYPE_p_VariableBinAxis swig_types[189] -#define SWIGTYPE_p_WavevectorInfo swig_types[190] -#define SWIGTYPE_p__object swig_types[191] -#define SWIGTYPE_p_allocator_type swig_types[192] -#define SWIGTYPE_p_char swig_types[193] -#define SWIGTYPE_p_const_iterator swig_types[194] -#define SWIGTYPE_p_const_reference swig_types[195] -#define SWIGTYPE_p_difference_type swig_types[196] -#define SWIGTYPE_p_double swig_types[197] -#define SWIGTYPE_p_int swig_types[198] -#define SWIGTYPE_p_iterator swig_types[199] -#define SWIGTYPE_p_long_long swig_types[200] -#define SWIGTYPE_p_observer_t swig_types[201] -#define SWIGTYPE_p_observerlist_t swig_types[202] -#define SWIGTYPE_p_p__object swig_types[203] -#define SWIGTYPE_p_reference swig_types[204] -#define SWIGTYPE_p_short swig_types[205] -#define SWIGTYPE_p_signed_char swig_types[206] -#define SWIGTYPE_p_size_type swig_types[207] -#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_double_t_t swig_types[208] -#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t swig_types[209] -#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[210] -#define SWIGTYPE_p_std__allocatorT_ISample_const_p_t swig_types[211] -#define SWIGTYPE_p_std__allocatorT_ISample_p_t swig_types[212] -#define SWIGTYPE_p_std__allocatorT_double_t swig_types[213] -#define SWIGTYPE_p_std__allocatorT_int_t swig_types[214] -#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[215] -#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[216] -#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[217] -#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[218] -#define SWIGTYPE_p_std__complexT_double_t swig_types[219] -#define SWIGTYPE_p_std__invalid_argument swig_types[220] -#define SWIGTYPE_p_std__ostream swig_types[221] -#define SWIGTYPE_p_std__shared_ptrT_IFitObserver_t swig_types[222] -#define SWIGTYPE_p_std__shared_ptrT_ILayerRTCoefficients_const_t swig_types[223] -#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[224] -#define SWIGTYPE_p_std__shared_ptrT_ISampleBuilder_t swig_types[225] -#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_double_t_std__allocatorT_Geometry__BasicVector3DT_double_t_t_t swig_types[226] -#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_std__complexT_double_t_t_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t_t swig_types[227] -#define SWIGTYPE_p_std__vectorT_IDetector2D__EAxesUnits_std__allocatorT_IDetector2D__EAxesUnits_t_t swig_types[228] -#define SWIGTYPE_p_std__vectorT_IFTDistribution2D_const_p_std__allocatorT_IFTDistribution2D_const_p_t_t swig_types[229] -#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[230] -#define SWIGTYPE_p_std__vectorT_IParticle_const_p_std__allocatorT_IParticle_const_p_t_t swig_types[231] -#define SWIGTYPE_p_std__vectorT_ISample_const_p_std__allocatorT_ISample_const_p_t_t swig_types[232] -#define SWIGTYPE_p_std__vectorT_ISample_p_std__allocatorT_ISample_p_t_t swig_types[233] -#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[234] -#define SWIGTYPE_p_std__vectorT_RealParameterWrapper_std__allocatorT_RealParameterWrapper_t_t swig_types[235] -#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[236] -#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[237] -#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[238] -#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[239] -#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[240] -#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[241] -#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[242] -#define SWIGTYPE_p_swig__SwigPyIterator swig_types[243] -#define SWIGTYPE_p_unsigned_char swig_types[244] -#define SWIGTYPE_p_unsigned_int swig_types[245] -#define SWIGTYPE_p_unsigned_long_long swig_types[246] -#define SWIGTYPE_p_unsigned_short swig_types[247] -#define SWIGTYPE_p_value_type swig_types[248] -static swig_type_info *swig_types[250]; -static swig_module_info swig_module = {swig_types, 249, 0, 0, 0, 0}; +#define SWIGTYPE_p_FormFactorPolygonalSurface swig_types[66] +#define SWIGTYPE_p_FormFactorPolyhedron swig_types[67] +#define SWIGTYPE_p_FormFactorPrism3 swig_types[68] +#define SWIGTYPE_p_FormFactorPrism6 swig_types[69] +#define SWIGTYPE_p_FormFactorPyramid swig_types[70] +#define SWIGTYPE_p_FormFactorRipple1 swig_types[71] +#define SWIGTYPE_p_FormFactorRipple2 swig_types[72] +#define SWIGTYPE_p_FormFactorSphereGaussianRadius swig_types[73] +#define SWIGTYPE_p_FormFactorSphereLogNormalRadius swig_types[74] +#define SWIGTYPE_p_FormFactorSphereUniformRadius swig_types[75] +#define SWIGTYPE_p_FormFactorTetrahedron swig_types[76] +#define SWIGTYPE_p_FormFactorTrivial swig_types[77] +#define SWIGTYPE_p_FormFactorTruncatedCube swig_types[78] +#define SWIGTYPE_p_FormFactorTruncatedSphere swig_types[79] +#define SWIGTYPE_p_FormFactorTruncatedSpheroid swig_types[80] +#define SWIGTYPE_p_FormFactorWeighted swig_types[81] +#define SWIGTYPE_p_GISASSimulation swig_types[82] +#define SWIGTYPE_p_Geometry__BasicVector3DT_double_t swig_types[83] +#define SWIGTYPE_p_Geometry__BasicVector3DT_int_t swig_types[84] +#define SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t swig_types[85] +#define SWIGTYPE_p_Geometry__Ellipse swig_types[86] +#define SWIGTYPE_p_Geometry__HorizontalLine swig_types[87] +#define SWIGTYPE_p_Geometry__IShape2D swig_types[88] +#define SWIGTYPE_p_Geometry__Line swig_types[89] +#define SWIGTYPE_p_Geometry__Polygon swig_types[90] +#define SWIGTYPE_p_Geometry__Rectangle swig_types[91] +#define SWIGTYPE_p_Geometry__Transform3D swig_types[92] +#define SWIGTYPE_p_Geometry__VerticalLine swig_types[93] +#define SWIGTYPE_p_Histogram1D swig_types[94] +#define SWIGTYPE_p_Histogram2D swig_types[95] +#define SWIGTYPE_p_HomogeneousMagneticMaterial swig_types[96] +#define SWIGTYPE_p_HomogeneousMaterial swig_types[97] +#define SWIGTYPE_p_IAbstractParticle swig_types[98] +#define SWIGTYPE_p_IAxis swig_types[99] +#define SWIGTYPE_p_ICloneable swig_types[100] +#define SWIGTYPE_p_IClusteredParticles swig_types[101] +#define SWIGTYPE_p_IComponentService swig_types[102] +#define SWIGTYPE_p_ICompositeSample swig_types[103] +#define SWIGTYPE_p_IDetector2D swig_types[104] +#define SWIGTYPE_p_IDetectorResolution swig_types[105] +#define SWIGTYPE_p_IDistribution1D swig_types[106] +#define SWIGTYPE_p_IFTDecayFunction1D swig_types[107] +#define SWIGTYPE_p_IFTDecayFunction2D swig_types[108] +#define SWIGTYPE_p_IFTDistribution1D swig_types[109] +#define SWIGTYPE_p_IFTDistribution2D swig_types[110] +#define SWIGTYPE_p_IFormFactor swig_types[111] +#define SWIGTYPE_p_IFormFactorBorn swig_types[112] +#define SWIGTYPE_p_IFormFactorDecorator swig_types[113] +#define SWIGTYPE_p_IHistogram swig_types[114] +#define SWIGTYPE_p_IIntensityFunction swig_types[115] +#define SWIGTYPE_p_IInterferenceFunction swig_types[116] +#define SWIGTYPE_p_ILayerRTCoefficients swig_types[117] +#define SWIGTYPE_p_ILayout swig_types[118] +#define SWIGTYPE_p_IMaterial swig_types[119] +#define SWIGTYPE_p_INamed swig_types[120] +#define SWIGTYPE_p_IObservable swig_types[121] +#define SWIGTYPE_p_IObserver swig_types[122] +#define SWIGTYPE_p_IParameterized swig_types[123] +#define SWIGTYPE_p_IParticle swig_types[124] +#define SWIGTYPE_p_IPixelMap swig_types[125] +#define SWIGTYPE_p_IResolutionFunction2D swig_types[126] +#define SWIGTYPE_p_IRotation swig_types[127] +#define SWIGTYPE_p_IRoughness swig_types[128] +#define SWIGTYPE_p_ISample swig_types[129] +#define SWIGTYPE_p_ISampleBuilder swig_types[130] +#define SWIGTYPE_p_ISampleVisitor swig_types[131] +#define SWIGTYPE_p_ISelectionRule swig_types[132] +#define SWIGTYPE_p_Instrument swig_types[133] +#define SWIGTYPE_p_IntensityDataFunctions swig_types[134] +#define SWIGTYPE_p_IntensityDataIOFactory swig_types[135] +#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[136] +#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[137] +#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[138] +#define SWIGTYPE_p_InterferenceFunctionNone swig_types[139] +#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[140] +#define SWIGTYPE_p_IsGISAXSDetector swig_types[141] +#define SWIGTYPE_p_KVectorContainer swig_types[142] +#define SWIGTYPE_p_Lattice swig_types[143] +#define SWIGTYPE_p_Lattice1DParameters swig_types[144] +#define SWIGTYPE_p_Lattice2DParameters swig_types[145] +#define SWIGTYPE_p_Layer swig_types[146] +#define SWIGTYPE_p_LayerDWBASimulation swig_types[147] +#define SWIGTYPE_p_LayerInterface swig_types[148] +#define SWIGTYPE_p_LayerRTCoefficients_t swig_types[149] +#define SWIGTYPE_p_LayerRoughness swig_types[150] +#define SWIGTYPE_p_MSG__Logger swig_types[151] +#define SWIGTYPE_p_Mask swig_types[152] +#define SWIGTYPE_p_MesoCrystal swig_types[153] +#define SWIGTYPE_p_MultiLayer swig_types[154] +#define SWIGTYPE_p_MultiLayerDWBASimulation swig_types[155] +#define SWIGTYPE_p_MultiLayerRTCoefficients_t swig_types[156] +#define SWIGTYPE_p_OffSpecSimulation swig_types[157] +#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[158] +#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[159] +#define SWIGTYPE_p_OutputDataT_double_t swig_types[160] +#define SWIGTYPE_p_OutputDataT_std__complexT_double_t_t swig_types[161] +#define SWIGTYPE_p_ParameterDistribution swig_types[162] +#define SWIGTYPE_p_ParameterPattern swig_types[163] +#define SWIGTYPE_p_ParameterPool swig_types[164] +#define SWIGTYPE_p_Particle swig_types[165] +#define SWIGTYPE_p_ParticleComposition swig_types[166] +#define SWIGTYPE_p_ParticleCoreShell swig_types[167] +#define SWIGTYPE_p_ParticleDistribution swig_types[168] +#define SWIGTYPE_p_ParticleLayout swig_types[169] +#define SWIGTYPE_p_PolyhedralEdge swig_types[170] +#define SWIGTYPE_p_PolyhedralFace swig_types[171] +#define SWIGTYPE_p_RealParameterWrapper swig_types[172] +#define SWIGTYPE_p_RectPixelMap swig_types[173] +#define SWIGTYPE_p_RectangularDetector swig_types[174] +#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[175] +#define SWIGTYPE_p_RotationEuler swig_types[176] +#define SWIGTYPE_p_RotationX swig_types[177] +#define SWIGTYPE_p_RotationY swig_types[178] +#define SWIGTYPE_p_RotationZ swig_types[179] +#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[180] +#define SWIGTYPE_p_SampleBuilderFactory swig_types[181] +#define SWIGTYPE_p_SimpleSelectionRule swig_types[182] +#define SWIGTYPE_p_Simulation swig_types[183] +#define SWIGTYPE_p_SimulationOptions swig_types[184] +#define SWIGTYPE_p_SimulationRegistry swig_types[185] +#define SWIGTYPE_p_SpecularSimulation swig_types[186] +#define SWIGTYPE_p_SphericalDetector swig_types[187] +#define SWIGTYPE_p_ThreadInfo swig_types[188] +#define SWIGTYPE_p_Topology swig_types[189] +#define SWIGTYPE_p_VariableBinAxis swig_types[190] +#define SWIGTYPE_p_WavevectorInfo swig_types[191] +#define SWIGTYPE_p__object swig_types[192] +#define SWIGTYPE_p_allocator_type swig_types[193] +#define SWIGTYPE_p_char swig_types[194] +#define SWIGTYPE_p_const_iterator swig_types[195] +#define SWIGTYPE_p_const_reference swig_types[196] +#define SWIGTYPE_p_difference_type swig_types[197] +#define SWIGTYPE_p_double swig_types[198] +#define SWIGTYPE_p_int swig_types[199] +#define SWIGTYPE_p_iterator swig_types[200] +#define SWIGTYPE_p_long_long swig_types[201] +#define SWIGTYPE_p_observer_t swig_types[202] +#define SWIGTYPE_p_observerlist_t swig_types[203] +#define SWIGTYPE_p_p__object swig_types[204] +#define SWIGTYPE_p_reference swig_types[205] +#define SWIGTYPE_p_short swig_types[206] +#define SWIGTYPE_p_signed_char swig_types[207] +#define SWIGTYPE_p_size_type swig_types[208] +#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_double_t_t swig_types[209] +#define SWIGTYPE_p_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t swig_types[210] +#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[211] +#define SWIGTYPE_p_std__allocatorT_ISample_const_p_t swig_types[212] +#define SWIGTYPE_p_std__allocatorT_ISample_p_t swig_types[213] +#define SWIGTYPE_p_std__allocatorT_double_t swig_types[214] +#define SWIGTYPE_p_std__allocatorT_int_t swig_types[215] +#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[216] +#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[217] +#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[218] +#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[219] +#define SWIGTYPE_p_std__complexT_double_t swig_types[220] +#define SWIGTYPE_p_std__invalid_argument swig_types[221] +#define SWIGTYPE_p_std__ostream swig_types[222] +#define SWIGTYPE_p_std__shared_ptrT_IFitObserver_t swig_types[223] +#define SWIGTYPE_p_std__shared_ptrT_ILayerRTCoefficients_const_t swig_types[224] +#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[225] +#define SWIGTYPE_p_std__shared_ptrT_ISampleBuilder_t swig_types[226] +#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_double_t_std__allocatorT_Geometry__BasicVector3DT_double_t_t_t swig_types[227] +#define SWIGTYPE_p_std__vectorT_Geometry__BasicVector3DT_std__complexT_double_t_t_std__allocatorT_Geometry__BasicVector3DT_std__complexT_double_t_t_t_t swig_types[228] +#define SWIGTYPE_p_std__vectorT_IDetector2D__EAxesUnits_std__allocatorT_IDetector2D__EAxesUnits_t_t swig_types[229] +#define SWIGTYPE_p_std__vectorT_IFTDistribution2D_const_p_std__allocatorT_IFTDistribution2D_const_p_t_t swig_types[230] +#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[231] +#define SWIGTYPE_p_std__vectorT_IParticle_const_p_std__allocatorT_IParticle_const_p_t_t swig_types[232] +#define SWIGTYPE_p_std__vectorT_ISample_const_p_std__allocatorT_ISample_const_p_t_t swig_types[233] +#define SWIGTYPE_p_std__vectorT_ISample_p_std__allocatorT_ISample_p_t_t swig_types[234] +#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[235] +#define SWIGTYPE_p_std__vectorT_RealParameterWrapper_std__allocatorT_RealParameterWrapper_t_t swig_types[236] +#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[237] +#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[238] +#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[239] +#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[240] +#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[241] +#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[242] +#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[243] +#define SWIGTYPE_p_swig__SwigPyIterator swig_types[244] +#define SWIGTYPE_p_unsigned_char swig_types[245] +#define SWIGTYPE_p_unsigned_int swig_types[246] +#define SWIGTYPE_p_unsigned_long_long swig_types[247] +#define SWIGTYPE_p_unsigned_short swig_types[248] +#define SWIGTYPE_p_value_type swig_types[249] +static swig_type_info *swig_types[251]; +static swig_module_info swig_module = {swig_types, 250, 0, 0, 0, 0}; #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name) #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name) @@ -50009,6 +50010,45 @@ fail: } +SWIGINTERN PyObject *_wrap_PolyhedralFace_normalProjectionConj(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + PolyhedralFace *arg1 = (PolyhedralFace *) 0 ; + cvector_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + complex_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:PolyhedralFace_normalProjectionConj",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_PolyhedralFace, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "PolyhedralFace_normalProjectionConj" "', argument " "1"" of type '" "PolyhedralFace const *""'"); + } + arg1 = reinterpret_cast< PolyhedralFace * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "PolyhedralFace_normalProjectionConj" "', argument " "2"" of type '" "cvector_t""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "PolyhedralFace_normalProjectionConj" "', argument " "2"" of type '" "cvector_t""'"); + } else { + cvector_t * temp = reinterpret_cast< cvector_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + result = ((PolyhedralFace const *)arg1)->normalProjectionConj(arg2); + resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result)); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_PolyhedralFace_ff_n(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; PolyhedralFace *arg1 = (PolyhedralFace *) 0 ; @@ -50509,6 +50549,117 @@ SWIGINTERN PyObject *FormFactorPolygonalPrism_swigregister(PyObject *SWIGUNUSEDP return SWIG_Py_Void(); } +SWIGINTERN PyObject *_wrap_FormFactorPolygonalSurface_evaluate_for_q(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FormFactorPolygonalSurface *arg1 = (FormFactorPolygonalSurface *) 0 ; + cvector_t arg2 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + complex_t result; + + if (!PyArg_ParseTuple(args,(char *)"OO:FormFactorPolygonalSurface_evaluate_for_q",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorPolygonalSurface, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorPolygonalSurface_evaluate_for_q" "', argument " "1"" of type '" "FormFactorPolygonalSurface const *""'"); + } + arg1 = reinterpret_cast< FormFactorPolygonalSurface * >(argp1); + { + res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_Geometry__BasicVector3DT_std__complexT_double_t_t, 0 | 0); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FormFactorPolygonalSurface_evaluate_for_q" "', argument " "2"" of type '" "cvector_t const""'"); + } + if (!argp2) { + SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FormFactorPolygonalSurface_evaluate_for_q" "', argument " "2"" of type '" "cvector_t const""'"); + } else { + cvector_t * temp = reinterpret_cast< cvector_t * >(argp2); + arg2 = *temp; + if (SWIG_IsNewObj(res2)) delete temp; + } + } + result = ((FormFactorPolygonalSurface const *)arg1)->evaluate_for_q(arg2); + resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_FormFactorPolygonalSurface_getVolume(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FormFactorPolygonalSurface *arg1 = (FormFactorPolygonalSurface *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + double result; + + if (!PyArg_ParseTuple(args,(char *)"O:FormFactorPolygonalSurface_getVolume",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorPolygonalSurface, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorPolygonalSurface_getVolume" "', argument " "1"" of type '" "FormFactorPolygonalSurface const *""'"); + } + arg1 = reinterpret_cast< FormFactorPolygonalSurface * >(argp1); + result = (double)((FormFactorPolygonalSurface const *)arg1)->getVolume(); + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_FormFactorPolygonalSurface_getRadius(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FormFactorPolygonalSurface *arg1 = (FormFactorPolygonalSurface *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + double result; + + if (!PyArg_ParseTuple(args,(char *)"O:FormFactorPolygonalSurface_getRadius",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorPolygonalSurface, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FormFactorPolygonalSurface_getRadius" "', argument " "1"" of type '" "FormFactorPolygonalSurface const *""'"); + } + arg1 = reinterpret_cast< FormFactorPolygonalSurface * >(argp1); + result = (double)((FormFactorPolygonalSurface const *)arg1)->getRadius(); + resultobj = SWIG_From_double(static_cast< double >(result)); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_delete_FormFactorPolygonalSurface(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + FormFactorPolygonalSurface *arg1 = (FormFactorPolygonalSurface *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:delete_FormFactorPolygonalSurface",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_FormFactorPolygonalSurface, SWIG_POINTER_DISOWN | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FormFactorPolygonalSurface" "', argument " "1"" of type '" "FormFactorPolygonalSurface *""'"); + } + arg1 = reinterpret_cast< FormFactorPolygonalSurface * >(argp1); + delete arg1; + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *FormFactorPolygonalSurface_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *obj; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; + SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalSurface, SWIG_NewClientData(obj)); + return SWIG_Py_Void(); +} + SWIGINTERN PyObject *_wrap_new_FormFactorAnisoPyramid(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; double arg1 ; @@ -93410,6 +93561,7 @@ static PyMethodDef SwigMethods[] = { { (char *)"PolyhedralFace_center", _wrap_PolyhedralFace_center, METH_VARARGS, (char *)"PolyhedralFace_center(PolyhedralFace self) -> kvector_t"}, { (char *)"PolyhedralFace_pyramidalVolume", _wrap_PolyhedralFace_pyramidalVolume, METH_VARARGS, (char *)"PolyhedralFace_pyramidalVolume(PolyhedralFace self) -> double"}, { (char *)"PolyhedralFace_radius3d", _wrap_PolyhedralFace_radius3d, METH_VARARGS, (char *)"PolyhedralFace_radius3d(PolyhedralFace self) -> double"}, + { (char *)"PolyhedralFace_normalProjectionConj", _wrap_PolyhedralFace_normalProjectionConj, METH_VARARGS, (char *)"PolyhedralFace_normalProjectionConj(PolyhedralFace self, cvector_t q) -> complex_t"}, { (char *)"PolyhedralFace_ff_n", _wrap_PolyhedralFace_ff_n, METH_VARARGS, (char *)"\n" "PolyhedralFace_ff_n(PolyhedralFace self, int m, cvector_t q) -> complex_t\n" "\n" @@ -93511,6 +93663,38 @@ static PyMethodDef SwigMethods[] = { ""}, { (char *)"delete_FormFactorPolygonalPrism", _wrap_delete_FormFactorPolygonalPrism, METH_VARARGS, (char *)"delete_FormFactorPolygonalPrism(FormFactorPolygonalPrism self)"}, { (char *)"FormFactorPolygonalPrism_swigregister", FormFactorPolygonalPrism_swigregister, METH_VARARGS, NULL}, + { (char *)"FormFactorPolygonalSurface_evaluate_for_q", _wrap_FormFactorPolygonalSurface_evaluate_for_q, METH_VARARGS, (char *)"\n" + "FormFactorPolygonalSurface_evaluate_for_q(FormFactorPolygonalSurface self, cvector_t q) -> complex_t\n" + "\n" + "virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0\n" + "\n" + "evaluate scattering amplitude for complex wavevector\n" + "\n" + "Parameters:\n" + "-----------\n" + "\n" + "q: \n" + "wavevector transfer q=k_i-k_f \n" + "\n" + ""}, + { (char *)"FormFactorPolygonalSurface_getVolume", _wrap_FormFactorPolygonalSurface_getVolume, METH_VARARGS, (char *)"\n" + "FormFactorPolygonalSurface_getVolume(FormFactorPolygonalSurface self) -> double\n" + "\n" + "double IFormFactor::getVolume() const\n" + "\n" + "Returns the total volume of the particle of this form factor's shape. \n" + "\n" + ""}, + { (char *)"FormFactorPolygonalSurface_getRadius", _wrap_FormFactorPolygonalSurface_getRadius, METH_VARARGS, (char *)"\n" + "FormFactorPolygonalSurface_getRadius(FormFactorPolygonalSurface self) -> double\n" + "\n" + "virtual double IFormFactor::getRadius() const =0\n" + "\n" + "Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n" + "\n" + ""}, + { (char *)"delete_FormFactorPolygonalSurface", _wrap_delete_FormFactorPolygonalSurface, METH_VARARGS, (char *)"delete_FormFactorPolygonalSurface(FormFactorPolygonalSurface self)"}, + { (char *)"FormFactorPolygonalSurface_swigregister", FormFactorPolygonalSurface_swigregister, METH_VARARGS, NULL}, { (char *)"new_FormFactorAnisoPyramid", _wrap_new_FormFactorAnisoPyramid, METH_VARARGS, (char *)"\n" "new_FormFactorAnisoPyramid(double length, double width, double height, double alpha) -> FormFactorAnisoPyramid\n" "\n" @@ -101464,6 +101648,9 @@ static void *_p_FormFactorLongBoxGaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDP static void *_p_FormFactorRipple1To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorRipple1 *) x)); } +static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorPolygonalSurface *) x)); +} static void *_p_FormFactorCrystalTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCrystal *) x)); } @@ -101482,12 +101669,12 @@ static void *_p_FormFactorTruncatedSphereTo_p_IFormFactor(void *x, int *SWIGUNUS static void *_p_FormFactorLongRipple1GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple1Gauss *) x)); } -static void *_p_FormFactorCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCylinder *) x)); -} static void *_p_FormFactorEllipsoidalCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorEllipsoidalCylinder *) x)); } +static void *_p_FormFactorCylinderTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorCylinder *) x)); +} static void *_p_FormFactorBoxTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorBox *) x)); } @@ -101545,9 +101732,6 @@ static void *_p_FormFactorLongBoxLorentzTo_p_IFormFactor(void *x, int *SWIGUNUSE static void *_p_FormFactorWeightedTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) ((FormFactorWeighted *) x)); } -static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x)); -} static void *_p_FormFactorPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorPyramid *) x)); } @@ -101557,6 +101741,9 @@ static void *_p_FormFactorAnisoPyramidTo_p_IFormFactor(void *x, int *SWIGUNUSEDP static void *_p_FormFactorPrism3To_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *)(FormFactorPolygonalPrism *) ((FormFactorPrism3 *) x)); } +static void *_p_FormFactorSphereUniformRadiusTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorSphereUniformRadius *) x)); +} static void *_p_FormFactorLongRipple2GaussTo_p_IFormFactor(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactor *) (IFormFactorBorn *) ((FormFactorLongRipple2Gauss *) x)); } @@ -101701,6 +101888,9 @@ static void *_p_ICompositeSampleTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM static void *_p_ISampleTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IParameterized *) ((ISample *) x)); } +static void *_p_FormFactorPolygonalSurfaceTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x)); +} static void *_p_FormFactorLongBoxGaussTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxGauss *) x)); } @@ -101725,12 +101915,12 @@ static void *_p_FTDistribution1DVoigtTo_p_IParameterized(void *x, int *SWIGUNUSE static void *_p_IRotationTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IParameterized *) (ISample *) ((IRotation *) x)); } -static void *_p_FormFactorTruncatedSpheroidTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x)); -} static void *_p_FormFactorFullSpheroidTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSpheroid *) x)); } +static void *_p_FormFactorTruncatedSpheroidTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IParameterized *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSpheroid *) x)); +} static void *_p_RotationXTo_p_IParameterized(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IParameterized *) (ISample *)(IRotation *) ((RotationX *) x)); } @@ -102061,6 +102251,9 @@ static void *_p_ICompositeSampleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(new static void *_p_ISampleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ICloneable *) ((ISample *) x)); } +static void *_p_FormFactorPolygonalSurfaceTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x)); +} static void *_p_FormFactorLongBoxGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ICloneable *) (ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxGauss *) x)); } @@ -102307,12 +102500,12 @@ static void *_p_FTDistribution2DConeTo_p_INamed(void *x, int *SWIGUNUSEDPARM(new static void *_p_ParticleCoreShellTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((INamed *) (IParameterized *)(ISample *)(ICompositeSample *)(IAbstractParticle *)(IParticle *) ((ParticleCoreShell *) x)); } -static void *_p_FormFactorTruncatedSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x)); -} static void *_p_FormFactorFullSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorFullSphere *) x)); } +static void *_p_FormFactorTruncatedSphereTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorTruncatedSphere *) x)); +} static void *_p_IFormFactorTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((INamed *) (IParameterized *)(ISample *) ((IFormFactor *) x)); } @@ -102322,6 +102515,9 @@ static void *_p_ICompositeSampleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemo static void *_p_ISampleTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((INamed *) (IParameterized *) ((ISample *) x)); } +static void *_p_FormFactorPolygonalSurfaceTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x)); +} static void *_p_FormFactorLongBoxGaussTo_p_INamed(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((INamed *) (IParameterized *)(ISample *)(IFormFactor *)(IFormFactorBorn *) ((FormFactorLongBoxGauss *) x)); } @@ -102610,18 +102806,21 @@ static void *_p_FormFactorLongBoxGaussTo_p_IFormFactorBorn(void *x, int *SWIGUNU static void *_p_FormFactorRipple1To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactorBorn *) ((FormFactorRipple1 *) x)); } +static void *_p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IFormFactorBorn *) ((FormFactorPolygonalSurface *) x)); +} static void *_p_FormFactorCrystalTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactorBorn *) ((FormFactorCrystal *) x)); } static void *_p_FormFactorRipple2To_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactorBorn *) ((FormFactorRipple2 *) x)); } -static void *_p_FormFactorTruncatedCubeTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorTruncatedCube *) x)); -} static void *_p_FormFactorFullSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactorBorn *) ((FormFactorFullSphere *) x)); } +static void *_p_FormFactorTruncatedCubeTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((IFormFactorBorn *) (FormFactorPolyhedron *) ((FormFactorTruncatedCube *) x)); +} static void *_p_FormFactorTruncatedSphereTo_p_IFormFactorBorn(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((IFormFactorBorn *) ((FormFactorTruncatedSphere *) x)); } @@ -102841,8 +103040,8 @@ static void *_p_ParticleCoreShellTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newme static void *_p_LayerTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (ICompositeSample *) ((Layer *) x)); } -static void *_p_FormFactorRipple1To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x)); +static void *_p_FormFactorPolygonalSurfaceTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorPolygonalSurface *) x)); } static void *_p_CrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (ICompositeSample *)(IClusteredParticles *) ((Crystal *) x)); @@ -102850,6 +103049,9 @@ static void *_p_CrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { static void *_p_FormFactorCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorCrystal *) x)); } +static void *_p_FormFactorRipple1To_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorRipple1 *) x)); +} static void *_p_InterferenceFunctionRadialParaCrystalTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (IInterferenceFunction *) ((InterferenceFunctionRadialParaCrystal *) x)); } @@ -102910,12 +103112,12 @@ static void *_p_FormFactorIcosahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(n static void *_p_FormFactorDodecahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorDodecahedron *) x)); } -static void *_p_FormFactorPolyhedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { - return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorPolyhedron *) x)); -} static void *_p_FormFactorCuboctahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorCuboctahedron *) x)); } +static void *_p_FormFactorPolyhedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { + return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *) ((FormFactorPolyhedron *) x)); +} static void *_p_FormFactorTetrahedronTo_p_ISample(void *x, int *SWIGUNUSEDPARM(newmemory)) { return (void *)((ISample *) (IFormFactor *)(IFormFactorBorn *)(FormFactorPolyhedron *) ((FormFactorTetrahedron *) x)); } @@ -103138,6 +103340,7 @@ static swig_type_info _swigt__p_FormFactorLongRipple2Gauss = {"_p_FormFactorLong static swig_type_info _swigt__p_FormFactorLongRipple2Lorentz = {"_p_FormFactorLongRipple2Lorentz", "FormFactorLongRipple2Lorentz *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FormFactorLorentz = {"_p_FormFactorLorentz", "FormFactorLorentz *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FormFactorPolygonalPrism = {"_p_FormFactorPolygonalPrism", "FormFactorPolygonalPrism *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_FormFactorPolygonalSurface = {"_p_FormFactorPolygonalSurface", "FormFactorPolygonalSurface *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FormFactorPolyhedron = {"_p_FormFactorPolyhedron", "FormFactorPolyhedron *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FormFactorPrism3 = {"_p_FormFactorPrism3", "FormFactorPrism3 *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_FormFactorPrism6 = {"_p_FormFactorPrism6", "FormFactorPrism6 *", 0, 0, (void*)0, 0}; @@ -103389,6 +103592,7 @@ static swig_type_info *swig_type_initial[] = { &_swigt__p_FormFactorLongRipple2Lorentz, &_swigt__p_FormFactorLorentz, &_swigt__p_FormFactorPolygonalPrism, + &_swigt__p_FormFactorPolygonalSurface, &_swigt__p_FormFactorPolyhedron, &_swigt__p_FormFactorPrism3, &_swigt__p_FormFactorPrism6, @@ -103640,6 +103844,7 @@ static swig_cast_info _swigc__p_FormFactorLongRipple2Gauss[] = { {&_swigt__p_Fo static swig_cast_info _swigc__p_FormFactorLongRipple2Lorentz[] = { {&_swigt__p_FormFactorLongRipple2Lorentz, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FormFactorLorentz[] = { {&_swigt__p_FormFactorLorentz, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FormFactorPolygonalPrism[] = { {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_FormFactorPolygonalPrism, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_FormFactorPolygonalPrism, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_FormFactorPolygonalSurface[] = { {&_swigt__p_FormFactorPolygonalSurface, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FormFactorPolyhedron[] = { {&_swigt__p_FormFactorPolyhedron, 0, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_FormFactorPolyhedron, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_FormFactorPolyhedron, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FormFactorPrism3[] = { {&_swigt__p_FormFactorPrism3, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_FormFactorPrism6[] = { {&_swigt__p_FormFactorPrism6, 0, 0, 0},{0, 0, 0, 0}}; @@ -103673,7 +103878,7 @@ static swig_cast_info _swigc__p_HomogeneousMagneticMaterial[] = { {&_swigt__p_H static swig_cast_info _swigc__p_HomogeneousMaterial[] = { {&_swigt__p_HomogeneousMaterial, 0, 0, 0}, {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_HomogeneousMaterial, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IAbstractParticle[] = { {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IAbstractParticle, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IAbstractParticle, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IAbstractParticle, 0, 0}, {&_swigt__p_IAbstractParticle, 0, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_IAbstractParticle, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_IAbstractParticle, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IAbstractParticle, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IAxis[] = { {&_swigt__p_IAxis, 0, 0, 0}, {&_swigt__p_VariableBinAxis, _p_VariableBinAxisTo_p_IAxis, 0, 0}, {&_swigt__p_ConstKBinAxis, _p_ConstKBinAxisTo_p_IAxis, 0, 0}, {&_swigt__p_CustomBinAxis, _p_CustomBinAxisTo_p_IAxis, 0, 0}, {&_swigt__p_FixedBinAxis, _p_FixedBinAxisTo_p_IAxis, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_ICloneable[] = { {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_ICloneable, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0}, {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0}, {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_ICloneable, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_ICloneable, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0}, {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_ICloneable, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0}, {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ICloneable, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ICloneable, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0}, {&_swigt__p_ICloneable, 0, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ICloneable[] = { {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ICloneable, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Polygon, _p_Geometry__PolygonTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Ellipse, _p_Geometry__EllipseTo_p_ICloneable, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__HorizontalLine, _p_Geometry__HorizontalLineTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ICloneable, 0, 0}, {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_Simulation, _p_SimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ICloneable, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0}, {&_swigt__p_ISample, _p_ISampleTo_p_ICloneable, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ICloneable, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_ICloneable, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ICloneable, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__IShape2D, _p_Geometry__IShape2DTo_p_ICloneable, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Rectangle, _p_Geometry__RectangleTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__VerticalLine, _p_Geometry__VerticalLineTo_p_ICloneable, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ICloneable, 0, 0}, {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICloneable, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICloneable, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_ICloneable, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ICloneable, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ICloneable, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ICloneable, 0, 0}, {&_swigt__p_Geometry__Line, _p_Geometry__LineTo_p_ICloneable, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ICloneable, 0, 0}, {&_swigt__p_ParameterPool, _p_ParameterPoolTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ICloneable, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ICloneable, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ICloneable, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ICloneable, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ICloneable, 0, 0}, {&_swigt__p_ICloneable, 0, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ICloneable, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IClusteredParticles[] = { {&_swigt__p_IClusteredParticles, 0, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_IClusteredParticles, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IComponentService[] = { {&_swigt__p_IComponentService, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_ICompositeSample[] = { {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ICompositeSample, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_ICompositeSample, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ICompositeSample, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ICompositeSample, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_ICompositeSample, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_ICompositeSample, 0, 0}, {&_swigt__p_ICompositeSample, 0, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ICompositeSample, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ICompositeSample, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_ICompositeSample, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ICompositeSample, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_ICompositeSample, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ICompositeSample, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ICompositeSample, 0, 0},{0, 0, 0, 0}}; @@ -103684,8 +103889,8 @@ static swig_cast_info _swigc__p_IFTDecayFunction1D[] = { {&_swigt__p_FTDecayFun static swig_cast_info _swigc__p_IFTDecayFunction2D[] = { {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IFTDecayFunction2D, 0, 0}, {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IFTDecayFunction2D, 0, 0}, {&_swigt__p_IFTDecayFunction2D, 0, 0, 0}, {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IFTDecayFunction2D, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IFTDistribution1D[] = { {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IFTDistribution1D, 0, 0}, {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IFTDistribution1D, 0, 0}, {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IFTDistribution1D, 0, 0}, {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IFTDistribution1D, 0, 0}, {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IFTDistribution1D, 0, 0}, {&_swigt__p_IFTDistribution1D, 0, 0, 0}, {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IFTDistribution1D, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IFTDistribution2D[] = { {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IFTDistribution2D, 0, 0}, {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IFTDistribution2D, 0, 0}, {&_swigt__p_IFTDistribution2D, 0, 0, 0}, {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IFTDistribution2D, 0, 0}, {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IFTDistribution2D, 0, 0}, {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IFTDistribution2D, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_IFormFactor[] = { {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactor, 0, 0}, {&_swigt__p_IFormFactor, 0, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_IFormFactorBorn[] = { {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_IFormFactorBorn, 0, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_IFormFactor[] = { {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactor, 0, 0}, {&_swigt__p_IFormFactor, 0, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactor, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactor, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactor, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactor, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_IFormFactorBorn[] = { {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_IFormFactorBorn, 0, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IFormFactorBorn, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IFormFactorBorn, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IFormFactorDecorator[] = { {&_swigt__p_IFormFactorDecorator, 0, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IFormFactorDecorator, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IHistogram[] = { {&_swigt__p_IHistogram, 0, 0, 0}, {&_swigt__p_Histogram2D, _p_Histogram2DTo_p_IHistogram, 0, 0}, {&_swigt__p_Histogram1D, _p_Histogram1DTo_p_IHistogram, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IIntensityFunction[] = { {&_swigt__p_IIntensityFunction, 0, 0, 0},{0, 0, 0, 0}}; @@ -103693,16 +103898,16 @@ static swig_cast_info _swigc__p_IInterferenceFunction[] = { {&_swigt__p_IInterf static swig_cast_info _swigc__p_ILayerRTCoefficients[] = { {&_swigt__p_ILayerRTCoefficients, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_ILayout[] = { {&_swigt__p_ILayout, 0, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ILayout, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IMaterial[] = { {&_swigt__p_IMaterial, 0, 0, 0}, {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_IMaterial, 0, 0}, {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_IMaterial, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_INamed[] = { {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0}, {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0}, {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0}, {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0}, {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0}, {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0}, {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0}, {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0}, {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INamed, 0, 0}, {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0}, {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0}, {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0}, {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INamed, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0}, {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0}, {&_swigt__p_ISampleBuilder, _p_ISampleBuilderTo_p_INamed, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INamed, 0, 0}, {&_swigt__p_INamed, 0, 0, 0}, {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0}, {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0}, {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0}, {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0}, {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_INamed, 0, 0}, {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_INamed, 0, 0}, {&_swigt__p_IMaterial, _p_IMaterialTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0}, {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0}, {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0}, {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INamed, 0, 0}, {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0}, {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INamed, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0}, {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0}, {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0}, {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0}, {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_INamed[] = { {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_INamed, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_INamed, 0, 0}, {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_INamed, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_INamed, 0, 0}, {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INamed, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_INamed, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_INamed, 0, 0}, {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INamed, 0, 0}, {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_INamed, 0, 0}, {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_INamed, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_INamed, 0, 0}, {&_swigt__p_Simulation, _p_SimulationTo_p_INamed, 0, 0}, {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_INamed, 0, 0}, {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_INamed, 0, 0}, {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_INamed, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_INamed, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_INamed, 0, 0}, {&_swigt__p_ISample, _p_ISampleTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_INamed, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_INamed, 0, 0}, {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_INamed, 0, 0}, {&_swigt__p_Instrument, _p_InstrumentTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_INamed, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_INamed, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_INamed, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_INamed, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_INamed, 0, 0}, {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INamed, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_INamed, 0, 0}, {&_swigt__p_ISampleBuilder, _p_ISampleBuilderTo_p_INamed, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_INamed, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_INamed, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_INamed, 0, 0}, {&_swigt__p_INamed, 0, 0, 0}, {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_INamed, 0, 0}, {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_INamed, 0, 0}, {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_INamed, 0, 0}, {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_INamed, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_INamed, 0, 0}, {&_swigt__p_HomogeneousMagneticMaterial, _p_HomogeneousMagneticMaterialTo_p_INamed, 0, 0}, {&_swigt__p_HomogeneousMaterial, _p_HomogeneousMaterialTo_p_INamed, 0, 0}, {&_swigt__p_IMaterial, _p_IMaterialTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_INamed, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_INamed, 0, 0}, {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_INamed, 0, 0}, {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INamed, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_INamed, 0, 0}, {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_INamed, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_INamed, 0, 0}, {&_swigt__p_Beam, _p_BeamTo_p_INamed, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_INamed, 0, 0}, {&_swigt__p_IParameterized, _p_IParameterizedTo_p_INamed, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_INamed, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_INamed, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_INamed, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_INamed, 0, 0}, {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_INamed, 0, 0}, {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_INamed, 0, 0}, {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_INamed, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_INamed, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_INamed, 0, 0}, {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_INamed, 0, 0}, {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_INamed, 0, 0}, {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_INamed, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_INamed, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IObservable[] = { {&_swigt__p_IObservable, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IObserver[] = { {&_swigt__p_IObserver, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_IParameterized[] = { {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IParameterized, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_IParameterized, 0, 0}, {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_IParameterized, 0, 0}, {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_IParameterized, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IParameterized, 0, 0}, {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0}, {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0}, {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0}, {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0}, {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0}, {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IParameterized, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IParameterized, 0, 0}, {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_IParameterized, 0, 0}, {&_swigt__p_ISampleBuilder, _p_ISampleBuilderTo_p_IParameterized, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_IParameterized, 0, 0}, {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IParameterized, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_IParameterized, 0, 0}, {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IParameterized, 0, 0}, {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IParameterized, 0, 0}, {&_swigt__p_IParameterized, 0, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_IParameterized, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_IParameterized, 0, 0}, {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IParameterized, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_IParameterized[] = { {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_IParameterized, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_IParameterized, 0, 0}, {&_swigt__p_ParameterDistribution, _p_ParameterDistributionTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DGauss, _p_FTDecayFunction1DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DGauss, _p_FTDistribution1DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_IParameterized, 0, 0}, {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_IParameterized, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_IParameterized, 0, 0}, {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IParameterized, 0, 0}, {&_swigt__p_IsGISAXSDetector, _p_IsGISAXSDetectorTo_p_IParameterized, 0, 0}, {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_IParameterized, 0, 0}, {&_swigt__p_Simulation, _p_SimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_GISASSimulation, _p_GISASSimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_OffSpecSimulation, _p_OffSpecSimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_SpecularSimulation, _p_SpecularSimulationTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DCone, _p_FTDistribution2DConeTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_IParameterized, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_IParameterized, 0, 0}, {&_swigt__p_ISample, _p_ISampleTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_IParameterized, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DGate, _p_FTDistribution2DGateTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionLogNormal, _p_DistributionLogNormalTo_p_IParameterized, 0, 0}, {&_swigt__p_Instrument, _p_InstrumentTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DVoigt, _p_FTDistribution1DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DVoigt, _p_FTDecayFunction1DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DGauss, _p_FTDistribution2DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction2DGauss, _p_FTDecayFunction2DGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_IParameterized, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_IParameterized, 0, 0}, {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_IParameterized, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_IParameterized, 0, 0}, {&_swigt__p_ISampleBuilder, _p_ISampleBuilderTo_p_IParameterized, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_IParameterized, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_IParameterized, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionGate, _p_DistributionGateTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDistribution1D, _p_IFTDistribution1DTo_p_IParameterized, 0, 0}, {&_swigt__p_IDistribution1D, _p_IDistribution1DTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDecayFunction1D, _p_IFTDecayFunction1DTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_IParameterized, 0, 0}, {&_swigt__p_Layer, _p_LayerTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionGaussian, _p_DistributionGaussianTo_p_IParameterized, 0, 0}, {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IParameterized, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DCosine, _p_FTDistribution1DCosineTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DGate, _p_FTDistribution1DGateTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionCosine, _p_DistributionCosineTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction2DVoigt, _p_FTDecayFunction2DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DVoigt, _p_FTDistribution2DVoigtTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DCauchy, _p_FTDistribution1DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DCauchy, _p_FTDecayFunction1DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction2DCauchy, _p_FTDecayFunction2DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution2DCauchy, _p_FTDistribution2DCauchyTo_p_IParameterized, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_IParameterized, 0, 0}, {&_swigt__p_Beam, _p_BeamTo_p_IParameterized, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_IParameterized, 0, 0}, {&_swigt__p_IParameterized, 0, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_IParameterized, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IParameterized, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDecayFunction2D, _p_IFTDecayFunction2DTo_p_IParameterized, 0, 0}, {&_swigt__p_IFTDistribution2D, _p_IFTDistribution2DTo_p_IParameterized, 0, 0}, {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IParameterized, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IParameterized, 0, 0}, {&_swigt__p_DistributionLorentz, _p_DistributionLorentzTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDistribution1DTriangle, _p_FTDistribution1DTriangleTo_p_IParameterized, 0, 0}, {&_swigt__p_FTDecayFunction1DTriangle, _p_FTDecayFunction1DTriangleTo_p_IParameterized, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IParameterized, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IParticle[] = { {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_IParticle, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_IParticle, 0, 0}, {&_swigt__p_IParticle, 0, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_IParticle, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_IParticle, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IPixelMap[] = { {&_swigt__p_IPixelMap, 0, 0, 0}, {&_swigt__p_AngularPixelMap, _p_AngularPixelMapTo_p_IPixelMap, 0, 0}, {&_swigt__p_RectPixelMap, _p_RectPixelMapTo_p_IPixelMap, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IResolutionFunction2D[] = { {&_swigt__p_IResolutionFunction2D, 0, 0, 0}, {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IResolutionFunction2D, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IRotation[] = { {&_swigt__p_RotationY, _p_RotationYTo_p_IRotation, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_IRotation, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_IRotation, 0, 0}, {&_swigt__p_IRotation, 0, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_IRotation, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IRoughness[] = { {&_swigt__p_IRoughness, 0, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_IRoughness, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_ISample[] = { {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ISample, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ISample, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0}, {&_swigt__p_ISample, 0, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ISample, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ISample, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_ISample[] = { {&_swigt__p_Layer, _p_LayerTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPrism6, _p_FormFactorPrism6To_p_ISample, 0, 0}, {&_swigt__p_FormFactorHemiEllipsoid, _p_FormFactorHemiEllipsoidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPolygonalPrism, _p_FormFactorPolygonalPrismTo_p_ISample, 0, 0}, {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorFullSpheroid, _p_FormFactorFullSpheroidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTruncatedSpheroid, _p_FormFactorTruncatedSpheroidTo_p_ISample, 0, 0}, {&_swigt__p_RotationX, _p_RotationXTo_p_ISample, 0, 0}, {&_swigt__p_RotationY, _p_RotationYTo_p_ISample, 0, 0}, {&_swigt__p_RotationZ, _p_RotationZTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongBoxGauss, _p_FormFactorLongBoxGaussTo_p_ISample, 0, 0}, {&_swigt__p_ParticleCoreShell, _p_ParticleCoreShellTo_p_ISample, 0, 0}, {&_swigt__p_RotationEuler, _p_RotationEulerTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorRipple1, _p_FormFactorRipple1To_p_ISample, 0, 0}, {&_swigt__p_FormFactorPolygonalSurface, _p_FormFactorPolygonalSurfaceTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCrystal, _p_FormFactorCrystalTo_p_ISample, 0, 0}, {&_swigt__p_MesoCrystal, _p_MesoCrystalTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_ISample, 0, 0}, {&_swigt__p_Crystal, _p_CrystalTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorRipple2, _p_FormFactorRipple2To_p_ISample, 0, 0}, {&_swigt__p_IRotation, _p_IRotationTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTruncatedCube, _p_FormFactorTruncatedCubeTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTruncatedSphere, _p_FormFactorTruncatedSphereTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorFullSphere, _p_FormFactorFullSphereTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple1Gauss, _p_FormFactorLongRipple1GaussTo_p_ISample, 0, 0}, {&_swigt__p_MultiLayer, _p_MultiLayerTo_p_ISample, 0, 0}, {&_swigt__p_ParticleDistribution, _p_ParticleDistributionTo_p_ISample, 0, 0}, {&_swigt__p_Particle, _p_ParticleTo_p_ISample, 0, 0}, {&_swigt__p_IParticle, _p_IParticleTo_p_ISample, 0, 0}, {&_swigt__p_IAbstractParticle, _p_IAbstractParticleTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorEllipsoidalCylinder, _p_FormFactorEllipsoidalCylinderTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCylinder, _p_FormFactorCylinderTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorBox, _p_FormFactorBoxTo_p_ISample, 0, 0}, {&_swigt__p_IFormFactorDecorator, _p_IFormFactorDecoratorTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorIcosahedron, _p_FormFactorIcosahedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPolyhedron, _p_FormFactorPolyhedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCuboctahedron, _p_FormFactorCuboctahedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorDodecahedron, _p_FormFactorDodecahedronTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTetrahedron, _p_FormFactorTetrahedronTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCone, _p_FormFactorConeTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorCone6, _p_FormFactorCone6To_p_ISample, 0, 0}, {&_swigt__p_ISample, 0, 0, 0}, {&_swigt__p_FormFactorSphereLogNormalRadius, _p_FormFactorSphereLogNormalRadiusTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorSphereGaussianRadius, _p_FormFactorSphereGaussianRadiusTo_p_ISample, 0, 0}, {&_swigt__p_ICompositeSample, _p_ICompositeSampleTo_p_ISample, 0, 0}, {&_swigt__p_IFormFactorBorn, _p_IFormFactorBornTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_ISample, 0, 0}, {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_ISample, 0, 0}, {&_swigt__p_IClusteredParticles, _p_IClusteredParticlesTo_p_ISample, 0, 0}, {&_swigt__p_IRoughness, _p_IRoughnessTo_p_ISample, 0, 0}, {&_swigt__p_LayerRoughness, _p_LayerRoughnessTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorDecoratorDebyeWaller, _p_FormFactorDecoratorDebyeWallerTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorTrivial, _p_FormFactorTrivialTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongBoxLorentz, _p_FormFactorLongBoxLorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple1Lorentz, _p_FormFactorLongRipple1LorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple2Lorentz, _p_FormFactorLongRipple2LorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLorentz, _p_FormFactorLorentzTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorWeighted, _p_FormFactorWeightedTo_p_ISample, 0, 0}, {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ISample, 0, 0}, {&_swigt__p_ILayout, _p_ILayoutTo_p_ISample, 0, 0}, {&_swigt__p_IInterferenceFunction, _p_IInterferenceFunctionTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPyramid, _p_FormFactorPyramidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorAnisoPyramid, _p_FormFactorAnisoPyramidTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorPrism3, _p_FormFactorPrism3To_p_ISample, 0, 0}, {&_swigt__p_FormFactorSphereUniformRadius, _p_FormFactorSphereUniformRadiusTo_p_ISample, 0, 0}, {&_swigt__p_ParticleComposition, _p_ParticleCompositionTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorLongRipple2Gauss, _p_FormFactorLongRipple2GaussTo_p_ISample, 0, 0}, {&_swigt__p_FormFactorGauss, _p_FormFactorGaussTo_p_ISample, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_ISampleBuilder[] = { {&_swigt__p_ISampleBuilder, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_ISampleVisitor[] = { {&_swigt__p_ISampleVisitor, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_ISelectionRule[] = { {&_swigt__p_ISelectionRule, 0, 0, 0}, {&_swigt__p_SimpleSelectionRule, _p_SimpleSelectionRuleTo_p_ISelectionRule, 0, 0},{0, 0, 0, 0}}; @@ -103891,6 +104096,7 @@ static swig_cast_info *swig_cast_initial[] = { _swigc__p_FormFactorLongRipple2Lorentz, _swigc__p_FormFactorLorentz, _swigc__p_FormFactorPolygonalPrism, + _swigc__p_FormFactorPolygonalSurface, _swigc__p_FormFactorPolyhedron, _swigc__p_FormFactorPrism3, _swigc__p_FormFactorPrism6, diff --git a/Tests/UnitTests/Core/P/FormFactorSymmetryTest.h b/Tests/UnitTests/Core/P/FormFactorSymmetryTest.h index 85d21ef45266ff9d48f285b6b209eeecd481abb0..01fd01e0687c063b7a0a92796e8f51cacbfd3d31 100644 --- a/Tests/UnitTests/Core/P/FormFactorSymmetryTest.h +++ b/Tests/UnitTests/Core/P/FormFactorSymmetryTest.h @@ -37,23 +37,23 @@ INSTANTIATE_TEST_CASE_P( FFSymmetryTest, qlist); -//*********** satisfactory tests *************** +//*********** polyhedra *************** -TEST_P(FFSymmetryTest, HemiEllipsoid) +TEST_P(FFSymmetryTest, Prism3) { if( skip_q( 1e-99, 2e2 ) ) return; - FormFactorHemiEllipsoid p(.53, .78, 1.3); - test_qq_eq( &p, q, cvector_t(-q.x(), q.y(), q.z()) ); - test_qq_eq( &p, q, cvector_t(q.x(), -q.y(), q.z()) ); + FormFactorPrism3 p(.83, .45); + test_qq_eq( &p, q, q.rotatedZ(Units::PI2/3) ); } -TEST_P(FFSymmetryTest, Prism3) +TEST_P(FFSymmetryTest, Prism6) { - if( skip_q( 1e-99, 2e2 ) ) + if( skip_q( 1e-99, 2e3 ) ) return; - FormFactorPrism3 p(.83, .45); - test_qq_eq( &p, q, q.rotatedZ(Units::PI2/3) ); + FormFactorPrism6 p(1.33, .42); + test_qq_eq( &p, q, q.rotatedZ( Units::PI/3), 1e-11 ); + test_qq_eq( &p, q, q.rotatedZ(-Units::PI2/3), 1e-11 ); } TEST_P(FFSymmetryTest, Tetrahedron) @@ -61,7 +61,7 @@ TEST_P(FFSymmetryTest, Tetrahedron) if( skip_q( 1e-99, 2e2 ) ) return; FormFactorTetrahedron p(8.43, .25, .53); - test_qq_eq( &p, q, q.rotatedZ(Units::PI2/3), 1e-8 ); + test_qq_eq( &p, q, q.rotatedZ(Units::PI2/3), 1.5e-10 ); } TEST_P(FFSymmetryTest, Cone6) @@ -69,23 +69,26 @@ TEST_P(FFSymmetryTest, Cone6) if( skip_q( 1e-99, 2e2) ) // TODO for larger q, imag(ff) is nan return; FormFactorCone6 p(7.43, .25, .57); - test_qq_eq( &p, q, q.rotatedZ(-Units::PI/3), 1e-8 ); + test_qq_eq( &p, q, q.rotatedZ(-Units::PI/3), 3e-10 ); } -TEST_P(FFSymmetryTest, TruncatedSphere) +//*********** spheroids *************** + +TEST_P(FFSymmetryTest, HemiEllipsoid) { if( skip_q( 1e-99, 2e2 ) ) return; - FormFactorTruncatedSphere p(.79, .34); - test_qq_eq( &p, q, q.rotatedZ(Units::PI/3.13698), 1e-10 ); + FormFactorHemiEllipsoid p(.53, .78, 1.3); + test_qq_eq( &p, q, cvector_t(-q.x(), q.y(), q.z()) ); + test_qq_eq( &p, q, cvector_t(q.x(), -q.y(), q.z()) ); } -TEST_P(FFSymmetryTest, Prism6) +TEST_P(FFSymmetryTest, TruncatedSphere) { - if( skip_q( 1e-99, 2e3 ) ) + if( skip_q( 1e-99, 2e2 ) ) return; - FormFactorPrism6 p(1.33, .42); - test_qq_eq( &p, q, q.rotatedZ(Units::PI/3), 1e-10 ); + FormFactorTruncatedSphere p(.79, .34); + test_qq_eq( &p, q, q.rotatedZ(Units::PI/3.13698), 1e-10 ); } // ****** TODO: tests that do not pass for the full q range ********* diff --git a/Tests/UnitTests/Core/Q/FormFactorSpecializationTest.h b/Tests/UnitTests/Core/Q/FormFactorSpecializationTest.h index bea12d61f610dd14ba7e8b25a7031ced80d497db..5f21c482d5fb525478fecf0dc135af5c3b63f89b 100644 --- a/Tests/UnitTests/Core/Q/FormFactorSpecializationTest.h +++ b/Tests/UnitTests/Core/Q/FormFactorSpecializationTest.h @@ -37,25 +37,7 @@ INSTANTIATE_TEST_CASE_P( FFSpecializationTest, qlist); -TEST_P(FFSpecializationTest, HemiEllipsoidAsTruncatedSphere) -{ - if( skip_q( 1e-99, 5e2 ) ) - return; - double R=1.07; - FormFactorHemiEllipsoid p0(R, R, R); - FormFactorTruncatedSphere p1(R, R); - test_ff_eq( &p0, &p1, 1e-10 ); -} - -TEST_P(FFSpecializationTest, EllipsoidalCylinderAsCylinder) -{ - if( skip_q( 1e-99, 5e3 ) ) - return; - double R=.8, H=1.2; - FormFactorEllipsoidalCylinder p0(R, R, H); - FormFactorCylinder p1(R, H); - test_ff_eq( &p0, &p1, 1e-11 ); -} +//*********** polyhedra *************** TEST_P(FFSpecializationTest, TruncatedCubeAsBox) { @@ -64,7 +46,7 @@ TEST_P(FFSpecializationTest, TruncatedCubeAsBox) double L=.5; FormFactorTruncatedCube p0(L, 0); FormFactorBox p1(L, L, L); - test_ff_eq( &p0, &p1, 1e-11 ); + test_ff_eq( &p0, &p1, 5e-12 ); } TEST_P(FFSpecializationTest, AnisoPyramidAsPyramid) @@ -74,17 +56,7 @@ TEST_P(FFSpecializationTest, AnisoPyramidAsPyramid) double L=1.5, H=.24, alpha=.6; FormFactorAnisoPyramid p0(L, L, H, alpha); FormFactorPyramid p1(L, H, alpha); - test_ff_eq( &p0, &p1, 1e-9 ); -} - -TEST_P(FFSpecializationTest, TruncatedSphereAsSphere) -{ - if( skip_q( .02, 5e1 ) ) // WAITING #1416 improve/replace numeric integration - return; - double R=1.; - FormFactorTruncatedSphere p0(R, 2*R); - FormFactorFullSphere p1(R); - test_ff_eq( &p0, &p1 ); + test_ff_eq( &p0, &p1, 2e-12 ); } TEST_P(FFSpecializationTest, Pyramid3AsPrism) @@ -94,7 +66,7 @@ TEST_P(FFSpecializationTest, Pyramid3AsPrism) double L=1.8, H=.3; FormFactorTetrahedron p0(L, H, Units::PI/2); FormFactorPrism3 p1(L, H); - test_ff_eq( &p0, &p1, 2e-9 ); + test_ff_eq( &p0, &p1, 1.4e-10 ); } TEST_P(FFSpecializationTest, PyramidAsBox) @@ -104,7 +76,7 @@ TEST_P(FFSpecializationTest, PyramidAsBox) double L=1.8, H=.3; FormFactorPyramid p0(L, H, Units::PI/2); FormFactorBox p1(L, L, H); - test_ff_eq( &p0, &p1, 5e-10 ); + test_ff_eq( &p0, &p1, 7e-11 ); } TEST_P(FFSpecializationTest, Cone6AsPrism) @@ -114,5 +86,37 @@ TEST_P(FFSpecializationTest, Cone6AsPrism) double L=.8, H=1.13; FormFactorCone6 p0(L, H, Units::PI/2); FormFactorPrism6 p1(L, H); - test_ff_eq( &p0, &p1, 2e-10 ); + test_ff_eq( &p0, &p1, 2e-11 ); +} + +//*********** spheroids *************** + +TEST_P(FFSpecializationTest, HemiEllipsoidAsTruncatedSphere) +{ + if( skip_q( 1e-99, 5e2 ) ) + return; + double R=1.07; + FormFactorHemiEllipsoid p0(R, R, R); + FormFactorTruncatedSphere p1(R, R); + test_ff_eq( &p0, &p1, 1e-10 ); +} + +TEST_P(FFSpecializationTest, EllipsoidalCylinderAsCylinder) +{ + if( skip_q( 1e-99, 5e3 ) ) + return; + double R=.8, H=1.2; + FormFactorEllipsoidalCylinder p0(R, R, H); + FormFactorCylinder p1(R, H); + test_ff_eq( &p0, &p1, 1e-11 ); +} + +TEST_P(FFSpecializationTest, TruncatedSphereAsSphere) +{ + if( skip_q( .02, 5e1 ) ) // WAITING #1416 improve/replace numeric integration + return; + double R=1.; + FormFactorTruncatedSphere p0(R, 2*R); + FormFactorFullSphere p1(R); + test_ff_eq( &p0, &p1 ); } diff --git a/Tests/UnitTests/Core/S/FormFactorBasicTest.h b/Tests/UnitTests/Core/S/FormFactorBasicTest.h index 0d90ec51bcdc407a3bc33581547f4c5f480088aa..859aa3d3cfe39acd186aefcd7cce6fe1da9a1226 100644 --- a/Tests/UnitTests/Core/S/FormFactorBasicTest.h +++ b/Tests/UnitTests/Core/S/FormFactorBasicTest.h @@ -27,11 +27,12 @@ protected: cvector_t q = eps*qdir; complex_t ff = p->evaluate_for_q( q ); //std::cout<<"q="<<q<<" -> "<<std::setprecision(16)<<" ff0="<<V<<", ff ="<<ff<<"\n"; - EXPECT_LE( real(ff), V*(1+1e-15) ); + EXPECT_LE( real(ff), V*(1+3e-16) ); if ( R*R*R<V/20 || R*R*R>20*V ) + // very excentric shape, the following tests cannot be expected to pass return; - EXPECT_GT( real(ff), V*(1-2*eps*R) ); - //EXPECT_LT( std::abs(imag(ff)), 10*eps*eps*V*R*R ); + EXPECT_GT( real(ff), V*(1-std::max(3e-16,2*eps*R*eps*R)) ); + EXPECT_LT( std::abs(imag(ff)), 2*eps*V*R ); } void test_small_q( const IFormFactorBorn* p, complex_t x, complex_t y, complex_t z ) { @@ -46,7 +47,7 @@ protected: complex_t ff0 = p->evaluate_for_q( cvector_t(0.,0.,0.) ); EXPECT_EQ( imag(ff0), 0. ); V = real(ff0); - EXPECT_NEAR( p->getVolume(), V, 1e-15*V ); + EXPECT_NEAR( p->getVolume(), V, 3e-16*V ); R = p->getRadius(); if ( R*R*R<V/20 || R*R*R>20*V ) { @@ -367,13 +368,13 @@ TEST_F(FormFactorBasicTest, TruncatedSphere) TEST_F(FormFactorBasicTest, TruncatedSpheroid) { - double height = 5.; double radius = 3.; + double height = 5.; double flattening = 1.5; double volume = Units::PI*radius*height*height/flattening* (1.-height/(3.*flattening*radius)); - FormFactorTruncatedSpheroid trspheroid(radius, height,flattening); + FormFactorTruncatedSpheroid trspheroid(radius, height, flattening); EXPECT_EQ(BornAgain::FFTruncatedSpheroidType, trspheroid.getName()); EXPECT_EQ(5., trspheroid.getHeight()); @@ -385,8 +386,8 @@ TEST_F(FormFactorBasicTest, TruncatedSpheroid) TEST_F(FormFactorBasicTest, Tetrahedron) { - double height = 4.; double base_edge = 16.; + double height = 4.; double alpha = 0.8; double tga = std::tan(alpha); double sqrt3H2divLtga = std::sqrt(3.)*2.*height/base_edge/tga; diff --git a/dev-tools/math/fftest/runff.cpp b/dev-tools/math/fftest/runff.cpp index 8f84ea104f0dac71b0caf2ec71ca7d2893e96ce8..12eb29f2a1ec7156137e66aafc087a9e14ab7f93 100644 --- a/dev-tools/math/fftest/runff.cpp +++ b/dev-tools/math/fftest/runff.cpp @@ -26,7 +26,7 @@ static double eps(2e-16); Diagnosis diagnosis; -int nshape = 12; +int nshape = 13; extern int n_limit; extern double q_limit_series; @@ -49,21 +49,23 @@ IFormFactorBorn* make_particle( int ishape ) } else if( ishape==5 ) { // tetrahedral frustum, flat one double alpha = 80 * Units::degree; return new FormFactorTetrahedron(1., 0.1*tan(alpha)/2/sqrt(3), alpha); - } else if( ishape==6 ) { + } else if( ishape==6 ) { // tetrahedral frustum as in BasicTest + return new FormFactorTetrahedron(16., 4., .8); + } else if( ishape==7 ) { double alpha = 72 * Units::degree; return new FormFactorCone6(10., 10., alpha); - } else if( ishape==7 ) { - return new FormFactorPyramid(1.5, .24, 1.); } else if( ishape==8 ) { - return new FormFactorAnisoPyramid(1.5, 1.5, .24, 1.); + return new FormFactorPyramid(1.5, .24, 1.); } else if( ishape==9 ) { - return new FormFactorPrism3(1.2, 1.); + return new FormFactorAnisoPyramid(1.5, 1.5, .24, 1.); } else if( ishape==10) { - return new FormFactorPrism6(1., 1.); + return new FormFactorPrism3(1.2, 1.); } else if( ishape==11) { + return new FormFactorPrism6(1., 1.); + } else if( ishape==12) { return new FormFactorTruncatedCube(4., 1.); - } else if( ishape==12 ) { - double alpha = 72 * Units::degree; + } else if( ishape==13 ) { + double alpha = 73 * Units::degree; return new FormFactorCuboctahedron(1., 1., .8, alpha); } else if( ishape==90 ) { return new FormFactorTriangle(1.); @@ -71,6 +73,21 @@ IFormFactorBorn* make_particle( int ishape ) throw "Shape not implemented"; } +//! Print q in a form that can be easily pasted to the command line for further investigation + +std::string nice_q( cvector_t q ) +{ + std::ostringstream ret; + double qmax = 0; + ret << std::setprecision(16); + for( int i=0; i<3; ++i ) + qmax = std::max( qmax, q[i].real() ); + for( int i=0; i<3; ++i ) + ret << q[i].real()/qmax << " " << q[i].imag()/qmax << " "; + ret << qmax; + return ret.str(); +} + //! Bisect between two q's to find possible discontinuities void bisect( @@ -87,7 +104,7 @@ void bisect( double relstep = step/aval; maxrelstep = std::max( maxrelstep, relstep ); if( relstep>2e-9 ){ - cout<<"ishape="<<ishape<<": relstep "<<std::setprecision(8)<<relstep<<"="<<step<<"/"<<std::setprecision(16)<<aval<<" for "<<di<<"->"<<df<<" at q between "<< std::setprecision(16)<<qi<<" and "<<qf<<"\n"; + cout<<"ishape="<<ishape<<": relstep "<<std::setprecision(8)<<relstep<<"="<<step<<"/"<<std::setprecision(16)<<aval<<" for "<<di<<"->"<<df<<" at q between "<<nice_q(qi)<<" and "<<nice_q(qf)<<"\n"; } return; } @@ -102,13 +119,13 @@ void bisect( //! Computes form factor, and prints result according to outfilter. -void run(const IFormFactorBorn* polyh, const int ishape, const cvector_t q, int outfilter ) +void run( const IFormFactorBorn* polyh, int ishape, cvector_t q, int outfilter ) { complex_t ret = polyh->evaluate_for_q(q); cout<<std::scientific<<std::setprecision(16)<<std::setfill('0'); if ( outfilter==0 ) - cout<<q.mag()<<" "<<std::abs(ret)<<" "<<ret.real()<<" "<<ret.imag()<< - diagnosis.nExpandedFaces<<" "<<diagnosis.maxOrder; + cout<<q.mag()<<" "<<std::abs(ret)<<" "<<ret.real()<<" "<<ret.imag()<<" "<< + diagnosis.nExpandedFaces<<std::noshowpos<<" "<<diagnosis.maxOrder; else if( outfilter==1 ) cout<<ret.real(); else if( outfilter==2 ) @@ -116,44 +133,44 @@ void run(const IFormFactorBorn* polyh, const int ishape, const cvector_t q, int cout<<"\n"; } +//! Compute a form factor with modified control parameter settings + +complex_t ff_modified( cvector_t q, const IFormFactorBorn* polyh, bool expand_qpa, bool expand_q ) +{ + PolyhedralFace::setLimits( expand_qpa ? 1e99 : 1e-99, 80 ); + FormFactorPolyhedron::setLimits( expand_q ? 1e99 : 1e-99, 80 ); + return polyh->evaluate_for_q( q ); +} void test_matching( int ishape, const vector<vector<cvector_t>>& scans ) { + cout<<ishape<<"\n"; + cerr<<"shape "<<ishape<<" ...\n"; IFormFactorBorn* polyh( make_particle( ishape ) ); - int n_mag = 11; - double mag_i = 1e-4; - double mag_f = 1e-2; + int n_mag = 25; + double mag_i = 1e-3; + double mag_f = 1e1; for( int i=1; i<n_mag; ++i ) { double mag = mag_i*pow(mag_f/mag_i,i/(n_mag-1.)); - double res[3]; - res[0] = res[1] = res[2] = 0; + double res = 0; for( const vector<cvector_t>& q_scan: scans ) { - complex_t ff[3]; assert( q_scan.size()== 1 ); - const cvector_t q = mag * q_scan[0]; - FormFactorPolyhedron::setLimits( 1e99, 20 ); - PolyhedralFace::setLimits( 1e99, 20 ); - ff[0] = polyh->evaluate_for_q( q ); - FormFactorPolyhedron::setLimits( 1e-99, 20 ); - PolyhedralFace::setLimits( 1e99, 20 ); - ff[1] = polyh->evaluate_for_q( q ); - FormFactorPolyhedron::setLimits( 1e-99, 20 ); - PolyhedralFace::setLimits( 1e-99, 20 ); - ff[2] = polyh->evaluate_for_q( q ); - double dev[3]; - dev[2] = std::abs(ff[0]-ff[1])*2/(std::abs(ff[0])+std::abs(ff[1])); - dev[1] = std::abs(ff[0]-ff[2])*2/(std::abs(ff[0])+std::abs(ff[2])); - dev[0] = std::abs(ff[1]-ff[2])*2/(std::abs(ff[1])+std::abs(ff[2])); - for( int m=0; m<3; ++m ) { - res[m] = std::max(res[m], dev[m] ); - if( dev[m]>1e-4 ) - cout<<ishape<<" "<<mag<<" "<<std::setprecision(8)<< - dev[0]<<" "<<dev[1]<<" "<<dev[2]<<" "<< - ff[0]<<" "<<ff[1]<<" "<<ff[2]<<" @ "<<q<<"\n"; - } + cvector_t uq = q_scan[0]; + const cvector_t q = mag * uq; + complex_t ff[2]; + + ff[0] = ff_modified( q, polyh, false, false ); + ff[1] = ff_modified( q, polyh, true, false ); + + double dev = std::abs(ff[0]-ff[1])*2/(std::abs(ff[0])+std::abs(ff[1])); + res = std::max(res, dev ); + if( 0 && dev>.1 ) + cerr<<ishape<<" "<<mag<<" "<<std::setprecision(16)<< + dev<<" "<<ff[0]<<" "<<ff[1]<<" @ "<<q<<"\n"; } - cout<<ishape<<" "<<mag<<" "<<std::setprecision(8)<<res[0]<<" "<<res[1]<<" "<<res[2]<<"\n"; + cout<<" "<<mag*polyh->getRadius()<<" "<<std::setprecision(8)<<res<<"\n"; } + cout<<"\n"; } double test_continuity( int ishape, const vector<vector<cvector_t>>& scans ) @@ -170,8 +187,10 @@ double test_continuity( int ishape, const vector<vector<cvector_t>>& scans ) complex_t ret = polyh->evaluate_for_q(q_scan[i]); Diagnosis diag = diagnosis; if( diag!=last_diag ) - bisect( polyh, ishape, q_scan[i].mag(), q_scan[i], ret, diag, q_scan[i-1], - last_ret, last_diag, maxrelstep ); + bisect( polyh, ishape, q_scan[i].mag(), + q_scan[i-1], last_ret, last_diag, + q_scan[i], ret, diag, + maxrelstep ); } } fprintf( stderr, "\n" ); @@ -286,6 +305,8 @@ void help_and_exit() int main (int argc, const char *argv[]) { try { + diagnosis.debmsg = 0; + diagnosis.request_convergence = false; const char** arg = argv; NEXTARG; if ( !strncmp( *arg, "def", 3 ) ) { @@ -320,13 +341,14 @@ int main (int argc, const char *argv[]) while( std::cin >> mag ) run( P, ishape, mag*uq, outfilter ); } else if( inmode==1 ) { + diagnosis.debmsg = 2; NEXTARG; mag = atof( *arg ); run( P, ishape, mag*uq, outfilter ); } else if( inmode==2 ) { - int n_mag = 6201; - double mag_i = 1e-24; - double mag_f = 1e2; + int n_mag = 2001; + double mag_i = 1e-20; + double mag_f = 1e4; for( int i=1; i<n_mag; ++i ) { //mag = 180.*i/(n_mag-1); mag = mag_i*pow(mag_f/mag_i,i/(n_mag-1.)); @@ -340,6 +362,7 @@ int main (int argc, const char *argv[]) int ishapepar = atoi( *arg ); if( inmode==3 ) { // continuity test + diagnosis.request_convergence = true; vector<vector<cvector_t>> scans = create_scans( 1 ); double totmaxrelstep = 0; if( ishapepar==0 ) {