3 label patchID = mesh.boundaryMesh().findPatchID("freeSurface");
7 FatalErrorIn(args.executable())
8 << "Can't find patch with name freeSurface" << abort(FatalError);
13 DU.boundaryField()[patchID].type()
14 != tractionDisplacementIncrementFvPatchVectorField::typeName
17 FatalErrorIn(args.executable())
18 << "Bounary condition on " << DU.name()
20 << DU.boundaryField()[patchID].type()
21 << "for patch: " << mesh.boundaryMesh()[patchID].name()
23 << tractionDisplacementIncrementFvPatchVectorField::typeName
27 tractionDisplacementIncrementFvPatchVectorField& tractionPatch =
28 refCast<tractionDisplacementIncrementFvPatchVectorField>
30 DU.boundaryField()[patchID]
33 vectorField n = mesh.boundary()[patchID].nf();
35 vector traction = vector::zero;
36 vector DTraction = vector::zero;
38 vectorField relaxedTraction =
42 sigma.boundaryField()[patchID]
43 + DSigmaCorr.boundaryField()[patchID]
47 tractionPatch.DTraction() = DTraction + (traction - relaxedTraction);
49 tractionPatch.DPressure() = 0.0;