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
|
|
@ -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
|
|
@ -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() =
|
||||
(
|
|
@ -213,7 +213,7 @@ void cohesiveZoneFvPatchVectorField::updateCoeffs()
|
|||
rheology.lambda()().boundaryField()[patch().index()];
|
||||
|
||||
const fvPatchField<tensor>& gradU =
|
||||
lookupPatchField<volTensorField, tensor>
|
||||
patch().lookupPatchField<volTensorField, tensor>
|
||||
(
|
||||
"grad(" +UName_ + ")"
|
||||
);
|
|
@ -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()]*
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue