121 lines
2.8 KiB
C++
121 lines
2.8 KiB
C++
|
if (runTime.outputTime())
|
||
|
{
|
||
|
// Displacement gradient
|
||
|
tetPointTensorField gradU = tetFec::grad(U);
|
||
|
|
||
|
// Stress tensor
|
||
|
tetPointSymmTensorField sigma =
|
||
|
rho*(2.0*mu*symm(gradU) + lambda*I*tr(gradU));
|
||
|
|
||
|
|
||
|
// Create pointMesh for field post-processing
|
||
|
const pointMesh& pMesh = pointMesh::New(mesh);
|
||
|
|
||
|
// U
|
||
|
pointVectorField Up
|
||
|
(
|
||
|
IOobject
|
||
|
(
|
||
|
"Up",
|
||
|
runTime.timeName(),
|
||
|
mesh,
|
||
|
IOobject::NO_READ,
|
||
|
IOobject::AUTO_WRITE
|
||
|
),
|
||
|
pMesh,
|
||
|
U.dimensions()
|
||
|
);
|
||
|
|
||
|
Up.internalField() = vectorField::subField
|
||
|
(
|
||
|
U.internalField(),
|
||
|
pMesh.size()
|
||
|
);
|
||
|
|
||
|
// sigmaEq
|
||
|
pointScalarField sigmaEq
|
||
|
(
|
||
|
IOobject
|
||
|
(
|
||
|
"sigmaEq",
|
||
|
runTime.timeName(),
|
||
|
mesh,
|
||
|
IOobject::NO_READ,
|
||
|
IOobject::AUTO_WRITE
|
||
|
),
|
||
|
pMesh,
|
||
|
sigma.dimensions()
|
||
|
);
|
||
|
|
||
|
sigmaEq.internalField() = scalarField::subField
|
||
|
(
|
||
|
sqrt((3.0/2.0)*magSqr(dev(sigma.internalField())))(),
|
||
|
pMesh.size()
|
||
|
);
|
||
|
|
||
|
// sigmaXX
|
||
|
pointScalarField sigmaXX
|
||
|
(
|
||
|
IOobject
|
||
|
(
|
||
|
"sigmaXX",
|
||
|
runTime.timeName(),
|
||
|
mesh,
|
||
|
IOobject::NO_READ,
|
||
|
IOobject::AUTO_WRITE
|
||
|
),
|
||
|
pMesh,
|
||
|
sigma.dimensions()
|
||
|
);
|
||
|
|
||
|
sigmaXX.internalField() = scalarField::subField
|
||
|
(
|
||
|
sigma.component(symmTensor::XX)().internalField(),
|
||
|
pMesh.size()
|
||
|
);
|
||
|
|
||
|
// sigmaYY
|
||
|
pointScalarField sigmaYY
|
||
|
(
|
||
|
IOobject
|
||
|
(
|
||
|
"sigmaYY",
|
||
|
runTime.timeName(),
|
||
|
mesh,
|
||
|
IOobject::NO_READ,
|
||
|
IOobject::AUTO_WRITE
|
||
|
),
|
||
|
pMesh,
|
||
|
sigma.dimensions()
|
||
|
);
|
||
|
|
||
|
sigmaYY.internalField() = scalarField::subField
|
||
|
(
|
||
|
sigma.component(symmTensor::YY)().internalField(),
|
||
|
pMesh.size()
|
||
|
);
|
||
|
|
||
|
// sigmaXY
|
||
|
pointScalarField sigmaXY
|
||
|
(
|
||
|
IOobject
|
||
|
(
|
||
|
"sigmaXY",
|
||
|
runTime.timeName(),
|
||
|
mesh,
|
||
|
IOobject::NO_READ,
|
||
|
IOobject::AUTO_WRITE
|
||
|
),
|
||
|
pMesh,
|
||
|
sigma.dimensions()
|
||
|
);
|
||
|
|
||
|
sigmaXY.internalField() = scalarField::subField
|
||
|
(
|
||
|
sigma.component(symmTensor::XY)().internalField(),
|
||
|
pMesh.size()
|
||
|
);
|
||
|
|
||
|
runTime.write();
|
||
|
}
|