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
|
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)
|
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)/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
|
|
|
@ -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
|
||||||
(
|
(
|
|
@ -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() =
|
||||||
(
|
(
|
|
@ -213,7 +213,7 @@ void cohesiveZoneFvPatchVectorField::updateCoeffs()
|
||||||
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_ + ")"
|
||||||
);
|
);
|
|
@ -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_);
|
|
@ -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
|
||||||
{
|
{
|
|
@ -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()]*
|
Some files were not shown because too many files have changed in this diff Show more
Reference in a new issue