Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
N
NP_TMcode
Manage
Activity
Members
Plan
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Container registry
Analyze
Contributor analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Giacomo Mulas
NP_TMcode
Commits
098577ec
Commit
098577ec
authored
4 months ago
by
Giovanni La Mura
Browse files
Options
Downloads
Patches
Plain Diff
Define SphereOutputInfo headers
parent
ba8afd35
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/include/outputs.h
+185
-0
185 additions, 0 deletions
src/include/outputs.h
with
185 additions
and
0 deletions
src/include/outputs.h
+
185
−
0
View file @
098577ec
...
@@ -969,4 +969,189 @@ public:
...
@@ -969,4 +969,189 @@ public:
};
};
// >>> END OF OUTPUT FOR INCLUSION <<<
// >>> END OF OUTPUT FOR INCLUSION <<<
// >>> OUTPUT FOR SPHERE <<<
class
SphereOutputInfo
{
protected:
//! \brief Number of incident azimuth calculations.
int
_num_theta
;
//! \brief Number of scattered azimuth calculations.
int
_num_thetas
;
//! \brief Number of incident elevation calculations.
int
_num_phi
;
//! \brief Number of scattered elevation calculations.
int
_num_phis
;
//! \brief ID of the first computed wavelength
int
_first_xi
;
/*! \brief Write the output to a HDF5 file.
*
* \param file_name: `const string &` Path to the output to be written.
* \return result: `int` Exit code (0 if successful).
*/
int
write_hdf5
(
const
std
::
string
&
file_name
);
/*! \brief Write the output to a legacy text file.
*
* This function takes care of writing the output using the legacy
* formatted ASCII structure. If the output file does not exist, it
* is created. If it exists, the new content is overwritten.
*
* \param output: `const string &` Path to the output to be written.
* \return result: `int` Exit code (0 if successful).
*/
int
write_legacy
(
const
std
::
string
&
output
);
public:
//! \brief Read-only view on the ID of the first scale
const
int
&
first_xi
=
_first_xi
;
//! \brief Maximum field expansion order.
int
lm
;
//! \brief Maximum coefficient matrix dimension.
np_int
mxndm
;
//! \brief Incident polarization flag.
int
inpol
;
//! \brief Number of points for transition layer integration.
int
npnt
;
//! \brief Number of points for non-transition layer integration.
int
npntts
;
//! \brief Flag for intensity.
int
iavm
;
//! \brief Flag for reference to meridional plane.
int
isam
;
//! \brief Flag for dielectric function definition.
int
idfc
;
//! \brief First incident radiation azimuth angle.
double
th
;
//! \brief Incident radiation azimuth angle step.
double
thstp
;
//! \brief Last incident radiation azimuth angle.
double
thlst
;
//! \brief First scattered radiation azimuth angle.
double
ths
;
//! \brief Scattered radiation azimuth angle step.
double
thsstp
;
//! \brief Last scattered radiation azimuth angle.
double
thslst
;
//! \brief First incident radiation elevation angle.
double
ph
;
//! \brief Incident radiation elevation angle step.
double
phstp
;
//! \brief Last incident radiation elevation angle.
double
phlst
;
//! \brief First scattered radiation elevation angle.
double
phs
;
//! \brief Scattered radiation elevation angle step.
double
phsstp
;
//! \brief Last scattered radiation elevation angle.
double
phslst
;
//! \brief Number of directions to be explicitly solved.
int
ndirs
;
//! \brief Refractive index of external medium.
double
exri
;
//! \brief Number of scales (wavelengths)
int
nxi
;
//! \brief Number of scales handled by the current process.
int
xi_block_size
;
//! \brief Index of the wavelength for T-matrix output.
int
jwtm
;
//! \brief Vector of scale (wavelength) indices.
int
*
vec_jxi
;
//! \brief Vector of error severities (0 - success, 1 - HJV, 2 - DME).
short
*
vec_ier
;
//! \brief Vector of vacuum wave numbers.
double
*
vec_vk
;
//! \brief Vector of computed scales.
double
*
vec_xi
;
//! \brief Vector of sphere sizes (one for every scale).
double
*
vec_sphere_sizes
;
//! \brief Vector of sphere refractive indices (one for every scale).
dcomplex
*
vec_sphere_ref_indices
;
/*! \brief `SphereOutputInfo` default instance constructor.
*
* \param sc: `ScattererConfiguration *` Pointer to a `ScattererConfiguration` instance.
* \param gc: `GeometryConfiguration *` Pointer to a `GeometryConfiguration` instance.
* \param mpidata: `const mixMPI*` Pointer to a mixMPI instance.
* \param first_xi: `int` Index of the first scale in output (optional, default is 1).
* \param xi_length: `int` Number of scales tobe included in output (optional, default is 0, meaning all).
*/
SphereOutputInfo
(
ScattererConfiguration
*
sc
,
GeometryConfiguration
*
gc
,
const
mixMPI
*
mpidata
,
int
first_xi
=
1
,
int
xi_length
=
0
);
/*! \brief `SphereOutputInfo` constructor from HDF5 input.
*
* \param hdf5_file_name: `const string &` Path to the HDF5 file to be read.
*/
SphereOutputInfo
(
const
std
::
string
&
hdf5_file_name
);
/*! \brief `InclusionOutputInfo` instance destroyer.
*/
~
SphereOutputInfo
();
/*! \brief Estimate the size of the structure that would be built for given input.
*
* \param sc: `ScattererConfiguration *` Pointer to a `ScattererConfiguration` instance.
* \param gc: `GeometryConfiguration *` Pointer to a `GeometryConfiguration` instance.
* \param first_xi: `int` Index of the first scale in output (optional, default is 0).
* \param xi_length: `int` Number of scales tobe included in output (optional, default is all).
* \return size: `long` Estimated instance size in bytes.
*/
static
long
compute_size
(
ScattererConfiguration
*
sc
,
GeometryConfiguration
*
gc
,
int
first_xi
=
0
,
int
xi_length
=
0
);
/*! \brief Get the size of a `ClusterOutputInfo` instance in bytes.
*
* \return size: `long` Estimated instance size in bytes.
*/
long
compute_size
();
/*! \brief Insert in the current output data the data of another block.
*
* \param rhs: `const SphereOutputInfo &` Reference to the source data block.
* \return result: `int` Exit code (0 if successful).
*/
int
insert
(
const
SphereOutputInfo
&
rhs
);
/*! \brief Write the output to a file.
*
* \param output: `const string &` Path to the output to be written.
* \param format: `const string &` Output format (one of LEGACY or HDF5).
* \return result: `int` Exit code (0 if successful).
*/
int
write
(
const
std
::
string
&
output
,
const
std
::
string
&
format
);
#ifdef MPI_VERSION
/*! \brief Receive output data from worker processes.
*
* This function is invoked by the MPI rank-0 process to fetch the
* output data produced by higher rank processes. When calling this
* function, process 0 halts until a valid data chunk is transmitted
* by the queried process.
*
* \param mpidata: `const mixMPI*` Pointer to a `mixMPI` instance.
* \param pid: `int` Rank of the process that is transmitting data.
* \return result: `int` An exit code (0 for success).
*/
int
mpireceive
(
const
mixMPI
*
mpidata
,
int
pid
);
/*! \brief Send output data to process 0.
*
* This function is invoked by non-zero ranked MPI processes when
* they are ready to send back the output data. When a process meets
* this function call, it halts until MPI process 0 asks for the
* data transmission.
*
* \param mpidata: `const mixMPI*` Pointer to a `mixMPI` instance.
* \param pid: `int` Rank of the process that is transmitting data.
* \return result: `int` An exit code (0 for success).
*/
int
mpisend
(
const
mixMPI
*
mpidata
);
#endif // MPI_VERSION
};
// >>> END OF OUTPUT FOR SPHERE <<<
#endif // INCLUDE_OUTPUTS_H_
#endif // INCLUDE_OUTPUTS_H_
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment