45 const scalar error =
max(
magSqr(patchNormal + nf));
50 <<
"Patch " << this->
patch().name() <<
" is not planar" 54 return patchNormal.normalise();
63 AMIPtr_->calculate(this->
patch().
patch(), L_.patch());
65 patchNormal_ = calcPatchNormal();
75 Field<Type> sourceFld;
77 if (Pstream::master())
79 sourceFld = L_.convolve();
86 AMIPtr_->interpolateToSource
89 multiplyWeightedOp<Type, plusEqOp<Type>>(cop),
108 const scalar t = this->db().time().timeOutputValue();
125 const scalar t = this->db().time().timeOutputValue();
136 r.yz() = (r.yz() - r.xy()*r.xz())/r.yy();
147 u.z() = u.x()*r.xz() + u.y()*r.yz() + u.z()*r.zz();
148 u.y() = u.x()*r.xy() + u.y()*r.yy();
149 u.x() = u.x()*r.xx();
160 const scalar t = this->db().time().timeOutputValue();
162 fld += meanPtr_->value(t);
172 const scalar t = this->db().time().timeOutputValue();
173 tmp<vectorField> tmean = meanPtr_->value(t);
180 /(
gSum(this->
patch().magSf()) + ROOTVSMALL)
185 gSum((bulk & patchNormal_)*this->
patch().magSf())
228 AMIPtr_(ptf.AMIPtr_.clone()),
229 meanPtr_(ptf.meanPtr_.clone(this->
patch().
patch())),
230 Rptr_(ptf.Rptr_.clone(this->
patch().
patch())),
231 curTimeIndex_(ptf.curTimeIndex_),
232 patchNormal_(ptf.patchNormal_),
284 <<
"Varying time-step computations are not " 285 <<
"supported by the digital filter method." 290 const Field<TypeR>
R(Rptr_->value(t));
304 AMIPtr_(ptf.AMIPtr_.clone()),
305 meanPtr_(ptf.meanPtr_.clone(this->
patch().
patch())),
306 Rptr_(ptf.Rptr_.clone(this->
patch().
patch())),
307 curTimeIndex_(ptf.curTimeIndex_),
308 patchNormal_(ptf.patchNormal_),
322 AMIPtr_(ptf.AMIPtr_.clone()),
323 meanPtr_(ptf.meanPtr_.clone(this->
patch().
patch())),
324 Rptr_(ptf.Rptr_.clone(this->
patch().
patch())),
325 curTimeIndex_(ptf.curTimeIndex_),
326 patchNormal_(ptf.patchNormal_),
343 meanPtr_->autoMap(m);
355 const fvPatchField<Type>& ptf,
362 refCast<const turbulentDigitalFilterInletFvPatchField<Type>>(ptf);
366 meanPtr_->rmap(dfmptf.meanPtr_(), addr);
370 Rptr_->rmap(dfmptf.Rptr_(), addr);
383 if (curTimeIndex_ == -1)
388 if (curTimeIndex_ != this->db().time().
timeIndex())
390 Field<Type>&
fld = *
this;
399 curTimeIndex_ = this->db().time().timeIndex();
416 meanPtr_->writeData(
os);
420 Rptr_->writeData(
os);
This boundary condition supplies a fixed value constraint, and is the base class for a number of othe...
const objectRegistry & db() const
The associated objectRegistry.
virtual void write(Ostream &) const
Write boundary condition settings.
Field< symmTensor > symmTensorField
Specialisation of Field<T> for symmTensor.
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
virtual bool isAdjustTimeStep() const
Return true if adjustTimeStep is true.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
void writeValueEntry(Ostream &os) const
Write *this field as a "value" entry.
virtual void write(Ostream &) const
Write.
Class to describe the integral-scale container being used in the turbulentDigitalFilterInletFvPatchFi...
Macros for easy insertion into run-time selection tables.
#define forAll(list, i)
Loop across all elements in list.
Face area weighted Arbitrary Mesh Interface (AMI) method.
Type gSum(const FieldField< Field, Type > &f)
SymmTensor< scalar > symmTensor
SymmTensor of scalars, i.e. SymmTensor<scalar>.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
const Time & time() const noexcept
Return time registry.
A FieldMapper for finite-volume patch fields.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
int debug
Static debugging option.
Info<< "Predicted p max-min : "<< max(p).value()<< " "<< min(p).value()<< endl;rho==max(psi *p+alphal *rhol0+((alphav *psiv+alphal *psil) - psi) *pSat, rhoMin);# 1 "/home/chef2/andy/OpenFOAM/release/v2306/OpenFOAM-v2306/applications/solvers/multiphase/cavitatingFoam/alphavPsi.H" 1{ alphav=clamp((rho - rholSat)/(rhovSat - rholSat), zero_one{});alphal=1.0 - alphav;Info<< "max-min alphav: "<< max(alphav).value()<< " "<< min(alphav).value()<< endl;psiModel-> correct()
OBJstream os(runTime.globalPath()/outputName)
static const UList< Type > & null()
Return a UList reference to a nullObject.
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< ' ';}gmvFile<< nl;for(const word &name :lagrangianScalarNames){ IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
scalar timeOutputValue() const
Return current time value.
#define R(A, B, C, D, E, F, K, M)
#define WarningInFunction
Report a warning using Foam::Warning.
Type gAverage(const FieldField< Field, Type > &f)
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mes...
const std::string patch
OpenFOAM patch number as a std::string.
virtual void rmap(const fvPatchField< Type > &ptf, const labelList &addr)
Reverse map the given fvPatchField onto this fvPatchField.
Digital-filter based boundary condition for vector- and scalar-based quantities (e.g. U or T) to generate synthetic turbulence-alike time-series from input turbulence statistics for LES and DES turbulent flow computations.
Field< vector > vectorField
Specialisation of Field<T> for vector.
List< label > labelList
A List of labels.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
static void checkStresses(const symmTensorField &R)
Check if input Reynolds stresses are valid.
dimensioned< typename typeOfMag< Type >::type > magSqr(const dimensioned< Type > &dt)
turbulentDigitalFilterInletFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
virtual void autoMap(const fvPatchFieldMapper &m)
Map (and resize as needed) from self given a mapping object.
static constexpr const zero Zero
Global zero (0)