Skip to content

Commit b71784b

Browse files
Adds changes to adapters
1 parent 9fe2aa7 commit b71784b

File tree

6 files changed

+78
-89
lines changed

6 files changed

+78
-89
lines changed

test/adapter/AdapterTest.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <nlohmann/json.hpp>
44

55
#include "ModelAdapter.hpp"
6+
#include "SourcesAdapter.hpp"
67

78
#include <TestUtils.h>
89

@@ -124,4 +125,19 @@ TEST_F(MaxwellAdapterTest, adaptsModelObjects)
124125
//EXPECT_EQ(BdrCond::PEC, model.getBoundaryToMarker())
125126
}
126127

128+
TEST_F(MaxwellAdapterTest, adaptsProbeObjects)
129+
{
130+
131+
}
132+
133+
TEST_F(MaxwellAdapterTest, adaptsSourcesObjects)
134+
{
135+
auto file_name{ maxwellCase("2D_Parser_BdrAndInterior") };
136+
std::ifstream test_file(file_name);
137+
auto case_data = json::parse(test_file);
138+
139+
EXPECT_NO_THROW(assembleSources(case_data));
140+
auto sources{ assembleSources(case_data) };
141+
}
142+
127143
}

test/adapter/ModelAdapter.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@ BoundaryPair assembleAttributeToBoundary(const json& case_data, const mfem::Mesh
9797
checkIfThrows(!case_data["model"]["boundaries"][b]["tags"].empty(),
9898
"Boundary " + std::to_string(b) + " 'tags' are empty.");
9999

100-
checkIfThrows(case_data["model"]["boundaries"][b].contains("type"),
101-
"Boundary " + std::to_string(b) + " does not have a defined 'type'.");
100+
checkIfThrows(case_data["model"]["boundaries"][b].contains("class"),
101+
"Boundary " + std::to_string(b) + " does not have a defined 'class'.");
102102
}
103103

104104
std::map<Attribute, BdrCond>att2bdrCond;
105105
std::map<Attribute, isInterior> att2interior;
106106
for (auto b = 0; b < case_data["model"]["boundaries"].size(); b++) {
107107
for (auto a = 0; a < case_data["model"]["boundaries"][b]["tags"].size(); a++) {
108-
att2bdrCond. emplace(case_data["model"]["boundaries"][b]["tags"][a], assignBdrCond(case_data["model"]["boundaries"][b]["type"]));
108+
att2bdrCond. emplace(case_data["model"]["boundaries"][b]["tags"][a], assignBdrCond(case_data["model"]["boundaries"][b]["class"]));
109109
att2interior.emplace(case_data["model"]["boundaries"][b]["tags"][a], false);
110110
for (auto f = 0; f < mesh.GetNumFaces(); f++) {
111111
auto bdrEl{ face2BdrEl[f] };

test/adapter/ProbesAdapter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ Probes assembleProbes(const json& case_data)
3737

3838
Probes probes;
3939

40-
if (case_data["exporter_probes"]) {
40+
if (case_data.contains("exporter_probes")) {
4141
ExporterProbe exporter_probe;
4242
exporter_probe.name = case_data["name"];
4343
exporter_probe.visSteps = case_data["exporter_probe"]["steps"];
4444
probes.exporterProbes.push_back(exporter_probe);
4545
}
4646

47-
if (case_data["point_probes"]) {
47+
if (case_data.contains("point_probes")) {
4848
for (int p = 0; p < case_data["point_probes"].size(); p++) {
4949
auto field{ assignFieldType(case_data["point_probes"][p][0]) };
5050
auto direction{ assignFieldSpatial(case_data["point_probes"][p][1]) };

test/adapter/SourcesAdapter.cpp

Lines changed: 38 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -6,104 +6,65 @@ namespace maxwell {
66

77
using namespace fixtures::sources;
88

9-
mfem::Vector assembleCenterVector(const json& case_data)
9+
mfem::Vector assembleCenterVector(const json& source_center)
1010
{
11-
mfem::Vector res(case_data["dimension"]);
12-
for (int i = 0; i < case_data["dimension"]; i++) {
13-
res[i] = case_data["sources"]["center"][i];
11+
mfem::Vector res(source_center.size());
12+
for (int i = 0; i < source_center.size(); i++) {
13+
res[i] = source_center[i];
1414
}
1515
return res;
1616
}
1717

18-
mfem::Vector assemblePolarizationVector(const json& case_data)
18+
mfem::Vector assemblePolarizationVector(const json& source_polarization)
1919
{
20-
mfem::Vector res(case_data["sources"]["polarization"]);
21-
for (int i = 0; i < case_data["sources"]["polarization"].size(); i++) {
22-
res[i] = case_data["sources"]["polarization"][i];
20+
mfem::Vector res(3);
21+
for (int i = 0; i < source_polarization.size(); i++) {
22+
res[i] = source_polarization[i];
2323
}
2424
return res;
2525
}
2626

27-
Source::CartesianAngles assembleRotationVector(const json& case_data)
27+
mfem::Vector assemblePropagationVector(const json& source_propagation)
2828
{
29-
Source::CartesianAngles res(3);
30-
res[0] = 0.0;
31-
res[1] = 0.0;
32-
res[2] = 0.0;
33-
if (case_data["rotation_angles"]) {
34-
for (int i = 0; i < case_data["sources"]["rotation_angles"].size(); i++) {
35-
res[i] = case_data["sources"]["rotation_angles"][i];
36-
}
37-
}
38-
return res;
39-
}
40-
41-
mfem::Vector assemblePropagationVector(const json& case_data)
42-
{
43-
mfem::Vector res(case_data["sources"]["propagation"]);
44-
for (int i = 0; i < case_data["sources"]["propagation"].size(); i++) {
45-
res[i] = case_data["sources"]["propagation"][i];
29+
mfem::Vector res(3);
30+
for (int i = 0; i < source_propagation.size(); i++) {
31+
res[i] = source_propagation[i];
4632
}
4733
return res;
4834
}
4935

5036
Sources assembleSources(const json& case_data)
5137
{
52-
53-
auto field{ assignFieldType(case_data["sources"]["field_type"]) };
54-
auto direction{ assignFieldSpatial(case_data["sources"]["field_spatial"])};
55-
auto center(assembleCenterVector(case_data));
56-
auto polarization(assemblePolarizationVector(case_data));
57-
auto rotation_angles(assembleRotationVector(case_data));
58-
5938
Sources res;
60-
if (case_data["sources"]["type"] == "Initial") {
61-
return buildGaussianInitialField(
62-
field,
63-
case_data["sources"]["spread"],
64-
center,
65-
polarization,
66-
case_data["sources"]["source_dimension"],
67-
rotation_angles
68-
);
69-
}
70-
else if (case_data["sources"]["type"] == "Resonant") {
71-
return buildResonantModeInitialField(
72-
field,
73-
polarization,
74-
case_data["sources"]["modes"]
75-
);
76-
}
77-
else if (case_data["sources"]["type"] == "TDPlanewave") {
78-
auto propagation(assemblePropagationVector(case_data));
79-
return buildGaussianPlanewave(
80-
case_data["sources"]["spread"],
81-
case_data["sources"]["delay"],
82-
polarization,
83-
propagation
84-
);
85-
}
86-
else if (case_data["sources"]["type"] == "InitPlanewave") {
87-
auto propagation(assemblePropagationVector(case_data));
88-
if (case_data["sources"]["function_type"] == "Gaussian") {
89-
auto function{
90-
Gaussian(
91-
case_data["sources"]["spread"],
92-
mfem::Vector(0.0),
93-
case_data["sources"]["sources_dimension"]
94-
)
95-
};
96-
return buildPlanewaveInitialField(
97-
function,
98-
center,
99-
polarization,
100-
propagation,
101-
rotation_angles
39+
for (auto s{ 0 }; s < case_data["sources"].size(); s++) {
40+
if (case_data["sources"][s]["type"] == "initial") {
41+
if (case_data["sources"][s]["magnitude"]["type"] == "gaussian") {
42+
return buildGaussianInitialField(
43+
assignFieldType(case_data["sources"][s]["field_type"]),
44+
case_data["sources"][s]["magnitude"]["spread"],
45+
assembleCenterVector(case_data["sources"][s]["center"]),
46+
assemblePolarizationVector(case_data["sources"][s]["polarization"]),
47+
case_data["sources"][s]["dimension"]
48+
);
49+
}
50+
else if (case_data["sources"][s]["magnitude"]["type"] == "resonant") {
51+
return buildResonantModeInitialField(
52+
assignFieldType(case_data["sources"][s]["field_type"]),
53+
assemblePolarizationVector(case_data["sources"][s]["polarization"]),
54+
case_data["sources"][s]["magnitude"]["modes"]
55+
);
56+
}
57+
}
58+
else if (case_data["sources"][s]["type"] == "totalField") {
59+
auto propagation(assemblePropagationVector(case_data));
60+
return buildGaussianPlanewave(
61+
case_data["sources"]["spread"],
62+
case_data["sources"]["delay"],
63+
assemblePolarizationVector(case_data["sources"][s]["polarization"]),
64+
assemblePropagationVector(case_data["sources"][s]["propagation"])
10265
);
10366
}
10467
}
105-
106-
10768
}
10869

10970
}

test/adapter/SourcesAdapter.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@ mfem::Vector assembleCenterVector(const json& case_data);
1616

1717
mfem::Vector assemblePolarizationVector(const json& case_data);
1818

19-
Source::CartesianAngles assembleRotationVector(const json& case_data);
20-
2119
mfem::Vector assemblePropagationVector(const json& case_data);
2220

2321
Sources assembleSources(const json& case_data);

testData/maxwellInputs/2D_Parser_BdrAndInterior/2D_Parser_BdrAndInterior.json

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,37 @@
1313
"materials": [
1414
{
1515
"tags": [ 1 ],
16-
"type": "Vacuum"
16+
"class": "Vacuum"
1717
},
1818
{
1919
"tags": [ 2 ],
20-
"type": "Dielectric",
20+
"class": "Dielectric",
2121
"relative_permittivity": 4.0
2222
}
2323
],
2424
"boundaries": [
2525
{
2626
"tags": [ 1, 3, 5, 7 ],
27-
"type": "PMC"
27+
"class": "PMC"
2828
},
2929
{
3030
"tags": [ 2, 4, 6 ],
31-
"type": "PEC"
31+
"class": "PEC"
3232
}
3333
]
34-
}
34+
},
35+
"sources": [
36+
{
37+
"type": "initial",
38+
"field_type": "E",
39+
"center": [ 0.5 ],
40+
"polarization": [ 0.0, 1.0, 0.0 ],
41+
"dimension": 1,
42+
"magnitude": {
43+
"type": "gaussian",
44+
"spread": 0.15,
45+
"delay": 1.0
46+
}
47+
}
48+
]
3549
}

0 commit comments

Comments
 (0)