74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
Info<< "Reading field D\n" << endl;
|
|
volVectorField D
|
|
(
|
|
IOobject
|
|
(
|
|
"D",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::MUST_READ,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
mesh
|
|
);
|
|
|
|
|
|
autoPtr<volScalarField> Tptr(nullptr);
|
|
|
|
if (thermalStress)
|
|
{
|
|
Info<< "Reading field T\n" << endl;
|
|
Tptr.reset
|
|
(
|
|
new volScalarField
|
|
(
|
|
IOobject
|
|
(
|
|
"T",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::MUST_READ,
|
|
IOobject::AUTO_WRITE
|
|
),
|
|
mesh
|
|
)
|
|
);
|
|
}
|
|
|
|
|
|
Info<< "Calculating stress field sigmaD\n" << endl;
|
|
volSymmTensorField sigmaD
|
|
(
|
|
IOobject
|
|
(
|
|
"sigmaD",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
mu*twoSymm(fvc::grad(D)) + lambda*(I*tr(fvc::grad(D)))
|
|
);
|
|
|
|
Info<< "Calculating explicit part of div(sigma) divSigmaExp\n" << endl;
|
|
volVectorField divSigmaExp
|
|
(
|
|
IOobject
|
|
(
|
|
"divSigmaExp",
|
|
runTime.timeName(),
|
|
mesh,
|
|
IOobject::NO_READ,
|
|
IOobject::NO_WRITE
|
|
),
|
|
fvc::div(sigmaD)
|
|
);
|
|
|
|
if (compactNormalStress)
|
|
{
|
|
divSigmaExp -= fvc::laplacian(2*mu + lambda, D, "laplacian(DD,D)");
|
|
}
|
|
else
|
|
{
|
|
divSigmaExp -= fvc::div((2*mu + lambda)*fvc::grad(D), "div(sigmaD)");
|
|
}
|