Skip to content

Commit 47a4396

Browse files
IshaanDesaiMakisH
andauthored
Obey data and mesh naming rules in the two-scale heat conduction (#699)
* Conform to naming nomenclature in the tutorials * Remove network from precice-config.xml Co-authored-by: Gerasimos Chourdakis <gerasimos.chourdakis@ipvs.uni-stuttgart.de> * Update precice-config.xml visualization * Fix the remaining naming changes in macro-dumux, and add a changelog entry --------- Co-authored-by: Gerasimos Chourdakis <gerasimos.chourdakis@ipvs.uni-stuttgart.de>
1 parent acff837 commit 47a4396

11 files changed

Lines changed: 114 additions & 119 deletions

File tree

changelog-entries/699.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Adhered to the participant, data, and mesh naming rules in the two-scale heat conduction case [#699](https://github.com/precice/tutorials/pull/699)
16.6 KB
Loading

two-scale-heat-conduction/macro-dumux/appl/main.cc

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ int main(int argc, char **argv)
9494
// - What rank of how many ranks this instance is
9595
// Configure preCICE. For now the config file is hardcoded.
9696
std::string preciceConfigFilename = "../precice-config.xml";
97-
const std::string meshName = "macro-mesh";
97+
const std::string meshName = "Macro-Mesh";
9898
if (argc > 2)
9999
preciceConfigFilename = argv[argc - 1];
100100

@@ -103,7 +103,7 @@ int main(int argc, char **argv)
103103
const auto runWithCoupling = getParam<bool>("Precice.RunWithCoupling");
104104

105105
if (runWithCoupling) {
106-
couplingParticipant.announceSolver("macro-heat", preciceConfigFilename,
106+
couplingParticipant.announceSolver("Macro", preciceConfigFilename,
107107
mpiHelper.rank(), mpiHelper.size());
108108
// verify that dimensions match
109109
const int preciceDim = couplingParticipant.getMeshDimensions(meshName);
@@ -151,13 +151,12 @@ int main(int argc, char **argv)
151151
}
152152

153153
// initialize the coupling data
154-
const std::string readDatak00 = "k_00";
155-
const std::string readDatak01 = "k_01";
156-
const std::string readDatak10 = "k_10";
157-
const std::string readDatak11 = "k_11";
158-
const std::string readDataPorosity = "porosity";
159-
const std::string writeDataConcentration = "concentration";
160-
// const std::string writeDataTemperature = "temperature";
154+
const std::string readDatak00 = "K00";
155+
const std::string readDatak01 = "K01";
156+
const std::string readDatak10 = "K10";
157+
const std::string readDatak11 = "K11";
158+
const std::string readDataPorosity = "Porosity";
159+
const std::string writeDataConcentration = "Concentration";
161160

162161
if (runWithCoupling) {
163162
couplingParticipant.announceQuantity(meshName, readDatak00);
@@ -166,7 +165,6 @@ int main(int argc, char **argv)
166165
couplingParticipant.announceQuantity(meshName, readDatak11);
167166
couplingParticipant.announceQuantity(meshName, readDataPorosity);
168167
couplingParticipant.announceQuantity(meshName, writeDataConcentration);
169-
// couplingParticipant.announceQuantity(meshName, writeDataTemperature);
170168
}
171169

172170
// the solution vector (initialized with zeros) NElements x 2(pressure,
@@ -214,11 +212,11 @@ int main(int argc, char **argv)
214212
problem->name());
215213
IOFields::initOutputModule(vtkWriter);
216214
// add model specific output fields
217-
vtkWriter.addField(problem->getPorosity(), "porosity");
218-
vtkWriter.addField(problem->getK00(), "k00");
219-
vtkWriter.addField(problem->getK01(), "k01");
220-
vtkWriter.addField(problem->getK10(), "k10");
221-
vtkWriter.addField(problem->getK11(), "k11");
215+
vtkWriter.addField(problem->getPorosity(), "Porosity");
216+
vtkWriter.addField(problem->getK00(), "K00");
217+
vtkWriter.addField(problem->getK01(), "K01");
218+
vtkWriter.addField(problem->getK10(), "K10");
219+
vtkWriter.addField(problem->getK11(), "K11");
222220
problem->updateVtkOutput(x);
223221
vtkWriter.write(0.0);
224222

two-scale-heat-conduction/macro-dumux/appl/spatialparams.hh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,15 @@ public:
111111
for (const auto &scv : scvs(fvGeometry)) {
112112
const auto elementIdx = scv.elementIndex();
113113
couplingData_[elementIdx][0] =
114-
couplingParticipant_.getScalarQuantityOnFace("macro-mesh", "porosity", elementIdx);
114+
couplingParticipant_.getScalarQuantityOnFace("Macro-Mesh", "Porosity", elementIdx);
115115
couplingData_[elementIdx][1] =
116-
couplingParticipant_.getScalarQuantityOnFace("macro-mesh", "k_00", elementIdx);
116+
couplingParticipant_.getScalarQuantityOnFace("Macro-Mesh", "K00", elementIdx);
117117
couplingData_[elementIdx][2] =
118-
couplingParticipant_.getScalarQuantityOnFace("macro-mesh", "k_01", elementIdx);
118+
couplingParticipant_.getScalarQuantityOnFace("Macro-Mesh", "K01", elementIdx);
119119
couplingData_[elementIdx][3] =
120-
couplingParticipant_.getScalarQuantityOnFace("macro-mesh", "k_10", elementIdx);
120+
couplingParticipant_.getScalarQuantityOnFace("Macro-Mesh", "K10", elementIdx);
121121
couplingData_[elementIdx][4] =
122-
couplingParticipant_.getScalarQuantityOnFace("macro-mesh", "k_11", elementIdx);
122+
couplingParticipant_.getScalarQuantityOnFace("Macro-Mesh", "K11", elementIdx);
123123
}
124124
}
125125
// Trigger exchange of coupling data between neighboring ranks, if the domain is partitioned

two-scale-heat-conduction/macro-dumux/params.input

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ MaxDt = 0.004
2020
InitialDt = 0.01
2121

2222
[Problem]
23-
Name = macro-heat
23+
Name = Macro
2424
EnableGravity = false
2525
Permeability = 1.0
2626
DefaultPorosity = 0.5

two-scale-heat-conduction/macro-nutils/macro.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ def main():
4141
ns.uinitial = 0.5
4242

4343
if is_coupled_case:
44-
participant = precice.Participant("macro-heat", "../precice-config.xml", 0, 1)
45-
mesh_name = "macro-mesh"
44+
participant = precice.Participant("Macro", "../precice-config.xml", 0, 1)
45+
mesh_name = "Macro-Mesh"
4646

4747
# Define Gauss points on entire domain as coupling mesh (volume coupling from macro side)
4848
couplingsample = topo.sample('gauss', degree=2) # mesh vertices are Gauss points
@@ -68,7 +68,7 @@ def main():
6868
if is_coupled_case:
6969
if participant.requires_initial_data():
7070
concentrations = couplingsample.eval('u' @ ns, solu=solu0)
71-
participant.write_data(mesh_name, "concentration", vertex_ids, concentrations)
71+
participant.write_data(mesh_name, "Concentration", vertex_ids, concentrations)
7272

7373
participant.initialize()
7474
dt = solver_dt = participant.get_max_time_step_size()
@@ -107,16 +107,16 @@ def main():
107107
dt = min(precice_dt, solver_dt)
108108

109109
# Read porosity and apply it to the existing solution
110-
poro_data = participant.read_data(mesh_name, "porosity", vertex_ids, dt)
110+
poro_data = participant.read_data(mesh_name, "Porosity", vertex_ids, dt)
111111
poro_coupledata = couplingsample.asfunction(poro_data)
112112
sqrphi = couplingsample.integral((ns.phi - poro_coupledata) ** 2)
113113
solphi = solver.optimize('solphi', sqrphi, droptol=1E-12)
114114

115115
# Read conductivity and apply it to the existing solution
116-
k_00_c = couplingsample.asfunction(participant.read_data(mesh_name, "k_00", vertex_ids, dt))
117-
k_01_c = couplingsample.asfunction(participant.read_data(mesh_name, "k_01", vertex_ids, dt))
118-
k_10_c = couplingsample.asfunction(participant.read_data(mesh_name, "k_10", vertex_ids, dt))
119-
k_11_c = couplingsample.asfunction(participant.read_data(mesh_name, "k_11", vertex_ids, dt))
116+
k_00_c = couplingsample.asfunction(participant.read_data(mesh_name, "K00", vertex_ids, dt))
117+
k_01_c = couplingsample.asfunction(participant.read_data(mesh_name, "K01", vertex_ids, dt))
118+
k_10_c = couplingsample.asfunction(participant.read_data(mesh_name, "K10", vertex_ids, dt))
119+
k_11_c = couplingsample.asfunction(participant.read_data(mesh_name, "K11", vertex_ids, dt))
120120

121121
conductivity = function.asarray([[k_00_c, k_01_c], [k_10_c, k_11_c]])
122122
sqrk = couplingsample.integral(((ns.k - conductivity) * (ns.k - conductivity)).sum([0, 1]))
@@ -128,7 +128,7 @@ def main():
128128
if is_coupled_case:
129129
# Collect values of field u and write them to preCICE
130130
concentration = couplingsample.eval('u' @ ns, solu=solu)
131-
participant.write_data(mesh_name, "concentration", vertex_ids, concentration)
131+
participant.write_data(mesh_name, "Concentration", vertex_ids, concentration)
132132

133133
participant.advance(dt)
134134

two-scale-heat-conduction/micro-dumux/appl/micro_sim.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,9 @@ py::dict MicroSimulation::initialize()
202202
py::dict micro_write_data;
203203

204204
// add micro_scalar_data and micro_vector_data to micro_write_data
205-
micro_write_data["k_00"] = _k_00;
206-
micro_write_data["k_11"] = _k_11;
207-
micro_write_data["porosity"] = _porosity;
205+
micro_write_data["K00"] = _k_00;
206+
micro_write_data["K11"] = _k_11;
207+
micro_write_data["Porosity"] = _porosity;
208208

209209
return micro_write_data;
210210
}
@@ -227,7 +227,7 @@ py::dict MicroSimulation::solve(py::dict macro_write_data, double dt)
227227
_timeLoop->setTimeStepSize(dt);
228228

229229
// read concentration from preCICE
230-
double conc = macro_write_data["concentration"].cast<double>();
230+
double conc = macro_write_data["Concentration"].cast<double>();
231231

232232
// input macro concentration into allen-cahn problem
233233
_acProblem->updateConcentration(conc);
@@ -259,12 +259,12 @@ py::dict MicroSimulation::solve(py::dict macro_write_data, double dt)
259259
py::dict micro_write_data;
260260

261261
// add micro_scalar_data and micro_vector_data to micro_write_data
262-
micro_write_data["k_00"] = _k_00;
263-
micro_write_data["k_10"] = _k_10;
264-
micro_write_data["k_01"] = _k_01;
265-
micro_write_data["k_11"] = _k_11;
266-
micro_write_data["porosity"] = _porosity;
267-
micro_write_data["grain_size"] = std::sqrt((1 - _porosity) / pi_);
262+
micro_write_data["K00"] = _k_00;
263+
micro_write_data["K10"] = _k_10;
264+
micro_write_data["K01"] = _k_01;
265+
micro_write_data["K11"] = _k_11;
266+
micro_write_data["Porosity"] = _porosity;
267+
micro_write_data["Grain-Size"] = std::sqrt((1 - _porosity) / pi_);
268268

269269
// write current primary variables to previous primary variables
270270
_acGridVariables->advanceTimeStep();

two-scale-heat-conduction/micro-dumux/micro-manager-config.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"coupling_params": {
44
"participant_name": "Micro-Manager",
55
"precice_config_file_name": "../precice-config.xml",
6-
"macro_mesh_name": "macro-mesh",
7-
"write_data_names": ["k_00", "k_01", "k_10", "k_11", "porosity"],
8-
"read_data_names": ["concentration"]
6+
"macro_mesh_name": "Macro-Mesh",
7+
"write_data_names": ["K00", "K01", "K10", "K11", "Porosity"],
8+
"read_data_names": ["Concentration"]
99
},
1010
"simulation_params": {
1111
"micro_dt": 0.01,
@@ -14,14 +14,14 @@
1414
"adaptivity": true,
1515
"adaptivity_settings": {
1616
"type": "global",
17-
"data": ["k_00", "k_11", "porosity", "concentration"],
17+
"data": ["K00", "K11", "Porosity", "Concentration"],
1818
"history_param": 0.1,
1919
"coarsening_constant": 0.2,
2020
"refining_constant": 0.05,
2121
"similarity_measure": "L2rel"
2222
}
2323
},
2424
"diagnostics": {
25-
"data_from_micro_sims": ["grain_size"]
25+
"data_from_micro_sims": ["Grain-Size"]
2626
}
2727
}

two-scale-heat-conduction/micro-nutils/micro-manager-config.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
"coupling_params": {
44
"participant_name": "Micro-Manager",
55
"precice_config_file_name": "../precice-config.xml",
6-
"macro_mesh_name": "macro-mesh",
7-
"write_data_names": ["k_00", "k_01", "k_10", "k_11", "porosity"],
8-
"read_data_names": ["concentration"]
6+
"macro_mesh_name": "Macro-Mesh",
7+
"write_data_names": ["K00", "K01", "K10", "K11", "Porosity"],
8+
"read_data_names": ["Concentration"]
99
},
1010
"simulation_params": {
1111
"micro_dt": 0.01,
@@ -14,14 +14,14 @@
1414
"adaptivity": true,
1515
"adaptivity_settings": {
1616
"type": "global",
17-
"data": ["k_00", "k_11", "porosity", "concentration"],
17+
"data": ["K00", "K11", "Porosity", "Concentration"],
1818
"history_param": 0.1,
1919
"coarsening_constant": 0.2,
2020
"refining_constant": 0.05,
2121
"similarity_measure": "L2rel"
2222
}
2323
},
2424
"diagnostics": {
25-
"data_from_micro_sims": ["grain_size"]
25+
"data_from_micro_sims": ["Grain-Size"]
2626
}
2727
}

two-scale-heat-conduction/micro-nutils/micro.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ def initialize(self):
8282
self._solu = solu # Save solution for output
8383

8484
output_data = dict()
85-
output_data["k_00"] = k[0][0]
86-
output_data["k_11"] = k[1][1]
87-
output_data["porosity"] = psi
85+
output_data["K00"] = k[0][0]
86+
output_data["K11"] = k[1][1]
87+
output_data["Porosity"] = psi
8888

8989
return output_data
9090

@@ -237,7 +237,7 @@ def solve(self, macro_data, dt):
237237

238238
assert ((solphi >= 0.0) & (solphi <= 1.0)).all()
239239

240-
solphi = self._solve_allen_cahn(topo, solphi, macro_data["concentration"], dt)
240+
solphi = self._solve_allen_cahn(topo, solphi, macro_data["Concentration"], dt)
241241
psi = self._get_avg_porosity(topo, solphi)
242242

243243
solu = self._solve_heat_cell_problem(topo, solphi)
@@ -255,12 +255,12 @@ def solve(self, macro_data, dt):
255255
psi = self._psi_nm1
256256

257257
output_data = dict()
258-
output_data["k_00"] = k[0][0]
259-
output_data["k_01"] = k[0][1]
260-
output_data["k_10"] = k[1][0]
261-
output_data["k_11"] = k[1][1]
262-
output_data["porosity"] = psi
263-
output_data["grain_size"] = math.sqrt((1 - psi) / math.pi)
258+
output_data["K00"] = k[0][0]
259+
output_data["K01"] = k[0][1]
260+
output_data["K10"] = k[1][0]
261+
output_data["K11"] = k[1][1]
262+
output_data["Porosity"] = psi
263+
output_data["Grain-Size"] = math.sqrt((1 - psi) / math.pi)
264264

265265
return output_data
266266

@@ -275,7 +275,7 @@ def main():
275275
concentration = dict()
276276

277277
for conc in concentrations:
278-
concentration["concentration"] = conc
278+
concentration["Concentration"] = conc
279279

280280
micro_sim_output = micro_problem.solve(concentration, dt)
281281

0 commit comments

Comments
 (0)