GGI and mixing planes with jump conditions
This commit is contained in:
parent
a5865eaf77
commit
b80d362741
27 changed files with 2358 additions and 31 deletions
|
@ -87,3 +87,5 @@ Contents:
|
||||||
Alexey Matveichev
|
Alexey Matveichev
|
||||||
Vuko Vukcevic
|
Vuko Vukcevic
|
||||||
Robert Keser
|
Robert Keser
|
||||||
|
Cesare Guardino
|
||||||
|
Ilaria De Dominicis
|
||||||
|
|
|
@ -123,9 +123,11 @@ $(constraintFvPatchFields)/wedge/wedgeFvPatchScalarField.C
|
||||||
$(constraintFvPatchFields)/wedge/wedgeFvPatchVectorNFields.C
|
$(constraintFvPatchFields)/wedge/wedgeFvPatchVectorNFields.C
|
||||||
$(constraintFvPatchFields)/ggi/ggiFvPatchFields.C
|
$(constraintFvPatchFields)/ggi/ggiFvPatchFields.C
|
||||||
$(constraintFvPatchFields)/ggi/ggiFvPatchVectorNFields.C
|
$(constraintFvPatchFields)/ggi/ggiFvPatchVectorNFields.C
|
||||||
|
$(constraintFvPatchFields)/jumpGgi/jumpGgiFvPatchFields.C
|
||||||
$(constraintFvPatchFields)/cyclicGgi/cyclicGgiFvPatchFields.C
|
$(constraintFvPatchFields)/cyclicGgi/cyclicGgiFvPatchFields.C
|
||||||
$(constraintFvPatchFields)/overlapGgi/overlapGgiFvPatchFields.C
|
$(constraintFvPatchFields)/overlapGgi/overlapGgiFvPatchFields.C
|
||||||
$(constraintFvPatchFields)/mixingPlane/mixingPlaneFvPatchFields.C
|
$(constraintFvPatchFields)/mixingPlane/mixingPlaneFvPatchFields.C
|
||||||
|
$(constraintFvPatchFields)/jumpMixingPlane/jumpMixingPlaneFvPatchFields.C
|
||||||
$(constraintFvPatchFields)/regionCoupling/regionCouplingFvPatchFields.C
|
$(constraintFvPatchFields)/regionCoupling/regionCouplingFvPatchFields.C
|
||||||
|
|
||||||
derivedFvPatchFields = $(fvPatchFields)/derived
|
derivedFvPatchFields = $(fvPatchFields)/derived
|
||||||
|
|
|
@ -128,6 +128,12 @@ public:
|
||||||
|
|
||||||
// Access
|
// Access
|
||||||
|
|
||||||
|
//- Return reference to GGI patch
|
||||||
|
const ggiFvPatch& ggiPatch() const
|
||||||
|
{
|
||||||
|
return ggiPatch_;
|
||||||
|
}
|
||||||
|
|
||||||
//- Return shadow patch field
|
//- Return shadow patch field
|
||||||
const ggiFvPatchField<Type>& shadowPatchField() const;
|
const ggiFvPatchField<Type>& shadowPatchField() const;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
Note on parallelisation
|
||||||
|
In order to handle parallelisation correctly, I need to rely on the fact
|
||||||
|
that all patches that require a global gather-scatter come before
|
||||||
|
processor patches. In that case, the communication pattern
|
||||||
|
will be correct without intervention. HJ, 6/Aug/2009
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "jumpGgiFvPatchField.H"
|
||||||
|
//#include "symmTransformField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpGgiFvPatchField<Type>::jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
ggiFvPatchField<Type>(p, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpGgiFvPatchField<Type>::jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
ggiFvPatchField<Type>(p, iF, dict)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpGgiFvPatchField<Type>::jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const jumpGgiFvPatchField<Type>& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
ggiFvPatchField<Type>(ptf, p, iF, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpGgiFvPatchField<Type>::jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const jumpGgiFvPatchField<Type>& ptf,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
ggiFvPatchField<Type>(ptf, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
tmp<Field<Type> > jumpGgiFvPatchField<Type>::patchNeighbourField() const
|
||||||
|
{
|
||||||
|
return ggiFvPatchField<Type>::patchNeighbourField() + jump();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void jumpGgiFvPatchField<Type>::initInterfaceMatrixUpdate
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix&,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes commsType,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Communication is allowed either before or after processor
|
||||||
|
// patch comms. HJ, 11/Jul/2011
|
||||||
|
|
||||||
|
// Get shadow face-cells and assemble shadow field
|
||||||
|
const unallocLabelList& sfc = this->ggiPatch().shadow().faceCells();
|
||||||
|
|
||||||
|
scalarField sField(sfc.size());
|
||||||
|
if
|
||||||
|
(
|
||||||
|
reinterpret_cast<const void*>(&psiInternal)
|
||||||
|
== reinterpret_cast<const void*>(&this->internalField())
|
||||||
|
)
|
||||||
|
{
|
||||||
|
const scalarField jf = jump()().component(cmpt);
|
||||||
|
|
||||||
|
forAll (sField, i)
|
||||||
|
{
|
||||||
|
sField[i] = psiInternal[sfc[i]] + jf[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
forAll (sField, i)
|
||||||
|
{
|
||||||
|
sField[i] = psiInternal[sfc[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scalarField pnf = this->ggiPatch().interpolate(sField);
|
||||||
|
|
||||||
|
// Multiply the field by coefficients and add into the result
|
||||||
|
const unallocLabelList& fc = this->ggiPatch().faceCells();
|
||||||
|
|
||||||
|
if (switchToLhs)
|
||||||
|
{
|
||||||
|
forAll(fc, elemI)
|
||||||
|
{
|
||||||
|
result[fc[elemI]] += coeffs[elemI]*pnf[elemI];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
forAll(fc, elemI)
|
||||||
|
{
|
||||||
|
result[fc[elemI]] -= coeffs[elemI]*pnf[elemI];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void jumpGgiFvPatchField<Type>::updateInterfaceMatrix
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix&,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,162 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
jumpGgiFvPatchField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Generalized grid interface patch field with a jump condition
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
jumpGgiFvPatchField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef jumpGgiFvPatchField_H
|
||||||
|
#define jumpGgiFvPatchField_H
|
||||||
|
|
||||||
|
#include "ggiFvPatchField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class jumpGgiFvPatchField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class jumpGgiFvPatchField
|
||||||
|
:
|
||||||
|
public ggiFvPatchField<Type>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("jumpGgi");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given jumpGgiFvPatchField onto a new patch
|
||||||
|
jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const jumpGgiFvPatchField<Type>&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
jumpGgiFvPatchField
|
||||||
|
(
|
||||||
|
const jumpGgiFvPatchField<Type>&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return the interface type
|
||||||
|
virtual const word& interfaceFieldType() const
|
||||||
|
{
|
||||||
|
return ggiFvPatchField<Type>::type();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Return the "jump" across the patch as a "half" field
|
||||||
|
virtual tmp<Field<Type> > jump() const = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Return neighbour field given internal cell data
|
||||||
|
virtual tmp<Field<Type> > patchNeighbourField() const;
|
||||||
|
|
||||||
|
//- Initialise neighbour matrix update
|
||||||
|
virtual void initInterfaceMatrixUpdate
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix& m,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes commsType,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Update result field based on interface functionality
|
||||||
|
virtual void updateInterfaceMatrix
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix&,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes commsType,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "jumpGgiFvPatchField.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "jumpGgiFvPatchFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchFieldsTypeName(jumpGgi);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef jumpGgiFvPatchFields_H
|
||||||
|
#define jumpGgiFvPatchFields_H
|
||||||
|
|
||||||
|
#include "jumpGgiFvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(jumpGgi)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef jumpGgiFvPatchFieldsFwd_H
|
||||||
|
#define jumpGgiFvPatchFieldsFwd_H
|
||||||
|
|
||||||
|
#include "fvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type> class jumpGgiFvPatchField;
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(jumpGgi)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,260 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "jumpMixingPlaneFvPatchField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixingPlaneFvPatchField<Type>(p, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixingPlaneFvPatchField<Type>(p, iF, dict)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const jumpMixingPlaneFvPatchField<Type>& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixingPlaneFvPatchField<Type>(ptf, p, iF, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const jumpMixingPlaneFvPatchField<Type>& ptf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixingPlaneFvPatchField<Type>(ptf)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const jumpMixingPlaneFvPatchField<Type>& ptf,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixingPlaneFvPatchField<Type>(ptf, iF)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
tmp<Field<Type> >
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::patchNeighbourField() const
|
||||||
|
{
|
||||||
|
// Get shadow patch internalField field
|
||||||
|
Field<Type> sField = this->shadowPatchField().patchInternalField();
|
||||||
|
|
||||||
|
if (this->mixing() == mixingPlaneInterpolation::AREA_AVERAGING)
|
||||||
|
{
|
||||||
|
// Area-weighted averaging
|
||||||
|
return this->mixingPlanePatch().interpolate(sField);
|
||||||
|
}
|
||||||
|
else if (this->mixing() == mixingPlaneInterpolation::FLUX_AVERAGING)
|
||||||
|
{
|
||||||
|
// Flux averaging
|
||||||
|
// - for outgoing flux, use zero gradient condition
|
||||||
|
// - for incoming flux, use interpolated flux-weighted value
|
||||||
|
|
||||||
|
const scalarField& mask = this->fluxMask();
|
||||||
|
|
||||||
|
const scalarField& shadowFluxWeights =
|
||||||
|
this->shadowPatchField().fluxWeights();
|
||||||
|
|
||||||
|
// For outgoing flux, the value is identical to internal value
|
||||||
|
// For incoming flux, calculate the average value of the
|
||||||
|
// flux-weight shadow values coming out
|
||||||
|
return
|
||||||
|
this->mixingPlanePatch().fromProfile
|
||||||
|
(
|
||||||
|
mask*this->mixingPlanePatch().shadow().toProfile
|
||||||
|
(
|
||||||
|
sField*shadowFluxWeights
|
||||||
|
)
|
||||||
|
)
|
||||||
|
+ this->mixingPlanePatch().fromProfile(1 - mask)*
|
||||||
|
this->patchInternalField();
|
||||||
|
}
|
||||||
|
else if (this->mixing() == mixingPlaneInterpolation::ZERO_GRADIENT)
|
||||||
|
{
|
||||||
|
return this->patchInternalField();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"tmp<Field<Type> > jumpMixingPlaneFvPatchField<Type>::"
|
||||||
|
"patchNeighbourField() const"
|
||||||
|
) << "Unknown mixing type for patch " << this->patch().name()
|
||||||
|
<< " for field "
|
||||||
|
<< this->dimensionedInternalField().name()
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dummy return to keep compiler happy
|
||||||
|
return this->patchInternalField();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void jumpMixingPlaneFvPatchField<Type>::initInterfaceMatrixUpdate
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix&,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes commsType,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Communication is allowed either before or after processor
|
||||||
|
// patch comms. HJ, 11/Jul/2011
|
||||||
|
|
||||||
|
if
|
||||||
|
(
|
||||||
|
this->mixing() == mixingPlaneInterpolation::AREA_AVERAGING
|
||||||
|
|| this->mixing() == mixingPlaneInterpolation::FLUX_AVERAGING
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Get shadow face-cells and assemble shadow field
|
||||||
|
const unallocLabelList& sfc =
|
||||||
|
this->mixingPlanePatch().shadow().faceCells();
|
||||||
|
|
||||||
|
scalarField sField(sfc.size());
|
||||||
|
|
||||||
|
forAll (sField, i)
|
||||||
|
{
|
||||||
|
sField[i] = psiInternal[sfc[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get local faceCells
|
||||||
|
const unallocLabelList& fc = this->mixingPlanePatch().faceCells();
|
||||||
|
|
||||||
|
scalarField pnf = this->mixingPlanePatch().interpolate(sField);
|
||||||
|
|
||||||
|
// Multiply the field by coefficients and add into the result
|
||||||
|
if (switchToLhs)
|
||||||
|
{
|
||||||
|
forAll(fc, elemI)
|
||||||
|
{
|
||||||
|
result[fc[elemI]] += coeffs[elemI]*pnf[elemI];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
forAll(fc, elemI)
|
||||||
|
{
|
||||||
|
result[fc[elemI]] -= coeffs[elemI]*pnf[elemI];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (this->mixing() == mixingPlaneInterpolation::ZERO_GRADIENT)
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FatalErrorIn
|
||||||
|
(
|
||||||
|
"void jumpMixingPlaneFvPatchField<Type>::"
|
||||||
|
"initInterfaceMatrixUpdate\n"
|
||||||
|
"(\n"
|
||||||
|
" const scalarField& psiInternal,\n"
|
||||||
|
" scalarField& result,\n"
|
||||||
|
" const lduMatrix&,\n"
|
||||||
|
" const scalarField& coeffs,\n"
|
||||||
|
" const direction cmpt,\n"
|
||||||
|
" const Pstream::commsTypes commsType,\n"
|
||||||
|
" const bool switchToLhs\n"
|
||||||
|
") const"
|
||||||
|
) << "Unknown mixing type for patch " << this->patch().name()
|
||||||
|
<< " for field "
|
||||||
|
<< this->dimensionedInternalField().name()
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void jumpMixingPlaneFvPatchField<Type>::updateInterfaceMatrix
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix&,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,170 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
|
||||||
|
Description
|
||||||
|
MixingPlane interface patch field with a jump condition
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
jumpMixingPlaneFvPatchField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef jumpMixingPlaneFvPatchField_H
|
||||||
|
#define jumpMixingPlaneFvPatchField_H
|
||||||
|
|
||||||
|
#include "mixingPlaneFvPatchField.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class jumpMixingPlaneFvPatchField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class jumpMixingPlaneFvPatchField
|
||||||
|
:
|
||||||
|
public mixingPlaneFvPatchField<Type>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("jumpMixingPlane");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given jumpMixingPlaneFvPatchField
|
||||||
|
// onto a new patch
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const jumpMixingPlaneFvPatchField<Type>&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const jumpMixingPlaneFvPatchField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
(
|
||||||
|
const jumpMixingPlaneFvPatchField<Type>&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return the interface type
|
||||||
|
virtual const word& interfaceFieldType() const
|
||||||
|
{
|
||||||
|
return mixingPlaneFvPatchField<Type>::type();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//- Return the "jump" across the patch as a "half" field
|
||||||
|
virtual tmp<Field<Type> > jump() const = 0;
|
||||||
|
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Return neighbour patch field
|
||||||
|
virtual tmp<Field<Type> > patchNeighbourField() const;
|
||||||
|
|
||||||
|
//- Initialise neighbour matrix update
|
||||||
|
virtual void initInterfaceMatrixUpdate
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix& m,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes commsType,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Update result field based on interface functionality
|
||||||
|
virtual void updateInterfaceMatrix
|
||||||
|
(
|
||||||
|
const scalarField& psiInternal,
|
||||||
|
scalarField& result,
|
||||||
|
const lduMatrix&,
|
||||||
|
const scalarField& coeffs,
|
||||||
|
const direction cmpt,
|
||||||
|
const Pstream::commsTypes commsType,
|
||||||
|
const bool switchToLhs
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "jumpMixingPlaneFvPatchField.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Description
|
||||||
|
MixingPlane patch field, providing coupling with a jump condition
|
||||||
|
between arbitrary patches
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "jumpMixingPlaneFvPatchFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchFieldsTypeName(jumpMixingPlane);
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,67 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
jumpMixingPlaneFvPatchFields
|
||||||
|
|
||||||
|
Description
|
||||||
|
MixingPlane patch field, providing coupling with a jump condition
|
||||||
|
between arbitrary patches
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
jumpMixingPlaneFvPatchFields.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef jumpMixingPlaneFvPatchFields_H
|
||||||
|
#define jumpMixingPlaneFvPatchFields_H
|
||||||
|
|
||||||
|
#include "jumpMixingPlaneFvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(jumpMixingPlane)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
jumpMixingPlaneFvPatchField
|
||||||
|
|
||||||
|
Description
|
||||||
|
MixingPlane patch field, providing coupling with a jump condition
|
||||||
|
between arbitrary patches
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef jumpMixingPlaneFvPatchFieldsFwd_H
|
||||||
|
#define jumpMixingPlaneFvPatchFieldsFwd_H
|
||||||
|
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type> class jumpMixingPlaneFvPatchField;
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(jumpMixingPlane)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -324,24 +324,6 @@ mixingPlaneFvPatchField<Type>::mixingPlaneFvPatchField
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
// Return shadow field
|
|
||||||
template<class Type>
|
|
||||||
const mixingPlaneFvPatchField<Type>&
|
|
||||||
mixingPlaneFvPatchField<Type>::shadowPatchField() const
|
|
||||||
{
|
|
||||||
const GeometricField<Type, fvPatchField, volMesh>& fld =
|
|
||||||
static_cast<const GeometricField<Type, fvPatchField, volMesh>&>
|
|
||||||
(
|
|
||||||
this->internalField()
|
|
||||||
);
|
|
||||||
|
|
||||||
return refCast<const mixingPlaneFvPatchField<Type> >
|
|
||||||
(
|
|
||||||
fld.boundaryField()[mixingPlanePatch_.shadowIndex()]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
void mixingPlaneFvPatchField<Type>::autoMap
|
void mixingPlaneFvPatchField<Type>::autoMap
|
||||||
(
|
(
|
||||||
|
@ -371,6 +353,39 @@ void mixingPlaneFvPatchField<Type>::rmap
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Return shadow field
|
||||||
|
template<class Type>
|
||||||
|
const mixingPlaneFvPatchField<Type>&
|
||||||
|
mixingPlaneFvPatchField<Type>::shadowPatchField() const
|
||||||
|
{
|
||||||
|
const GeometricField<Type, fvPatchField, volMesh>& fld =
|
||||||
|
static_cast<const GeometricField<Type, fvPatchField, volMesh>&>
|
||||||
|
(
|
||||||
|
this->internalField()
|
||||||
|
);
|
||||||
|
|
||||||
|
return refCast<const mixingPlaneFvPatchField<Type> >
|
||||||
|
(
|
||||||
|
fld.boundaryField()[mixingPlanePatch_.shadowIndex()]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Return shadow field
|
||||||
|
template<class Type>
|
||||||
|
const mixingPlaneInterpolation::mixingType&
|
||||||
|
mixingPlaneFvPatchField<Type>::mixing() const
|
||||||
|
{
|
||||||
|
// If mixing type is unknown, read it
|
||||||
|
if (this->mixing_ == mixingPlaneInterpolation::MIXING_UNKNOWN)
|
||||||
|
{
|
||||||
|
this->readMixingType();
|
||||||
|
}
|
||||||
|
|
||||||
|
return mixing_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class Type>
|
template<class Type>
|
||||||
void mixingPlaneFvPatchField<Type>::updateCoeffs()
|
void mixingPlaneFvPatchField<Type>::updateCoeffs()
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,14 +90,6 @@ class mixingPlaneFvPatchField
|
||||||
//- Calculate flux mask and weights
|
//- Calculate flux mask and weights
|
||||||
void calcFluxMask() const;
|
void calcFluxMask() const;
|
||||||
|
|
||||||
// Return flux mask. Flux mask is calculated from master fluxes
|
|
||||||
// and relates to the mixing plane profile
|
|
||||||
const scalarField& fluxMask() const;
|
|
||||||
|
|
||||||
// Return flux weights. Flux weights relate to local faces and are
|
|
||||||
// used in weighted interpolation
|
|
||||||
const scalarField& fluxWeights() const;
|
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -186,9 +178,26 @@ public:
|
||||||
|
|
||||||
// Access
|
// Access
|
||||||
|
|
||||||
|
//- Return reference to mixingPlanePatch patch
|
||||||
|
const mixingPlaneFvPatch& mixingPlanePatch() const
|
||||||
|
{
|
||||||
|
return mixingPlanePatch_;
|
||||||
|
}
|
||||||
|
|
||||||
//- Return shadow patch field
|
//- Return shadow patch field
|
||||||
const mixingPlaneFvPatchField<Type>& shadowPatchField() const;
|
const mixingPlaneFvPatchField<Type>& shadowPatchField() const;
|
||||||
|
|
||||||
|
//- Return reference to mixing patch
|
||||||
|
const mixingPlaneInterpolation::mixingType& mixing() const;
|
||||||
|
|
||||||
|
//- Return flux mask. Flux mask is calculated from master fluxes
|
||||||
|
// and relates to the mixing plane profile
|
||||||
|
const scalarField& fluxMask() const;
|
||||||
|
|
||||||
|
//- Return flux weights. Flux weights relate to local faces
|
||||||
|
// and are used in weighted interpolation
|
||||||
|
const scalarField& fluxWeights() const;
|
||||||
|
|
||||||
|
|
||||||
// Evaluation functions
|
// Evaluation functions
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,9 @@ derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C
|
||||||
derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C
|
derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C
|
||||||
derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C
|
derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C
|
||||||
|
|
||||||
|
derivedFvPatchFields/ggiEnthalpyJump/ggiEnthalpyJumpFvPatchFields.C
|
||||||
|
derivedFvPatchFields/mixingPlaneEnthalpyJump/mixingPlaneEnthalpyJumpFvPatchFields.C
|
||||||
|
|
||||||
derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
|
derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
|
||||||
|
|
||||||
derivedFvPatchFields/temperatureDirectedInletOutletVelocity/temperatureDirectedInletOutletVelocityFvPatchVectorField.C
|
derivedFvPatchFields/temperatureDirectedInletOutletVelocity/temperatureDirectedInletOutletVelocityFvPatchVectorField.C
|
||||||
|
|
|
@ -0,0 +1,161 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "ggiEnthalpyJumpFvPatchField.H"
|
||||||
|
#include "IOmanip.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
ggiEnthalpyJumpFvPatchField<Type>::ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpGgiFvPatchField<Type>(p, iF),
|
||||||
|
rotating_(false),
|
||||||
|
jump_(this->size(), pTraits<Type>::zero)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
ggiEnthalpyJumpFvPatchField<Type>::ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpGgiFvPatchField<Type>(p, iF),
|
||||||
|
rotating_(dict.lookup("rotating")),
|
||||||
|
jump_(this->size(), pTraits<Type>::zero)
|
||||||
|
{
|
||||||
|
if (dict.found("value"))
|
||||||
|
{
|
||||||
|
fvPatchField<Type>::operator=
|
||||||
|
(
|
||||||
|
Field<Type>("value", dict, p.size())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->evaluate(Pstream::blocking);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
ggiEnthalpyJumpFvPatchField<Type>::ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const ggiEnthalpyJumpFvPatchField<Type>& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpGgiFvPatchField<Type>(ptf, p, iF, mapper),
|
||||||
|
rotating_(ptf.rotating_),
|
||||||
|
jump_(ptf.jump_, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
ggiEnthalpyJumpFvPatchField<Type>::ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const ggiEnthalpyJumpFvPatchField<Type>& ptf,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpGgiFvPatchField<Type>(ptf, iF),
|
||||||
|
rotating_(ptf.rotating_),
|
||||||
|
jump_(ptf.jump_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void ggiEnthalpyJumpFvPatchField<Type>::autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper& m
|
||||||
|
)
|
||||||
|
{
|
||||||
|
jumpGgiFvPatchField<Type>::autoMap(m);
|
||||||
|
jump_.autoMap(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void ggiEnthalpyJumpFvPatchField<Type>::rmap
|
||||||
|
(
|
||||||
|
const fvPatchField<Type>& ptf,
|
||||||
|
const labelList& addr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
jumpGgiFvPatchField<Type>::rmap(ptf, addr);
|
||||||
|
|
||||||
|
// rmap jump
|
||||||
|
const ggiEnthalpyJumpFvPatchField<Type>& ejPtf =
|
||||||
|
refCast<const ggiEnthalpyJumpFvPatchField<Type> >(ptf);
|
||||||
|
|
||||||
|
jump_.rmap(ejPtf.jump_, addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void ggiEnthalpyJumpFvPatchField<Type>::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
fvPatchField<Type>::write(os);
|
||||||
|
os.writeKeyword("patchType")
|
||||||
|
<< ggiFvPatch::typeName << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("rotating")
|
||||||
|
<< rotating_ << token::END_STATEMENT << nl;
|
||||||
|
|
||||||
|
IOstream::streamFormat fmt0 = os.format(IOstream::ASCII);
|
||||||
|
os.format(fmt0);
|
||||||
|
|
||||||
|
this->writeEntry("value", os);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,195 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::ggiEnthalpyJumpFvPatchField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Foam::ggiEnthalpyJumpFvPatchField
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
ggiEnthalpyJumpFvPatchField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef ggiEnthalpyJumpFvPatchField_H
|
||||||
|
#define ggiEnthalpyJumpFvPatchField_H
|
||||||
|
|
||||||
|
#include "jumpGgiFvPatchField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class ggiEnthalpyJumpFvPatchField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class ggiEnthalpyJumpFvPatchField
|
||||||
|
:
|
||||||
|
public jumpGgiFvPatchField<Type>
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Is the patch on the rotating side?
|
||||||
|
Switch rotating_;
|
||||||
|
|
||||||
|
//- "jump" field
|
||||||
|
Field<Type> jump_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("ggiEnthalpyJump");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given ggiEnthalpyJumpFvPatchField
|
||||||
|
// onto a new patch
|
||||||
|
ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const ggiEnthalpyJumpFvPatchField<Type>&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
ggiEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const ggiEnthalpyJumpFvPatchField<Type>&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchField<Type> > clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchField<Type> >
|
||||||
|
(
|
||||||
|
new ggiEnthalpyJumpFvPatchField<Type>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchField<Type> > clone
|
||||||
|
(
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchField<Type> >
|
||||||
|
(
|
||||||
|
new ggiEnthalpyJumpFvPatchField<Type>(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Is the patch rotating
|
||||||
|
bool rotating() const
|
||||||
|
{
|
||||||
|
return rotating_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the "jump" across the patch as a "half" field
|
||||||
|
virtual tmp<Field<Type> > jump() const
|
||||||
|
{
|
||||||
|
return jump_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Mapping functions
|
||||||
|
|
||||||
|
//- Map (and resize as needed) from self given a mapping object
|
||||||
|
virtual void autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Reverse map the given fvPatchField onto this fvPatchField
|
||||||
|
virtual void rmap
|
||||||
|
(
|
||||||
|
const fvPatchField<Type>&,
|
||||||
|
const labelList&
|
||||||
|
);
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Update the coefficients associated with the patch field
|
||||||
|
virtual void updateCoeffs();
|
||||||
|
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream&) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//- Specialisation of the jump-condition for the enthalpy
|
||||||
|
template<>
|
||||||
|
void ggiEnthalpyJumpFvPatchField<scalar>::updateCoeffs();
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "ggiEnthalpyJumpFvPatchField.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,107 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "ggiEnthalpyJumpFvPatchFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "surfaceFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makeTemplatePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
ggiEnthalpyJumpFvPatchScalarField
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<>
|
||||||
|
void Foam::ggiEnthalpyJumpFvPatchField<Foam::scalar>::updateCoeffs()
|
||||||
|
{
|
||||||
|
if (updated())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get access to relative and rotational velocity
|
||||||
|
const word UrelName("Urel");
|
||||||
|
const word UName("U");
|
||||||
|
|
||||||
|
if
|
||||||
|
(
|
||||||
|
!this->db().objectRegistry::found(UrelName)
|
||||||
|
|| !this->db().objectRegistry::found(UName)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Velocities not available, do not update
|
||||||
|
InfoIn
|
||||||
|
(
|
||||||
|
"void gradientEnthalpyFvPatchScalarField::"
|
||||||
|
"updateCoeffs(const vectorField& Up)"
|
||||||
|
) << "Velocity fields " << UrelName << " or "
|
||||||
|
<< UName << " not found. "
|
||||||
|
<< "Performing enthalpy value update" << endl;
|
||||||
|
|
||||||
|
jump_ = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const fvPatchVectorField& Urelp =
|
||||||
|
lookupPatchField<volVectorField, vector>(UrelName);
|
||||||
|
|
||||||
|
const fvPatchVectorField& Up =
|
||||||
|
lookupPatchField<volVectorField, vector>(UName);
|
||||||
|
|
||||||
|
if (rotating_)
|
||||||
|
{
|
||||||
|
jump_ =
|
||||||
|
mag(Up.patchInternalField())*mag(Urelp.patchInternalField())
|
||||||
|
- magSqr(Up.patchInternalField());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jump_ =
|
||||||
|
mag(Up.patchNeighbourField())*mag(Urelp.patchNeighbourField())
|
||||||
|
- magSqr(Up.patchNeighbourField());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jumpGgiFvPatchField<scalar>::updateCoeffs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef ggiEnthalpyJumpFvPatchFields_H
|
||||||
|
#define ggiEnthalpyJumpFvPatchFields_H
|
||||||
|
|
||||||
|
#include "ggiEnthalpyJumpFvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(ggiEnthalpyJump)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef ggiEnthalpyJumpFvPatchFieldsFwd_H
|
||||||
|
#define ggiEnthalpyJumpFvPatchFieldsFwd_H
|
||||||
|
|
||||||
|
#include "fvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type> class ggiEnthalpyJumpFvPatchField;
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(ggiEnthalpyJump)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,161 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "mixingPlaneEnthalpyJumpFvPatchField.H"
|
||||||
|
#include "IOmanip.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField<Type>::mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpMixingPlaneFvPatchField<Type>(p, iF),
|
||||||
|
rotating_(false),
|
||||||
|
jump_(this->size(), pTraits<Type>::zero)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField<Type>::mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpMixingPlaneFvPatchField<Type>(p, iF),
|
||||||
|
rotating_(dict.lookup("rotating")),
|
||||||
|
jump_(this->size(), pTraits<Type>::zero)
|
||||||
|
{
|
||||||
|
if (dict.found("value"))
|
||||||
|
{
|
||||||
|
fvPatchField<Type>::operator=
|
||||||
|
(
|
||||||
|
Field<Type>("value", dict, p.size())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this->evaluate(Pstream::blocking);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField<Type>::mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const mixingPlaneEnthalpyJumpFvPatchField<Type>& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<Type, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpMixingPlaneFvPatchField<Type>(ptf, p, iF, mapper),
|
||||||
|
rotating_(ptf.rotating_),
|
||||||
|
jump_(ptf.jump_, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField<Type>::mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const mixingPlaneEnthalpyJumpFvPatchField<Type>& ptf,
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
jumpMixingPlaneFvPatchField<Type>(ptf, iF),
|
||||||
|
rotating_(ptf.rotating_),
|
||||||
|
jump_(ptf.jump_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void mixingPlaneEnthalpyJumpFvPatchField<Type>::autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper& m
|
||||||
|
)
|
||||||
|
{
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::autoMap(m);
|
||||||
|
jump_.autoMap(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void mixingPlaneEnthalpyJumpFvPatchField<Type>::rmap
|
||||||
|
(
|
||||||
|
const fvPatchField<Type>& ptf,
|
||||||
|
const labelList& addr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
jumpMixingPlaneFvPatchField<Type>::rmap(ptf, addr);
|
||||||
|
|
||||||
|
// rmap jump
|
||||||
|
const mixingPlaneEnthalpyJumpFvPatchField<Type>& ejPtf =
|
||||||
|
refCast<const mixingPlaneEnthalpyJumpFvPatchField<Type> >(ptf);
|
||||||
|
|
||||||
|
jump_.rmap(ejPtf.jump_, addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
void mixingPlaneEnthalpyJumpFvPatchField<Type>::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
fvPatchField<Type>::write(os);
|
||||||
|
os.writeKeyword("patchType")
|
||||||
|
<< mixingPlaneFvPatch::typeName << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("rotating")
|
||||||
|
<< rotating_ << token::END_STATEMENT << nl;
|
||||||
|
|
||||||
|
IOstream::streamFormat fmt0 = os.format(IOstream::ASCII);
|
||||||
|
os.format(fmt0);
|
||||||
|
|
||||||
|
this->writeEntry("value", os);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,195 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Foam::mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef mixingPlaneEnthalpyJumpFvPatchField_H
|
||||||
|
#define mixingPlaneEnthalpyJumpFvPatchField_H
|
||||||
|
|
||||||
|
#include "jumpMixingPlaneFvPatchField.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class mixingPlaneEnthalpyJumpFvPatchField Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
class mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
:
|
||||||
|
public jumpMixingPlaneFvPatchField<Type>
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Is the patch on the rotating side?
|
||||||
|
Switch rotating_;
|
||||||
|
|
||||||
|
//- "jump" field
|
||||||
|
Field<Type> jump_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("mixingPlaneEnthalpyJump");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
// onto a new patch
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const mixingPlaneEnthalpyJumpFvPatchField<Type>&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<Type, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchField
|
||||||
|
(
|
||||||
|
const mixingPlaneEnthalpyJumpFvPatchField<Type>&,
|
||||||
|
const DimensionedField<Type, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchField<Type> > clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchField<Type> >
|
||||||
|
(
|
||||||
|
new mixingPlaneEnthalpyJumpFvPatchField<Type>(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchField<Type> > clone
|
||||||
|
(
|
||||||
|
const DimensionedField<Type, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchField<Type> >
|
||||||
|
(
|
||||||
|
new mixingPlaneEnthalpyJumpFvPatchField<Type>(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Is the patch rotating
|
||||||
|
bool rotating() const
|
||||||
|
{
|
||||||
|
return rotating_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return the "jump" across the patch as a "half" field
|
||||||
|
virtual tmp<Field<Type> > jump() const
|
||||||
|
{
|
||||||
|
return jump_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Mapping functions
|
||||||
|
|
||||||
|
//- Map (and resize as needed) from self given a mapping object
|
||||||
|
virtual void autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Reverse map the given fvPatchField onto this fvPatchField
|
||||||
|
virtual void rmap
|
||||||
|
(
|
||||||
|
const fvPatchField<Type>&,
|
||||||
|
const labelList&
|
||||||
|
);
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Update the coefficients associated with the patch field
|
||||||
|
virtual void updateCoeffs();
|
||||||
|
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream&) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//- Specialisation of the jump-condition for the enthalpy
|
||||||
|
template<>
|
||||||
|
void mixingPlaneEnthalpyJumpFvPatchField<scalar>::updateCoeffs();
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#ifdef NoRepository
|
||||||
|
# include "mixingPlaneEnthalpyJumpFvPatchField.C"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,107 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "mixingPlaneEnthalpyJumpFvPatchFields.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "surfaceFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makeTemplatePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
mixingPlaneEnthalpyJumpFvPatchScalarField
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<>
|
||||||
|
void Foam::mixingPlaneEnthalpyJumpFvPatchField<Foam::scalar>::updateCoeffs()
|
||||||
|
{
|
||||||
|
if (updated())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get access to relative and rotational velocity
|
||||||
|
const word UrelName("Urel");
|
||||||
|
const word UName("U");
|
||||||
|
|
||||||
|
if
|
||||||
|
(
|
||||||
|
!this->db().objectRegistry::found(UrelName)
|
||||||
|
|| !this->db().objectRegistry::found(UName)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Velocities not available, do not update
|
||||||
|
InfoIn
|
||||||
|
(
|
||||||
|
"void gradientEnthalpyFvPatchScalarField::"
|
||||||
|
"updateCoeffs(const vectorField& Up)"
|
||||||
|
) << "Velocity fields " << UrelName << " or "
|
||||||
|
<< UName << " not found. "
|
||||||
|
<< "Performing enthalpy value update" << endl;
|
||||||
|
|
||||||
|
jump_ = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const fvPatchVectorField& Urelp =
|
||||||
|
lookupPatchField<volVectorField, vector>(UrelName);
|
||||||
|
|
||||||
|
const fvPatchVectorField& Up =
|
||||||
|
lookupPatchField<volVectorField, vector>(UName);
|
||||||
|
|
||||||
|
if (rotating_)
|
||||||
|
{
|
||||||
|
jump_ =
|
||||||
|
mag(Up.patchInternalField())*mag(Urelp.patchInternalField())
|
||||||
|
- magSqr(Up.patchInternalField());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jump_ =
|
||||||
|
mag(Up.patchNeighbourField())*mag(Urelp.patchNeighbourField())
|
||||||
|
- magSqr(Up.patchNeighbourField());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jumpMixingPlaneFvPatchField<scalar>::updateCoeffs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef mixingPlaneEnthalpyJumpFvPatchFields_H
|
||||||
|
#define mixingPlaneEnthalpyJumpFvPatchFields_H
|
||||||
|
|
||||||
|
#include "mixingPlaneEnthalpyJumpFvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(mixingPlaneEnthalpyJump)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | foam-extend: Open Source CFD
|
||||||
|
\\ / O peration | Version: 3.2
|
||||||
|
\\ / A nd | Web: http://www.foam-extend.org
|
||||||
|
\\/ M anipulation | For copyright notice see file Copyright
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of foam-extend.
|
||||||
|
|
||||||
|
foam-extend is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by the
|
||||||
|
Free Software Foundation, either version 3 of the License, or (at your
|
||||||
|
option) any later version.
|
||||||
|
|
||||||
|
foam-extend is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Author
|
||||||
|
Ilaria De Dominicis, General Electric Power, (March 2016)
|
||||||
|
|
||||||
|
Contributor
|
||||||
|
Hrvoje Jasak, Wikki Ltd.
|
||||||
|
|
||||||
|
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef mixingPlaneEnthalpyJumpFvPatchFieldsFwd_H
|
||||||
|
#define mixingPlaneEnthalpyJumpFvPatchFieldsFwd_H
|
||||||
|
|
||||||
|
#include "fvPatchField.H"
|
||||||
|
#include "fieldTypes.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<class Type> class mixingPlaneEnthalpyJumpFvPatchField;
|
||||||
|
|
||||||
|
makePatchTypeFieldTypedefs(mixingPlaneEnthalpyJump)
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
Reference in a new issue