38 const word& entryName,
44 dictConstructed_(
true),
45 fieldTableName_(entryName),
46 setAverage_(
dict.getOrDefault(
"setAverage",
false)),
47 perturb_(
dict.getOrDefault<scalar>(
"perturb", 1
e-5)),
48 pointsName_(
dict.getOrDefault<
word>(
"points",
"points")),
60 startSampledValues_(0),
67 if (
dict.found(
"offset"))
74 mapMethod_ !=
"planarInterpolation"
75 && mapMethod_ !=
"nearest"
79 <<
"mapMethod should be one of 'planarInterpolation'"
83 dict.readIfPresent(
"fieldTable", fieldTableName_);
91 const word& entryName,
93 const word& fieldTableName,
98 dictConstructed_(
false),
99 fieldTableName_(fieldTableName),
100 setAverage_(
dict.getOrDefault(
"setAverage",
false)),
101 perturb_(
dict.getOrDefault<scalar>(
"perturb", 1
e-5)),
102 pointsName_(
dict.getOrDefault<
word>(
"points",
"points")),
108 "planarInterpolation"
113 startSampleTime_(-1),
114 startSampledValues_(0),
117 endSampledValues_(0),
121 if (
dict.found(
"offset"))
128 mapMethod_ !=
"planarInterpolation"
129 && mapMethod_ !=
"nearest"
133 <<
"mapMethod should be one of 'planarInterpolation'"
146 dictConstructed_(ut.dictConstructed_),
147 fieldTableName_(ut.fieldTableName_),
148 setAverage_(ut.setAverage_),
149 perturb_(ut.perturb_),
150 pointsName_(ut.pointsName_),
151 mapMethod_(ut.mapMethod_),
152 mapperPtr_(ut.mapperPtr_.clone()),
153 sampleTimes_(ut.sampleTimes_),
154 startSampleTime_(ut.startSampleTime_),
155 startSampledValues_(ut.startSampledValues_),
156 startAverage_(ut.startAverage_),
157 endSampleTime_(ut.endSampleTime_),
158 endSampledValues_(ut.endSampledValues_),
159 endAverage_(ut.endAverage_),
160 offset_(ut.offset_.clone())
172 dictConstructed_(ut.dictConstructed_),
173 fieldTableName_(ut.fieldTableName_),
174 setAverage_(ut.setAverage_),
175 perturb_(ut.perturb_),
176 pointsName_(ut.pointsName_),
177 mapMethod_(ut.mapMethod_),
178 mapperPtr_(ut.mapperPtr_.clone()),
179 sampleTimes_(ut.sampleTimes_),
180 startSampleTime_(ut.startSampleTime_),
181 startSampledValues_(ut.startSampledValues_),
182 startAverage_(ut.startAverage_),
183 endSampleTime_(ut.endSampleTime_),
184 endSampledValues_(ut.endSampledValues_),
185 endAverage_(ut.endAverage_),
186 offset_(ut.offset_.clone())
200 if (startSampledValues_.size())
202 startSampledValues_.autoMap(mapper);
203 endSampledValues_.autoMap(mapper);
207 startSampleTime_ = -1;
222 refCast<const PatchFunction1Types::MappedFile<Type>>(pf1);
224 startSampledValues_.
rmap(tiptf.startSampledValues_, addr);
225 endSampledValues_.rmap(tiptf.endSampledValues_, addr);
229 startSampleTime_ = -1;
240 const polyMesh&
mesh = this->patch_.boundaryMesh().mesh();
270 <<
"Read " << samplePoints.size() <<
" sample points from "
271 << samplePointsFile <<
endl;
278 && mapMethod_ !=
"planarInterpolation"
282 if (this->faceValues_)
289 this->localPosition(this->patch_.faceCentres()),
302 this->localPosition(this->patch_.localPoints()),
311 const fileName samplePointsDir = samplePointsFile.path();
312 sampleTimes_ = Time::findTimes(samplePointsDir);
316 << samplePointsDir <<
" found times "
317 << pointToPointPlanarInterpolation::timeNames(sampleTimes_)
326 bool foundTime = mapperPtr_().findTime
338 <<
"Cannot find starting sampling values for index "
340 <<
"Have sampling values for "
341 << pointToPointPlanarInterpolation::timeNames(sampleTimes_) <<
nl
343 << time.
constant()/
"boundaryData"/this->patch_.name()
344 <<
"\n on patch " << this->patch_.name()
345 <<
" of field " << fieldTableName_
352 if (lo != startSampleTime_)
354 startSampleTime_ = lo;
356 if (startSampleTime_ == endSampleTime_)
361 Pout<<
"checkTable : Setting startValues to (already read) "
364 /sampleTimes_[startSampleTime_].
name()
367 startSampledValues_ = endSampledValues_;
368 startAverage_ = endAverage_;
374 Pout<<
"checkTable : Reading startValues from "
377 /sampleTimes_[lo].
name()
383 const fileName valsFile
389 /sampleTimes_[startSampleTime_].name()
403 const rawIOField<Type> vals(io, setAverage_);
406 startAverage_ = vals.average();
409 if (vals.size() != mapperPtr_().sourceSize())
412 <<
"Number of values (" << vals.size()
413 <<
") differs from the number of points ("
414 << mapperPtr_().sourceSize()
418 startSampledValues_ = mapperPtr_().interpolate(vals);
422 if (hi != endSampleTime_)
426 if (endSampleTime_ == -1)
431 Pout<<
"checkTable : Clearing endValues" <<
endl;
433 endSampledValues_.clear();
439 Pout<<
"checkTable : Reading endValues from "
442 /sampleTimes_[endSampleTime_].
name()
453 /sampleTimes_[endSampleTime_].name()
467 const rawIOField<Type> vals(io, setAverage_);
470 endAverage_ = vals.average();
473 if (vals.size() != mapperPtr_().sourceSize())
476 <<
"Number of values (" << vals.size()
477 <<
") differs from the number of points ("
478 << mapperPtr_().sourceSize()
482 endSampledValues_ = mapperPtr_().interpolate(vals);
498 auto&
fld = tfld.ref();
501 if (endSampleTime_ == -1)
506 Pout<<
"MappedFile<Type>::value : Sampled, non-interpolated values"
507 <<
" from start time:"
508 << sampleTimes_[startSampleTime_].
name() <<
nl;
511 fld = startSampledValues_;
512 wantedAverage = startAverage_;
516 scalar start = sampleTimes_[startSampleTime_].value();
517 scalar
end = sampleTimes_[endSampleTime_].value();
519 scalar
s = (
x - start)/(
end - start);
523 Pout<<
"MappedFile<Type>::value : Sampled, interpolated values"
524 <<
" between start time:"
525 << sampleTimes_[startSampleTime_].
name()
526 <<
" and end time:" << sampleTimes_[endSampleTime_].
name()
527 <<
" with weight:" <<
s <<
endl;
530 fld = ((1 -
s)*startSampledValues_ +
s*endSampledValues_);
531 wantedAverage = (1 -
s)*startAverage_ +
s*endAverage_;
539 if (this->faceValues_)
551 Pout<<
"MappedFile<Type>::value :"
552 <<
" actual average:" << averagePsi
553 <<
" wanted average:" << wantedAverage
557 if (
mag(averagePsi) < VSMALL)
560 const Type offset = wantedAverage - averagePsi;
563 Pout<<
"MappedFile<Type>::value :"
564 <<
" offsetting with:" << offset <<
endl;
570 const scalar scale =
mag(wantedAverage)/
mag(averagePsi);
574 Pout<<
"MappedFile<Type>::value :"
575 <<
" scaling with:" << scale <<
endl;
584 fld += offset_->value(
x);
589 Pout<<
"MappedFile<Type>::value : set fixedValue to min:" <<
gMin(
fld)
621 if (dictConstructed_)
645 "planarInterpolation",
651 offset_->writeData(os);