39 const word& entryName,
45 dictConstructed_(
true),
46 fieldTableName_(entryName),
47 setAverage_(
dict.lookupOrDefault(
"setAverage",
false)),
48 perturb_(
dict.lookupOrDefault(
"perturb", 1
e-5)),
49 pointsName_(
dict.lookupOrDefault<
word>(
"points",
"points")),
61 startSampledValues_(0),
68 if (
dict.found(
"offset"))
75 mapMethod_ !=
"planarInterpolation"
76 && mapMethod_ !=
"nearest"
80 <<
"mapMethod should be one of 'planarInterpolation'"
84 dict.readIfPresent(
"fieldTable", fieldTableName_);
92 const word& entryName,
94 const word& fieldTableName,
99 dictConstructed_(
false),
100 fieldTableName_(fieldTableName),
101 setAverage_(
dict.lookupOrDefault(
"setAverage",
false)),
102 perturb_(
dict.lookupOrDefault(
"perturb", 1
e-5)),
103 pointsName_(
dict.lookupOrDefault<
word>(
"points",
"points")),
109 "planarInterpolation"
114 startSampleTime_(-1),
115 startSampledValues_(0),
118 endSampledValues_(0),
122 if (
dict.found(
"offset"))
129 mapMethod_ !=
"planarInterpolation"
130 && mapMethod_ !=
"nearest"
134 <<
"mapMethod should be one of 'planarInterpolation'"
147 dictConstructed_(ut.dictConstructed_),
148 fieldTableName_(ut.fieldTableName_),
149 setAverage_(ut.setAverage_),
150 perturb_(ut.perturb_),
151 pointsName_(ut.pointsName_),
152 mapMethod_(ut.mapMethod_),
153 mapperPtr_(ut.mapperPtr_.clone()),
154 sampleTimes_(ut.sampleTimes_),
155 startSampleTime_(ut.startSampleTime_),
156 startSampledValues_(ut.startSampledValues_),
157 startAverage_(ut.startAverage_),
158 endSampleTime_(ut.endSampleTime_),
159 endSampledValues_(ut.endSampledValues_),
160 endAverage_(ut.endAverage_),
161 offset_(ut.offset_.clone())
173 dictConstructed_(ut.dictConstructed_),
174 fieldTableName_(ut.fieldTableName_),
175 setAverage_(ut.setAverage_),
176 perturb_(ut.perturb_),
177 pointsName_(ut.pointsName_),
178 mapMethod_(ut.mapMethod_),
179 mapperPtr_(ut.mapperPtr_.clone()),
180 sampleTimes_(ut.sampleTimes_),
181 startSampleTime_(ut.startSampleTime_),
182 startSampledValues_(ut.startSampledValues_),
183 startAverage_(ut.startAverage_),
184 endSampleTime_(ut.endSampleTime_),
185 endSampledValues_(ut.endSampledValues_),
186 endAverage_(ut.endAverage_),
187 offset_(ut.offset_.clone())
201 if (startSampledValues_.size())
203 startSampledValues_.autoMap(mapper);
204 endSampledValues_.autoMap(mapper);
208 startSampleTime_ = -1;
223 refCast<const PatchFunction1Types::MappedFile<Type>>(pf1);
225 startSampledValues_.
rmap(tiptf.startSampledValues_, addr);
226 endSampledValues_.rmap(tiptf.endSampledValues_, addr);
230 startSampleTime_ = -1;
241 const polyMesh&
mesh = this->patch_.boundaryMesh().mesh();
244 if (mapperPtr_.empty())
250 /
mesh.time().caseConstant()
259 <<
"Read " << samplePoints.size() <<
" sample points from "
260 << samplePointsFile <<
endl;
267 && mapMethod_ !=
"planarInterpolation"
271 if (this->faceValues_)
278 this->localPosition(this->patch_.faceCentres()),
291 this->localPosition(this->patch_.localPoints()),
301 const fileName samplePointsDir = samplePointsFile.path();
302 sampleTimes_ = Time::findTimes(samplePointsDir);
306 << samplePointsDir <<
" found times "
307 << pointToPointPlanarInterpolation::timeNames(sampleTimes_)
316 bool foundTime = mapperPtr_().findTime
328 <<
"Cannot find starting sampling values for index "
330 <<
"Have sampling values for "
331 << pointToPointPlanarInterpolation::timeNames(sampleTimes_) <<
nl
333 <<
mesh.time().constant()/
"boundaryData"/this->patch_.name()
334 <<
"\n on patch " << this->patch_.name()
335 <<
" of field " << fieldTableName_
342 if (lo != startSampleTime_)
344 startSampleTime_ = lo;
346 if (startSampleTime_ == endSampleTime_)
351 Pout<<
"checkTable : Setting startValues to (already read) "
354 /sampleTimes_[startSampleTime_].
name()
357 startSampledValues_ = endSampledValues_;
358 startAverage_ = endAverage_;
364 Pout<<
"checkTable : Reading startValues from "
367 /sampleTimes_[lo].
name()
376 /
mesh.time().caseConstant()
379 /sampleTimes_[startSampleTime_].name()
387 AverageField<Type> avals((IFstream(valsFile)()));
389 startAverage_ = avals.average();
393 IFstream(valsFile)() >> vals;
396 if (vals.size() != mapperPtr_().sourceSize())
399 <<
"Number of values (" << vals.size()
400 <<
") differs from the number of points ("
401 << mapperPtr_().sourceSize()
405 startSampledValues_ = mapperPtr_().interpolate(vals);
409 if (hi != endSampleTime_)
413 if (endSampleTime_ == -1)
418 Pout<<
"checkTable : Clearing endValues" <<
endl;
420 endSampledValues_.clear();
426 Pout<<
"checkTable : Reading endValues from "
429 /sampleTimes_[endSampleTime_].
name()
437 /
mesh.time().caseConstant()
440 /sampleTimes_[endSampleTime_].name()
448 AverageField<Type> avals((IFstream(valsFile)()));
450 endAverage_ = avals.average();
454 IFstream(valsFile)() >> vals;
457 if (vals.size() != mapperPtr_().sourceSize())
460 <<
"Number of values (" << vals.size()
461 <<
") differs from the number of points ("
462 << mapperPtr_().sourceSize()
466 endSampledValues_ = mapperPtr_().interpolate(vals);
485 if (endSampleTime_ == -1)
490 Pout<<
"MappedFile<Type>::value : Sampled, non-interpolated values"
491 <<
" from start time:"
492 << sampleTimes_[startSampleTime_].
name() <<
nl;
495 fld = startSampledValues_;
496 wantedAverage = startAverage_;
500 scalar
start = sampleTimes_[startSampleTime_].value();
501 scalar
end = sampleTimes_[endSampleTime_].value();
507 Pout<<
"MappedFile<Type>::value : Sampled, interpolated values"
508 <<
" between start time:"
509 << sampleTimes_[startSampleTime_].
name()
510 <<
" and end time:" << sampleTimes_[endSampleTime_].
name()
511 <<
" with weight:" <<
s <<
endl;
514 fld = ((1 -
s)*startSampledValues_ +
s*endSampledValues_);
515 wantedAverage = (1 -
s)*startAverage_ +
s*endAverage_;
523 if (this->faceValues_)
535 Pout<<
"MappedFile<Type>::value :"
536 <<
" actual average:" << averagePsi
537 <<
" wanted average:" << wantedAverage
541 if (
mag(averagePsi) < VSMALL)
544 const Type offset = wantedAverage - averagePsi;
547 Pout<<
"MappedFile<Type>::value :"
548 <<
" offsetting with:" << offset <<
endl;
554 const scalar scale =
mag(wantedAverage)/
mag(averagePsi);
558 Pout<<
"MappedFile<Type>::value :"
559 <<
" scaling with:" << scale <<
endl;
568 fld += offset_->value(
x);
573 Pout<<
"MappedFile<Type>::value : set fixedValue to min:" <<
gMin(
fld)
605 if (dictConstructed_)
629 "planarInterpolation",
635 offset_->writeData(os);