Skip to content
Snippets Groups Projects
Commit 5da875ba authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

fir commit r13562: aie aie aie ;-)

parent 4df0e37f
No related branches found
No related tags found
No related merge requests found
...@@ -78,7 +78,6 @@ StringXString *GMSH_NearToFarFieldPlugin::getOptionStr(int iopt) ...@@ -78,7 +78,6 @@ StringXString *GMSH_NearToFarFieldPlugin::getOptionStr(int iopt)
// Element Analysis of Antennas and Arrays", p. 176. This is not the usual `far // Element Analysis of Antennas and Arrays", p. 176. This is not the usual `far
// field', as it still contains the e^{ikr}/r factor. // field', as it still contains the e^{ikr}/r factor.
double GMSH_NearToFarFieldPlugin::getFarFieldJin(std::vector<element*> &allElems, double GMSH_NearToFarFieldPlugin::getFarFieldJin(std::vector<element*> &allElems,
std::vector<std::vector<double> > &farfieldvector,
std::vector<std::vector<double> > &js, std::vector<std::vector<double> > &js,
std::vector<std::vector<double> > &ms, std::vector<std::vector<double> > &ms,
double k0, double rFar, double theta, double k0, double rFar, double theta,
...@@ -179,7 +178,7 @@ double GMSH_NearToFarFieldPlugin::getFarFieldJin(std::vector<element*> &allElems ...@@ -179,7 +178,7 @@ double GMSH_NearToFarFieldPlugin::getFarFieldJin(std::vector<element*> &allElems
// Compute far field using e^{-i\omega t} time dependency, following Monk in // Compute far field using e^{-i\omega t} time dependency, following Monk in
// "Finite Element Methods for Maxwell's equations", p. 233 // "Finite Element Methods for Maxwell's equations", p. 233
double GMSH_NearToFarFieldPlugin::getFarFieldMonk(std::vector<element*> &allElems, double GMSH_NearToFarFieldPlugin::getFarFieldMonk(std::vector<element*> &allElems,
std::vector<std::vector<double> > &farfieldvector, std::vector<std::vector<double> > &ffvec,
std::vector<std::vector<double> > &js, std::vector<std::vector<double> > &js,
std::vector<std::vector<double> > &ms, std::vector<std::vector<double> > &ms,
double k0, double theta, double phi) double k0, double theta, double phi)
...@@ -228,14 +227,14 @@ double GMSH_NearToFarFieldPlugin::getFarFieldMonk(std::vector<element*> &allElem ...@@ -228,14 +227,14 @@ double GMSH_NearToFarFieldPlugin::getFarFieldMonk(std::vector<element*> &allElem
prodve(xHat, integral_r, xHat_x_integral_r); prodve(xHat, integral_r, xHat_x_integral_r);
prodve(xHat, integral_i, xHat_x_integral_i); prodve(xHat, integral_i, xHat_x_integral_i);
std::complex<double> coef = I * k0 / 4. / M_PI; std::complex<double> coef = I * k0 / 4. / M_PI;
double coef1 = k0 / 4. / M_PI;
std::complex<double> einf[3] = {coef * (xHat_x_integral_r[0] + I * xHat_x_integral_i[0]), std::complex<double> einf[3] = {coef * (xHat_x_integral_r[0] + I * xHat_x_integral_i[0]),
coef * (xHat_x_integral_r[1] + I * xHat_x_integral_i[1]), coef * (xHat_x_integral_r[1] + I * xHat_x_integral_i[1]),
coef * (xHat_x_integral_r[2] + I * xHat_x_integral_i[2])}; coef * (xHat_x_integral_r[2] + I * xHat_x_integral_i[2])};
double coef1 = k0 / 4. / M_PI;
for(int comp = 0; comp < 3; comp++){ for(int comp = 0; comp < 3; comp++){
farfieldvector[comp][0] = -coef1 * xHat_x_integral_i[comp]; ffvec[comp][0] = -coef1 * xHat_x_integral_i[comp];
farfieldvector[comp][1] = coef1 * xHat_x_integral_r[comp]; ffvec[comp][1] = coef1 * xHat_x_integral_r[comp];
} }
return (norm(einf[0]) + norm(einf[1]) + norm(einf[2])); return (norm(einf[0]) + norm(einf[1]) + norm(einf[2]));
...@@ -371,10 +370,9 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v) ...@@ -371,10 +370,9 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v)
std::vector<std::vector<double> > farField1i(_NbPhi + 1); std::vector<std::vector<double> > farField1i(_NbPhi + 1);
std::vector<std::vector<double> > farField2i(_NbPhi + 1); std::vector<std::vector<double> > farField2i(_NbPhi + 1);
std::vector<std::vector<double> > farField3i(_NbPhi + 1); std::vector<std::vector<double> > farField3i(_NbPhi + 1);
std::vector<std::vector<double> > farfieldvector(3); std::vector<std::vector<double> > farFieldVec(3);
for(int comp = 0; comp < 3; comp++){ for(int comp = 0; comp < 3; comp++){
farfieldvector[comp].resize(2); farFieldVec[comp].resize(2, 0.);
} }
for (int i = 0; i <= _NbPhi; i++){ for (int i = 0; i <= _NbPhi; i++){
...@@ -402,28 +400,21 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v) ...@@ -402,28 +400,21 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v)
phi[i][j] = _phiStart + i * dPhi ; phi[i][j] = _phiStart + i * dPhi ;
theta[i][j] = _thetaStart + j * dTheta ; theta[i][j] = _thetaStart + j * dTheta ;
if(_negativeTime){ if(_negativeTime){
farField[i][j] = getFarFieldMonk(allElems, farfieldvector, js, ms, _k0, farField[i][j] = getFarFieldMonk(allElems, farFieldVec, js, ms, _k0,
theta[i][j], phi[i][j]); theta[i][j], phi[i][j]);
farField1r[i][j] = farfieldvector[1][0]; farField1r[i][j] = farFieldVec[0][0];
farField2r[i][j] = farfieldvector[2][0]; farField2r[i][j] = farFieldVec[1][0];
farField3r[i][j] = farfieldvector[3][0]; farField3r[i][j] = farFieldVec[2][0];
farField1i[i][j] = farfieldvector[1][1]; farField1i[i][j] = farFieldVec[0][1];
farField2i[i][j] = farfieldvector[2][1]; farField2i[i][j] = farFieldVec[1][1];
farField3i[i][j] = farfieldvector[3][1];} farField3i[i][j] = farFieldVec[2][1];
else { }
farField[i][j] = getFarFieldJin(allElems, farfieldvector, js, ms, _k0, 10 * lc, else
farField[i][j] = getFarFieldJin(allElems, js, ms, _k0, 10 * lc,
theta[i][j], phi[i][j]); theta[i][j], phi[i][j]);
farField1r[i][j] = farfieldvector[1][0];
farField2r[i][j] = farfieldvector[2][0];
farField3r[i][j] = farfieldvector[3][0];
farField1i[i][j] = farfieldvector[1][1];
farField2i[i][j] = farfieldvector[2][1];
farField3i[i][j] = farfieldvector[3][1];}
ffmin = std::min(ffmin, farField[i][j]); ffmin = std::min(ffmin, farField[i][j]);
ffmax = std::max(ffmax, farField[i][j]); ffmax = std::max(ffmax, farField[i][j]);
} }
Msg::ProgressMeter(i, _NbPhi, true, "Computing far field"); Msg::ProgressMeter(i, _NbPhi, true, "Computing far field");
} }
for(unsigned int i = 0; i < allElems.size(); i++) for(unsigned int i = 0; i < allElems.size(); i++)
...@@ -471,12 +462,14 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v) ...@@ -471,12 +462,14 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v)
printVector(fp, "theta", theta); printVector(fp, "theta", theta);
printVector(fp, "farField", farField); printVector(fp, "farField", farField);
if(_negativeTime){
printVector(fp, "farField1r", farField1r); printVector(fp, "farField1r", farField1r);
printVector(fp, "farField2r", farField2r); printVector(fp, "farField2r", farField2r);
printVector(fp, "farField3r", farField3r); printVector(fp, "farField3r", farField3r);
printVector(fp, "farField1i", farField1i); printVector(fp, "farField1i", farField1i);
printVector(fp, "farField2i", farField2i); printVector(fp, "farField2i", farField2i);
printVector(fp, "farField3i", farField3i); printVector(fp, "farField3i", farField3i);
}
printVector(fp, "x", x); printVector(fp, "x", x);
printVector(fp, "y", y); printVector(fp, "y", y);
......
...@@ -36,7 +36,6 @@ class GMSH_NearToFarFieldPlugin : public GMSH_PostPlugin ...@@ -36,7 +36,6 @@ class GMSH_NearToFarFieldPlugin : public GMSH_PostPlugin
PView *execute(PView *); PView *execute(PView *);
double getFarFieldJin(std::vector<element*> &allElems, double getFarFieldJin(std::vector<element*> &allElems,
std::vector<std::vector<double> > &farfieldvector,
std::vector<std::vector<double> > &js, std::vector<std::vector<double> > &js,
std::vector<std::vector<double> > &ms, std::vector<std::vector<double> > &ms,
double k0, double r_far, double theta, double phi); double k0, double r_far, double theta, double phi);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment