31 #include "surfaceInterpolate.H" 44 Foam::fvMotionSolverEngineMesh::fvMotionSolverEngineMesh(
const IOobject&
io)
51 engineDB_.engineDict()
54 engineDB_.engineDict().
readIfPresent(
"pistonLayers", pistonLayers_);
68 scalar deltaZ = engineDB_.pistonDisplacement().value();
69 Info<<
"deltaZ = " << deltaZ <<
endl;
72 scalar pistonPlusLayers = pistonPosition_.value() + pistonLayers_.value();
74 scalar pistonSpeed = deltaZ/engineDB_.deltaTValue();
76 motionSolver_.pointMotionU().boundaryFieldRef()[pistonIndex_] ==
85 motionSolver_.pointMotionU().boundaryFieldRef()[linerIndex_] ==
86 pistonSpeed*
pos0(deckHeight_.value() - linerPoints)
87 *(deckHeight_.value() - linerPoints)
88 /(deckHeight_.value() - pistonPlusLayers);
91 motionSolver_.solve();
103 const bool absolutePhi = moving();
110 movePoints(motionSolver_.curPoints());
120 movePoints(motionSolver_.curPoints());
124 pistonPosition_.value() += deltaZ;
126 Info<<
"clearance: " << deckHeight_.value() - pistonPosition_.value() <<
nl 127 <<
"Piston speed = " << pistonSpeed <<
" m/s" <<
endl;
Foam::fvMotionSolverEngineMesh.
constexpr char nl
The newline '\n' character (0x0a)
Ostream & endl(Ostream &os)
Add newline and flush stream.
GeometricField< vector, fvPatchField, volMesh > volVectorField
Macros for easy insertion into run-time selection tables.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
~fvMotionSolverEngineMesh()
Destructor.
dimensionedScalar pos0(const dimensionedScalar &ds)
bool readIfPresent(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX) const
Find an entry if present, and assign to T val. FatalIOError if it is found and the number of tokens i...
defineTypeNameAndDebug(combustionModel, 0)
static tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > interpolate(const GeometricField< Type, fvPatchField, volMesh > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
Calculate the mesh motion flux and convert fluxes from absolute to relative and back.
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
tmp< surfaceScalarField > meshPhi(const volVectorField &U)
const std::string patch
OpenFOAM patch number as a std::string.
messageStream Info
Information stream (stdout output on master, null elsewhere)
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Defines the attributes of an object for which implicit objectRegistry management is supported...
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)
static constexpr const zero Zero
Global zero (0)