Loading src/cluster/cluster.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -734,8 +734,8 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf } if (nsh % 2 == 0) cid->c2->dc0[ici] = exdc; dme( cid->c4->li, last_configuration, npnt, npntts, vkarg, exdc, exri, cid->c1, cid->c2, jer, lcalc, cid->arg cid->c4->li, i132, npnt, npntts, vkarg, exdc, exri, cid->c1, cid->c2, jer, lcalc, cid->arg, last_configuration ); if (jer != 0) { sprintf(virtual_line, " STOP IN DME\n"); Loading Loading @@ -816,16 +816,18 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf sprintf(virtual_line, " SPHERES; LMX=LI\n"); output->append_line(virtual_line); } last_configuration = 0; for (int i170 = 1; i170 <= nsph; i170++) { if (cid->c1->iog[i170 - 1] >= i170) { int i = i170 - 1; last_configuration++; double albeds = cid->c1->sscs[i] / cid->c1->sexs[i]; cid->c1->sqscs[i] *= cid->sqsfi; cid->c1->sqabs[i] *= cid->sqsfi; cid->c1->sqexs[i] *= cid->sqsfi; sprintf(virtual_line, " SPHERE %2d\n", i170); output->append_line(virtual_line); if (cid->c1->nshl[i] != 1) { if (cid->c1->nshl[last_configuration - 1] != 1) { sprintf(virtual_line, " SIZE=%15.7lE\n", cid->c2->vsz[i]); output->append_line(virtual_line); } else { // label 162 Loading src/include/sph_subs.h +2 −1 Original line number Diff line number Diff line Loading @@ -112,10 +112,11 @@ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2); * \param jer: `int &` Reference to integer error code variable. * \param lcalc: `int &` Reference to integer variable recording the maximum expansion order accounted for. * \param arg: `complex double &` * \param last_conf: `int` Last sphere configuration (used by CLUSTER) */ 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 C1 *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf=0 ); /*! \brief Bessel function calculation control parameters. Loading src/libnptm/clu_subs.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -2439,16 +2439,19 @@ void scr2( void str(ScattererConfiguration *sconf, C1 *c1, C1_AddOns *c1ao, C3 *c3, C4 *c4, C6 *c6) { dcomplex *ylm; const double pi = acos(-1.0); int last_configuration; c3->gcs = 0.0; double gcss = 0.0; last_configuration = 0; for (int i18 = 1; i18 <= c4->nsph; i18++) { int iogi = c1->iog[i18 - 1]; if (iogi >= i18) { gcss = pi * c1->ros[i18 - 1] * c1->ros[i18 - 1]; last_configuration++; gcss = pi * c1->ros[last_configuration - 1] * c1->ros[last_configuration - 1]; c1->gcsv[i18 - 1] = gcss; int nsh = c1->nshl[i18 - 1]; int nsh = c1->nshl[last_configuration - 1]; for (int j16 = 1; j16 <= nsh; j16++) { c1->rc[i18 - 1][j16 - 1] = sconf->get_rcf(i18 - 1, j16 - 1) * c1->ros[i18 - 1]; c1->rc[last_configuration - 1][j16 - 1] = sconf->get_rcf(last_configuration - 1, j16 - 1) * c1->ros[last_configuration - 1]; } // j16 loop } c3->gcs += gcss; Loading src/libnptm/sph_subs.cpp +5 −18 Original line number Diff line number Diff line Loading @@ -197,20 +197,6 @@ double cg1(int lmpml, int mu, int l, int m) { return result; } /* #ifdef USE_TARGET_OFFLOAD #pragma omp begin declare target device_type(any) #endif dcomplex dconjg(dcomplex z) { double zreal = real(z); double zimag = imag(z); return (zreal - zimag * I); } #ifdef USE_TARGET_OFFLOAD #pragma omp end declare target #endif */ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *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; Loading @@ -232,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 C1 *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf ) { const int lipo = li + 1; const int lipt = li + 2; Loading @@ -243,13 +229,14 @@ void dme( dcomplex dfbi, dfb, dfn, ccna, ccnb, ccnc, ccnd; dcomplex y1, dy1, y2, dy2, arin, cri; const dcomplex uim = 1.0 * I; int sph_index = (last_conf == 0) ? i : last_conf; jer = 0; int nstp = npnt - 1; int nstpts = npntts - 1; double sz = vk * c1->ros[i - 1]; double sz = vk * c1->ros[sph_index - 1]; c2->vsz[i - 1] = sz; double vkr1 = vk * c1->rc[i - 1][0]; int nsh = c1->nshl[i - 1]; double vkr1 = vk * c1->rc[sph_index - 1][0]; int nsh = c1->nshl[sph_index - 1]; c2->vkt[i - 1] = csqrt(c2->dc0[0]); arg = vkr1 * c2->vkt[i - 1]; arin = arg; Loading Loading
src/cluster/cluster.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -734,8 +734,8 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf } if (nsh % 2 == 0) cid->c2->dc0[ici] = exdc; dme( cid->c4->li, last_configuration, npnt, npntts, vkarg, exdc, exri, cid->c1, cid->c2, jer, lcalc, cid->arg cid->c4->li, i132, npnt, npntts, vkarg, exdc, exri, cid->c1, cid->c2, jer, lcalc, cid->arg, last_configuration ); if (jer != 0) { sprintf(virtual_line, " STOP IN DME\n"); Loading Loading @@ -816,16 +816,18 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf sprintf(virtual_line, " SPHERES; LMX=LI\n"); output->append_line(virtual_line); } last_configuration = 0; for (int i170 = 1; i170 <= nsph; i170++) { if (cid->c1->iog[i170 - 1] >= i170) { int i = i170 - 1; last_configuration++; double albeds = cid->c1->sscs[i] / cid->c1->sexs[i]; cid->c1->sqscs[i] *= cid->sqsfi; cid->c1->sqabs[i] *= cid->sqsfi; cid->c1->sqexs[i] *= cid->sqsfi; sprintf(virtual_line, " SPHERE %2d\n", i170); output->append_line(virtual_line); if (cid->c1->nshl[i] != 1) { if (cid->c1->nshl[last_configuration - 1] != 1) { sprintf(virtual_line, " SIZE=%15.7lE\n", cid->c2->vsz[i]); output->append_line(virtual_line); } else { // label 162 Loading
src/include/sph_subs.h +2 −1 Original line number Diff line number Diff line Loading @@ -112,10 +112,11 @@ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *c1, C2 *c2); * \param jer: `int &` Reference to integer error code variable. * \param lcalc: `int &` Reference to integer variable recording the maximum expansion order accounted for. * \param arg: `complex double &` * \param last_conf: `int` Last sphere configuration (used by CLUSTER) */ 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 C1 *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf=0 ); /*! \brief Bessel function calculation control parameters. Loading
src/libnptm/clu_subs.cpp +6 −3 Original line number Diff line number Diff line Loading @@ -2439,16 +2439,19 @@ void scr2( void str(ScattererConfiguration *sconf, C1 *c1, C1_AddOns *c1ao, C3 *c3, C4 *c4, C6 *c6) { dcomplex *ylm; const double pi = acos(-1.0); int last_configuration; c3->gcs = 0.0; double gcss = 0.0; last_configuration = 0; for (int i18 = 1; i18 <= c4->nsph; i18++) { int iogi = c1->iog[i18 - 1]; if (iogi >= i18) { gcss = pi * c1->ros[i18 - 1] * c1->ros[i18 - 1]; last_configuration++; gcss = pi * c1->ros[last_configuration - 1] * c1->ros[last_configuration - 1]; c1->gcsv[i18 - 1] = gcss; int nsh = c1->nshl[i18 - 1]; int nsh = c1->nshl[last_configuration - 1]; for (int j16 = 1; j16 <= nsh; j16++) { c1->rc[i18 - 1][j16 - 1] = sconf->get_rcf(i18 - 1, j16 - 1) * c1->ros[i18 - 1]; c1->rc[last_configuration - 1][j16 - 1] = sconf->get_rcf(last_configuration - 1, j16 - 1) * c1->ros[last_configuration - 1]; } // j16 loop } c3->gcs += gcss; Loading
src/libnptm/sph_subs.cpp +5 −18 Original line number Diff line number Diff line Loading @@ -197,20 +197,6 @@ double cg1(int lmpml, int mu, int l, int m) { return result; } /* #ifdef USE_TARGET_OFFLOAD #pragma omp begin declare target device_type(any) #endif dcomplex dconjg(dcomplex z) { double zreal = real(z); double zimag = imag(z); return (zreal - zimag * I); } #ifdef USE_TARGET_OFFLOAD #pragma omp end declare target #endif */ void diel(int npntmo, int ns, int i, int ic, double vk, C1 *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; Loading @@ -232,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 C1 *c1, C2 *c2, int &jer, int &lcalc, dcomplex &arg, int last_conf ) { const int lipo = li + 1; const int lipt = li + 2; Loading @@ -243,13 +229,14 @@ void dme( dcomplex dfbi, dfb, dfn, ccna, ccnb, ccnc, ccnd; dcomplex y1, dy1, y2, dy2, arin, cri; const dcomplex uim = 1.0 * I; int sph_index = (last_conf == 0) ? i : last_conf; jer = 0; int nstp = npnt - 1; int nstpts = npntts - 1; double sz = vk * c1->ros[i - 1]; double sz = vk * c1->ros[sph_index - 1]; c2->vsz[i - 1] = sz; double vkr1 = vk * c1->rc[i - 1][0]; int nsh = c1->nshl[i - 1]; double vkr1 = vk * c1->rc[sph_index - 1][0]; int nsh = c1->nshl[sph_index - 1]; c2->vkt[i - 1] = csqrt(c2->dc0[0]); arg = vkr1 * c2->vkt[i - 1]; arin = arg; Loading