So the user specification is travelInterval rather than
fractionalTravelInterval, and with the dimensions of the distance the object
travels:
- travelInterval: part of the stroke travelled after
which the cached motion scaling weights are recalculated
Unfortunately this is a lot less convenient to specify, particularly as it is
now a dimensioned input which may have to be changed if the stroke or valve lift
table are changed but it was felt by the sponsors of the project that the
automatic method to evaluate the valve lift from the Function1 was not
sufficiently robust.
130 lines
3.0 KiB
C++
130 lines
3.0 KiB
C++
/*--------------------------------*- C++ -*----------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration | Website: https://openfoam.org
|
|
\\ / A nd | Version: dev
|
|
\\/ M anipulation |
|
|
\*---------------------------------------------------------------------------*/
|
|
FoamFile
|
|
{
|
|
format ascii;
|
|
class dictionary;
|
|
location "constant";
|
|
object dynamicMeshDict;
|
|
}
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
mover
|
|
{
|
|
|
|
type multiValveEngine;
|
|
|
|
libs ("libfvMeshMoversMultiValveEngine.so");
|
|
|
|
slidingPatches
|
|
(
|
|
liner
|
|
evStem
|
|
ivStem
|
|
nonCouple_cyl_ev
|
|
nonCouple_ev_cyl
|
|
nonCouple_cyl_iv
|
|
nonCouple_iv_cyl
|
|
);
|
|
|
|
linerPatches (liner);
|
|
|
|
piston
|
|
{
|
|
patches (piston);
|
|
axis (0 0 1);
|
|
|
|
motion
|
|
{
|
|
type crankConnectingRodMotion;
|
|
|
|
conRodLength 1000; // To mimic pure sinusoidal motion
|
|
stroke 1;
|
|
}
|
|
|
|
movingFrozenLayerThickness 0;
|
|
|
|
travelInterval 0.1;
|
|
cosineScaling yes;
|
|
}
|
|
|
|
valves
|
|
{
|
|
iv
|
|
{
|
|
patches (ivHead);
|
|
|
|
axis (0 0 1);
|
|
|
|
movingFrozenLayerThickness 0;
|
|
|
|
travelInterval 5.8e-3;
|
|
cosineScaling yes;
|
|
|
|
minLift 0.01;
|
|
|
|
motion
|
|
{
|
|
type table;
|
|
values
|
|
(
|
|
// lift: 0.002 / CAD
|
|
(0 0.0)
|
|
(340 0.01) // IVO + meshToMesh map
|
|
(480 0.29)
|
|
(620 0.01) // IVC + meshToMesh map
|
|
(720 0.0)
|
|
);
|
|
|
|
// For multi-cycle simulations, use repeat
|
|
outOfBounds repeat;
|
|
interpolationScheme linear;
|
|
}
|
|
}
|
|
|
|
ev
|
|
{
|
|
$iv;
|
|
patches (evHead);
|
|
|
|
motion
|
|
{
|
|
type table;
|
|
values
|
|
(
|
|
(0 0.0)
|
|
(100 0.01) // EVO + meshToMesh map
|
|
(240 0.29)
|
|
(380 0.01) // EVC + meshToMesh map
|
|
(720 0.0)
|
|
);
|
|
// For multi-cycle simulations, use repeat
|
|
outOfBounds repeat;
|
|
interpolationScheme linear;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
topoChanger
|
|
{
|
|
type meshToMesh;
|
|
|
|
libs ("libmeshToMeshTopoChanger.so");
|
|
|
|
times
|
|
(
|
|
#include "$FOAM_CASE/constant/meshTimes"
|
|
);
|
|
|
|
repeat 720;
|
|
timeDelta 1e-6;
|
|
}
|
|
|
|
// ************************************************************************* //
|