Commit 18e399ca authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Use ParticleDescriptor in SPHERE

parent 0844ceb9
Loading
Loading
Loading
Loading
+18 −18
Original line number Diff line number Diff line
@@ -38,11 +38,11 @@
 * \param zpv: `double ****` Geometrical asymmetry parameter coefficients matrix.
 * \param li: `int` Maximum field expansion order.
 * \param nsph: `int` Number of spheres.
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 * \param sqk: `double`
 * \param gaps: `double *` Geometrical asymmetry parameter-corrected cross-section.
 */
void aps(double ****zpv, int li, int nsph, C1 *c1, double sqk, double *gaps);
void aps(double ****zpv, int li, int nsph, ParticleDescriptor *c1, double sqk, double *gaps);

/*! \brief Complex Bessel Function.
 *
@@ -88,10 +88,10 @@ double cg1(int lmpml, int mu, int l, int m);
 * \param i: `int`
 * \param ic: `int`
 * \param vk: `double`
 * \param c1: `C1 *` Pointer to `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to `ParticleDescriptor` data structure.
 * \param c2: `C2 *` Pointer to `C2` data structure.
 */
void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2);
void diel(int npntmo, int ns, int i, int ic, double vk, ParticleDescriptor *c1, C2 *c2);

/*! \brief Compute Mie scattering coefficients.
 *
@@ -107,7 +107,7 @@ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2);
 * \param vk: `double` Wave number in scale units.
 * \param exdc: `double` External medium dielectric constant.
 * \param exri: `double` External medium refractive index.
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 * \param c2: `C2 *` Pointer to a `C2` data structure.
 * \param jer: `int &` Reference to integer error code variable.
 * \param lcalc: `int &` Reference to integer variable recording the maximum expansion order accounted for.
@@ -116,7 +116,7 @@ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2);
 */
void dme(
	 int li, int i, int npnt, int npntts, double vk, double exdc, double exri,
	 C1 *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf=0
	 ParticleDescriptor *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf=0
);

/*! \brief Bessel function calculation control parameters.
@@ -189,11 +189,11 @@ void orunve(double *u1, double *u2, double *u3, int iorth, double torth);
 * \param inpol: `int` Incident field polarization type (0 - linear; 1 - circular).
 * \param lw: `int`
 * \param isq: `int`
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 */
void pwma(
	  double *up, double *un, dcomplex *ylm, int inpol, int lw,
	  int isq, C1 *c1
	  int isq, ParticleDescriptor *c1
);

/*! \brief Compute radiation torques on a single sphere in Cartesian coordinates.
@@ -205,14 +205,14 @@ void pwma(
 * \param inpol: `int` Incident polarization type (0 - linear; 1 - circular)
 * \param li: `int` Maximum field expansion order.
 * \param nsph: `int` Number of spheres.
 * \param c1: `C1 *` Pointer to `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to `ParticleDescriptor` data structure.
 * \param tqse: `double **`
 * \param tqspe: `complex double **`
 * \param tqss: `double **`
 * \param tqsps: `complex double **`
 */
void rabas(
	   int inpol, int li, int nsph, C1 *c1, double **tqse, dcomplex **tqspe,
	   int inpol, int li, int nsph, ParticleDescriptor *c1, double **tqse, dcomplex **tqspe,
	   double **tqss, dcomplex **tqsps
);

@@ -308,9 +308,9 @@ void sphar(
 * \param lm: `int` Maximum field expansion order.
 * \param vk: `double` Wave number in scale units.
 * \param exri: `double` External medium refractive index.
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 */
void sscr0(dcomplex &tfsas, int nsph, int lm, double vk, double exri, C1 *c1);
void sscr0(dcomplex &tfsas, int nsph, int lm, double vk, double exri, ParticleDescriptor *c1);

/*! \brief C++ Compute the scattering amplitude and the scattered field intensity.
 *
@@ -321,9 +321,9 @@ void sscr0(dcomplex &tfsas, int nsph, int lm, double vk, double exri, C1 *c1);
 * \param lm: `int` Maximum field expansion order.
 * \param vk: `double` Wave number in scale units.
 * \param exri: `double` External medium refractive index.
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 */
void sscr2(int nsph, int lm, double vk, double exri, C1 *c1);
void sscr2(int nsph, int lm, double vk, double exri, ParticleDescriptor *c1);

/*! \brief Determine the geometrical asymmetry parameter coefficients.
 *
@@ -409,12 +409,12 @@ void upvsp(
 * \param u: `double *`
 * \param up: `double *`
 * \param un: `double *`
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 */
void wmamp(
	   int iis, double cost, double sint, double cosp, double sinp, int inpol,
	   int lm, int idot, int nsph, double *arg, double *u, double *up,
	   double *un, C1 *c1
	   double *un, ParticleDescriptor *c1
);

/*! \brief Compute the scattering plane-referred geometrical asymmetry parameter coefficients.
@@ -445,13 +445,13 @@ void wmamp(
 * \param nsph: `int` Number opf spheres.
 * \param argi: `double *`
 * \param args: `double *`
 * \param c1: `C1 *` Pointer to a `C1` data structure.
 * \param c1: `ParticleDescriptor *` Pointer to a `ParticleDescriptor` data structure.
 */
void wmasp(
	   double cost, double sint, double cosp, double sinp, double costs, double sints,
	   double cosps, double sinps, double *u, double *up, double *un, double *us,
	   double *ups, double *uns, int isq, int ibf, int inpol, int lm, int idot,
	   int nsph, double *argi, double *args, C1 *c1
	   int nsph, double *argi, double *args, ParticleDescriptor *c1
);

#endif /* SRC_INCLUDE_SPH_SUBS_H_ */
+9 −9
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@
#include "../include/sph_subs.h"
#endif

void aps(double ****zpv, int li, int nsph, C1 *c1, double sqk, double *gaps) {
void aps(double ****zpv, int li, int nsph, ParticleDescriptor *c1, double sqk, double *gaps) {
  dcomplex cc0 = 0.0 + 0.0 * I;
  dcomplex summ, sume, suem, suee, sum;
  double half_pi = acos(0.0);
@@ -197,7 +197,7 @@ double cg1(int lmpml, int mu, int l, int m) {
  return result;
}

void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2) {
void diel(int npntmo, int ns, int i, int ic, double vk, ParticleDescriptor *c1, C2 *c2) {
  const double dif = c1->rc[i - 1][ns] - c1->rc[i - 1][ns - 1];
  const double half_step = 0.5 * dif / npntmo;
  double rr = c1->rc[i - 1][ns - 1];
@@ -218,7 +218,7 @@ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2) {

void dme(
	 int li, int i, int npnt, int npntts, double vk, double exdc, double exri,
	 C1 *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf
	 ParticleDescriptor *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf
) {
  const int lipo = li + 1;
  const int lipt = li + 2;
@@ -497,7 +497,7 @@ void orunve(double *u1, double *u2, double *u3, int iorth, double torth) {

void pwma(
	  double *up, double *un, dcomplex *ylm, int inpol, int lw,
	  int isq, C1 *c1
	  int isq, ParticleDescriptor *c1
) {
  const double four_pi = 8.0 * acos(0.0);
  int is = isq;
@@ -575,7 +575,7 @@ void pwma(
}

void rabas(
	   int inpol, int li, int nsph, C1 *c1, double **tqse, dcomplex **tqspe,
	   int inpol, int li, int nsph, ParticleDescriptor *c1, double **tqse, dcomplex **tqspe,
	   double **tqss, dcomplex **tqsps
) {
  dcomplex cc0 = 0.0 + 0.0 * I;
@@ -894,7 +894,7 @@ void sphar(
  goto label40;
}

void sscr0(dcomplex &tfsas, int nsph, int lm, double vk, double exri, C1 *c1) {
void sscr0(dcomplex &tfsas, int nsph, int lm, double vk, double exri, ParticleDescriptor *c1) {
  dcomplex sum21, rm, re, csam;
  const dcomplex cc0 = 0.0 + 0.0 * I;
  const double exdc = exri * exri;
@@ -935,7 +935,7 @@ void sscr0(dcomplex &tfsas, int nsph, int lm, double vk, double exri, C1 *c1) {
  }
}

void sscr2(int nsph, int lm, double vk, double exri, C1 *c1) {
void sscr2(int nsph, int lm, double vk, double exri, ParticleDescriptor *c1) {
  dcomplex s11, s21, s12, s22, rm, re, csam, cc;
  const dcomplex cc0 = 0.0 + 0.0 * I;
  double ccs = 1.0 / (vk * vk);
@@ -1121,7 +1121,7 @@ void upvsp(
void wmamp(
	   int iis, double cost, double sint, double cosp, double sinp, int inpol,
	   int lm, int idot, int nsph, double *arg, double *u, double *up,
	   double *un, C1 *c1
	   double *un, ParticleDescriptor *c1
) {
  const int ylm_size = (lm + 1) * (lm + 1) + 1;
  dcomplex *ylm = new dcomplex[ylm_size];
@@ -1150,7 +1150,7 @@ void wmasp(
	   double cost, double sint, double cosp, double sinp, double costs, double sints,
	   double cosps, double sinps, double *u, double *up, double *un, double *us,
	   double *ups, double *uns, int isq, int ibf, int inpol, int lm, int idot,
	   int nsph, double *argi, double *args, C1 *c1
	   int nsph, double *argi, double *args, ParticleDescriptor *c1
) {
  const int ylm_size = (lm + 1) * (lm + 1) + 1;
  dcomplex *ylm = new dcomplex[ylm_size];
+1 −1
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ void sphere(const string& config_file, const string& data_file, const string& ou
    double cfmp, cfsp, sfmp, sfsp;
    int jw;
    int l_max = gconf->l_max;
    C1 *c1 = new C1(gconf, sconf);
    ParticleDescriptor *c1 = new ParticleDescriptorSphere(gconf, sconf);
    int npnt = gconf->npnt;
    int npntts = gconf->npntts;
    int in_pol = gconf->in_pol;