2012-09-11 15:42:55 +00:00
|
|
|
if (runTime.outputTime())
|
2013-10-11 13:31:14 +00:00
|
|
|
{
|
2012-09-11 15:42:55 +00:00
|
|
|
volScalarField epsilonEq
|
2013-10-11 13:31:14 +00:00
|
|
|
(
|
|
|
|
IOobject
|
|
|
|
(
|
|
|
|
"epsilonEq",
|
|
|
|
runTime.timeName(),
|
|
|
|
mesh,
|
|
|
|
IOobject::NO_READ,
|
|
|
|
IOobject::AUTO_WRITE
|
|
|
|
),
|
|
|
|
sqrt((2.0/3.0)*magSqr(dev(epsilon)))
|
|
|
|
);
|
2012-09-11 15:42:55 +00:00
|
|
|
|
|
|
|
Info<< "Max epsilonEq = " << max(epsilonEq).value()
|
2013-10-11 13:31:14 +00:00
|
|
|
<< endl;
|
2012-09-11 15:42:55 +00:00
|
|
|
|
|
|
|
volScalarField sigmaEq
|
2013-10-11 13:31:14 +00:00
|
|
|
(
|
|
|
|
IOobject
|
|
|
|
(
|
|
|
|
"sigmaEq",
|
|
|
|
runTime.timeName(),
|
|
|
|
mesh,
|
|
|
|
IOobject::NO_READ,
|
|
|
|
IOobject::AUTO_WRITE
|
|
|
|
),
|
|
|
|
sqrt((3.0/2.0)*magSqr(dev(sigma)))
|
|
|
|
);
|
2014-06-01 18:12:52 +00:00
|
|
|
|
2012-09-11 15:42:55 +00:00
|
|
|
Info<< "Max sigmaEq = " << max(sigmaEq).value()
|
2013-10-11 13:31:14 +00:00
|
|
|
<< endl;
|
2014-06-01 18:12:52 +00:00
|
|
|
|
2013-10-11 13:31:14 +00:00
|
|
|
//- boundary traction
|
|
|
|
// volVectorField traction
|
|
|
|
// (
|
|
|
|
// IOobject
|
|
|
|
// (
|
|
|
|
// "traction",
|
|
|
|
// runTime.timeName(),
|
|
|
|
// mesh,
|
|
|
|
// IOobject::NO_READ,
|
|
|
|
// IOobject::AUTO_WRITE
|
|
|
|
// ),
|
|
|
|
// mesh,
|
|
|
|
// dimensionedVector("zero", dimForce/dimArea, vector::zero)
|
|
|
|
// );
|
|
|
|
// forAll(traction.boundaryField(), patchi)
|
|
|
|
// {
|
|
|
|
// traction.boundaryField()[patchi] =
|
|
|
|
// n.boundaryField()[patchi] & sigma.boundaryField()[patchi];
|
|
|
|
// }
|
|
|
|
|
|
|
|
// contact fields
|
|
|
|
// if(contactBoundaries)
|
|
|
|
// {
|
|
|
|
// volScalarField stickSlipFaces
|
|
|
|
// (
|
|
|
|
// IOobject
|
|
|
|
// (
|
|
|
|
// "stickSlipFaces",
|
|
|
|
// runTime.timeName(),
|
|
|
|
// mesh,
|
|
|
|
// IOobject::NO_READ,
|
|
|
|
// IOobject::AUTO_WRITE
|
|
|
|
// ),
|
|
|
|
// mesh,
|
|
|
|
// dimensionedScalar("zero", dimless, 0.0)
|
|
|
|
// );
|
|
|
|
// forAll(stickSlipFaces.boundaryField(), patchi)
|
|
|
|
// {
|
|
|
|
// if(U.boundaryField()[patchi].type()
|
|
|
|
// ==
|
|
|
|
// solidContactFvPatchVectorField::typeName)
|
|
|
|
// {
|
|
|
|
// const solidContactFvPatchVectorField& Upatch =
|
|
|
|
// refCast<const solidContactFvPatchVectorField>
|
|
|
|
// (U.boundaryField()[patchi]);
|
|
|
|
|
|
|
|
// if(!Upatch.master())
|
|
|
|
// {
|
|
|
|
// stickSlipFaces.boundaryField()[patchi] =
|
|
|
|
// Upatch.frictionContactModelPtr()->stickSlipFaces();
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// stickSlipFaces.write();
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//- boundary forces
|
|
|
|
// Info << nl;
|
|
|
|
// forAll(mesh.boundary(), patchi)
|
|
|
|
// {
|
|
|
|
// Info << "Patch " << mesh.boundary()[patchi].name() << endl;
|
|
|
|
// vectorField totalForce = mesh.Sf().boundaryField()[patchi] & sigma.boundaryField()[patchi];
|
|
|
|
|
|
|
|
// vector force = sum( totalForce );
|
|
|
|
// Info << "\ttotal force is " << force << " N" << endl;
|
2014-06-01 18:12:52 +00:00
|
|
|
|
2013-10-11 13:31:14 +00:00
|
|
|
// const vectorField& nb = n.boundaryField()[patchi];
|
|
|
|
// scalar normalForce = sum( nb & totalForce );
|
|
|
|
// Info << "\tnormal force is " << normalForce << " N" << endl;
|
|
|
|
// scalar shearForce = mag(sum( (I - sqr(nb)) & totalForce ));
|
|
|
|
// Info << "\tshear force is " << shearForce << " N" << endl;
|
|
|
|
// }
|
2013-07-18 01:02:34 +00:00
|
|
|
|
2012-09-11 15:42:55 +00:00
|
|
|
runTime.write();
|
2013-10-11 13:31:14 +00:00
|
|
|
}
|