Loading...
Searching...
No Matches
freePiston.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2017 OpenFOAM Foundation
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::freePiston
28
29Description
30 In case of free pistons, the piston position is determined by a user-defined
31 position according to time.
32
33 The piston trajectory is specified in \c constant/engineGeometry using a
34 table or a separated file. The position is relative to the cylinder head,
35 i.e. decreasing when compressing.
36
37 For example,
38 \verbatim
39 pistonPositionTime table ((0 0.13) (0.020 0.03));
40 \endverbatim
41 or
42 \verbatim
43 pistonPositionTime
44 {
45 type table;
46 file "<constant>/pistonPosition.dat";
47 outOfBounds clamp;
48 interpolationScheme linear;
49 }
50 \endverbatim
51
52SourceFiles
53 freePiston.C
54
55\*---------------------------------------------------------------------------*/
56
57#ifndef freePiston_H
58#define freePiston_H
59
60#include "engineTime.H"
61#include "dictionary.H"
62#include "dimensionedScalar.H"
63#include "Function1.H"
64
65// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
66
67namespace Foam
68{
70/*---------------------------------------------------------------------------*\
71 Class freePiston Declaration
72\*---------------------------------------------------------------------------*/
73
74class freePiston
75:
76 public engineTime
77{
78 // Private Data
79
80 autoPtr<Function1<scalar>> pistonPositionTime_;
81
82
83 // Private Member Functions
84
85 //- No copy construct
86 freePiston(const freePiston&) = delete;
87
88 //- No copy assignment
89 void operator=(const freePiston&) = delete;
90
91
92public:
93
94 //- Runtime type information
95 TypeName("freePiston");
97
98 // Constructors
99
100 //- Construct from objectRegistry arguments
101 freePiston
102 (
103 const word& name,
104 const fileName& rootPath,
105 const fileName& caseName,
106 const fileName& systemName = "system",
107 const fileName& constantName = "constant",
108 const fileName& dictName = "engineGeometry"
109 );
110
111 //- Destructor
112 virtual ~freePiston() = default;
113
114
115 // Member Functions
116
117 // Conversion
118
119 //- Calculate the piston position from the engine geometry
120 // and given crank angle.
121 scalar pistonPosition(const scalar theta) const;
122
123
124 // Access
125
126 //- Return current engine time
127 virtual scalar theta() const;
128
129 //- Return time unit
130 virtual word unit() const;
131
132 //- Return engine time increment
133 virtual scalar deltaTheta() const;
134};
135
136
137// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
138
139} // End namespace Foam
140
141// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
142
143#endif
144
145// ************************************************************************* //
const fileName & rootPath() const noexcept
The root path.
Definition TimePathsI.H:66
const fileName & caseName() const noexcept
The case name.
Definition TimePathsI.H:78
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
engineTime(const word &name, const fileName &rootPath, const fileName &caseName, const fileName &systemName="system", const fileName &constantName="constant", const fileName &dictName="engineGeometry")
Construct from objectRegistry arguments.
Definition engineTime.C:36
dimensionedScalar pistonPosition() const
Return current piston position.
Definition engineTime.C:87
A class for handling file names.
Definition fileName.H:75
virtual ~freePiston()=default
Destructor.
virtual scalar theta() const
Return current engine time.
Definition freePiston.C:62
TypeName("freePiston")
Runtime type information.
virtual scalar deltaTheta() const
Return engine time increment.
Definition freePiston.C:74
virtual word unit() const
Return time unit.
Definition freePiston.C:68
A class for handling words, derived from Foam::string.
Definition word.H:66
const word dictName("faMeshDefinition")
Namespace for OpenFOAM.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
Definition exprTraits.C:127
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68