Merge remote-tracking branch 'origin/nextRelease_philipc' into nextRelease

Conflicts:
	src/Allwmake
This commit is contained in:
Hrvoje Jasak 2013-10-29 10:20:25 +00:00
commit f7ad627f7f
1400 changed files with 225315 additions and 706439 deletions

View file

@ -1,9 +0,0 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
set -x
wmake libso materialModels
wmake newStressedFoam
wmake newContactStressFoam

View file

@ -1,237 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2007 Hrvoje Jasak
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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 2 of the License, or (at your
option) any later version.
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Class
componentReference
Description
Class contains data for a component reference as used in stress
analysis solvers.
SourceFiles
componentReferenceI.H
componentReference.C
componentReferenceIO.C
\*---------------------------------------------------------------------------*/
#ifndef componentReference_H
#define componentReference_H
#include "polyPatchID.H"
#include "fvMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class componentReference Declaration
\*---------------------------------------------------------------------------*/
class componentReference
{
// Private data
//- Patch ID
polyPatchID patchID_;
//- Face index
label faceIndex_;
//- Direction
direction dir_;
//- Value in direction
scalar value_;
// Private Member Functions
//- Create direction given a name
direction getDir(const dictionary& dict) const
{
word dirName(dict.lookup("direction"));
if (dirName == "x" || dirName == "X")
{
return vector::X;
}
else if (dirName == "y" || dirName == "Y")
{
return vector::Y;
}
else if (dirName == "z" || dirName == "Z")
{
return vector::Z;
}
else
{
FatalIOErrorIn
(
"vector::component componentReference::getComp("
"const word& dirName) const",
dict
) << "Direction " << dirName << " not recognised. Please "
<< "use x, y or z" << abort(FatalIOError);
// Dummy return to keep compiler happy
return vector::X;
}
}
//- Check if patch face is in range
void checkPatchFace(const fvMesh& mesh) const
{
if
(
!patchID_.active()
|| faceIndex_ >= mesh.boundaryMesh()[patchID_.index()].size()
)
{
FatalErrorIn
(
"void checkPatchFace(const componentReference::fvMesh&)"
"const"
) << "Non-existing patch or index out of range."
<< abort(FatalError);
}
}
public:
// Public classes
//- Class used for the read-construction of
// PtrLists of componentReference
class iNew
{
const fvMesh& mesh_;
public:
iNew(const fvMesh& mesh)
:
mesh_(mesh)
{}
autoPtr<componentReference> operator()(Istream& is) const
{
dictionary crDict(is);
autoPtr<componentReference> cr
(
new componentReference(mesh_, crDict)
);
return cr;
}
};
// Constructors
//- Construct from components
componentReference
(
const fvMesh& mesh,
const word& patchName,
const label faceIndex,
const direction dir,
const scalar value
)
:
patchID_(patchName, mesh.boundaryMesh()),
faceIndex_(faceIndex),
dir_(dir),
value_(value)
{
checkPatchFace(mesh);
}
//- Construct from dictionary
componentReference
(
const fvMesh& mesh,
const dictionary& dict
)
:
patchID_(dict.lookup("patch"), mesh.boundaryMesh()),
faceIndex_(readLabel(dict.lookup("face"))),
dir_(getDir(dict)),
value_(readScalar(dict.lookup("value")))
{
checkPatchFace(mesh);
}
//- Clone
autoPtr<componentReference> clone() const
{
return autoPtr<componentReference>(new componentReference(*this));
}
// Destructor - default
// Member Functions
//- Return patch index
label patchIndex() const
{
return patchID_.index();
}
//- Return face index
label faceIndex() const
{
return faceIndex_;
}
//- Return direction
direction dir() const
{
return dir_;
}
//- Return value
scalar value() const
{
return value_;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View file

@ -1,265 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2004-2007 Hrvoje Jasak
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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 2 of the License, or (at your
option) any later version.
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Description
\*---------------------------------------------------------------------------*/
#include "cohesiveLawFvPatchVectorField.H"
#include "addToRunTimeSelectionTable.H"
#include "volFields.H"
#include "rheologyModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
cohesiveLawFvPatchVectorField::cohesiveLawFvPatchVectorField
(
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF
)
:
fixedGradientFvPatchVectorField(p, iF),
cohesiveLawPtr_(NULL),
relaxationFactor_(1.0),
traction_(p.size(), vector::zero)
{}
cohesiveLawFvPatchVectorField::cohesiveLawFvPatchVectorField
(
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF,
const dictionary& dict
)
:
fixedGradientFvPatchVectorField(p, iF),
cohesiveLawPtr_
(
cohesiveLaw::New(dict.lookup("cohesiveLaw"), dict).ptr()
),
relaxationFactor_(readScalar(dict.lookup("relaxationFactor"))),
traction_(p.size(), vector::zero)
{
fvPatchVectorField::operator=(patchInternalField());
gradient() = vector::zero;
}
cohesiveLawFvPatchVectorField::cohesiveLawFvPatchVectorField
(
const cohesiveLawFvPatchVectorField& cpf
)
:
fixedGradientFvPatchVectorField(cpf),
cohesiveLawPtr_(cpf.cohesiveLawPtr_->clone().ptr()),
relaxationFactor_(cpf.relaxationFactor_),
traction_(cpf.traction_)
{}
cohesiveLawFvPatchVectorField::cohesiveLawFvPatchVectorField
(
const cohesiveLawFvPatchVectorField& cpf,
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
fixedGradientFvPatchVectorField(cpf, p, iF, mapper),
cohesiveLawPtr_(cpf.cohesiveLawPtr_->clone().ptr()),
relaxationFactor_(cpf.relaxationFactor_),
traction_(cpf.traction_, mapper)
{}
cohesiveLawFvPatchVectorField::cohesiveLawFvPatchVectorField
(
const cohesiveLawFvPatchVectorField& cpf,
const DimensionedField<vector, volMesh>& iF
)
:
fixedGradientFvPatchVectorField(cpf, iF),
cohesiveLawPtr_(cpf.cohesiveLawPtr_->clone().ptr()),
relaxationFactor_(cpf.relaxationFactor_),
traction_(cpf.traction_)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
const cohesiveLaw& cohesiveLawFvPatchVectorField::law() const
{
if (!cohesiveLawPtr_)
{
FatalErrorIn
(
"const cohesiveLaw& cohesiveLawFvPatchVectorField::law() const"
) << "Law pointer not set" << abort(FatalError);
}
return *cohesiveLawPtr_;
}
void cohesiveLawFvPatchVectorField::autoMap
(
const fvPatchFieldMapper& m
)
{
if (cohesiveLawPtr_ == NULL)
{
FatalErrorIn("cohesiveFvPatchVectorField::autoMap")
<< "NULL cohesive law"
<< abort(FatalError);
}
fixedGradientFvPatchVectorField::autoMap(m);
traction_.autoMap(m);
}
// Reverse-map the given fvPatchField onto this fvPatchField
void cohesiveLawFvPatchVectorField::rmap
(
const fvPatchVectorField& ptf,
const labelList& addr
)
{
fixedGradientFvPatchVectorField::rmap(ptf, addr);
const cohesiveLawFvPatchVectorField& dmptf =
refCast<const cohesiveLawFvPatchVectorField>(ptf);
// No need to grab the cohesive zone pointer more than once
if (!cohesiveLawPtr_)
{
cohesiveLawPtr_ = dmptf.cohesiveLawPtr_->clone().ptr();
relaxationFactor_ = dmptf.relaxationFactor_;
}
traction_.rmap(dmptf.traction_, addr);
}
// Update the coefficients associated with the patch field
void cohesiveLawFvPatchVectorField::updateCoeffs()
{
if (updated())
{
return;
}
// Looking up rheology
const fvPatchField<scalar>& mu =
lookupPatchField<volScalarField, scalar>("mu");
const fvPatchField<scalar>& lambda =
lookupPatchField<volScalarField, scalar>("lambda");
vectorField n = patch().nf();
const fvPatchField<tensor>& gradU =
lookupPatchField<volTensorField, tensor>("grad(U)");
// Patch displacement
const vectorField& U = *this;
// Patch stress
tensorField sigma = mu*(gradU + gradU.T()) + I*(lambda*tr(gradU));
// Normal stress component
scalarField sigmaN = (n & (n & sigma));
scalarField delta = -(n & U);
label sizeByTwo = patch().size()/2;
for(label i = 0; i < sizeByTwo; i++)
{
scalar tmp = delta[i];
delta[i] += delta[sizeByTwo + i];
delta[sizeByTwo + i] += tmp;
}
forAll (traction_, faceI)
{
if (delta[faceI] < 0)
{
// Return from traction to symmetryPlane??
traction_[faceI] = law().sigmaMax().value()*n[faceI];
}
else if(delta[faceI] > law().deltaC().value())
{
// Traction free
traction_[faceI] = vector::zero;
}
else
{
// Calculate cohesive traction from cohesive zone model
traction_[faceI] = law().traction(delta[faceI])*n[faceI];
}
}
gradient() =
(
traction_
- (n & (mu*gradU.T() - (mu + lambda)*gradU))
- n*lambda*tr(gradU)
)/(2.0*mu + lambda);
fixedGradientFvPatchVectorField::updateCoeffs();
}
// Write
void cohesiveLawFvPatchVectorField::write(Ostream& os) const
{
fvPatchVectorField::write(os);
traction_.writeEntry("traction", os);
os.writeKeyword("cohesiveLaw") << law().type()
<< token::END_STATEMENT << nl;
os.writeKeyword("relaxationFactor") << relaxationFactor_
<< token::END_STATEMENT << nl;
law().writeDict(os);
writeEntry("value", os);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchVectorField, cohesiveLawFvPatchVectorField);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View file

@ -1,205 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright held by original author
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM 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 2 of the License, or (at your
option) any later version.
OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation,
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\*---------------------------------------------------------------------------*/
#include "tractionDisplacementFvPatchVectorField.H"
#include "addToRunTimeSelectionTable.H"
#include "volFields.H"
#include "rheologyModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
tractionDisplacementFvPatchVectorField::
tractionDisplacementFvPatchVectorField
(
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF
)
:
fixedGradientFvPatchVectorField(p, iF),
UName_("undefined"),
rheologyName_("undefined"),
traction_(p.size(), vector::zero),
pressure_(p.size(), 0.0)
{
fvPatchVectorField::operator=(patchInternalField());
gradient() = vector::zero;
}
tractionDisplacementFvPatchVectorField::
tractionDisplacementFvPatchVectorField
(
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF,
const dictionary& dict
)
:
fixedGradientFvPatchVectorField(p, iF),
UName_(dict.lookup("U")),
rheologyName_(dict.lookup("rheology")),
traction_("traction", dict, p.size()),
pressure_("pressure", dict, p.size())
{
fvPatchVectorField::operator=(patchInternalField());
gradient() = vector::zero;
Info << "rf: " << rheologyName_ << endl;
}
tractionDisplacementFvPatchVectorField::
tractionDisplacementFvPatchVectorField
(
const tractionDisplacementFvPatchVectorField& tdpvf,
const fvPatch& p,
const DimensionedField<vector, volMesh>& iF,
const fvPatchFieldMapper& mapper
)
:
fixedGradientFvPatchVectorField(tdpvf, p, iF, mapper),
UName_(tdpvf.UName_),
rheologyName_(tdpvf.rheologyName_),
traction_(tdpvf.traction_, mapper),
pressure_(tdpvf.pressure_, mapper)
{}
tractionDisplacementFvPatchVectorField::
tractionDisplacementFvPatchVectorField
(
const tractionDisplacementFvPatchVectorField& tdpvf
)
:
fixedGradientFvPatchVectorField(tdpvf),
UName_(tdpvf.UName_),
rheologyName_(tdpvf.rheologyName_),
traction_(tdpvf.traction_),
pressure_(tdpvf.pressure_)
{}
tractionDisplacementFvPatchVectorField::
tractionDisplacementFvPatchVectorField
(
const tractionDisplacementFvPatchVectorField& tdpvf,
const DimensionedField<vector, volMesh>& iF
)
:
fixedGradientFvPatchVectorField(tdpvf, iF),
UName_(tdpvf.UName_),
rheologyName_(tdpvf.rheologyName_),
traction_(tdpvf.traction_),
pressure_(tdpvf.pressure_)
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void tractionDisplacementFvPatchVectorField::autoMap
(
const fvPatchFieldMapper& m
)
{
fixedGradientFvPatchVectorField::autoMap(m);
traction_.autoMap(m);
pressure_.autoMap(m);
}
// Reverse-map the given fvPatchField onto this fvPatchField
void tractionDisplacementFvPatchVectorField::rmap
(
const fvPatchVectorField& ptf,
const labelList& addr
)
{
fixedGradientFvPatchVectorField::rmap(ptf, addr);
const tractionDisplacementFvPatchVectorField& dmptf =
refCast<const tractionDisplacementFvPatchVectorField>(ptf);
traction_.rmap(dmptf.traction_, addr);
pressure_.rmap(dmptf.pressure_, addr);
}
// Update the coefficients associated with the patch field
void tractionDisplacementFvPatchVectorField::updateCoeffs()
{
if (updated())
{
return;
}
// Looking up rheology
const rheologyModel& rheology =
this->db().objectRegistry::lookupObject<rheologyModel>(rheologyName_);
const scalarField mu = rheology.mu()().boundaryField()[patch().index()];
const scalarField lambda =
rheology.lambda()().boundaryField()[patch().index()];
vectorField n = patch().nf();
const fvPatchField<tensor>& gradU =
lookupPatchField<volTensorField, tensor>("grad(" +UName_ + ")");
gradient() =
(
(traction_ - (pressure_)*n)
- (n & (mu*gradU.T() - (mu + lambda)*gradU))
- n*lambda*tr(gradU)
)/(2.0*mu + lambda);
fixedGradientFvPatchVectorField::updateCoeffs();
}
// Write
void tractionDisplacementFvPatchVectorField::write(Ostream& os) const
{
fvPatchVectorField::write(os);
os.writeKeyword("U") << UName_ << token::END_STATEMENT << nl;
os.writeKeyword("rheology") << rheologyName_ << token::END_STATEMENT << nl;
traction_.writeEntry("traction", os);
pressure_.writeEntry("pressure", os);
writeEntry("value", os);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
makePatchTypeField(fvPatchVectorField, tractionDisplacementFvPatchVectorField);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// ************************************************************************* //

View file

@ -3,18 +3,21 @@ cd ${0%/*} || exit 1 # run from this directory
set -x set -x
wmake libso solidModels wmake elasticAcpSolidFoam
wmake elasticIncrAcpSolidFoam
wmake elasticContactIncrSolidFoam
wmake elasticContactNonLinULSolidFoam
wmake elasticContactSolidFoam
wmake elasticGravitySolidFoam
wmake elasticIncrSolidFoam wmake elasticIncrSolidFoam
wmake elasticNonLinIncrTLSolidFoam
wmake elasticNonLinTLSolidFoam wmake elasticNonLinTLSolidFoam
wmake elasticNonLinULSolidFoam wmake elasticNonLinULSolidFoam
wmake elasticPlasticNonLinULSolidFoam wmake elasticOrthoAcpSolidFoam
wmake elasticOrthoNonLinULSolidFoam
wmake elasticOrthoSolidFoam
wmake elasticPlasticSolidFoam wmake elasticPlasticSolidFoam
wmake elasticPlasticNonLinTLSolidFoam
wmake elasticPlasticNonLinULSolidFoam
wmake elasticSolidFoam wmake elasticSolidFoam
wmake elasticThermalSolidFoam wmake elasticThermalSolidFoam
wmake icoFsiElasticNonLinULSolidFoam wmake icoFsiElasticNonLinULSolidFoam
wmake viscoElasticSolidFoam wmake viscoElasticSolidFoam
(cd utilities; wmake all)

View file

@ -0,0 +1,19 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
set -x
wmake libso materialModels
wmake stressedFoam
wmake contactStressFoam
wmake newStressedFoam
wmake newContactStressFoam
wmake stressFemFoam
wmake icoFsiFoam
wmake solidDisplacementFoam
wmake solidEquilibriumDisplacementFoam

View file

@ -23,7 +23,7 @@ License
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "error.H" #include "error.H"

View file

@ -26,7 +26,7 @@ Class
contactPatchPair contactPatchPair
Description Description
SourceFiles SourceFiles
contactPatchPair.C contactPatchPair.C
contactPatchPairSlavePressure.C contactPatchPairSlavePressure.C

View file

@ -23,7 +23,7 @@ License
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "contactPatchPair.H" #include "contactPatchPair.H"

View file

@ -23,7 +23,7 @@ License
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Description Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "contactPatchPair.H" #include "contactPatchPair.H"

View file

@ -26,7 +26,7 @@ Application
stressedFoam stressedFoam
Description Description
Transient/steady-state solver of linear-elastic, small-strain deformation Transient/steady-state solver of linear-elastic, small-strain deformation
of solid bodies in contact. of solid bodies in contact.
Simple linear elasticity structural analysis code. Simple linear elasticity structural analysis code.

View file

@ -109,7 +109,7 @@
Info<< "Reading contact patch IDs etc.\n" << endl; Info<< "Reading contact patch IDs etc.\n" << endl;
const dictionary& contactPatchDict const dictionary& contactPatchDict
( (
mesh.solutionDict().subDict("contactPatch") mesh.solutionDict().subDict("contactPatch")
); );
label gradPatch(readLabel(contactPatchDict.lookup("gradPatchID"))); label gradPatch(readLabel(contactPatchDict.lookup("gradPatchID")));
label dirPatch(readLabel(contactPatchDict.lookup("dirPatchID"))); label dirPatch(readLabel(contactPatchDict.lookup("dirPatchID")));

View file

@ -1,4 +1,4 @@
tractionDisplacement/tractionDisplacementFvPatchVectorField.C tractionDisplacement/tractionDisplacementFvPatchVectorField.C
icoFsiFoam.C icoFsiFoam.C
EXE = $(FOAM_APPBIN)/icoFsiFoam EXE = $(FOAM_APPBIN)/icoFsiFoam

View file

@ -2,14 +2,15 @@ EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
$(WM_DECOMP_INC) \
-I$(LIB_SRC)/tetFiniteElement/lnInclude \ -I$(LIB_SRC)/tetFiniteElement/lnInclude \
-I$(LIB_SRC)/dynamicMesh/meshMotion/tetMotionSolver/lnInclude \ -I$(LIB_SRC)/dynamicMesh/meshMotion/tetDecompositionMotionSolver/lnInclude \
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
-ldynamicFvMesh \ -ldynamicFvMesh \
-ldynamicMesh \ -ldynamicMesh \
-ltetFiniteElement \ -ltetFiniteElement \
-ltetMotionSolver \ $(WM_DECOMP_LIBS) \
-llduSolvers \ -llduSolvers
-L$(MESQUITE_LIB_DIR) -lmesquite

View file

@ -1,11 +1,11 @@
{ {
// Setting mesh motion // Setting mesh motion
pointVectorField solidPointsDispl = pointVectorField solidPointsDispl =
cpi.interpolate(Usolid - Usolid.oldTime()); cpi.interpolate(Usolid - Usolid.oldTime());
vectorField newPoints = vectorField newPoints =
stressMesh.points() stressMesh.points()
+ solidPointsDispl.internalField(); + solidPointsDispl.internalField();
stressMesh.movePoints(newPoints); stressMesh.movePoints(newPoints);
@ -28,8 +28,8 @@
# include "volContinuity.H" # include "volContinuity.H"
Info << "Motion magnitude: mean = " Info << "Motion magnitude: mean = "
<< average(mag(Usolid.boundaryField()[solidPatchID])) << average(mag(Usolid.boundaryField()[solidPatchID]))
<< " max = " << " max = "
<< max(mag(Usolid.boundaryField()[solidPatchID])) << endl; << max(mag(Usolid.boundaryField()[solidPatchID])) << endl;
} }

View file

@ -9,7 +9,7 @@
); );
solidPatchPressure *= rhoFluid.value(); solidPatchPressure *= rhoFluid.value();
tForce.pressure() = solidPatchPressure; tForce.pressure() = solidPatchPressure;
@ -20,6 +20,6 @@
mesh.Sf().boundaryField()[fluidPatchID] mesh.Sf().boundaryField()[fluidPatchID]
); );
Info << "Total pressure force = " << totalPressureForce << endl; Info << "Total pressure force = " << totalPressureForce << endl;
} }

View file

@ -1,7 +1,7 @@
{ {
// SIMPLE loop // SIMPLE loop
for (int corr = 0; corr < nCorr; corr++) for (int corr=0; corr<nCorr; corr++)
{ {
fvVectorMatrix UEqn fvVectorMatrix UEqn
( (

View file

@ -169,7 +169,7 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs()
vectorField n = patch().nf(); vectorField n = patch().nf();
const fvPatchField<tensor>& gradU = const fvPatchField<tensor>& gradU =
lookupPatchField<volTensorField, tensor>("grad(U)"); patch().lookupPatchField<volTensorField, tensor>("grad(U)");
gradient() = gradient() =
( (

View file

@ -16,7 +16,7 @@ $(rheologyLaws)/PronyViscoelastic/PronyViscoelastic.C
thermalModel/thermalModel.C thermalModel/thermalModel.C
thermalLaws = thermalModel/thermalLaws thermalLaws = thermalModel/thermalLaws
$(thermalLaws)/thermalLaw/thermalLaw.C $(thermalLaws)/thermalLaw/thermalLaw.C
$(thermalLaws)/thermalLaw/newThermalLaw.C $(thermalLaws)/thermalLaw/newThermalLaw.C
$(thermalLaws)/constantThermal/constantThermal.C $(thermalLaws)/constantThermal/constantThermal.C
$(thermalLaws)/multiMaterialThermal/multiMaterialThermal.C $(thermalLaws)/multiMaterialThermal/multiMaterialThermal.C

View file

@ -71,7 +71,7 @@ public:
DugdaleCohesiveLaw DugdaleCohesiveLaw
( (
const word& cohesiveLawName, const word& cohesiveLawName,
const dictionary& dict const dictionary& dict
); );
//- Construct as copy //- Construct as copy

View file

@ -74,7 +74,7 @@ Foam::autoPtr<Foam::cohesiveLaw> Foam::cohesiveLaw::New
Foam::cohesiveLaw::cohesiveLaw Foam::cohesiveLaw::cohesiveLaw
( (
const word& cohesiveLawName, const word& cohesiveLawName,
const dictionary& dict const dictionary& dict
) )
: :
cohesiveLawCoeffs_(dict.subDict(cohesiveLawName + "Coeffs")), cohesiveLawCoeffs_(dict.subDict(cohesiveLawName + "Coeffs")),

View file

@ -97,7 +97,7 @@ public:
static autoPtr<cohesiveLaw> New static autoPtr<cohesiveLaw> New
( (
const word& cohesiveLawName, const word& cohesiveLawName,
const dictionary& dict const dictionary& dict
); );
@ -107,7 +107,7 @@ public:
cohesiveLaw cohesiveLaw
( (
const word& cohesiveLawName, const word& cohesiveLawName,
const dictionary& dict const dictionary& dict
); );
//- Construct as copy //- Construct as copy
@ -124,7 +124,7 @@ public:
// Member Functions // Member Functions
//- Return cohesive law coefficients //- Return cohesive law coefficients
const dictionary& cohesiveLawCoeffs() const const dictionary& cohesiveLawCoeffs() const
{ {

View file

@ -71,7 +71,7 @@ public:
linearCohesiveLaw linearCohesiveLaw
( (
const word& cohesiveLawName, const word& cohesiveLawName,
const dictionary& dict const dictionary& dict
); );
//- Construct as copy //- Construct as copy

View file

@ -171,7 +171,7 @@ public:
{ {
checkPatchFace(mesh); checkPatchFace(mesh);
} }
//- Construct from dictionary //- Construct from dictionary
componentReference componentReference

View file

@ -245,7 +245,7 @@ void cohesiveLawFvPatchVectorField::write(Ostream& os) const
{ {
fvPatchVectorField::write(os); fvPatchVectorField::write(os);
traction_.writeEntry("traction", os); traction_.writeEntry("traction", os);
os.writeKeyword("cohesiveLaw") << law().type() os.writeKeyword("cohesiveLaw") << law().type()
<< token::END_STATEMENT << nl; << token::END_STATEMENT << nl;
os.writeKeyword("relaxationFactor") << relaxationFactor_ os.writeKeyword("relaxationFactor") << relaxationFactor_
<< token::END_STATEMENT << nl; << token::END_STATEMENT << nl;

View file

@ -99,7 +99,7 @@ cohesiveZoneFvPatchVectorField::cohesiveZoneFvPatchVectorField
{ {
this->refValue() = vector::zero; this->refValue() = vector::zero;
} }
if (dict.found("refGradient")) if (dict.found("refGradient"))
{ {
this->refGrad() = vectorField("refGradient", dict, p.size()); this->refGrad() = vectorField("refGradient", dict, p.size());
@ -111,7 +111,7 @@ cohesiveZoneFvPatchVectorField::cohesiveZoneFvPatchVectorField
if (dict.found("valueFraction")) if (dict.found("valueFraction"))
{ {
this->valueFraction() = this->valueFraction() =
symmTensorField("valueFraction", dict, p.size()); symmTensorField("valueFraction", dict, p.size());
} }
else else
@ -206,14 +206,14 @@ void cohesiveZoneFvPatchVectorField::updateCoeffs()
const rheologyModel& rheology = const rheologyModel& rheology =
this->db().objectRegistry::lookupObject<rheologyModel>(rheologyName_); this->db().objectRegistry::lookupObject<rheologyModel>(rheologyName_);
const scalarField mu = const scalarField mu =
rheology.mu()().boundaryField()[patch().index()]; rheology.mu()().boundaryField()[patch().index()];
const scalarField lambda = const scalarField lambda =
rheology.lambda()().boundaryField()[patch().index()]; rheology.lambda()().boundaryField()[patch().index()];
const fvPatchField<tensor>& gradU = const fvPatchField<tensor>& gradU =
lookupPatchField<volTensorField, tensor> patch().lookupPatchField<volTensorField, tensor>
( (
"grad(" +UName_ + ")" "grad(" +UName_ + ")"
); );
@ -276,17 +276,17 @@ void cohesiveZoneFvPatchVectorField::updateCoeffs()
if(magSqr(valueFraction()[faceI]) < SMALL) if(magSqr(valueFraction()[faceI]) < SMALL)
{ {
cohesiveTraction = cohesiveTraction =
relaxationFactor_*cohesiveTraction relaxationFactor_*cohesiveTraction
+ (1.0 - relaxationFactor_)*sigmaN[faceI]*n[faceI]; + (1.0 - relaxationFactor_)*sigmaN[faceI]*n[faceI];
refGrad()[faceI] = refGrad()[faceI] =
( (
cohesiveTraction cohesiveTraction
- ( - (
n[faceI] n[faceI]
& ( & (
mu[faceI]*gradU[faceI].T() mu[faceI]*gradU[faceI].T()
- (mu[faceI] + lambda[faceI])*gradU[faceI] - (mu[faceI] + lambda[faceI])*gradU[faceI]
) )
) )
@ -306,7 +306,7 @@ void cohesiveZoneFvPatchVectorField::write(Ostream& os) const
directionMixedFvPatchVectorField::write(os); directionMixedFvPatchVectorField::write(os);
os.writeKeyword("U") << UName_ << token::END_STATEMENT << nl; os.writeKeyword("U") << UName_ << token::END_STATEMENT << nl;
os.writeKeyword("rheology") << rheologyName_ << token::END_STATEMENT << nl; os.writeKeyword("rheology") << rheologyName_ << token::END_STATEMENT << nl;
os.writeKeyword("cohesiveLaw") << law().type() os.writeKeyword("cohesiveLaw") << law().type()
<< token::END_STATEMENT << nl; << token::END_STATEMENT << nl;
os.writeKeyword("relaxationFactor") << relaxationFactor_ os.writeKeyword("relaxationFactor") << relaxationFactor_
<< token::END_STATEMENT << nl; << token::END_STATEMENT << nl;

View file

@ -174,7 +174,7 @@ public:
//- Update the coefficients associated with the patch field //- Update the coefficients associated with the patch field
virtual void updateCoeffs(); virtual void updateCoeffs();
//- Write //- Write
virtual void write(Ostream&) const; virtual void write(Ostream&) const;

View file

@ -195,7 +195,7 @@ void nusseltFvPatchScalarField::updateCoeffs()
// Lookup temperature diffusivity of the patch // Lookup temperature diffusivity of the patch
const fvPatchField<scalar>& DT = const fvPatchField<scalar>& DT =
this->lookupPatchField<volScalarField, scalar>(DTName_); this->patch().lookupPatchField<volScalarField, scalar>(DTName_);
// Calculate flux // Calculate flux
scalarField tempFlux = alpha_*(Tinternal - Tinf_); scalarField tempFlux = alpha_*(Tinternal - Tinf_);

View file

@ -68,7 +68,6 @@ tractionDisplacementFvPatchVectorField
traction_("traction", dict, p.size()), traction_("traction", dict, p.size()),
pressure_("pressure", dict, p.size()) pressure_("pressure", dict, p.size())
{ {
Info << "creating tractionDisplacement boundary" << endl;
fvPatchVectorField::operator=(patchInternalField()); fvPatchVectorField::operator=(patchInternalField());
gradient() = vector::zero; gradient() = vector::zero;
Info << "rf: " << rheologyName_ << endl; Info << "rf: " << rheologyName_ << endl;
@ -182,6 +181,7 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs()
fixedGradientFvPatchVectorField::updateCoeffs(); fixedGradientFvPatchVectorField::updateCoeffs();
} }
// Write // Write
void tractionDisplacementFvPatchVectorField::write(Ostream& os) const void tractionDisplacementFvPatchVectorField::write(Ostream& os) const
{ {

View file

@ -180,7 +180,7 @@ void tractionDisplacementThermoFvPatchVectorField::updateCoeffs()
vectorField n = patch().nf(); vectorField n = patch().nf();
const fvPatchField<tensor>& gradU = const fvPatchField<tensor>& gradU =
lookupPatchField<volTensorField, tensor>("grad(" +UName_ + ")"); patch().lookupPatchField<volTensorField, tensor>("grad(" +UName_ + ")");
// Thermal component // Thermal component
@ -189,7 +189,7 @@ void tractionDisplacementThermoFvPatchVectorField::updateCoeffs()
this->db().objectRegistry::lookupObject<thermalModel>(thermoName_); this->db().objectRegistry::lookupObject<thermalModel>(thermoName_);
const fvPatchField<scalar>& T = const fvPatchField<scalar>& T =
lookupPatchField<volScalarField, scalar>(TName_); patch().lookupPatchField<volScalarField, scalar>(TName_);
const scalarField rhoThreeKalpha = const scalarField rhoThreeKalpha =
rheology.rho()().boundaryField()[patch().index()]* rheology.rho()().boundaryField()[patch().index()]*

View file

@ -107,7 +107,7 @@ Foam::tmp<Foam::volScalarField> Foam::BurgersViscoelastic::E(scalar t) const
+ eta2_.value()/k2_.value(); + eta2_.value()/k2_.value();
scalar p2 = eta1_.value()*eta2_.value()/(k1_.value()*k2_.value()); scalar p2 = eta1_.value()*eta2_.value()/(k1_.value()*k2_.value());
scalar q1 = eta1_.value(); scalar q1 = eta1_.value();
scalar q2 = eta1_.value()*eta2_.value()/k2_.value(); scalar q2 = eta1_.value()*eta2_.value()/k2_.value();
@ -120,7 +120,7 @@ Foam::tmp<Foam::volScalarField> Foam::BurgersViscoelastic::E(scalar t) const
E = (q1 - q2*r1)*exp(-r1*t)/A - (q1 - q2*r2)*exp(-r2*t)/A; E = (q1 - q2*r1)*exp(-r1*t)/A - (q1 - q2*r2)*exp(-r2*t)/A;
} }
tmp<volScalarField> tresult tmp<volScalarField> tresult
( (
@ -178,7 +178,7 @@ Foam::tmp<Foam::volScalarField> Foam::BurgersViscoelastic::J(scalar t) const
if(t >= 0) if(t >= 0)
{ {
J = 1.0/k1_.value() J = 1.0/k1_.value()
+ (1 - exp(-k2_.value()*t/eta2_.value()))/k2_.value() + (1 - exp(-k2_.value()*t/eta2_.value()))/k2_.value()
+ t/eta1_.value(); + t/eta1_.value();
} }

View file

@ -102,14 +102,14 @@ Foam::tmp<Foam::volScalarField> Foam::KelvinSLSViscoelastic::E(scalar t) const
if(t>=0) if(t>=0)
{ {
scalar p1 = eta2_.value()/(k1_.value() + k2_.value()); scalar p1 = eta2_.value()/(k1_.value() + k2_.value());
scalar q0 = k1_.value()*k2_.value()/(k1_.value() + k2_.value()); scalar q0 = k1_.value()*k2_.value()/(k1_.value() + k2_.value());
scalar q1 = k1_.value()*eta2_.value()/(k1_.value() + k2_.value()); scalar q1 = k1_.value()*eta2_.value()/(k1_.value() + k2_.value());
E = q0 + (q1/p1 - q0)*exp(-t/p1); E = q0 + (q1/p1 - q0)*exp(-t/p1);
} }
tmp<volScalarField> tresult tmp<volScalarField> tresult
( (
@ -168,7 +168,7 @@ Foam::tmp<Foam::volScalarField> Foam::KelvinSLSViscoelastic::J(scalar t) const
if(t >= 0) if(t >= 0)
{ {
scalar p1 = eta2_.value()/(k1_.value() + k2_.value()); scalar p1 = eta2_.value()/(k1_.value() + k2_.value());
scalar q0 = k1_.value()*k2_.value()/(k1_.value() + k2_.value()); scalar q0 = k1_.value()*k2_.value()/(k1_.value() + k2_.value());
scalar q1 = k1_.value()*eta2_.value()/(k1_.value() + k2_.value()); scalar q1 = k1_.value()*eta2_.value()/(k1_.value() + k2_.value());

View file

@ -183,8 +183,8 @@ Foam::MaxwellElasticViscoelastic::J(scalar t) const
mesh(), mesh(),
dimensionedScalar dimensionedScalar
( (
"J", "J",
dimless/k_.dimensions(), dimless/k_.dimensions(),
1.0/k_.value() + t/eta_.value() 1.0/k_.value() + t/eta_.value()
), ),
zeroGradientFvPatchScalarField::typeName zeroGradientFvPatchScalarField::typeName

View file

@ -101,7 +101,7 @@ Foam::tmp<Foam::volScalarField> Foam::MaxwellSLSViscoelastic::E(scalar t) const
{ {
E = k2_.value() + k1_.value()*exp(-k1_.value()*t/eta1_.value()); E = k2_.value() + k1_.value()*exp(-k1_.value()*t/eta1_.value());
} }
tmp<volScalarField> tresult tmp<volScalarField> tresult
( (

View file

@ -169,8 +169,8 @@ Foam::tmp<Foam::volScalarField> Foam::MaxwellViscoelastic::J(scalar t) const
mesh(), mesh(),
dimensionedScalar dimensionedScalar
( (
"J", "J",
dimless/k_.dimensions(), dimless/k_.dimensions(),
1.0/k_.value() + t/eta_.value() 1.0/k_.value() + t/eta_.value()
), ),
zeroGradientFvPatchScalarField::typeName zeroGradientFvPatchScalarField::typeName

View file

@ -105,7 +105,7 @@ Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::E(scalar t) const
{ {
E += k_[i]*exp(-t/tau_[i]); E += k_[i]*exp(-t/tau_[i]);
} }
if(t < 0) if(t < 0)
{ {
E = 0; E = 0;
@ -162,7 +162,7 @@ Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::nu(scalar t) const
Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::J(scalar t) const Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::J(scalar t) const
{ {
notImplemented(type() + "::J(scalar t)"); notImplemented(type() + "::J(scalar t)");
return 1.0/E(t); return 1.0/E(t);
} }

View file

@ -104,7 +104,7 @@ Foam::contactPatchPair::contactPatchPair
cp.mesh().boundaryMesh()[slavePatch_.index()], // to patch cp.mesh().boundaryMesh()[slavePatch_.index()], // to patch
intersection::algorithmNames_.read(dict.lookup("projectionAlgo")), intersection::algorithmNames_.read(dict.lookup("projectionAlgo")),
intersection::directionNames_.read(dict.lookup("projectionDir")) intersection::directionNames_.read(dict.lookup("projectionDir"))
), ),
slaveToMasterInterpolate_ slaveToMasterInterpolate_
( (
@ -112,7 +112,7 @@ Foam::contactPatchPair::contactPatchPair
cp.mesh().boundaryMesh()[masterPatch_.index()], // to patch cp.mesh().boundaryMesh()[masterPatch_.index()], // to patch
intersection::algorithmNames_.read(dict.lookup("projectionAlgo")), intersection::algorithmNames_.read(dict.lookup("projectionAlgo")),
intersection::directionNames_.read(dict.lookup("projectionDir")) intersection::directionNames_.read(dict.lookup("projectionDir"))
) )
{} {}

View file

@ -27,7 +27,7 @@ Class
Description Description
A pair of surfaces in contact. A pair of surfaces in contact.
SourceFiles SourceFiles
contactPatchPair.C contactPatchPair.C

View file

@ -241,7 +241,7 @@ void contactProblem::correct()
( (
lambdaPatches[patchI]*tr(gradUpatches[patchI]) lambdaPatches[patchI]*tr(gradUpatches[patchI])
) )
)/(2.0*muPatches[patchI] + lambdaPatches[patchI]); )/(2.0*muPatches[patchI] + lambdaPatches[patchI]);
// Set the value fractions // Set the value fractions

Some files were not shown because too many files have changed in this diff Show more