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
|
||||
Vuko Vukcevic
|
||||
Robert Keser
|
||||
Cesare Guardino
|
||||
Ilaria De Dominicis
|
||||
|
|
|
@ -123,9 +123,11 @@ $(constraintFvPatchFields)/wedge/wedgeFvPatchScalarField.C
|
|||
$(constraintFvPatchFields)/wedge/wedgeFvPatchVectorNFields.C
|
||||
$(constraintFvPatchFields)/ggi/ggiFvPatchFields.C
|
||||
$(constraintFvPatchFields)/ggi/ggiFvPatchVectorNFields.C
|
||||
$(constraintFvPatchFields)/jumpGgi/jumpGgiFvPatchFields.C
|
||||
$(constraintFvPatchFields)/cyclicGgi/cyclicGgiFvPatchFields.C
|
||||
$(constraintFvPatchFields)/overlapGgi/overlapGgiFvPatchFields.C
|
||||
$(constraintFvPatchFields)/mixingPlane/mixingPlaneFvPatchFields.C
|
||||
$(constraintFvPatchFields)/jumpMixingPlane/jumpMixingPlaneFvPatchFields.C
|
||||
$(constraintFvPatchFields)/regionCoupling/regionCouplingFvPatchFields.C
|
||||
|
||||
derivedFvPatchFields = $(fvPatchFields)/derived
|
||||
|
|
|
@ -128,6 +128,12 @@ public:
|
|||
|
||||
// Access
|
||||
|
||||
//- Return reference to GGI patch
|
||||
const ggiFvPatch& ggiPatch() const
|
||||
{
|
||||
return ggiPatch_;
|
||||
}
|
||||
|
||||
//- Return shadow patch field
|
||||
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 * * * * * * * * * * * * * //
|
||||
|
||||
// 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>
|
||||
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>
|
||||
void mixingPlaneFvPatchField<Type>::updateCoeffs()
|
||||
{
|
||||
|
|
|
@ -90,14 +90,6 @@ class mixingPlaneFvPatchField
|
|||
//- Calculate flux mask and weights
|
||||
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:
|
||||
|
||||
|
@ -186,9 +178,26 @@ public:
|
|||
|
||||
// Access
|
||||
|
||||
//- Return reference to mixingPlanePatch patch
|
||||
const mixingPlaneFvPatch& mixingPlanePatch() const
|
||||
{
|
||||
return mixingPlanePatch_;
|
||||
}
|
||||
|
||||
//- Return shadow patch field
|
||||
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
|
||||
|
||||
|
|
|
@ -22,6 +22,9 @@ derivedFvPatchFields/fixedInternalEnergy/fixedInternalEnergyFvPatchScalarField.C
|
|||
derivedFvPatchFields/gradientInternalEnergy/gradientInternalEnergyFvPatchScalarField.C
|
||||
derivedFvPatchFields/mixedInternalEnergy/mixedInternalEnergyFvPatchScalarField.C
|
||||
|
||||
derivedFvPatchFields/ggiEnthalpyJump/ggiEnthalpyJumpFvPatchFields.C
|
||||
derivedFvPatchFields/mixingPlaneEnthalpyJump/mixingPlaneEnthalpyJumpFvPatchFields.C
|
||||
|
||||
derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.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