42 int main(
int argc,
char *argv[])
46 "Translate a STARCD SMAP data file into OpenFOAM field format"
49 argList::noParallel();
50 argList::addArgument(
"SMAP fileName");
52 argList
args(argc, argv);
62 dictionary fieldNameDict;
65 fieldNameDict.add(fieldNames[i], word(fieldNames[i]));
69 if (fieldNameDict.found(
"U")) nameMap.add(
"SU", word(
"U"));
70 if (fieldNameDict.found(
"p")) nameMap.add(
"P", word(
"p"));
71 if (fieldNameDict.found(
"T")) nameMap.add(
"T", word(
"T"));
72 if (fieldNameDict.found(
"rho")) nameMap.add(
"DENS", word(
"rho"));
73 if (fieldNameDict.found(
"k")) nameMap.add(
"TE", word(
"k"));
74 if (fieldNameDict.found(
"epsilon")) nameMap.add(
"ED", word(
"epsilon"));
75 if (fieldNameDict.found(
"nuEff")) nameMap.add(
"VIS", word(
"nuEff"));
79 IFstream smapFile(
args[1]);
84 <<
"Cannot open SMAP file " << smapFile.name()
88 while (!smapFile.eof())
92 token fieldName(smapFile);
99 if (!fieldName.isWord() || fieldName.wordToken() !=
"CELL")
102 <<
"Expected first CELL, found "
108 smapFile >> fieldName;
109 while (fieldName.isWord())
111 starFieldNames[nCols++] = fieldName.wordToken();
112 smapFile >> fieldName;
115 List<volScalarField*> sFields
121 List<volVectorField*> vFields
130 if (nameMap.found(starFieldNames[i]))
134 nameMap.get<word>(starFieldNames[i]),
141 if (starFieldNames[i] ==
"SU")
173 smapFile >> (*sFields[i])[celli];
178 smapFile >> (*vFields[i])[celli].
x();
179 smapFile >> (*vFields[i])[celli].
y();
180 smapFile >> (*vFields[i])[celli].z();
191 for (label i=0; i<nCols; i++)
195 sFields[i]->correctBoundaryConditions();
198 sFields[i] =
nullptr;
202 vFields[i]->correctBoundaryConditions();
205 vFields[i] =
nullptr;
215 <<
"Expected first SMAP dummy entry to be cell 0, found "
220 for (label i=0; i<nCols; i++)