Merge remote-tracking branch 'origin/nextRelease_philipc' into nextRelease
Conflicts: src/Allwmake
This commit is contained in:
commit
f7ad627f7f
1400 changed files with 225315 additions and 706439 deletions
|
@ -1,9 +0,0 @@
|
|||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
|
||||
set -x
|
||||
|
||||
wmake libso materialModels
|
||||
|
||||
wmake newStressedFoam
|
||||
wmake newContactStressFoam
|
|
@ -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
|
||||
|
||||
// ************************************************************************* //
|
|
@ -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
|
||||
|
||||
// ************************************************************************* //
|
|
@ -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
|
||||
|
||||
// ************************************************************************* //
|
|
@ -3,18 +3,21 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||
|
||||
set -x
|
||||
|
||||
wmake libso solidModels
|
||||
|
||||
wmake elasticContactIncrSolidFoam
|
||||
wmake elasticContactNonLinULSolidFoam
|
||||
wmake elasticContactSolidFoam
|
||||
wmake elasticGravitySolidFoam
|
||||
wmake elasticAcpSolidFoam
|
||||
wmake elasticIncrAcpSolidFoam
|
||||
wmake elasticIncrSolidFoam
|
||||
wmake elasticNonLinIncrTLSolidFoam
|
||||
wmake elasticNonLinTLSolidFoam
|
||||
wmake elasticNonLinULSolidFoam
|
||||
wmake elasticPlasticNonLinULSolidFoam
|
||||
wmake elasticOrthoAcpSolidFoam
|
||||
wmake elasticOrthoNonLinULSolidFoam
|
||||
wmake elasticOrthoSolidFoam
|
||||
wmake elasticPlasticSolidFoam
|
||||
wmake elasticPlasticNonLinTLSolidFoam
|
||||
wmake elasticPlasticNonLinULSolidFoam
|
||||
wmake elasticSolidFoam
|
||||
wmake elasticThermalSolidFoam
|
||||
wmake icoFsiElasticNonLinULSolidFoam
|
||||
wmake viscoElasticSolidFoam
|
||||
|
||||
(cd utilities; wmake all)
|
19
applications/solvers/solidMechanics/deprecatedSolvers/Allwmake
Executable file
19
applications/solvers/solidMechanics/deprecatedSolvers/Allwmake
Executable 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
|
|
@ -23,7 +23,7 @@ License
|
|||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "error.H"
|
|
@ -26,7 +26,7 @@ Class
|
|||
contactPatchPair
|
||||
|
||||
Description
|
||||
|
||||
|
||||
SourceFiles
|
||||
contactPatchPair.C
|
||||
contactPatchPairSlavePressure.C
|
|
@ -23,7 +23,7 @@ License
|
|||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "contactPatchPair.H"
|
|
@ -23,7 +23,7 @@ License
|
|||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Description
|
||||
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "contactPatchPair.H"
|
|
@ -26,7 +26,7 @@ Application
|
|||
stressedFoam
|
||||
|
||||
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.
|
||||
|
||||
Simple linear elasticity structural analysis code.
|
|
@ -109,7 +109,7 @@
|
|||
Info<< "Reading contact patch IDs etc.\n" << endl;
|
||||
const dictionary& contactPatchDict
|
||||
(
|
||||
mesh.solutionDict().subDict("contactPatch")
|
||||
mesh.solutionDict().subDict("contactPatch")
|
||||
);
|
||||
label gradPatch(readLabel(contactPatchDict.lookup("gradPatchID")));
|
||||
label dirPatch(readLabel(contactPatchDict.lookup("dirPatchID")));
|
|
@ -1,4 +1,4 @@
|
|||
tractionDisplacement/tractionDisplacementFvPatchVectorField.C
|
||||
icoFsiFoam.C
|
||||
icoFsiFoam.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/icoFsiFoam
|
|
@ -2,14 +2,15 @@ EXE_INC = \
|
|||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
|
||||
$(WM_DECOMP_INC) \
|
||||
-I$(LIB_SRC)/tetFiniteElement/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicMesh/meshMotion/tetMotionSolver/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicMesh/meshMotion/tetDecompositionMotionSolver/lnInclude \
|
||||
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
-ldynamicFvMesh \
|
||||
-ldynamicMesh \
|
||||
-ltetFiniteElement \
|
||||
-ltetMotionSolver \
|
||||
-llduSolvers \
|
||||
-L$(MESQUITE_LIB_DIR) -lmesquite
|
||||
$(WM_DECOMP_LIBS) \
|
||||
-llduSolvers
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
// Setting mesh motion
|
||||
|
||||
pointVectorField solidPointsDispl =
|
||||
pointVectorField solidPointsDispl =
|
||||
cpi.interpolate(Usolid - Usolid.oldTime());
|
||||
|
||||
vectorField newPoints =
|
||||
stressMesh.points()
|
||||
stressMesh.points()
|
||||
+ solidPointsDispl.internalField();
|
||||
|
||||
stressMesh.movePoints(newPoints);
|
||||
|
@ -28,8 +28,8 @@
|
|||
|
||||
# include "volContinuity.H"
|
||||
|
||||
Info << "Motion magnitude: mean = "
|
||||
Info << "Motion magnitude: mean = "
|
||||
<< average(mag(Usolid.boundaryField()[solidPatchID]))
|
||||
<< " max = "
|
||||
<< " max = "
|
||||
<< max(mag(Usolid.boundaryField()[solidPatchID])) << endl;
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
);
|
||||
|
||||
solidPatchPressure *= rhoFluid.value();
|
||||
|
||||
|
||||
tForce.pressure() = solidPatchPressure;
|
||||
|
||||
|
||||
|
@ -20,6 +20,6 @@
|
|||
mesh.Sf().boundaryField()[fluidPatchID]
|
||||
);
|
||||
|
||||
|
||||
|
||||
Info << "Total pressure force = " << totalPressureForce << endl;
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
// SIMPLE loop
|
||||
|
||||
for (int corr = 0; corr < nCorr; corr++)
|
||||
for (int corr=0; corr<nCorr; corr++)
|
||||
{
|
||||
fvVectorMatrix UEqn
|
||||
(
|
|
@ -169,7 +169,7 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs()
|
|||
vectorField n = patch().nf();
|
||||
|
||||
const fvPatchField<tensor>& gradU =
|
||||
lookupPatchField<volTensorField, tensor>("grad(U)");
|
||||
patch().lookupPatchField<volTensorField, tensor>("grad(U)");
|
||||
|
||||
gradient() =
|
||||
(
|
|
@ -16,7 +16,7 @@ $(rheologyLaws)/PronyViscoelastic/PronyViscoelastic.C
|
|||
thermalModel/thermalModel.C
|
||||
thermalLaws = thermalModel/thermalLaws
|
||||
|
||||
$(thermalLaws)/thermalLaw/thermalLaw.C
|
||||
$(thermalLaws)/thermalLaw/thermalLaw.C
|
||||
$(thermalLaws)/thermalLaw/newThermalLaw.C
|
||||
$(thermalLaws)/constantThermal/constantThermal.C
|
||||
$(thermalLaws)/multiMaterialThermal/multiMaterialThermal.C
|
|
@ -71,7 +71,7 @@ public:
|
|||
DugdaleCohesiveLaw
|
||||
(
|
||||
const word& cohesiveLawName,
|
||||
const dictionary& dict
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct as copy
|
|
@ -74,7 +74,7 @@ Foam::autoPtr<Foam::cohesiveLaw> Foam::cohesiveLaw::New
|
|||
Foam::cohesiveLaw::cohesiveLaw
|
||||
(
|
||||
const word& cohesiveLawName,
|
||||
const dictionary& dict
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
cohesiveLawCoeffs_(dict.subDict(cohesiveLawName + "Coeffs")),
|
|
@ -97,7 +97,7 @@ public:
|
|||
static autoPtr<cohesiveLaw> New
|
||||
(
|
||||
const word& cohesiveLawName,
|
||||
const dictionary& dict
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
|
@ -107,7 +107,7 @@ public:
|
|||
cohesiveLaw
|
||||
(
|
||||
const word& cohesiveLawName,
|
||||
const dictionary& dict
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct as copy
|
||||
|
@ -124,7 +124,7 @@ public:
|
|||
|
||||
|
||||
// Member Functions
|
||||
|
||||
|
||||
//- Return cohesive law coefficients
|
||||
const dictionary& cohesiveLawCoeffs() const
|
||||
{
|
|
@ -71,7 +71,7 @@ public:
|
|||
linearCohesiveLaw
|
||||
(
|
||||
const word& cohesiveLawName,
|
||||
const dictionary& dict
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct as copy
|
|
@ -171,7 +171,7 @@ public:
|
|||
{
|
||||
checkPatchFace(mesh);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//- Construct from dictionary
|
||||
componentReference
|
|
@ -245,7 +245,7 @@ void cohesiveLawFvPatchVectorField::write(Ostream& os) const
|
|||
{
|
||||
fvPatchVectorField::write(os);
|
||||
traction_.writeEntry("traction", os);
|
||||
os.writeKeyword("cohesiveLaw") << law().type()
|
||||
os.writeKeyword("cohesiveLaw") << law().type()
|
||||
<< token::END_STATEMENT << nl;
|
||||
os.writeKeyword("relaxationFactor") << relaxationFactor_
|
||||
<< token::END_STATEMENT << nl;
|
|
@ -99,7 +99,7 @@ cohesiveZoneFvPatchVectorField::cohesiveZoneFvPatchVectorField
|
|||
{
|
||||
this->refValue() = vector::zero;
|
||||
}
|
||||
|
||||
|
||||
if (dict.found("refGradient"))
|
||||
{
|
||||
this->refGrad() = vectorField("refGradient", dict, p.size());
|
||||
|
@ -111,7 +111,7 @@ cohesiveZoneFvPatchVectorField::cohesiveZoneFvPatchVectorField
|
|||
|
||||
if (dict.found("valueFraction"))
|
||||
{
|
||||
this->valueFraction() =
|
||||
this->valueFraction() =
|
||||
symmTensorField("valueFraction", dict, p.size());
|
||||
}
|
||||
else
|
||||
|
@ -206,14 +206,14 @@ void cohesiveZoneFvPatchVectorField::updateCoeffs()
|
|||
const rheologyModel& rheology =
|
||||
this->db().objectRegistry::lookupObject<rheologyModel>(rheologyName_);
|
||||
|
||||
const scalarField mu =
|
||||
const scalarField mu =
|
||||
rheology.mu()().boundaryField()[patch().index()];
|
||||
|
||||
const scalarField lambda =
|
||||
rheology.lambda()().boundaryField()[patch().index()];
|
||||
|
||||
const fvPatchField<tensor>& gradU =
|
||||
lookupPatchField<volTensorField, tensor>
|
||||
patch().lookupPatchField<volTensorField, tensor>
|
||||
(
|
||||
"grad(" +UName_ + ")"
|
||||
);
|
||||
|
@ -276,17 +276,17 @@ void cohesiveZoneFvPatchVectorField::updateCoeffs()
|
|||
|
||||
if(magSqr(valueFraction()[faceI]) < SMALL)
|
||||
{
|
||||
cohesiveTraction =
|
||||
relaxationFactor_*cohesiveTraction
|
||||
cohesiveTraction =
|
||||
relaxationFactor_*cohesiveTraction
|
||||
+ (1.0 - relaxationFactor_)*sigmaN[faceI]*n[faceI];
|
||||
|
||||
refGrad()[faceI] =
|
||||
(
|
||||
cohesiveTraction
|
||||
- (
|
||||
n[faceI]
|
||||
n[faceI]
|
||||
& (
|
||||
mu[faceI]*gradU[faceI].T()
|
||||
mu[faceI]*gradU[faceI].T()
|
||||
- (mu[faceI] + lambda[faceI])*gradU[faceI]
|
||||
)
|
||||
)
|
||||
|
@ -306,7 +306,7 @@ void cohesiveZoneFvPatchVectorField::write(Ostream& os) const
|
|||
directionMixedFvPatchVectorField::write(os);
|
||||
os.writeKeyword("U") << UName_ << 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;
|
||||
os.writeKeyword("relaxationFactor") << relaxationFactor_
|
||||
<< token::END_STATEMENT << nl;
|
|
@ -174,7 +174,7 @@ public:
|
|||
|
||||
//- Update the coefficients associated with the patch field
|
||||
virtual void updateCoeffs();
|
||||
|
||||
|
||||
|
||||
//- Write
|
||||
virtual void write(Ostream&) const;
|
|
@ -195,7 +195,7 @@ void nusseltFvPatchScalarField::updateCoeffs()
|
|||
|
||||
// Lookup temperature diffusivity of the patch
|
||||
const fvPatchField<scalar>& DT =
|
||||
this->lookupPatchField<volScalarField, scalar>(DTName_);
|
||||
this->patch().lookupPatchField<volScalarField, scalar>(DTName_);
|
||||
|
||||
// Calculate flux
|
||||
scalarField tempFlux = alpha_*(Tinternal - Tinf_);
|
|
@ -68,7 +68,6 @@ tractionDisplacementFvPatchVectorField
|
|||
traction_("traction", dict, p.size()),
|
||||
pressure_("pressure", dict, p.size())
|
||||
{
|
||||
Info << "creating tractionDisplacement boundary" << endl;
|
||||
fvPatchVectorField::operator=(patchInternalField());
|
||||
gradient() = vector::zero;
|
||||
Info << "rf: " << rheologyName_ << endl;
|
||||
|
@ -182,6 +181,7 @@ void tractionDisplacementFvPatchVectorField::updateCoeffs()
|
|||
fixedGradientFvPatchVectorField::updateCoeffs();
|
||||
}
|
||||
|
||||
|
||||
// Write
|
||||
void tractionDisplacementFvPatchVectorField::write(Ostream& os) const
|
||||
{
|
|
@ -180,7 +180,7 @@ void tractionDisplacementThermoFvPatchVectorField::updateCoeffs()
|
|||
vectorField n = patch().nf();
|
||||
|
||||
const fvPatchField<tensor>& gradU =
|
||||
lookupPatchField<volTensorField, tensor>("grad(" +UName_ + ")");
|
||||
patch().lookupPatchField<volTensorField, tensor>("grad(" +UName_ + ")");
|
||||
|
||||
// Thermal component
|
||||
|
||||
|
@ -189,7 +189,7 @@ void tractionDisplacementThermoFvPatchVectorField::updateCoeffs()
|
|||
this->db().objectRegistry::lookupObject<thermalModel>(thermoName_);
|
||||
|
||||
const fvPatchField<scalar>& T =
|
||||
lookupPatchField<volScalarField, scalar>(TName_);
|
||||
patch().lookupPatchField<volScalarField, scalar>(TName_);
|
||||
|
||||
const scalarField rhoThreeKalpha =
|
||||
rheology.rho()().boundaryField()[patch().index()]*
|
|
@ -107,7 +107,7 @@ Foam::tmp<Foam::volScalarField> Foam::BurgersViscoelastic::E(scalar t) const
|
|||
+ eta2_.value()/k2_.value();
|
||||
|
||||
scalar p2 = eta1_.value()*eta2_.value()/(k1_.value()*k2_.value());
|
||||
|
||||
|
||||
scalar q1 = eta1_.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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
tmp<volScalarField> tresult
|
||||
(
|
||||
|
@ -178,7 +178,7 @@ Foam::tmp<Foam::volScalarField> Foam::BurgersViscoelastic::J(scalar t) const
|
|||
|
||||
if(t >= 0)
|
||||
{
|
||||
J = 1.0/k1_.value()
|
||||
J = 1.0/k1_.value()
|
||||
+ (1 - exp(-k2_.value()*t/eta2_.value()))/k2_.value()
|
||||
+ t/eta1_.value();
|
||||
}
|
|
@ -102,14 +102,14 @@ Foam::tmp<Foam::volScalarField> Foam::KelvinSLSViscoelastic::E(scalar t) const
|
|||
if(t>=0)
|
||||
{
|
||||
scalar p1 = eta2_.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());
|
||||
|
||||
E = q0 + (q1/p1 - q0)*exp(-t/p1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
tmp<volScalarField> tresult
|
||||
(
|
||||
|
@ -168,7 +168,7 @@ Foam::tmp<Foam::volScalarField> Foam::KelvinSLSViscoelastic::J(scalar t) const
|
|||
if(t >= 0)
|
||||
{
|
||||
scalar p1 = eta2_.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());
|
|
@ -183,8 +183,8 @@ Foam::MaxwellElasticViscoelastic::J(scalar t) const
|
|||
mesh(),
|
||||
dimensionedScalar
|
||||
(
|
||||
"J",
|
||||
dimless/k_.dimensions(),
|
||||
"J",
|
||||
dimless/k_.dimensions(),
|
||||
1.0/k_.value() + t/eta_.value()
|
||||
),
|
||||
zeroGradientFvPatchScalarField::typeName
|
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
||||
tmp<volScalarField> tresult
|
||||
(
|
|
@ -169,8 +169,8 @@ Foam::tmp<Foam::volScalarField> Foam::MaxwellViscoelastic::J(scalar t) const
|
|||
mesh(),
|
||||
dimensionedScalar
|
||||
(
|
||||
"J",
|
||||
dimless/k_.dimensions(),
|
||||
"J",
|
||||
dimless/k_.dimensions(),
|
||||
1.0/k_.value() + t/eta_.value()
|
||||
),
|
||||
zeroGradientFvPatchScalarField::typeName
|
|
@ -105,7 +105,7 @@ Foam::tmp<Foam::volScalarField> Foam::PronyViscoelastic::E(scalar t) const
|
|||
{
|
||||
E += k_[i]*exp(-t/tau_[i]);
|
||||
}
|
||||
|
||||
|
||||
if(t < 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
|
||||
{
|
||||
notImplemented(type() + "::J(scalar t)");
|
||||
|
||||
|
||||
return 1.0/E(t);
|
||||
}
|
||||
|
|
@ -104,7 +104,7 @@ Foam::contactPatchPair::contactPatchPair
|
|||
cp.mesh().boundaryMesh()[slavePatch_.index()], // to patch
|
||||
intersection::algorithmNames_.read(dict.lookup("projectionAlgo")),
|
||||
intersection::directionNames_.read(dict.lookup("projectionDir"))
|
||||
|
||||
|
||||
),
|
||||
slaveToMasterInterpolate_
|
||||
(
|
||||
|
@ -112,7 +112,7 @@ Foam::contactPatchPair::contactPatchPair
|
|||
cp.mesh().boundaryMesh()[masterPatch_.index()], // to patch
|
||||
intersection::algorithmNames_.read(dict.lookup("projectionAlgo")),
|
||||
intersection::directionNames_.read(dict.lookup("projectionDir"))
|
||||
|
||||
|
||||
)
|
||||
{}
|
||||
|
|
@ -27,7 +27,7 @@ Class
|
|||
|
||||
Description
|
||||
A pair of surfaces in contact.
|
||||
|
||||
|
||||
SourceFiles
|
||||
contactPatchPair.C
|
||||
|
|
@ -241,7 +241,7 @@ void contactProblem::correct()
|
|||
(
|
||||
lambdaPatches[patchI]*tr(gradUpatches[patchI])
|
||||
)
|
||||
|
||||
|
||||
)/(2.0*muPatches[patchI] + lambdaPatches[patchI]);
|
||||
|
||||
// Set the value fractions
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue