v2.6 +multi-threading

This commit is contained in:
alex
2015-06-09 19:54:38 +01:00
parent 2364bbf6b9
commit 523cb1e736
10 changed files with 309 additions and 230 deletions

View File

@@ -451,7 +451,7 @@ double saalos(double d, prop_type & prop, propa_type & propa)
double adiff(double d, prop_type & prop, propa_type & propa)
{
complex < double >prop_zgnd(prop.zgndreal, prop.zgndimag);
static double wd1, xd1, afo, qk, aht, xht;
static __thread double wd1, xd1, afo, qk, aht, xht;
double a, q, pk, ds, th, wa, ar, wd, adiffv;
if (d == 0) {
@@ -513,7 +513,7 @@ double adiff(double d, prop_type & prop, propa_type & propa)
double adiff2(double d, prop_type & prop, propa_type & propa)
{
complex < double >prop_zgnd(prop.zgndreal, prop.zgndimag);
static double wd1, xd1, qk, aht, xht, toh, toho, roh, roho, dto, dto1,
static __thread double wd1, xd1, qk, aht, xht, toh, toho, roh, roho, dto, dto1,
dtro, dro, dro2, drto, dtr, dhh1, dhh2, /* dhec, */ dtof, dto1f,
drof, dro2f;
double a, q, pk, rd, ds, dsl, /* dfdh, */ th, wa, /* ar, wd, sf1, */
@@ -829,7 +829,7 @@ double adiff2(double d, prop_type & prop, propa_type & propa)
double ascat(double d, prop_type & prop, propa_type & propa)
{
static double ad, rr, etq, h0s;
static __thread double ad, rr, etq, h0s;
double h0, r1, r2, z0, ss, et, ett, th, q;
double ascatv, temp;
@@ -954,7 +954,7 @@ void qlrps(double fmhz, double zsys, double en0, int ipol, double eps,
double alos(double d, prop_type & prop, propa_type & propa)
{
complex < double >prop_zgnd(prop.zgndreal, prop.zgndimag);
static double wls;
static __thread double wls;
complex < double >r;
double s, sps, q;
double alosv;
@@ -1146,8 +1146,8 @@ void qlra(int kst[], int klimx, int mdvarx, prop_type & prop,
void lrprop(double d, prop_type & prop, propa_type & propa)
{
/* PaulM_lrprop used for ITM */
static bool wlos, wscat;
static double dmin, xae;
static __thread bool wlos, wscat;
static __thread double dmin, xae;
complex < double >prop_zgnd(prop.zgndreal, prop.zgndimag);
double a0, a1, a2, a3, a4, a5, a6;
double d0, d1, d2, d3, d4, d5, d6;
@@ -1337,8 +1337,8 @@ void lrprop(double d, prop_type & prop, propa_type & propa)
void lrprop2(double d, prop_type & prop, propa_type & propa)
{
/* ITWOM_lrprop2 */
static bool wlos, wscat;
static double dmin, xae;
static __thread bool wlos, wscat;
static __thread double dmin, xae;
complex < double >prop_zgnd(prop.zgndreal, prop.zgndimag);
double pd1;
double a0, a1, a2, a3, a4, a5, a6, iw;
@@ -1612,8 +1612,8 @@ double curve(double const &c1, double const &c2, double const &x1,
double avar(double zzt, double zzl, double zzc, prop_type & prop,
propv_type & propv)
{
static int kdv;
static double dexa, de, vmd, vs0, sgl, sgtm, sgtp, sgtd, tgtd,
static __thread int kdv;
static __thread double dexa, de, vmd, vs0, sgl, sgtm, sgtp, sgtd, tgtd,
gm, gp, cv1, cv2, yv1, yv2, yv3, csm1, csm2, ysm1, ysm2,
ysm3, csp1, csp2, ysp1, ysp2, ysp3, csd1, zd, cfm1, cfm2,
cfm3, cfp1, cfp2, cfp3;
@@ -1650,7 +1650,7 @@ double avar(double zzt, double zzl, double zzc, prop_type & prop,
double bfp1[7] = { 1.0, 0.93, 1.0, 0.93, 0.93, 1.0, 1.0 };
double bfp2[7] = { 0.0, 0.31, 0.0, 0.19, 0.31, 0.0, 0.0 };
double bfp3[7] = { 0.0, 2.00, 0.0, 1.79, 2.00, 0.0, 0.0 };
static bool ws, w1;
static __thread bool ws, w1;
double rt = 7.8, rl = 24.0, avarv, q, vs, zt, zl, zc;
double sgt, yr, temp1, temp2;
int temp_klim = propv.klim - 1;
@@ -1974,6 +1974,7 @@ void z1sq1(double z[], const double &x1, const double &x2, double &z0,
xa = xb - xa;
x = -0.5 * xa;
xb += x;
a = 0.5 * (z[ja + 2] + z[jb + 2]);
b = 0.5 * (z[ja + 2] - z[jb + 2]) * x;