46 if (edgeInterpolation::debug)
49 <<
"constructing edgeInterpolationScheme<Type>"
56 <<
"Discretisation scheme not specified" <<
nl <<
nl
57 <<
"Valid schemes are :" <<
nl
58 << MeshConstructorTablePtr_->sortedToc()
62 const word schemeName(schemeData);
64 auto* ctorPtr = MeshConstructorTable(schemeName);
73 *MeshConstructorTablePtr_
77 return ctorPtr(
mesh, schemeData);
90 if (edgeInterpolation::debug)
93 <<
"constructing edgeInterpolationScheme<Type>"
100 <<
"Discretisation scheme not specified"
102 <<
"Valid schemes are :" <<
endl
103 << MeshConstructorTablePtr_->sortedToc()
107 const word schemeName(schemeData);
109 auto* ctorPtr = MeshFluxConstructorTable(schemeName);
118 *MeshFluxConstructorTablePtr_
119 ) <<
exit(FatalIOError);
122 return ctorPtr(
mesh, faceFlux, schemeData);
144 if (edgeInterpolation::debug)
150 <<
" from areas to edges "
151 "without explicit correction"
172 "interpolate("+vf.
name()+
')',
184 for (label fi=0; fi<P.
size(); ++fi)
188 const tensor& Te = curT[0];
189 const tensor& TP = curT[1];
190 const tensor& TN = curT[2];
219 for (label i=0; i<size; ++i)
222 mesh.edgeTransformTensors()[start + i];
224 const tensor& Te = curT[0];
225 const tensor& TP = curT[1];
226 const tensor& TN = curT[2];
262 if (edgeInterpolation::debug)
268 <<
" from area to edges "
269 "without explicit correction"
288 "interpolate("+vf.
name()+
')',
300 for (label eI = 0; eI < P.
size(); ++eI)
304 const tensor& Te = curT[0];
305 const tensor& TP = curT[1];
306 const tensor& TN = curT[2];
328 label size = vfb[pi].patch().
size();
329 label start = vfb[pi].patch().start();
336 for (label i=0; i<size; ++i)
339 mesh.edgeTransformTensors()[start + i];
341 const tensor& Te = curT[0];
342 const tensor& TP = curT[1];
343 const tensor& TN = curT[2];
350 + (1 - pLambda[i])*
transform(TN, pNgbVf[i])
378 if (edgeInterpolation::debug)
384 <<
" from area to edges "
385 "without explicit correction"
404 "interpolate("+vf.
name()+
')',
416 for (label eI = 0; eI < P.
size(); ++eI)
418 sfi[eI] =
lambda[eI]*vfi[P[eI]] + (1 -
lambda[eI])*vfi[
N[eI]];
430 tsf.
ref().boundaryFieldRef()[pi] =
432 + (1.0 - pLambda)*vf.
boundaryField()[pi].patchNeighbourField();
453 if (edgeInterpolation::debug)
459 <<
" from areas to edges"
482 if (edgeInterpolation::debug)
488 <<
" from area to edges "
493 euclidianInterpolate(vf, weights(vf));
const dimensionSet & dimensions() const
Return dimensions.
const Mesh & mesh() const
Return mesh.
Generic templated field type.
Internal::FieldType & primitiveFieldRef(const bool updateAccessTime=true)
Return a reference to the internal field.
Boundary & boundaryFieldRef(const bool updateAccessTime=true)
Return a reference to the boundary field.
Internal & ref(const bool updateAccessTime=true)
Return a reference to the dimensioned internal field.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
const Internal & internalField() const
Return a const-reference to the dimensioned internal field.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const word & name() const noexcept
Return the object name.
const objectRegistry & db() const noexcept
Return the local objectRegistry.
const fileName & instance() const noexcept
Read access to instance path component.
bool eof() const noexcept
True if end of input seen.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Tensor< Cmpt > T() const
Return non-Hermitian transpose.
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
void size(const label n)
Older name for setAddressableSize.
label size() const noexcept
The number of elements in the list.
virtual ~edgeInterpolationScheme()
static tmp< GeometricField< Type, faePatchField, edgeMesh > > euclidianInterpolate(const GeometricField< Type, faPatchField, areaMesh > &, const tmp< edgeScalarField > &)
Return the euclidian edge-interpolate of the given area field.
Finite area mesh (used for 2-D non-Euclidian finite area method) defined using a patch of faces on a ...
bool interpolate() const noexcept
Same as isPointData()
A class for managing temporary objects.
void clear() const noexcept
A class for handling words, derived from Foam::string.
#define FatalIOErrorInLookup(ios, lookupTag, lookupName, lookupTable)
Report an error message using Foam::FatalIOError.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
#define InfoInFunction
Report an information message using Foam::Info.
dimensionSet transform(const dimensionSet &ds)
Return the argument; transformations do not change the dimensions.
Ostream & endl(Ostream &os)
Add newline and flush stream.
tmp< fvMatrix< Type > > correction(const fvMatrix< Type > &)
errorManipArg< error, int > exit(error &err, const int errNo=1)
constexpr char nl
The newline '\n' character (0x0a)
dimensionedScalar lambda("lambda", dimTime/sqr(dimLength), laminarTransport)
#define forAll(list, i)
Loop across all elements in list.
const Vector< label > N(dict.get< Vector< label > >("N"))