Public Member Functions | Private Attributes
activeBaffleVelocityFvPatchVectorField Class Reference

This velocity boundary condition simulates the opening of a baffle due to local flow conditions, by merging the behaviours of wall and cyclic conditions. The baffle joins two mesh regions, where the open fraction determines the interpolation weights applied to each cyclic- and neighbour-patch contribution. More...

Inheritance diagram for activeBaffleVelocityFvPatchVectorField:
Inheritance graph
[legend]
Collaboration diagram for activeBaffleVelocityFvPatchVectorField:
Collaboration graph
[legend]

Public Member Functions

 TypeName ("activeBaffleVelocity")
 Runtime type information. More...
 
 activeBaffleVelocityFvPatchVectorField (const fvPatch &, const DimensionedField< vector, volMesh > &)
 Construct from patch and internal field. More...
 
 activeBaffleVelocityFvPatchVectorField (const fvPatch &, const DimensionedField< vector, volMesh > &, const dictionary &)
 Construct from patch, internal field and dictionary. More...
 
 activeBaffleVelocityFvPatchVectorField (const activeBaffleVelocityFvPatchVectorField &, const fvPatch &, const DimensionedField< vector, volMesh > &, const fvPatchFieldMapper &)
 Construct by mapping given activeBaffleVelocityFvPatchVectorField. More...
 
 activeBaffleVelocityFvPatchVectorField (const activeBaffleVelocityFvPatchVectorField &)
 Construct as copy. More...
 
virtual tmp< fvPatchVectorFieldclone () const
 Construct and return a clone. More...
 
 activeBaffleVelocityFvPatchVectorField (const activeBaffleVelocityFvPatchVectorField &, const DimensionedField< vector, volMesh > &)
 Construct as copy setting internal field reference. More...
 
virtual tmp< fvPatchVectorFieldclone (const DimensionedField< vector, volMesh > &iF) const
 Construct and return a clone setting internal field reference. More...
 
virtual void autoMap (const fvPatchFieldMapper &)
 Map (and resize as needed) from self given a mapping object. More...
 
virtual void rmap (const fvPatchVectorField &, const labelList &)
 Reverse map the given fvPatchField onto this fvPatchField. More...
 
virtual void updateCoeffs ()
 Update the coefficients associated with the patch field. More...
 
virtual void write (Ostream &) const
 Write. More...
 

Private Attributes

word pName_
 Name of the pressure field used to calculate the force. More...
 
word cyclicPatchName_
 Name of the cyclic patch used when the active baffle is open. More...
 
label cyclicPatchLabel_
 Index of the cyclic patch used when the active baffle is open. More...
 
label orientation_
 Orientation (1 or -1) of the active baffle patch. More...
 
vectorField initWallSf_
 Initial wall patch areas. More...
 
vectorField initCyclicSf_
 Initial this-side cyclic patch areas. More...
 
vectorField nbrCyclicSf_
 Initial neighbour-side cyclic patch areas. More...
 
scalar openFraction_
 Current fraction of the active baffle which is open. More...
 
scalar openingTime_
 Time taken for the active baffle to open. More...
 
scalar maxOpenFractionDelta_
 Maximum fractional change to the active baffle openness. More...
 
label curTimeIndex_
 

Detailed Description

This velocity boundary condition simulates the opening of a baffle due to local flow conditions, by merging the behaviours of wall and cyclic conditions. The baffle joins two mesh regions, where the open fraction determines the interpolation weights applied to each cyclic- and neighbour-patch contribution.

We determine whether the baffle is opening or closing from the sign of the net force across the baffle, from which the baffle open fraction is updated using:

\[ x = x_{old} + sign(F_{net})\frac{dt}{DT} \]

where

$ x $ = baffle open fraction [0-1]
$ x_{old} $ = baffle open fraction on previous evaluation
$ dt $ = simulation time step
$ DT $ = time taken to open the baffle
$ F_{net} $ = net force across the baffle

The open fraction is then applied to scale the patch areas.


Patch usage

Property Description Required Default value
p pressure field name no p
cyclicPatch cylclic patch name yes
orientation 1 or -1 used to switch flow direction yes
openFraction current opatch open fraction [0-1] yes
openingTime time taken to open the baffle yes
maxOpenFractionDelta max open fraction change per timestep yes

Example of the boundary condition specification:

    myPatch
    {
        type            activeBaffleVelocity;
        p               p;
        cyclicPatch     cyclic1;
        orientation     1;
        openFraction    0.2;
        openingTime     5.0;
        maxOpenFractionDelta 0.1;
    }
See also
Foam::fixedValueFvPatchField Foam::cyclicFvPatchField
Source files

Definition at line 161 of file activeBaffleVelocityFvPatchVectorField.H.

Constructor & Destructor Documentation

◆ activeBaffleVelocityFvPatchVectorField() [1/5]

Construct from patch and internal field.

Definition at line 36 of file activeBaffleVelocityFvPatchVectorField.C.

Referenced by activeBaffleVelocityFvPatchVectorField::clone().

Here is the caller graph for this function:

◆ activeBaffleVelocityFvPatchVectorField() [2/5]

activeBaffleVelocityFvPatchVectorField ( const fvPatch p,
const DimensionedField< vector, volMesh > &  iF,
const dictionary dict 
)

Construct from patch, internal field and dictionary.

Definition at line 82 of file activeBaffleVelocityFvPatchVectorField.C.

◆ activeBaffleVelocityFvPatchVectorField() [3/5]

Construct by mapping given activeBaffleVelocityFvPatchVectorField.

onto a new patch

Definition at line 58 of file activeBaffleVelocityFvPatchVectorField.C.

◆ activeBaffleVelocityFvPatchVectorField() [4/5]

Construct as copy.

Definition at line 113 of file activeBaffleVelocityFvPatchVectorField.C.

◆ activeBaffleVelocityFvPatchVectorField() [5/5]

Construct as copy setting internal field reference.

Definition at line 134 of file activeBaffleVelocityFvPatchVectorField.C.

Member Function Documentation

◆ TypeName()

TypeName ( "activeBaffleVelocity"  )

Runtime type information.

◆ clone() [1/2]

virtual tmp<fvPatchVectorField> clone ( ) const
inlinevirtual

Construct and return a clone.

Definition at line 244 of file activeBaffleVelocityFvPatchVectorField.H.

References activeBaffleVelocityFvPatchVectorField::activeBaffleVelocityFvPatchVectorField().

Here is the call graph for this function:

◆ clone() [2/2]

virtual tmp<fvPatchVectorField> clone ( const DimensionedField< vector, volMesh > &  iF) const
inlinevirtual

Construct and return a clone setting internal field reference.

Definition at line 261 of file activeBaffleVelocityFvPatchVectorField.H.

References activeBaffleVelocityFvPatchVectorField::activeBaffleVelocityFvPatchVectorField().

Here is the call graph for this function:

◆ autoMap()

void autoMap ( const fvPatchFieldMapper m)
virtual

Map (and resize as needed) from self given a mapping object.

Note: cannot map field from cyclic patch anyway so just recalculate

Areas should be consistent when doing autoMap except in case of topo changes. ! Note: we don't want to use Sf here since triggers rebuilding of /*! fvMesh::S() which will give problems when mapped (since already on new mesh)

Definition at line 157 of file activeBaffleVelocityFvPatchVectorField.C.

◆ rmap()

void rmap ( const fvPatchVectorField ptf,
const labelList addr 
)
virtual

Reverse map the given fvPatchField onto this fvPatchField.

Definition at line 186 of file activeBaffleVelocityFvPatchVectorField.C.

◆ updateCoeffs()

void updateCoeffs ( )
virtual

◆ write()

void write ( Ostream os) const
virtual

Write.

Definition at line 292 of file activeBaffleVelocityFvPatchVectorField.C.

References token::END_STATEMENT, Foam::nl, fvPatchField::write(), and Ostream::writeKeyword().

Here is the call graph for this function:

Field Documentation

◆ pName_

word pName_
private

Name of the pressure field used to calculate the force.

on the active baffle

Definition at line 169 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ cyclicPatchName_

word cyclicPatchName_
private

Name of the cyclic patch used when the active baffle is open.

Definition at line 172 of file activeBaffleVelocityFvPatchVectorField.H.

◆ cyclicPatchLabel_

label cyclicPatchLabel_
private

Index of the cyclic patch used when the active baffle is open.

Definition at line 175 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ orientation_

label orientation_
private

Orientation (1 or -1) of the active baffle patch.

Used to change the direction of opening without the need for reordering the patch faces

Definition at line 180 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ initWallSf_

vectorField initWallSf_
private

Initial wall patch areas.

Definition at line 183 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ initCyclicSf_

vectorField initCyclicSf_
private

Initial this-side cyclic patch areas.

Definition at line 186 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ nbrCyclicSf_

vectorField nbrCyclicSf_
private

Initial neighbour-side cyclic patch areas.

Definition at line 189 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ openFraction_

scalar openFraction_
private

Current fraction of the active baffle which is open.

Definition at line 192 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ openingTime_

scalar openingTime_
private

Time taken for the active baffle to open.

Definition at line 195 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ maxOpenFractionDelta_

scalar maxOpenFractionDelta_
private

Maximum fractional change to the active baffle openness.

per time-step

Definition at line 199 of file activeBaffleVelocityFvPatchVectorField.H.

Referenced by activeBaffleVelocityFvPatchVectorField::updateCoeffs().

◆ curTimeIndex_

label curTimeIndex_
private

The documentation for this class was generated from the following files: