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

more work

parent 26855c4d
Branches
Tags
No related merge requests found
...@@ -367,7 +367,7 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v) ...@@ -367,7 +367,7 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v)
double dPhi = (_phiEnd - _phiStart) / _NbPhi; double dPhi = (_phiEnd - _phiStart) / _NbPhi;
double dTheta = (_thetaEnd - _thetaStart) / _NbThe; double dTheta = (_thetaEnd - _thetaStart) / _NbThe;
double ffmax = 0.0 ; double ffmin = 1e200, ffmax = -1e200;
Msg::ResetProgressMeter(); Msg::ResetProgressMeter();
for (int i = 0; i <= _NbPhi; i++){ for (int i = 0; i <= _NbPhi; i++){
for (int j = 0; j <= _NbThe; j++){ for (int j = 0; j <= _NbThe; j++){
...@@ -379,7 +379,8 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v) ...@@ -379,7 +379,8 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v)
else else
farField[i][j] = getFarFieldJin(allElems, js, ms, _k0, 10 * lc, farField[i][j] = getFarFieldJin(allElems, js, ms, _k0, 10 * lc,
theta[i][j], phi[i][j]); theta[i][j], phi[i][j]);
ffmax = (ffmax < farField[i][j]) ? farField[i][j] : ffmax ; ffmin = std::min(ffmin, 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");
} }
...@@ -387,26 +388,38 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v) ...@@ -387,26 +388,38 @@ PView *GMSH_NearToFarFieldPlugin::execute(PView * v)
delete allElems[i]; delete allElems[i];
if(_normalize){ if(_normalize){
if(!ffmax)
Msg::Warning("Cannot normalize far field (max = 0)");
else
for (int i = 0; i <= _NbPhi; i++) for (int i = 0; i <= _NbPhi; i++)
for (int j = 0; j <= _NbThe; j++) for (int j = 0; j <= _NbThe; j++)
if(ffmax != 0.0)
farField[i][j] /= ffmax ; farField[i][j] /= ffmax ;
else
Msg::Warning("Far field pattern not normalized, max value = %g", ffmax);
} }
if(_dB){
ffmin = 1e200;
ffmax = -1e200;
for (int i = 0; i <= _NbPhi; i++){ for (int i = 0; i <= _NbPhi; i++){
for (int j = 0; j <= _NbThe; j++){ for (int j = 0; j <= _NbThe; j++){
x[i][j] = x0 + r_sph * farField[i][j] * sin(theta[i][j]) * cos(phi[i][j]); farField[i][j] = 10 * log10(farField[i][j]);
y[i][j] = y0 + r_sph * farField[i][j] * sin(theta[i][j]) * sin(phi[i][j]); ffmin = std::min(ffmin, farField[i][j]);
z[i][j] = z0 + r_sph * farField[i][j] * cos(theta[i][j]); ffmax = std::max(ffmax, farField[i][j]);
}
} }
} }
if(_dB){ for (int i = 0; i <= _NbPhi; i++){
for (int i = 0; i <= _NbPhi; i++) for (int j = 0; j <= _NbThe; j++){
for (int j = 0; j <= _NbThe; j++) double df = (ffmax - ffmin);
farField[i][j] = 10 * log10(farField[i][j]); if(!df){
Msg::Warning("zero far field range");
df = 1.;
}
double f = (farField[i][j] - ffmin) / df; // in [0,1]
x[i][j] = x0 + r_sph * f * sin(theta[i][j]) * cos(phi[i][j]);
y[i][j] = y0 + r_sph * f * sin(theta[i][j]) * sin(phi[i][j]);
z[i][j] = z0 + r_sph * f * cos(theta[i][j]);
}
} }
if(_outFile.size()){ if(_outFile.size()){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment