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)
89  }
90  else
91  {
92  //Hold
93 
94  return holdRelaxation_;
95  }
96 }
97 
98 
99 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
100 
101 } // End namespace Foam
102 
103 // ************************************************************************* //
Foam::TimeState::timeOutputValue
scalar timeOutputValue() const
Return current time value.
Definition: TimeState.C:67
Foam::relaxationModel::runTime_
const Time & runTime_
Reference to the conformalVoronoiMesh holding this cvControls object.
Definition: relaxationModel.H:63
Foam::addToRunTimeSelectionTable
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
Foam::objectRegistry::time
const Time & time() const
Return time.
Definition: objectRegistry.H:117
Foam::rampHoldFall::holdRelaxation_
scalar holdRelaxation_
Relaxation coefficient for the hold portion.
Definition: rampHoldFall.H:62
Foam::dimensioned::value
const Type & value() const
Return const reference to value.
Definition: dimensionedType.C:261
Foam::rampHoldFall::rampStartRelaxation_
scalar rampStartRelaxation_
Relaxation coefficient at the start of the ramp.
Definition: rampHoldFall.H:59
Foam::rampHoldFall::fallStartFraction_
scalar fallStartFraction_
Fraction through the run where the hold ends and the fall starts.
Definition: rampHoldFall.H:71
Foam::rampHoldFall::fallGradient_
scalar fallGradient_
Gradient in fall portion, normalised against time.
Definition: rampHoldFall.H:77
Foam::rampHoldFall::rampEndFraction_
scalar rampEndFraction_
Fraction through the run where the ramp ends and the hold starts.
Definition: rampHoldFall.H:68
Foam::rampHoldFall::relaxation
virtual scalar relaxation()
Return the current relaxation coefficient.
addToRunTimeSelectionTable.H
Macros for easy insertion into run-time selection tables.
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::rampHoldFall::fallEndRelaxation_
scalar fallEndRelaxation_
Relaxation coefficient at the end of the fall.
Definition: rampHoldFall.H:65
Foam::rampHoldFall::rampGradient_
scalar rampGradient_
Gradient in ramp portion, normalised against time.
Definition: rampHoldFall.H:74
Foam::readScalar
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if succesful.
Definition: doubleScalar.H:63
Foam::rampHoldFall::rampHoldFall
rampHoldFall(const dictionary &relaxationDict, const Time &runTime)
Construct from components.
Foam::Time::endTime
virtual dimensionedScalar endTime() const
Return end time.
Definition: Time.C:878
Foam::defineTypeNameAndDebug
defineTypeNameAndDebug(combustionModel, 0)
Foam::Time::startTime
virtual dimensionedScalar startTime() const
Return start time.
Definition: Time.C:872
rampHoldFall.H
lookup
stressControl lookup("compactNormalStress") >> compactNormalStress