BUGFIX: Seg-fault in multiphaseInterFoam. Removed duplicate alphaContactAngle BC

This commit is contained in:
Henrik Rusche 2015-05-25 11:22:57 +02:00
parent a9fefbe25b
commit 67a8323582
7 changed files with 51 additions and 40 deletions

View file

@ -1,5 +1,5 @@
multiphaseMixture/phase/phase.C
multiphaseMixture/alphaContactAngle/alphaContactAngleFvPatchScalarField.C
multiphaseMixture/multiphaseAlphaContactAngle/multiphaseAlphaContactAngleFvPatchScalarField.C
multiphaseMixture/multiphaseMixture.C
multiphaseInterFoam.C

View file

@ -2,7 +2,7 @@ EXE_INC = \
-I../interFoam \
-ImultiphaseMixture \
-ImultiphaseMixture/phase \
-ImultiphaseMixture/alphaContactAngle \
-ImultiphaseMixture/multiphaseAlphaContactAngle \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \

View file

@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
#include "alphaContactAngleFvPatchScalarField.H"
#include "multiphaseAlphaContactAngleFvPatchScalarField.H"
#include "addToRunTimeSelectionTable.H"
#include "fvPatchFieldMapper.H"
@ -32,7 +32,8 @@ License
namespace Foam
{
alphaContactAngleFvPatchScalarField::interfaceThetaProps::interfaceThetaProps
multiphaseAlphaContactAngleFvPatchScalarField::interfaceThetaProps::
interfaceThetaProps
(
Istream& is
)
@ -47,7 +48,7 @@ alphaContactAngleFvPatchScalarField::interfaceThetaProps::interfaceThetaProps
Istream& operator>>
(
Istream& is,
alphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
multiphaseAlphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
)
{
is >> tp.theta0_ >> tp.uTheta_ >> tp.thetaA_ >> tp.thetaR_;
@ -58,7 +59,8 @@ Istream& operator>>
Ostream& operator<<
(
Ostream& os,
const alphaContactAngleFvPatchScalarField::interfaceThetaProps& tp
const multiphaseAlphaContactAngleFvPatchScalarField::
interfaceThetaProps& tp
)
{
os << tp.theta0_ << token::SPACE
@ -72,7 +74,8 @@ Ostream& operator<<
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
multiphaseAlphaContactAngleFvPatchScalarField::
multiphaseAlphaContactAngleFvPatchScalarField
(
const fvPatch& p,
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 DimensionedField<scalar, volMesh>& iF,
const fvPatchFieldMapper& mapper
@ -95,7 +99,8 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
{}
alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
multiphaseAlphaContactAngleFvPatchScalarField::
multiphaseAlphaContactAngleFvPatchScalarField
(
const fvPatch& p,
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
)
:
@ -122,7 +128,7 @@ alphaContactAngleFvPatchScalarField::alphaContactAngleFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
void multiphaseAlphaContactAngleFvPatchScalarField::write(Ostream& os) const
{
fvPatchScalarField::write(os);
os.writeKeyword("thetaProperties")
@ -133,7 +139,12 @@ void alphaContactAngleFvPatchScalarField::write(Ostream& os) const
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchScalarField, alphaContactAngleFvPatchScalarField);
makePatchTypeField
(
fvPatchScalarField,
multiphaseAlphaContactAngleFvPatchScalarField
);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View file

@ -22,19 +22,19 @@ License
along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::alphaContactAngleFvPatchScalarField
Foam::multiphaseAlphaContactAngleFvPatchScalarField
Description
Contact-angle boundary condition for multi-phase interface-capturing
simulations. Used in conjuction with multiphaseMixture.
SourceFiles
alphaContactAngleFvPatchScalarField.C
multiphaseAlphaContactAngleFvPatchScalarField.C
\*---------------------------------------------------------------------------*/
#ifndef alphaContactAngleFvPatchScalarField_H
#define alphaContactAngleFvPatchScalarField_H
#ifndef multiphaseAlphaContactAngleFvPatchScalarField_H
#define multiphaseAlphaContactAngleFvPatchScalarField_H
#include "zeroGradientFvPatchFields.H"
#include "multiphaseMixture.H"
@ -48,7 +48,7 @@ namespace Foam
Class alphaContactAngleFvPatch Declaration
\*---------------------------------------------------------------------------*/
class alphaContactAngleFvPatchScalarField
class multiphaseAlphaContactAngleFvPatchScalarField
:
public zeroGradientFvPatchScalarField
{
@ -132,31 +132,31 @@ private:
public:
//- Runtime type information
TypeName("alphaContactAngle");
TypeName("multiphaseAlphaContactAngle");
// Constructors
//- Construct from patch and internal field
alphaContactAngleFvPatchScalarField
multiphaseAlphaContactAngleFvPatchScalarField
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&
);
//- Construct from patch, internal field and dictionary
alphaContactAngleFvPatchScalarField
multiphaseAlphaContactAngleFvPatchScalarField
(
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const dictionary&
);
//- Construct by mapping given alphaContactAngleFvPatchScalarField
//- Construct by mapping given multiphaseAlphaContactAngleFvPatchScalarField
// onto a new patch
alphaContactAngleFvPatchScalarField
multiphaseAlphaContactAngleFvPatchScalarField
(
const alphaContactAngleFvPatchScalarField&,
const multiphaseAlphaContactAngleFvPatchScalarField&,
const fvPatch&,
const DimensionedField<scalar, volMesh>&,
const fvPatchFieldMapper&
@ -167,14 +167,14 @@ public:
{
return tmp<fvPatchScalarField>
(
new alphaContactAngleFvPatchScalarField(*this)
new multiphaseAlphaContactAngleFvPatchScalarField(*this)
);
}
//- Construct as copy setting internal field reference
alphaContactAngleFvPatchScalarField
multiphaseAlphaContactAngleFvPatchScalarField
(
const alphaContactAngleFvPatchScalarField&,
const multiphaseAlphaContactAngleFvPatchScalarField&,
const DimensionedField<scalar, volMesh>&
);
@ -186,7 +186,7 @@ public:
{
return tmp<fvPatchScalarField>
(
new alphaContactAngleFvPatchScalarField(*this, iF)
new multiphaseAlphaContactAngleFvPatchScalarField(*this, iF)
);
}

View file

@ -24,7 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "multiphaseMixture.H"
#include "alphaContactAngleFvPatchScalarField.H"
#include "multiphaseAlphaContactAngleFvPatchScalarField.H"
#include "Time.H"
#include "subCycle.H"
#include "fvCFD.H"
@ -367,10 +367,10 @@ void Foam::multiphaseMixture::correctContactAngle
forAll(boundary, patchi)
{
if (typeid(gbf[patchi]) == typeid(alphaContactAngleFvPatchScalarField))
if (typeid(gbf[patchi]) == typeid(multiphaseAlphaContactAngleFvPatchScalarField))
{
const alphaContactAngleFvPatchScalarField& acap =
refCast<const alphaContactAngleFvPatchScalarField>(gbf[patchi]);
const multiphaseAlphaContactAngleFvPatchScalarField& acap =
refCast<const multiphaseAlphaContactAngleFvPatchScalarField>(gbf[patchi]);
vectorField& nHatPatch = nHatb[patchi];
@ -378,7 +378,7 @@ void Foam::multiphaseMixture::correctContactAngle
mesh_.Sf().boundaryField()[patchi]
/mesh_.magSf().boundaryField()[patchi];
alphaContactAngleFvPatchScalarField::thetaPropsTable::
multiphaseAlphaContactAngleFvPatchScalarField::thetaPropsTable::
const_iterator tp =
acap.thetaProps().find(interfacePair(alpha1, alpha2));

View file

@ -2294,19 +2294,19 @@ boundaryField
{
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 );
value uniform 0;
}
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 );
value uniform 0;
}
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 );
value uniform 0;
}

View file

@ -34226,19 +34226,19 @@ boundaryField
{
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 );
value uniform 0;
}
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 );
value uniform 0;
}
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 );
value uniform 0;
}