rampHoldFall.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "rampHoldFall.H"
28 
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
30 
31 namespace Foam
32 {
33 
34 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
35 
36 defineTypeNameAndDebug(rampHoldFall, 0);
37 addToRunTimeSelectionTable(relaxationModel, rampHoldFall, dictionary);
38 
39 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
40 
42 (
43  const dictionary& relaxationDict,
44  const Time& runTime
45 )
46 :
47  relaxationModel(typeName, relaxationDict, runTime),
48  rampStartRelaxation_(readScalar(coeffDict().lookup("rampStartRelaxation"))),
49  holdRelaxation_(readScalar(coeffDict().lookup("holdRelaxation"))),
50  fallEndRelaxation_(readScalar(coeffDict().lookup("fallEndRelaxation"))),
51  rampEndFraction_(readScalar(coeffDict().lookup("rampEndFraction"))),
52  fallStartFraction_(readScalar(coeffDict().lookup("fallStartFraction"))),
53  rampGradient_((holdRelaxation_ - rampStartRelaxation_)/(rampEndFraction_)),
54  fallGradient_
55  (
56  (fallEndRelaxation_ - holdRelaxation_)/(1 - fallStartFraction_)
57  )
58 {}
59 
60 
61 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
62 
64 {
65  scalar t = runTime_.time().timeOutputValue();
66 
67  scalar tStart = runTime_.time().startTime().value();
68  scalar tEnd = runTime_.time().endTime().value();
69  scalar tSpan = tEnd - tStart;
70 
71  if (tSpan < VSMALL)
72  {
73  return rampStartRelaxation_;
74  }
75 
76  if (t - tStart < rampEndFraction_*tSpan)
77  {
78  // Ramp
79 
80  return rampGradient_*((t - tStart)/tSpan) + rampStartRelaxation_;
81  }
82  else if (t - tStart > fallStartFraction_*tSpan)
83  {
84  // Fall
85 
86  return
87  fallGradient_*((t - tStart)/tSpan)
88  + fallEndRelaxation_ - fallGradient_;
89  }
90  else
91  {
92  //Hold
93 
94  return holdRelaxation_;
95  }
96 }
97 
98 
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
100 
101 } // End namespace Foam
102 
103 // ************************************************************************* //
const Time & time() const
Return time.
virtual dimensionedScalar startTime() const
Return start time.
Definition: Time.C:835
const Type & value() const
Return const reference to value.
Macros for easy insertion into run-time selection tables.
const Time & runTime_
Reference to the conformalVoronoiMesh holding this cvControls object.
stressControl lookup("compactNormalStress") >> compactNormalStress
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if succesful.
Definition: doubleScalar.H:63
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
defineTypeNameAndDebug(combustionModel, 0)
virtual scalar relaxation()
Return the current relaxation coefficient.
scalar timeOutputValue() const
Return current time value.
Definition: TimeStateI.H:29
virtual dimensionedScalar endTime() const
Return end time.
Definition: Time.C:841
Namespace for OpenFOAM.
rampHoldFall(const dictionary &relaxationDict, const Time &runTime)
Construct from components.