BUGFIX: Seg-fault in multiphaseInterFoam. Removed duplicate alphaContactAngle BC
This commit is contained in:
parent
a9fefbe25b
commit
67a8323582
7 changed files with 51 additions and 40 deletions
|
@ -1,5 +1,5 @@
|
||||||
multiphaseMixture/phase/phase.C
|
multiphaseMixture/phase/phase.C
|
||||||
multiphaseMixture/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
|
multiphaseMixture/multiphaseAlphaContactAngle/multiphaseAlphaContactAngleFvPatchScalarField.C
|
||||||
multiphaseMixture/multiphaseMixture.C
|
multiphaseMixture/multiphaseMixture.C
|
||||||
multiphaseInterFoam.C
|
multiphaseInterFoam.C
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ EXE_INC = \
|
||||||
-I../interFoam \
|
-I../interFoam \
|
||||||
-ImultiphaseMixture \
|
-ImultiphaseMixture \
|
||||||
-ImultiphaseMixture/phase \
|
-ImultiphaseMixture/phase \
|
||||||
-ImultiphaseMixture/alphaContactAngle \
|
-ImultiphaseMixture/multiphaseAlphaContactAngle \
|
||||||
-I$(LIB_SRC)/transportModels \
|
-I$(LIB_SRC)/transportModels \
|
||||||
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
||||||
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
||||||
|
|
|
@ -23,7 +23,7 @@ License
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "alphaContactAngleFvPatchScalarField.H"
|
#include "multiphaseAlphaContactAngleFvPatchScalarField.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
#include "fvPatchFieldMapper.H"
|
#include "fvPatchFieldMapper.H"
|
||||||
|
|
||||||
|
@ -32,7 +32,8 @@ License
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
|
||||||
alphaContactAngleFvPatchScalarField::interfaceThetaProps::interfaceThetaProps
|
multiphaseAlphaContactAngleFvPatchScalarField::interfaceThetaProps::
|
||||||
|
interfaceThetaProps
|
||||||
(
|
(
|
||||||
Istream& is
|
Istream& is
|
||||||
)
|
)
|
||||||
|
@ -47,7 +48,7 @@ alphaContactAngleFvPatchScalarField::interfaceThetaProps::interfaceThetaProps
|
||||||
Istream& operator>>
|
Istream& operator>>
|
||||||
(
|
(
|
||||||
Istream& is,
|
Istream& is,
|
||||||
alphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
|
multiphaseAlphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
is >> tp.theta0_ >> tp.uTheta_ >> tp.thetaA_ >> tp.thetaR_;
|
is >> tp.theta0_ >> tp.uTheta_ >> tp.thetaA_ >> tp.thetaR_;
|
||||||
|
@ -58,7 +59,8 @@ Istream& operator>>
|
||||||
Ostream& operator<<
|
Ostream& operator<<
|
||||||
(
|
(
|
||||||
Ostream& os,
|
Ostream& os,
|
||||||
const alphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
|
const multiphaseAlphaContactAngleFvPatchScalarField::
|
||||||
|
interfaceThetaProps& tp
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
os << tp.theta0_ << token::SPACE
|
os << tp.theta0_ << token::SPACE
|
||||||
|
@ -72,7 +74,8 @@ Ostream& operator<<
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField::
|
||||||
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
@ -82,9 +85,10 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField::
|
||||||
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const alphaContactAngleFvPatchScalarField& gcpsf,
|
const multiphaseAlphaContactAngleFvPatchScalarField& gcpsf,
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
const fvPatchFieldMapper& mapper
|
const fvPatchFieldMapper& mapper
|
||||||
|
@ -95,7 +99,8 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField::
|
||||||
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch& p,
|
const fvPatch& p,
|
||||||
const DimensionedField<scalar, volMesh>& iF,
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
@ -109,9 +114,10 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField::
|
||||||
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const alphaContactAngleFvPatchScalarField& gcpsf,
|
const multiphaseAlphaContactAngleFvPatchScalarField& gcpsf,
|
||||||
const DimensionedField<scalar, volMesh>& iF
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
|
@ -122,7 +128,7 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
|
void multiphaseAlphaContactAngleFvPatchScalarField::write(Ostream& os) const
|
||||||
{
|
{
|
||||||
fvPatchScalarField::write(os);
|
fvPatchScalarField::write(os);
|
||||||
os.writeKeyword("thetaProperties")
|
os.writeKeyword("thetaProperties")
|
||||||
|
@ -133,7 +139,12 @@ void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
makePatchTypeField(fvPatchScalarField, alphaContactAngleFvPatchScalarField);
|
makePatchTypeField
|
||||||
|
(
|
||||||
|
fvPatchScalarField,
|
||||||
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
|
@ -22,19 +22,19 @@ License
|
||||||
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
Class
|
Class
|
||||||
Foam::alphaContactAngleFvPatchScalarField
|
Foam::multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Contact-angle boundary condition for multi-phase interface-capturing
|
Contact-angle boundary condition for multi-phase interface-capturing
|
||||||
simulations. Used in conjuction with multiphaseMixture.
|
simulations. Used in conjuction with multiphaseMixture.
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
alphaContactAngleFvPatchScalarField.C
|
multiphaseAlphaContactAngleFvPatchScalarField.C
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#ifndef alphaContactAngleFvPatchScalarField_H
|
#ifndef multiphaseAlphaContactAngleFvPatchScalarField_H
|
||||||
#define alphaContactAngleFvPatchScalarField_H
|
#define multiphaseAlphaContactAngleFvPatchScalarField_H
|
||||||
|
|
||||||
#include "zeroGradientFvPatchFields.H"
|
#include "zeroGradientFvPatchFields.H"
|
||||||
#include "multiphaseMixture.H"
|
#include "multiphaseMixture.H"
|
||||||
|
@ -48,7 +48,7 @@ namespace Foam
|
||||||
Class alphaContactAngleFvPatch Declaration
|
Class alphaContactAngleFvPatch Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
class alphaContactAngleFvPatchScalarField
|
class multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
:
|
:
|
||||||
public zeroGradientFvPatchScalarField
|
public zeroGradientFvPatchScalarField
|
||||||
{
|
{
|
||||||
|
@ -132,31 +132,31 @@ private:
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
TypeName("alphaContactAngle");
|
TypeName("multiphaseAlphaContactAngle");
|
||||||
|
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
||||||
//- Construct from patch and internal field
|
//- Construct from patch and internal field
|
||||||
alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct from patch, internal field and dictionary
|
//- Construct from patch, internal field and dictionary
|
||||||
alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&,
|
const DimensionedField<scalar, volMesh>&,
|
||||||
const dictionary&
|
const dictionary&
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Construct by mapping given alphaContactAngleFvPatchScalarField
|
//- Construct by mapping given multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
// onto a new patch
|
// onto a new patch
|
||||||
alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const alphaContactAngleFvPatchScalarField&,
|
const multiphaseAlphaContactAngleFvPatchScalarField&,
|
||||||
const fvPatch&,
|
const fvPatch&,
|
||||||
const DimensionedField<scalar, volMesh>&,
|
const DimensionedField<scalar, volMesh>&,
|
||||||
const fvPatchFieldMapper&
|
const fvPatchFieldMapper&
|
||||||
|
@ -167,14 +167,14 @@ public:
|
||||||
{
|
{
|
||||||
return tmp<fvPatchScalarField>
|
return tmp<fvPatchScalarField>
|
||||||
(
|
(
|
||||||
new alphaContactAngleFvPatchScalarField(*this)
|
new multiphaseAlphaContactAngleFvPatchScalarField(*this)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//- Construct as copy setting internal field reference
|
//- Construct as copy setting internal field reference
|
||||||
alphaContactAngleFvPatchScalarField
|
multiphaseAlphaContactAngleFvPatchScalarField
|
||||||
(
|
(
|
||||||
const alphaContactAngleFvPatchScalarField&,
|
const multiphaseAlphaContactAngleFvPatchScalarField&,
|
||||||
const DimensionedField<scalar, volMesh>&
|
const DimensionedField<scalar, volMesh>&
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -186,7 +186,7 @@ public:
|
||||||
{
|
{
|
||||||
return tmp<fvPatchScalarField>
|
return tmp<fvPatchScalarField>
|
||||||
(
|
(
|
||||||
new alphaContactAngleFvPatchScalarField(*this, iF)
|
new multiphaseAlphaContactAngleFvPatchScalarField(*this, iF)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ License
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#include "multiphaseMixture.H"
|
#include "multiphaseMixture.H"
|
||||||
#include "alphaContactAngleFvPatchScalarField.H"
|
#include "multiphaseAlphaContactAngleFvPatchScalarField.H"
|
||||||
#include "Time.H"
|
#include "Time.H"
|
||||||
#include "subCycle.H"
|
#include "subCycle.H"
|
||||||
#include "fvCFD.H"
|
#include "fvCFD.H"
|
||||||
|
@ -367,10 +367,10 @@ void Foam::multiphaseMixture::correctContactAngle
|
||||||
|
|
||||||
forAll(boundary, patchi)
|
forAll(boundary, patchi)
|
||||||
{
|
{
|
||||||
if (typeid(gbf[patchi]) == typeid(alphaContactAngleFvPatchScalarField))
|
if (typeid(gbf[patchi]) == typeid(multiphaseAlphaContactAngleFvPatchScalarField))
|
||||||
{
|
{
|
||||||
const alphaContactAngleFvPatchScalarField& acap =
|
const multiphaseAlphaContactAngleFvPatchScalarField& acap =
|
||||||
refCast<const alphaContactAngleFvPatchScalarField>(gbf[patchi]);
|
refCast<const multiphaseAlphaContactAngleFvPatchScalarField>(gbf[patchi]);
|
||||||
|
|
||||||
vectorField& nHatPatch = nHatb[patchi];
|
vectorField& nHatPatch = nHatb[patchi];
|
||||||
|
|
||||||
|
@ -378,7 +378,7 @@ void Foam::multiphaseMixture::correctContactAngle
|
||||||
mesh_.Sf().boundaryField()[patchi]
|
mesh_.Sf().boundaryField()[patchi]
|
||||||
/mesh_.magSf().boundaryField()[patchi];
|
/mesh_.magSf().boundaryField()[patchi];
|
||||||
|
|
||||||
alphaContactAngleFvPatchScalarField::thetaPropsTable::
|
multiphaseAlphaContactAngleFvPatchScalarField::thetaPropsTable::
|
||||||
const_iterator tp =
|
const_iterator tp =
|
||||||
acap.thetaProps().find(interfacePair(alpha1, alpha2));
|
acap.thetaProps().find(interfacePair(alpha1, alpha2));
|
||||||
|
|
||||||
|
|
|
@ -2294,19 +2294,19 @@ boundaryField
|
||||||
{
|
{
|
||||||
leftWall
|
leftWall
|
||||||
{
|
{
|
||||||
type alphaContactAngle;
|
type multiphaseAlphaContactAngle;
|
||||||
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
rightWall
|
rightWall
|
||||||
{
|
{
|
||||||
type alphaContactAngle;
|
type multiphaseAlphaContactAngle;
|
||||||
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type alphaContactAngle;
|
type multiphaseAlphaContactAngle;
|
||||||
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34226,19 +34226,19 @@ boundaryField
|
||||||
{
|
{
|
||||||
leftWall
|
leftWall
|
||||||
{
|
{
|
||||||
type alphaContactAngle;
|
type multiphaseAlphaContactAngle;
|
||||||
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
rightWall
|
rightWall
|
||||||
{
|
{
|
||||||
type alphaContactAngle;
|
type multiphaseAlphaContactAngle;
|
||||||
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
lowerWall
|
lowerWall
|
||||||
{
|
{
|
||||||
type alphaContactAngle;
|
type multiphaseAlphaContactAngle;
|
||||||
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
thetaProperties ( ( water air ) 90 0 0 0 ( oil air ) 90 0 0 0 ( mercury air ) 90 0 0 0 ( water oil ) 90 0 0 0 ( water mercury ) 90 0 0 0 ( oil mercury ) 90 0 0 0 );
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue