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);
181 gSum((bulk & patchNormal_)*this->
patch().magSf())
224 AMIPtr_(ptf.AMIPtr_.clone()),
225 meanPtr_(ptf.meanPtr_.clone(this->
patch().
patch())),
226 Rptr_(ptf.Rptr_.clone(this->
patch().
patch())),
227 curTimeIndex_(ptf.curTimeIndex_),
228 patchNormal_(ptf.patchNormal_),
280 <<
"Varying time-step computations are not " 281 <<
"supported by the digital filter method." 286 const Field<TypeR>
R(Rptr_->value(t));
300 AMIPtr_(ptf.AMIPtr_.clone()),
301 meanPtr_(ptf.meanPtr_.clone(this->
patch().
patch())),
302 Rptr_(ptf.Rptr_.clone(this->
patch().
patch())),
303 curTimeIndex_(ptf.curTimeIndex_),
304 patchNormal_(ptf.patchNormal_),
318 AMIPtr_(ptf.AMIPtr_.clone()),
319 meanPtr_(ptf.meanPtr_.clone(this->
patch().
patch())),
320 Rptr_(ptf.Rptr_.clone(this->
patch().
patch())),
321 curTimeIndex_(ptf.curTimeIndex_),
322 patchNormal_(ptf.patchNormal_),
339 meanPtr_->autoMap(m);
351 const fvPatchField<Type>& ptf,
358 refCast<const turbulentDigitalFilterInletFvPatchField<Type>>(ptf);
362 meanPtr_->rmap(dfmptf.meanPtr_(), addr);
366 Rptr_->rmap(dfmptf.Rptr_(), addr);
379 if (curTimeIndex_ == -1)
384 if (curTimeIndex_ != this->db().time().
timeIndex())
386 Field<Type>&
fld = *
this;
395 curTimeIndex_ = this->db().time().timeIndex();
412 meanPtr_->writeData(
os);
416 Rptr_->writeData(
os);
This boundary condition supplies a fixed value constraint, and is the base class for a number of othe...
Type gWeightedAverage(const UList< scalar > &weights, const UList< Type > &fld, const label comm)
The global weighted average of a field, using the mag() of the weights.
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.
Type gAverage(const FieldField< Field, Type > &f, const label comm)
The global arithmetic average of a FieldField.
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/v2506/OpenFOAM-v2506/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)
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 the current user-time value. (ie, after applying any timeToUserTime() conversion) ...
#define R(A, B, C, D, E, F, K, M)
#define WarningInFunction
Report a warning using Foam::Warning.
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.
static const UList< Type > & null() noexcept
Return a null UList (reference to a nullObject). Behaves like an empty UList.
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)