diff --git a/3D_RCS_Sphere.json b/3D_RCS_Sphere.json deleted file mode 100644 index 15b591b6..00000000 --- a/3D_RCS_Sphere.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "solver_options": { - "solver_type": "upwind", - "global_operator": true, - "time_step": 1e-3, - "final_time": 15.0, - "order": 1 - }, - - "model": { - "filename": "3D_RCS_Sphere.msh", - "materials": [ - { - "tags": [ 2, 4 ], - "type": "vacuum" - } - ], - "boundaries": [ - { - "tags": [ 4 ], - "type": "PEC" - }, - { - "tags": [ 5 ], - "type": "SMA" - } - ] - }, - - "probes": { - "exporter": { - "steps": 100 - }, - "farfield": [ - { - "name": "circle_1m", - "steps": 1, - "tags": [ 3 ] - } - ] - }, - - "sources": [ - { - "type": "planewave", - "polarization": [ 1.0, 0.0, 0.0], - "propagation": [0.0, 0.0, 1.0], - "tags": [ 3 ], - "magnitude": { - "spread": 0.12, - "delay": 2.0 - } - } - ] -} \ No newline at end of file diff --git a/src/components/FarField.cpp b/src/components/FarField.cpp index 67cc4b9f..f3aa3196 100644 --- a/src/components/FarField.cpp +++ b/src/components/FarField.cpp @@ -97,7 +97,7 @@ std::unique_ptr buildFC_3D(const Frequency freq, const Sphe break; } FunctionCoefficient res(f); - return std::make_unique(res); + return std::make_unique(res); } std::complex complexInnerProduct(ComplexVector& first, ComplexVector& second) @@ -107,7 +107,7 @@ std::complex complexInnerProduct(ComplexVector& first, ComplexVector& se } std::complex res(0.0, 0.0); for (int i{ 0 }; i < first.size(); i++) { - res += first[i] * std::conj(second[i]); // = sum(x_i * conj(y_i)) + res += first[i] * second[i]; } return res; } @@ -175,20 +175,24 @@ const Time getTime(const std::string& timePath) PlaneWaveData buildPlaneWaveData(const json& json) { - double mean(-1e5), delay(-1e5); + double spread(-1e5); + mfem::Vector mean; + double projMean(-1e5); for (auto s{ 0 }; s < json["sources"].size(); s++) { if (json["sources"][s]["type"] == "planewave") { - mean = json["sources"][s]["magnitude"]["spread"]; - delay = json["sources"][s]["magnitude"]["delay"]; + spread = json["sources"][s]["magnitude"]["spread"]; + mean = driver::assemble3DVector(json["sources"][s]["magnitude"]["mean"]); + mfem::Vector propagation = driver::assemble3DVector(json["sources"][s]["propagation"]); + projMean = mean * propagation / propagation.Norml2(); } } - if (std::abs(mean - 1e5) < 1e-6 || std::abs(delay - 1e5) < 1e-6) { + if (std::abs(spread - 1e5) < 1e-6 || std::abs(projMean - 1e5) < 1e-6) { throw std::runtime_error("Verify PlaneWaveData inputs for RCS normalization term."); } - return PlaneWaveData(mean / physicalConstants::speedOfLight, delay / physicalConstants::speedOfLight); + return PlaneWaveData(spread, projMean); } std::vector buildTimeVector(const std::string& data_path) @@ -205,11 +209,11 @@ std::vector buildTimeVector(const std::string& data_path) return res; } -std::vector evaluateGaussianVector(std::vector