Skip to content

Commit f7e2d6c

Browse files
authored
Allow for case-insensitive exchanged field names (#391)
closes #390
1 parent c166132 commit f7e2d6c

File tree

7 files changed

+55
-38
lines changed

7 files changed

+55
-38
lines changed

CHT/CHT.C

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,21 +122,21 @@ bool preciceAdapter::CHT::ConjugateHeatTransfer::addWriters(std::string dataName
122122
{
123123
bool found = true; // Set to false later, if needed.
124124

125-
if (dataName.find("Sink-Temperature") == 0)
125+
if (matchingStrings(dataName, "Sink-Temperature"))
126126
{
127127
interface->addCouplingDataWriter(
128128
dataName,
129129
new SinkTemperature(mesh_, nameT_));
130130
DEBUG(adapterInfo("Added writer: Sink Temperature."));
131131
}
132-
else if (dataName.find("Temperature") == 0)
132+
else if (matchingStrings(dataName, "Temperature"))
133133
{
134134
interface->addCouplingDataWriter(
135135
dataName,
136136
new Temperature(mesh_, nameT_));
137137
DEBUG(adapterInfo("Added writer: Temperature."));
138138
}
139-
else if (dataName.find("Heat-Flux") == 0)
139+
else if (matchingStrings(dataName, "Heat-Flux"))
140140
{
141141
if (solverType_.compare("compressible") == 0)
142142
{
@@ -165,7 +165,7 @@ bool preciceAdapter::CHT::ConjugateHeatTransfer::addWriters(std::string dataName
165165
"error");
166166
}
167167
}
168-
else if (dataName.find("Heat-Transfer-Coefficient") == 0)
168+
else if (matchingStrings(dataName, "Heat-Transfer-Coefficient"))
169169
{
170170
if (solverType_.compare("compressible") == 0)
171171
{
@@ -212,21 +212,21 @@ bool preciceAdapter::CHT::ConjugateHeatTransfer::addReaders(std::string dataName
212212
{
213213
bool found = true; // Set to false later, if needed.
214214

215-
if (dataName.find("Sink-Temperature") == 0)
215+
if (matchingStrings(dataName, "Sink-Temperature"))
216216
{
217217
interface->addCouplingDataReader(
218218
dataName,
219219
new SinkTemperature(mesh_, nameT_));
220220
DEBUG(adapterInfo("Added reader: Sink Temperature."));
221221
}
222-
else if (dataName.find("Temperature") == 0)
222+
else if (matchingStrings(dataName, "Temperature"))
223223
{
224224
interface->addCouplingDataReader(
225225
dataName,
226226
new Temperature(mesh_, nameT_));
227227
DEBUG(adapterInfo("Added reader: Temperature."));
228228
}
229-
else if (dataName.find("Heat-Flux") == 0)
229+
else if (matchingStrings(dataName, "Heat-Flux"))
230230
{
231231
if (solverType_.compare("compressible") == 0)
232232
{
@@ -255,7 +255,7 @@ bool preciceAdapter::CHT::ConjugateHeatTransfer::addReaders(std::string dataName
255255
"error");
256256
}
257257
}
258-
else if (dataName.find("Heat-Transfer-Coefficient") == 0)
258+
else if (matchingStrings(dataName, "Heat-Transfer-Coefficient"))
259259
{
260260
if (solverType_.compare("compressible") == 0)
261261
{

FF/FF.C

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -129,70 +129,70 @@ bool preciceAdapter::FF::FluidFluid::addWriters(std::string dataName, Interface*
129129
{
130130
bool found = true; // Set to false later, if needed.
131131

132-
if (dataName.find("VelocityGradient") == 0)
132+
if (matchingStrings(dataName, "VelocityGradient"))
133133
{
134134
interface->addCouplingDataWriter(
135135
dataName,
136136
new VelocityGradient(mesh_, nameU_));
137137
DEBUG(adapterInfo("Added writer: Velocity Gradient."));
138138
}
139-
else if (dataName.find("Velocity") == 0)
139+
else if (matchingStrings(dataName, "Velocity"))
140140
{
141141
interface->addCouplingDataWriter(
142142
dataName,
143143
new Velocity(mesh_, nameU_, namePhi_, fluxCorrection_));
144144
DEBUG(adapterInfo("Added writer: Velocity."));
145145
}
146-
else if (dataName.find("PressureGradientFull") == 0)
146+
else if (matchingStrings(dataName, "PressureGradientFull"))
147147
{
148148
interface->addCouplingDataWriter(
149149
dataName,
150150
new PressureGradientFull(mesh_, nameP_));
151151
DEBUG(adapterInfo("Added writer: Full Pressure Gradient."));
152152
}
153-
else if (dataName.find("PressureGradient") == 0)
153+
else if (matchingStrings(dataName, "PressureGradient"))
154154
{
155155
interface->addCouplingDataWriter(
156156
dataName,
157157
new PressureGradient(mesh_, nameP_));
158158
DEBUG(adapterInfo("Added writer: Pressure Gradient."));
159159
}
160-
else if (dataName.find("Pressure") == 0)
160+
else if (matchingStrings(dataName, "Pressure"))
161161
{
162162
interface->addCouplingDataWriter(
163163
dataName,
164164
new Pressure(mesh_, nameP_));
165165
DEBUG(adapterInfo("Added writer: Pressure."));
166166
}
167-
else if (dataName.find("FlowTemperatureGradient") == 0)
167+
else if (matchingStrings(dataName, "FlowTemperatureGradient"))
168168
{
169169
interface->addCouplingDataWriter(
170170
dataName,
171171
new TemperatureGradient(mesh_, nameT_));
172172
DEBUG(adapterInfo("Added writer: Flow Temperature Gradient."));
173173
}
174-
else if (dataName.find("FlowTemperature") == 0)
174+
else if (matchingStrings(dataName, "FlowTemperature"))
175175
{
176176
interface->addCouplingDataWriter(
177177
dataName,
178178
new Temperature(mesh_, nameT_));
179179
DEBUG(adapterInfo("Added writer: Flow Temperature."));
180180
}
181-
else if (dataName.find("AlphaGradient") == 0)
181+
else if (matchingStrings(dataName, "AlphaGradient"))
182182
{
183183
interface->addCouplingDataWriter(
184184
dataName,
185185
new AlphaGradient(mesh_, nameAlpha_));
186186
DEBUG(adapterInfo("Added writer: Alpha Gradient."));
187187
}
188-
else if (dataName.find("Alpha") == 0)
188+
else if (matchingStrings(dataName, "Alpha"))
189189
{
190190
interface->addCouplingDataWriter(
191191
dataName,
192192
new Alpha(mesh_, nameAlpha_));
193193
DEBUG(adapterInfo("Added writer: Alpha."));
194194
}
195-
else if (dataName.find("Phi") == 0)
195+
else if (matchingStrings(dataName, "Phi"))
196196
{
197197
interface->addCouplingDataWriter(
198198
dataName,
@@ -217,84 +217,84 @@ bool preciceAdapter::FF::FluidFluid::addReaders(std::string dataName, Interface*
217217
{
218218
bool found = true; // Set to false later, if needed.
219219

220-
if (dataName.find("VelocityGradient") == 0)
220+
if (matchingStrings(dataName, "VelocityGradient"))
221221
{
222222
interface->addCouplingDataReader(
223223
dataName,
224224
new VelocityGradient(mesh_, nameU_));
225225
DEBUG(adapterInfo("Added reader: VelocityGradient."));
226226
}
227-
else if (dataName.find("Velocity") == 0)
227+
else if (matchingStrings(dataName, "Velocity"))
228228
{
229229
interface->addCouplingDataReader(
230230
dataName,
231231
new Velocity(mesh_, nameU_, namePhi_));
232232
DEBUG(adapterInfo("Added reader: Velocity."));
233233
}
234-
else if (dataName.find("PressureGradient") == 0)
234+
else if (matchingStrings(dataName, "PressureGradient"))
235235
{
236236
interface->addCouplingDataReader(
237237
dataName,
238238
new PressureGradient(mesh_, nameP_));
239239
DEBUG(adapterInfo("Added reader: Pressure Gradient."));
240240
}
241-
else if (dataName.find("Pressure") == 0)
241+
else if (matchingStrings(dataName, "Pressure"))
242242
{
243243
interface->addCouplingDataReader(
244244
dataName,
245245
new Pressure(mesh_, nameP_));
246246
DEBUG(adapterInfo("Added reader: Pressure."));
247247
}
248-
else if (dataName.find("FlowTemperatureGradient") == 0)
248+
else if (matchingStrings(dataName, "FlowTemperatureGradient"))
249249
{
250250
interface->addCouplingDataReader(
251251
dataName,
252252
new TemperatureGradient(mesh_, nameT_));
253253
DEBUG(adapterInfo("Added reader: Flow Temperature Gradient."));
254254
}
255-
else if (dataName.find("FlowTemperature") == 0)
255+
else if (matchingStrings(dataName, "FlowTemperature"))
256256
{
257257
interface->addCouplingDataReader(
258258
dataName,
259259
new Temperature(mesh_, nameT_));
260260
DEBUG(adapterInfo("Added reader: Flow Temperature."));
261261
}
262-
else if (dataName.find("AlphaGradient") == 0)
262+
else if (matchingStrings(dataName, "AlphaGradient"))
263263
{
264264
interface->addCouplingDataReader(
265265
dataName,
266266
new AlphaGradient(mesh_, nameAlpha_));
267267
DEBUG(adapterInfo("Added reader: Alpha Gradient."));
268268
}
269-
else if (dataName.find("Alpha") == 0)
269+
else if (matchingStrings(dataName, "Alpha"))
270270
{
271271
interface->addCouplingDataReader(
272272
dataName,
273273
new Alpha(mesh_, nameAlpha_));
274274
DEBUG(adapterInfo("Added reader: Alpha."));
275275
}
276-
else if (dataName.find("Phi") == 0)
276+
else if (matchingStrings(dataName, "Phi"))
277277
{
278278
interface->addCouplingDataReader(
279279
dataName,
280280
new Phi(mesh_, namePhi_));
281281
DEBUG(adapterInfo("Added reader: Phi."));
282282
}
283-
else if (dataName.find("DragForce") == 0)
283+
else if (matchingStrings(dataName, "DragForce"))
284284
{
285285
interface->addCouplingDataReader(
286286
dataName,
287287
new DragForce(mesh_, nameDragForce_));
288288
DEBUG(adapterInfo("Added reader: DragForce."));
289289
}
290-
else if (dataName.find("ExplicitMomentum") == 0)
290+
else if (matchingStrings(dataName, "ExplicitMomentum"))
291291
{
292292
interface->addCouplingDataReader(
293293
dataName,
294294
new ExplicitMomentum(mesh_, nameExplicitMomentum_));
295295
DEBUG(adapterInfo("Added reader: ExplicitMomentum."));
296296
}
297-
else if (dataName.find("ImplicitMomentum") == 0)
297+
else if (matchingStrings(dataName, "ImplicitMomentum"))
298298
{
299299
interface->addCouplingDataReader(
300300
dataName,

FSI/FSI.C

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,29 +134,29 @@ bool preciceAdapter::FSI::FluidStructureInteraction::addWriters(std::string data
134134
{
135135
bool found = true; // Set to false later, if needed.
136136

137-
if (dataName.find("Force") == 0)
137+
if (matchingStrings(dataName, "Force"))
138138
{
139139
interface->addCouplingDataWriter(
140140
dataName,
141141
new Force(mesh_, solverType_, nameForce_) /* TODO: Add any other arguments here */
142142
);
143143
DEBUG(adapterInfo("Added writer: Force."));
144144
}
145-
else if (dataName.find("DisplacementDelta") == 0)
145+
else if (matchingStrings(dataName, "DisplacementDelta"))
146146
{
147147
interface->addCouplingDataWriter(
148148
dataName,
149149
new DisplacementDelta(mesh_, namePointDisplacement_, nameCellDisplacement_));
150150
DEBUG(adapterInfo("Added writer: DisplacementDelta."));
151151
}
152-
else if (dataName.find("Displacement") == 0)
152+
else if (matchingStrings(dataName, "Displacement"))
153153
{
154154
interface->addCouplingDataWriter(
155155
dataName,
156156
new Displacement(mesh_, namePointDisplacement_, nameCellDisplacement_));
157157
DEBUG(adapterInfo("Added writer: Displacement."));
158158
}
159-
else if (dataName.find("Stress") == 0)
159+
else if (matchingStrings(dataName, "Stress"))
160160
{
161161
interface->addCouplingDataWriter(
162162
dataName,
@@ -182,29 +182,29 @@ bool preciceAdapter::FSI::FluidStructureInteraction::addReaders(std::string data
182182
{
183183
bool found = true; // Set to false later, if needed.
184184

185-
if (dataName.find("Force") == 0)
185+
if (matchingStrings(dataName, "Force"))
186186
{
187187
interface->addCouplingDataReader(
188188
dataName,
189189
new Force(mesh_, solverType_, nameForce_) /* TODO: Add any other arguments here */
190190
);
191191
DEBUG(adapterInfo("Added reader: Force."));
192192
}
193-
else if (dataName.find("DisplacementDelta") == 0)
193+
else if (matchingStrings(dataName, "DisplacementDelta"))
194194
{
195195
interface->addCouplingDataReader(
196196
dataName,
197197
new DisplacementDelta(mesh_, namePointDisplacement_, nameCellDisplacement_));
198198
DEBUG(adapterInfo("Added reader: DisplacementDelta."));
199199
}
200-
else if (dataName.find("Displacement") == 0)
200+
else if (matchingStrings(dataName, "Displacement"))
201201
{
202202
interface->addCouplingDataReader(
203203
dataName,
204204
new Displacement(mesh_, namePointDisplacement_, nameCellDisplacement_));
205205
DEBUG(adapterInfo("Added reader: Displacement."));
206206
}
207-
else if (dataName.find("Stress") == 0)
207+
else if (matchingStrings(dataName, "Stress"))
208208
{
209209
interface->addCouplingDataReader(
210210
dataName,

Utilities.C

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "Utilities.H"
2+
#include <cctype>
23

34
using namespace Foam;
45

@@ -64,3 +65,10 @@ void adapterInfo(const std::string message, const std::string level)
6465

6566
return;
6667
}
68+
69+
bool matchingStrings(std::string s, std::string match)
70+
{
71+
std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c) { return std::tolower(c); });
72+
std::transform(match.begin(), match.end(), match.begin(), [](unsigned char c) { return std::tolower(c); });
73+
return s.find(match) == 0;
74+
}

Utilities.H

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,7 @@
4141

4242
void adapterInfo(const std::string message, const std::string level = "debug");
4343

44+
// Returns true if the match is found in the beginning of the string s, ignoring case
45+
bool matchingStrings(std::string s, std::string match);
46+
4447
#endif

changelog-entries/390.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Add support for case-insensitive field names (e.g., both `DISPLACEMENTS` and `Displacements`) [#390](https://github.com/precice/openfoam-adapter/pull/390).

docs/config.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ For fluid-structure interaction, coupled quantities can be:
137137
You will run into problems when you use `Displacement(Delta)` as write data set and execute RBF mappings in parallel. This would affect users who use OpenFOAM and the adapter as the Solid participant in order to compute solid mechanics with OpenFOAM (currently not officially supported at all). Have a look [at this issue on GitHub](https://github.com/precice/openfoam-adapter/issues/153) for details.
138138
{% endwarning %}
139139

140+
{% tip %}
141+
The `writeData` and `readData` names are case-insensitive since v1.4.0. This means that both `TEMPERATURE` and `Temperature` are valid, for example.
142+
Additionally, since earlier versions, only the beginning of the name needs to match: `Temperatures0` is valid and matched to the temperature reader/writer, for example.
143+
{% endtip %}
144+
140145
## Configuration of the OpenFOAM case
141146

142147
A few changes are required in the configuration of an OpenFOAM case, in order to specify the interfaces and load the adapter. For some solvers, additional parameters may be needed (see "advanced configuration").

0 commit comments

Comments
 (0)