42 { fieldOption::UNIFORM,
"uniform" },
43 { fieldOption::FIELD,
"field" },
52 const dictionary&
dict
55 word
colourMap = colourTable::predefinedNames.names()[0];
65 const dictionary&
dict
78 const dictionary fieldDict = fieldInfoDict_.subOrEmptyDict(fieldName);
80 return fieldDict.getOrDefault(
"min", -GREAT);
90 const dictionary fieldDict = fieldInfoDict_.subOrEmptyDict(fieldName);
92 return fieldDict.getOrDefault(
"max", GREAT);
99 const dictionary&
dict,
101 const List<
const Field<Type>*>& valueSets
104 if (
dict.found(
"alpha"))
106 const auto option = fieldOptionNames_.get(
"alpha",
dict);
110 case fieldOption::UNIFORM:
112 const scalar value =
dict.getScalar(
"alphaValue");
115 case fieldOption::FIELD:
117 const word alphaFieldName =
dict.get<word>(
"alphaField");
118 const bool normalise =
dict.get<
bool>(
"normalise");
119 const label i = valueSetNames.find(alphaFieldName);
123 <<
"Unable to find field " << alphaFieldName
124 <<
". Valid field names are:" << valueSetNames
133 tresult.ref() /=
mag(tresult() + ROOTVSMALL);
148 const dictionary&
dict,
150 const List<List<Field<Type>>>& valueSets,
154 if (
dict.found(
"alpha"))
156 const auto option = fieldOptionNames_.get(
"alpha",
dict);
160 case fieldOption::UNIFORM:
162 const scalar value =
dict.getScalar(
"alphaValue");
165 valueSets[0][tracki].size(), value
168 case fieldOption::FIELD:
170 const word alphaFieldName =
dict.get<word>(
"alphaField");
171 const bool normalise =
dict.get<
bool>(
"normalise");
172 const label fieldi = valueSetNames.find(alphaFieldName);
176 <<
"Unable to find field " << alphaFieldName
177 <<
". Valid field names are:" << valueSetNames
190 tresult.ref() /=
mag(tresult() + ROOTVSMALL);
205 const colourTable& colours,
207 const List<List<Field<Type>>>& valueSets,
214 <<
"Attempting to get colour when colour option is off"
218 const auto option = fieldOptionNames_.get(
"colour", animationDict_);
222 case fieldOption::UNIFORM:
224 return animationDict_.get<
vector>(
"colourValue");
226 case fieldOption::FIELD:
228 const word fieldName = animationDict_.get<word>(
"colourField");
229 const label fieldi = valueSetNames.find(fieldName);
233 <<
"Unable to find field " << fieldName
234 <<
". Valid field names are:" << valueSetNames
242 if (!animationDict_.readIfPresent(
"min",
minValue))
246 if (!animationDict_.readIfPresent(
"max",
maxValue))
250 const scalar refValue =
component(valueSets[fieldi][tracki][0], 0);
251 const scalar fraction =
254 return (colours.value(
max(0,
min(1, fraction))));
269 auto& result = tresult.ref();
273 for (label i = 1; i <
points.size(); ++i)
276 result[i-1].normalise();
279 result.last() = result[
points.size()-2];
304 animate_(
dict.getOrDefault(
"animate", false)),
305 colour_(
dict.getOrDefault(
"colour", false)),
306 fieldInfoDict_(
dict.subOrEmptyDict(
"fieldInfo")),
307 animationDict_(
dict.subOrEmptyDict(
"animationInfo"))
332 return this->getBaseName(
points, valueSetNames) +
".gltf";
345 if (valueSets.size() != valueSetNames.size())
348 <<
"Number of variables:" << valueSetNames.size() <<
endl
349 <<
"Number of valueSets:" << valueSets.size()
354 const label meshi = scene.addMesh(
points,
"points");
357 scene.addFieldToMesh(*valueSets[i], valueSetNames[i], meshi);
364 const auto&
field = *valueSets[fieldi];
365 const word& fieldName = valueSetNames[fieldi];
367 const auto& colours = getColourTable(
dict);
370 getAlphaField(
dict, valueSetNames, valueSets);
376 const scalar minValueLimit = getFieldMin(fieldName);
377 const scalar maxValueLimit = getFieldMax(fieldName);
379 for (
direction cmpti=0; cmpti < pTraits<Type>::nComponents; ++cmpti)
385 const Type& v =
field[i];
389 float deltaf = (maxf - minf + SMALL);
392 colours.value(
min(
max((
f - minf)/deltaf, 0), 1));
395 scene.addColourToMesh
413 const bool writeTracks,
421 if (valueSets.size() != valueSetNames.size())
424 <<
"Number of variables:" << valueSetNames.size() <<
endl
425 <<
"Number of valueSets:" << valueSets.size()
459 const bool writeTracks,
460 const List<scalarField>& times,
461 const PtrList<coordSet>& tracks,
463 const List<List<Field<Type>>>& valueSets,
471 const label meshi = scene.addMesh(track,
"track:" +
Foam::name(tracki));
472 forAll(valueSetNames, fieldi)
474 const word& fieldName = valueSetNames[fieldi];
475 const auto&
field = valueSets[fieldi][tracki];
476 scene.addFieldToMesh(
field, fieldName, meshi);
483 const auto&
field = valueSets[fieldi][tracki];
484 const word& fieldName = valueSetNames[fieldi];
485 const dictionary
dict =
487 const auto& colours = getColourTable(
dict);
490 getTrackAlphaField(
dict, valueSetNames, valueSets, tracki);
496 const scalar minValueLimit = getFieldMin(fieldName);
497 const scalar maxValueLimit = getFieldMax(fieldName);
502 cmpti < pTraits<Type>::nComponents;
510 const Type& v =
field[i];
516 float deltaf = (maxf - minf + SMALL);
519 colours.value(
min(
max((
f - minf)/deltaf, 0), 1));
522 scene.addColourToMesh
541 const bool writeTracks,
549 const auto& colours = getColourTable(animationDict_);
556 const auto& track = tracks[tracki];
571 forAll(valueSetNames, fieldi)
574 const word& fieldName = valueSetNames[fieldi];
584 const label translationId = scene.
addField(translation,
"translation");
592 getTrackAnimationColour