mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Added variants of updateCoeffs and manipulateMatrix to receive weight field
This commit is contained in:
@ -42,6 +42,7 @@ Foam::fvPatchField<Type>::fvPatchField
|
||||
patch_(p),
|
||||
internalField_(iF),
|
||||
updated_(false),
|
||||
manipulatedMatrix_(false),
|
||||
patchType_(word::null)
|
||||
{}
|
||||
|
||||
@ -58,6 +59,7 @@ Foam::fvPatchField<Type>::fvPatchField
|
||||
patch_(p),
|
||||
internalField_(iF),
|
||||
updated_(false),
|
||||
manipulatedMatrix_(false),
|
||||
patchType_(word::null)
|
||||
{}
|
||||
|
||||
@ -75,6 +77,7 @@ Foam::fvPatchField<Type>::fvPatchField
|
||||
patch_(p),
|
||||
internalField_(iF),
|
||||
updated_(false),
|
||||
manipulatedMatrix_(false),
|
||||
patchType_(ptf.patchType_)
|
||||
{}
|
||||
|
||||
@ -92,6 +95,7 @@ Foam::fvPatchField<Type>::fvPatchField
|
||||
patch_(p),
|
||||
internalField_(iF),
|
||||
updated_(false),
|
||||
manipulatedMatrix_(false),
|
||||
patchType_(dict.lookupOrDefault<word>("patchType", word::null))
|
||||
{
|
||||
if (dict.found("value"))
|
||||
@ -133,6 +137,7 @@ Foam::fvPatchField<Type>::fvPatchField
|
||||
patch_(ptf.patch_),
|
||||
internalField_(ptf.internalField_),
|
||||
updated_(false),
|
||||
manipulatedMatrix_(false),
|
||||
patchType_(ptf.patchType_)
|
||||
{}
|
||||
|
||||
@ -148,6 +153,7 @@ Foam::fvPatchField<Type>::fvPatchField
|
||||
patch_(ptf.patch_),
|
||||
internalField_(iF),
|
||||
updated_(false),
|
||||
manipulatedMatrix_(false),
|
||||
patchType_(ptf.patchType_)
|
||||
{}
|
||||
|
||||
@ -267,6 +273,28 @@ void Foam::fvPatchField<Type>::rmap
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvPatchField<Type>::updateCoeffs()
|
||||
{
|
||||
updated_ = true;
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvPatchField<Type>::updateCoeffs(const scalarField& weights)
|
||||
{
|
||||
if (!updated_)
|
||||
{
|
||||
updateCoeffs();
|
||||
|
||||
Field<Type>& fld = *this;
|
||||
fld *= weights;
|
||||
|
||||
updated_ = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvPatchField<Type>::evaluate(const Pstream::commsTypes)
|
||||
{
|
||||
@ -276,13 +304,25 @@ void Foam::fvPatchField<Type>::evaluate(const Pstream::commsTypes)
|
||||
}
|
||||
|
||||
updated_ = false;
|
||||
manipulatedMatrix_ = false;
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvPatchField<Type>::manipulateMatrix(fvMatrix<Type>& matrix)
|
||||
{
|
||||
// do nothing
|
||||
manipulatedMatrix_ = true;
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvPatchField<Type>::manipulateMatrix
|
||||
(
|
||||
fvMatrix<Type>& matrix,
|
||||
const scalarField& weights
|
||||
)
|
||||
{
|
||||
manipulatedMatrix_ = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -93,6 +93,10 @@ class fvPatchField
|
||||
// the construction of the matrix
|
||||
bool updated_;
|
||||
|
||||
//- Update index used so that manipulateMatrix is called only once
|
||||
// during the construction of the matrix
|
||||
bool manipulatedMatrix_;
|
||||
|
||||
//- Optional patch type, used to allow specified boundary conditions
|
||||
// to be applied to constraint patches by providing the constraint
|
||||
// patch type as 'patchType'
|
||||
@ -327,6 +331,12 @@ public:
|
||||
return updated_;
|
||||
}
|
||||
|
||||
//- Return true if the matrix has already been manipulated
|
||||
bool manipulatedMatrix() const
|
||||
{
|
||||
return manipulatedMatrix_;
|
||||
}
|
||||
|
||||
|
||||
// Mapping functions
|
||||
|
||||
@ -365,10 +375,12 @@ public:
|
||||
|
||||
//- Update the coefficients associated with the patch field
|
||||
// Sets Updated to true
|
||||
virtual void updateCoeffs()
|
||||
{
|
||||
updated_ = true;
|
||||
}
|
||||
virtual void updateCoeffs();
|
||||
|
||||
//- Update the coefficients associated with the patch field
|
||||
// and apply weight field
|
||||
// Sets Updated to true
|
||||
virtual void updateCoeffs(const scalarField& weights);
|
||||
|
||||
//- Return internal field next to patch as patch field
|
||||
virtual tmp<Field<Type> > patchInternalField() const;
|
||||
@ -479,6 +491,13 @@ public:
|
||||
//- Manipulate matrix
|
||||
virtual void manipulateMatrix(fvMatrix<Type>& matrix);
|
||||
|
||||
//- Manipulate matrix with given weights
|
||||
virtual void manipulateMatrix
|
||||
(
|
||||
fvMatrix<Type>& matrix,
|
||||
const scalarField& weights
|
||||
);
|
||||
|
||||
|
||||
// I-O
|
||||
|
||||
|
||||
Reference in New Issue
Block a user