diff --git a/src/cluster/cluster.cpp b/src/cluster/cluster.cpp index 32d8c6e6ea11864568b2b753418df35503b0faf5..4569d6fd419fb37bb97bc01dc91ecf8869ae74ff 100644 --- a/src/cluster/cluster.cpp +++ b/src/cluster/cluster.cpp @@ -104,13 +104,13 @@ using namespace std; * executed. * * \param jxi488: `int` Wavelength loop index. - * \param sconf: `ScattererConfiguration *` Pointer to a ScattererConfiguration object. - * \param gconf: `GeometryConfiguration *` Pointer to a GeometryConfiguration object. - * \param sa: `ScatteringAngles *` Pointer to a ScatteringAngles object. - * \param cid: `ClusterIterationData *` Pointer to a ClusterIterationData object. - * \param output: `VirtualAsciiFile *` Pointer to a VirtualAsciiFile object. + * \param sconf: `ScattererConfiguration *` Pointer to a `ScattererConfiguration` object. + * \param gconf: `GeometryConfiguration *` Pointer to a `GeometryConfiguration` object. + * \param sa: `ScatteringAngles *` Pointer to a `ScatteringAngles` object. + * \param cid: `ClusterIterationData *` Pointer to a `ClusterIterationData` object. + * \param output: `VirtualAsciiFile *` Pointer to a `VirtualAsciiFile` object. * \param output_path: `const string &` Path to the output directory. - * \param vtppoanp: `VirtualBinaryFile *` Pointer to a VirtualBinaryFile object. + * \param vtppoanp: `VirtualBinaryFile *` Pointer to a `VirtualBinaryFile` object. */ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConfiguration *gconf, ScatteringAngles *sa, ClusterIterationData *cid, VirtualAsciiFile *output, const string& output_path, VirtualBinaryFile *vtppoanp); diff --git a/src/include/Commons.h b/src/include/Commons.h index 88958c8d8ff15b9b45f38b5f2f3d717c276f22d8..688815856d7d80261d7aea4f06c6a29992b8d804 100644 --- a/src/include/Commons.h +++ b/src/include/Commons.h @@ -140,11 +140,27 @@ public: //! \brief Required accuracy level. double accuracygoal; + /*! \brief `ClusterIterationData` default instance constructor. + * + * \param gconf: `GeometryConfiguration *` Pointer to a `GeometryConfiguration` object. + * \param sconf: `ScattererConfiguration *` Pointer to a `ScattererConfiguration` object. + * \param mpidata: `mixMPI *` Pointer to a `mixMPI` object. + * \param device_count: `const int` Number of offload devices available on the system. + */ ClusterIterationData(GeometryConfiguration *gconf, ScattererConfiguration *sconf, const mixMPI *mpidata, const int device_count); + /*! \brief `ClusterIterationData` copy constructor. + * + * \param rhs: `const ClusterIterationData &` Reference to the `ClusterIterationData` object to be copied. + */ ClusterIterationData(const ClusterIterationData& rhs); #ifdef MPI_VERSION + /*! \brief `ClusterIterationData` MPI constructor. + * + * \param mpidata: `const mixMPI *` Pointer to a `mixMPI` instance. + * \param device_count: `const int` Number of offload devices available on the system. + */ ClusterIterationData(const mixMPI *mpidata, const int device_count); /*! \brief Broadcast over MPI the ClusterIterationData instance from MPI process 0 to all others. @@ -157,10 +173,11 @@ public: * \param mpidata: `mixMPI *` Pointer to the mpi structure used to do the MPI broadcast. */ void mpibcast(const mixMPI *mpidata); -#endif +#endif // MPI_VERSION + /*! \brief `ClusterIterationData` instance destroyer. + */ ~ClusterIterationData(); - }; /*! \brief Basic data structure describing the particle model and its interaction with fields. diff --git a/src/include/Configuration.h b/src/include/Configuration.h index f51e8529c18a95e1e6969543b51f0dda41daaf22..36eae2ff4bed65b7e948af908b4060ecfad9feb6 100644 --- a/src/include/Configuration.h +++ b/src/include/Configuration.h @@ -524,22 +524,6 @@ public: */ int get_nshl(int index) { return _nshl_vec[index]; } - /* - /*! \brief Get the value of a parameter by name. - * - * The proper way to access read-only parameters from outside a class is to define - * public methods that return their values. For configuration operations, whose - * optimization is not critical, it is possible to define a single function that - * returns simple scalar values called by name. Access to more complicated data - * structures, on the other hand, require specialized methods which avoid the - * burden of searching the necessary value across the whole array every time. - * - * \param param_name: `string` Name of the parameter to be retrieved. - * \return value: `double` Value of the requested parameter. - - double get_param(const std::string& param_name); - */ - /*! \brief Get the radius of a sphere by its index. * * This is a specialized function to get the radius of a sphere through its diff --git a/src/include/clu_subs.h b/src/include/clu_subs.h index 32994085c4dfc5e3a4cf2ccaf0cb1dffab3b7d2e..38dfcba576096cd10deddd6e06cee9183d40bac9 100644 --- a/src/include/clu_subs.h +++ b/src/include/clu_subs.h @@ -127,10 +127,11 @@ void crsm1(double vk, double exri, ParticleDescriptor *c1); * \param l2: `int` * \param m2: `int` * \param c1: `ParticleDescriptor *` + * \param rac3j: `dcomplex *` */ dcomplex ghit_d( int ihi, int ipamo, int nbl, int l1, int m1, int l2, int m2, - ParticleDescriptor *c1 + ParticleDescriptor *c1, dcomplex *rac3j ); /*! \brief Compute the transfer vector from N2 to N1. diff --git a/src/inclusion/inclusion.cpp b/src/inclusion/inclusion.cpp index 8b01327cfc027683d4680e77303a0f9a3e48f889..1931039e0281cc3a233d4a26c34670be0b17c742 100644 --- a/src/inclusion/inclusion.cpp +++ b/src/inclusion/inclusion.cpp @@ -171,11 +171,27 @@ public: //! \brief Required accuracy level. double accuracygoal; + /*! \brief `InclusionIterationData` default instance constructor. + * + * \param gconf: `GeometryConfiguration *` Pointer to a `GeometryConfiguration` object. + * \param sconf: `ScattererConfiguration *` Pointer to a `ScattererConfiguration` object. + * \param mpidata: `mixMPI *` Pointer to a `mixMPI` object. + * \param device_count: `const int` Number of offload devices available on the system. + */ InclusionIterationData(GeometryConfiguration *gconf, ScattererConfiguration *sconf, const mixMPI *mpidata, const int device_count); + /*! \brief `InclusionIterationData` copy constructor. + * + * \param rhs: `const InclusionIterationData &` Reference to the `InclusionIterationData` object to be copied. + */ InclusionIterationData(const InclusionIterationData& rhs); #ifdef MPI_VERSION + /*! \brief `InclusionIterationData` MPI constructor. + * + * \param mpidata: `const mixMPI *` Pointer to a `mixMPI` instance. + * \param device_count: `const int` Number of offload devices available on the system. + */ InclusionIterationData(const mixMPI *mpidata, const int device_count); /*! \brief Broadcast over MPI the InclusionIterationData instance from MPI process 0 to all others. @@ -190,8 +206,9 @@ public: void mpibcast(const mixMPI *mpidata); #endif + /*! \brief `InclusionIterationData` instance destroyer. + */ ~InclusionIterationData(); - }; // >>> End of InclusionIterationData header <<< // @@ -742,6 +759,23 @@ InclusionIterationData::~InclusionIterationData() { } // >>> End of InclusionIterationData implementation <<< // +/*! \brief Main calculation loop. + * + * The solution of the scattering problem for different wavelengths is an + * embarrasingly parallel task. This function, therefore, collects all the + * operations that can be independently executed by different processes, + * after the configuration stage and the first calculation loop have been + * executed. + * + * \param jxi488: `int` Wavelength loop index. + * \param sconf: `ScattererConfiguration *` Pointer to a `ScattererConfiguration` object. + * \param gconf: `GeometryConfiguration *` Pointer to a `GeometryConfiguration` object. + * \param sa: `ScatteringAngles *` Pointer to a `ScatteringAngles` object. + * \param cid: `InclusionIterationData *` Pointer to an `InclusionIterationData` object. + * \param output: `VirtualAsciiFile *` Pointer to a `VirtualAsciiFile` object. + * \param output_path: `const string &` Path to the output directory. + * \param vtppoanp: `VirtualBinaryFile *` Pointer to a `VirtualBinaryFile` object. + */ int inclusion_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConfiguration *gconf, ScatteringAngles *sa, InclusionIterationData *cid, VirtualAsciiFile *output, const string& output_path, VirtualBinaryFile *vtppoanp); /*! \brief C++ implementation of INCLU diff --git a/src/libnptm/algebraic.cpp b/src/libnptm/algebraic.cpp index 1df8405018dc5f0dd92e477daed3513b69d15dd2..cc2d6dc2bed0384adc0d14d282029cf36d6b6c65 100644 --- a/src/libnptm/algebraic.cpp +++ b/src/libnptm/algebraic.cpp @@ -53,7 +53,7 @@ #endif // >>> FALL-BACK FUNCTIONS DECLARATION <<< // -extern void lucin(dcomplex **mat, np_int max_size, np_int size, int &ier); +extern void lucin(dcomplex **am, const np_int nddmst, np_int n, int &ier); // >>> END OF FALL-BACK FUNCTIONS <<< // using namespace std;