Commit a2131611 authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Implement ClusterOutputInfo::write_legacy()

parent 5853d90e
Loading
Loading
Loading
Loading
+58 −9
Original line number Original line Diff line number Diff line
@@ -41,9 +41,13 @@
 */
 */
class ClusterOutputInfo {
class ClusterOutputInfo {
protected:
protected:
  //! \brief Number of azimuth directional calculations.
  //! \brief Number of incident azimuth calculations.
  int _num_theta;
  //! \brief Number of scattered azimuth calculations.
  int _num_thetas;
  int _num_thetas;
  //! \brief Number of elevation directional calculations.
  //! \brief Number of incident elevation calculations.
  int _num_phi;
  //! \brief Number of scattered elevation calculations.
  int _num_phis;
  int _num_phis;
  
  
  /*! \brief Write the output to a HDF5 file.
  /*! \brief Write the output to a HDF5 file.
@@ -54,6 +58,15 @@ protected:
  int write_hdf5(const std::string &output);
  int write_hdf5(const std::string &output);
  
  
  /*! \brief Write the output to a legacy text file.
  /*! \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 appended to the old
   * one, without overwriting. This is useful for a simpler handling
   * of multi-process output combination, provided that only one process
   * writes to the output file at any given time. Simultaneous write
   * operations by different processes is not supported by the legacy
   * ASCII format.
   *
   *
   * \param output: `const string &` Path to the output to be written.
   * \param output: `const string &` Path to the output to be written.
   * \return result: `int` Exit code (0 if successful).
   * \return result: `int` Exit code (0 if successful).
@@ -81,6 +94,8 @@ public:
  int iavm;
  int iavm;
  //! \brief Flag for reference to meridional plane.
  //! \brief Flag for reference to meridional plane.
  int isam;
  int isam;
  //! \brief Flag for dielectric function definition.
  int idfc;
  //! \brief Vector of spherical components X Cartesian coordinates.
  //! \brief Vector of spherical components X Cartesian coordinates.
  double *vec_x_coords;
  double *vec_x_coords;
  //! \brief Vector of spherical components Y Cartesian coordinates.
  //! \brief Vector of spherical components Y Cartesian coordinates.
@@ -123,6 +138,8 @@ public:
  int jwtm;
  int jwtm;
  //! \brief Vector of scale (wavelength) indices.
  //! \brief Vector of scale (wavelength) indices.
  int *vec_jxi;
  int *vec_jxi;
  //! \brief Vector of error severities (0 - success, 1 - HJV, 2 - DME).
  short *vec_ier;
  //! \brief Vector of vacuum wave numbers.
  //! \brief Vector of vacuum wave numbers.
  double *vec_vk;
  double *vec_vk;
  //! \brief Vector of computed scales.
  //! \brief Vector of computed scales.
@@ -141,8 +158,12 @@ public:
  double *vec_sphere_exs;
  double *vec_sphere_exs;
  //! \brief Vector of sphere albedos (all configurations for every scale).
  //! \brief Vector of sphere albedos (all configurations for every scale).
  double *vec_sphere_albs;
  double *vec_sphere_albs;
  //! \brief Vector of sphere geometric cross-sections for configurations.
  //! \brief Vector of sphere scattering cross-section to geometric section ratios (all configurations for every scale).
  double *vec_gs;
  double *vec_sphere_sqscs;
  //! \brief Vector of sphere absorption cross-sections to geometric section ratios (all configurations for every scale).
  double *vec_sphere_sqabs;
  //! \brief Vector of sphere extinction cross-sections to geometric section ratios (all configurations for every scale).
  double *vec_sphere_sqexs;
  //! \brief Vector of sphere forward scattering amplitudes (all configurations for every scale).
  //! \brief Vector of sphere forward scattering amplitudes (all configurations for every scale).
  dcomplex *vec_fsas;
  dcomplex *vec_fsas;
  //! \brief Vector of QSCHU = 4 pi IMAG(FSAS) / TOTAL_GEOM_SECTION (all configurations for every scale).
  //! \brief Vector of QSCHU = 4 pi IMAG(FSAS) / TOTAL_GEOM_SECTION (all configurations for every scale).
@@ -189,6 +210,18 @@ public:
  double *vec_albedc1;
  double *vec_albedc1;
  //! \brief Vector of cluster albedos (perpendicular polarization).
  //! \brief Vector of cluster albedos (perpendicular polarization).
  double *vec_albedc2;
  double *vec_albedc2;
  //! \brief Vector of cluster scattering to geometric cross-section ratios (parallel polarization).
  double *vec_qscamc1;
  //! \brief Vector of cluster scattering to geometric cross-section ratios (perpendicular polarization).
  double *vec_qscamc2;
  //! \brief Vector of cluster absorption to geometric cross-section ratios (parallel polarization).
  double *vec_qabsmc1;
  //! \brief Vector of cluster absorption to geometric cross-section ratios (perpendicular polarization).
  double *vec_qabsmc2;
  //! \brief Vector of cluster extinction to geometric cross-section ratios (parallel polarization).
  double *vec_qextmc1;
  //! \brief Vector of cluster extinction to geometric cross-section ratios (perpendicular polarization).
  double *vec_qextmc2;
  //! \brief Vector of cluster-to-sum-of-spheres scattering cross-section ratios (parallel polarization).
  //! \brief Vector of cluster-to-sum-of-spheres scattering cross-section ratios (parallel polarization).
  double *vec_sccrt1;
  double *vec_sccrt1;
  //! \brief Vector of cluster-to-sum-of-spheres scattering cross-section ratios (parallel polarization).
  //! \brief Vector of cluster-to-sum-of-spheres scattering cross-section ratios (parallel polarization).
@@ -233,13 +266,13 @@ public:
  double *vec_fkc1;
  double *vec_fkc1;
  //! \brief Vector of optical forces along incidence direction [N] (perpendicular polarization).
  //! \brief Vector of optical forces along incidence direction [N] (perpendicular polarization).
  double *vec_fkc2;
  double *vec_fkc2;
  //! \brief Vector of incidence azimuth directions (one per direction).
  //! \brief Vector of incidence azimuth directions (one per incidence azimuth).
  double *vec_dir_tidg;
  double *vec_dir_tidg;
  //! \brief Vector of incidence elevation directions (one per direction).
  //! \brief Vector of incidence elevation directions (one per incidence elevation).
  double *vec_dir_pidg;
  double *vec_dir_pidg;
  //! \brief Vector of scattering azimuth directions (one per direction).
  //! \brief Vector of scattering azimuth directions (one per scattering azimuth).
  double *vec_dir_tsdg;
  double *vec_dir_tsdg;
  //! \brief Vector of scattering elevation directions (one per direction).
  //! \brief Vector of scattering elevation directions (one per scattering elevation).
  double *vec_dir_psdg;
  double *vec_dir_psdg;
  //! \brief Vector of scattering angles (one per direction).
  //! \brief Vector of scattering angles (one per direction).
  double *vec_dir_scand;
  double *vec_dir_scand;
@@ -252,7 +285,7 @@ public:
  //! \brief Control parameter for scattering plane referred to scattering plane (one per direction).
  //! \brief Control parameter for scattering plane referred to scattering plane (one per direction).
  double *vec_dir_sfsp;
  double *vec_dir_sfsp;
  //! \brief Components of the unitary vector perpendicular to incidence plane (three per direction).
  //! \brief Components of the unitary vector perpendicular to incidence plane (three per direction).
  double *vec_dir_uni;
  double *vec_dir_un;
  //! \brief Components of the unitary vector perpendicular to scattering plane (three per direction).
  //! \brief Components of the unitary vector perpendicular to scattering plane (three per direction).
  double *vec_dir_uns;
  double *vec_dir_uns;
  //! \brief Vector of sphere differential scattering amplitude with polarization parallel to parallel incidence field.
  //! \brief Vector of sphere differential scattering amplitude with polarization parallel to parallel incidence field.
@@ -291,6 +324,18 @@ public:
  double *vec_dir_albedc1;
  double *vec_dir_albedc1;
  //! \brief Vector of cluster differential albedos (perpendicular polarization).
  //! \brief Vector of cluster differential albedos (perpendicular polarization).
  double *vec_dir_albedc2;
  double *vec_dir_albedc2;
  //! \brief Vector of differential scattering to geometric cross-section ratios (parallel polarization).
  double *vec_dir_qscc1;
  //! \brief Vector of differential scattering to geometric cross-section ratios (perpendicular polarization).
  double *vec_dir_qscc2;
  //! \brief Vector of differential absorption to geometric cross-section ratios (parallel polarization).
  double *vec_dir_qabc1;
  //! \brief Vector of differential absorption to geometric cross-section ratios (perpendicular polarization).
  double *vec_dir_qabc2;
  //! \brief Vector of differential extinction to geometric cross-section ratios (parallel polarization).
  double *vec_dir_qexc1;
  //! \brief Vector of differential extinction to geometric cross-section ratios (perpendicular polarization).
  double *vec_dir_qexc2;
  //! \brief Vector of differential cluster-to-total scattering cross-section ratios (parallel polarization).
  //! \brief Vector of differential cluster-to-total scattering cross-section ratios (parallel polarization).
  double *vec_dir_sccrt1;
  double *vec_dir_sccrt1;
  //! \brief Vector of differential cluster-to-total scattering cross-section ratios (perpendicular polarization).
  //! \brief Vector of differential cluster-to-total scattering cross-section ratios (perpendicular polarization).
@@ -327,6 +372,10 @@ public:
  double *vec_dir_pschuc1;
  double *vec_dir_pschuc1;
  //! \brief Vector of differential cluster PSCHU (perpendicular polarization).
  //! \brief Vector of differential cluster PSCHU (perpendicular polarization).
  double *vec_dir_pschuc2;
  double *vec_dir_pschuc2;
  //! \brief Vector of cluster differential S0MAG (parallel polarization).
  double *vec_dir_s0magc1;
  //! \brief Vector of cluster differential S0MAG (perpendicular polarization).
  double *vec_dir_s0magc2;
  //! \brief Vector of differential cluster asymmetry parameters (parallel polarization).
  //! \brief Vector of differential cluster asymmetry parameters (parallel polarization).
  double *vec_dir_cosavc1;
  double *vec_dir_cosavc1;
  //! \brief Vector of differential cluster asymmetry parameters (perpendicular polarization).
  //! \brief Vector of differential cluster asymmetry parameters (perpendicular polarization).
+664 −35

File changed.

Preview size limit exceeded, changes collapsed.