setRDeltaT.H
Go to the documentation of this file.
1{
2 volScalarField& rDeltaT = trDeltaT.ref();
3
4 const dictionary& pimpleDict = pimple.dict();
5
6 scalar maxCo
7 (
8 pimpleDict.getOrDefault<scalar>("maxCo", 0.9)
9 );
10
12 (
13 pimpleDict.getOrDefault<scalar>("maxAlphaCo", 0.2)
14 );
15
17 (
18 pimpleDict.getOrDefault<scalar>("rDeltaTSmoothingCoeff", 0.1)
19 );
20
22 (
23 pimpleDict.getOrDefault<label>("nAlphaSpreadIter", 1)
24 );
25
27 (
28 pimpleDict.getOrDefault<scalar>("alphaSpreadDiff", 0.2)
29 );
30
32 (
33 pimpleDict.getOrDefault<scalar>("alphaSpreadMax", 0.99)
34 );
35
37 (
38 pimpleDict.getOrDefault<scalar>("alphaSpreadMin", 0.01)
39 );
40
42 (
43 pimpleDict.getOrDefault<label>("nAlphaSweepIter", 5)
44 );
45
47 (
48 pimpleDict.getOrDefault<scalar>("rDeltaTDampingCoeff", 1.0)
49 );
50
51 scalar maxDeltaT
52 (
53 pimpleDict.getOrDefault<scalar>("maxDeltaT", GREAT)
54 );
55
56 volScalarField rDeltaT0("rDeltaT0", rDeltaT);
57
58 // Set the reciprocal time-step from the local Courant number
59 rDeltaT.ref() = max
60 (
61 1/dimensionedScalar("maxDeltaT", dimTime, maxDeltaT),
62 fvc::surfaceSum(mag(rhoPhi))()()
63 /((2*maxCo)*mesh.V()*rho())
64 );
65
67 {
68 // Further limit the reciprocal time-step
69 // in the vicinity of the interface
70
71 volScalarField alpha1Bar(fvc::average(alpha1));
72
73 rDeltaT.ref() = max
74 (
75 rDeltaT(),
76 pos0(alpha1Bar() - alphaSpreadMin)
77 *pos0(alphaSpreadMax - alpha1Bar())
78 *fvc::surfaceSum(mag(phi))()()
79 /((2*maxAlphaCo)*mesh.V())
80 );
81 }
82
83 // Update tho boundary values of the reciprocal time-step
84 rDeltaT.correctBoundaryConditions();
85
86 Info<< "Flow time scale min/max = "
87 << gMin(1/rDeltaT.primitiveField())
88 << ", " << gMax(1/rDeltaT.primitiveField()) << endl;
89
90 if (rDeltaTSmoothingCoeff < 1.0)
91 {
92 fvc::smooth(rDeltaT, rDeltaTSmoothingCoeff);
93 }
94
95 if (nAlphaSpreadIter > 0)
96 {
97 fvc::spread
98 (
99 rDeltaT,
100 alpha1,
105 );
106 }
107
108 if (nAlphaSweepIter > 0)
109 {
110 fvc::sweep(rDeltaT, alpha1, nAlphaSweepIter, alphaSpreadDiff);
111 }
112
113 Info<< "Smoothed flow time scale min/max = "
114 << gMin(1/rDeltaT.primitiveField())
115 << ", " << gMax(1/rDeltaT.primitiveField()) << endl;
116
117 // Limit rate of change of time scale
118 // - reduce as much as required
119 // - only increase at a fraction of old time scale
120 if
121 (
123 && runTime.timeIndex() > runTime.startTimeIndex() + 1
124 )
125 {
126 rDeltaT = max
127 (
128 rDeltaT,
129 (scalar(1) - rDeltaTDampingCoeff)*rDeltaT0
130 );
131
132 Info<< "Damped flow time scale min/max = "
133 << gMin(1/rDeltaT.primitiveField())
134 << ", " << gMax(1/rDeltaT.primitiveField()) << endl;
135 }
136}
Y[inertIndex] max(0.0)
rhoPhi
Definition: rhoEqn.H:10
surfaceScalarField & phi
pimpleControl & pimple
const volScalarField & alpha1
scalar rDeltaTDampingCoeff(pimpleDict.getOrDefault< scalar >("rDeltaTDampingCoeff", 1.0))
const dictionary & pimpleDict
Definition: setRDeltaT.H:32
scalar rDeltaTSmoothingCoeff(pimpleDict.getOrDefault< scalar >("rDeltaTSmoothingCoeff", 0.1))
volScalarField rDeltaT0("rDeltaT0", rDeltaT)
dynamicFvMesh & mesh
engineTime & runTime
tmp< volScalarField > trDeltaT
Definition: createRDeltaT.H:3
scalar maxCo
scalar alphaSpreadMax(pimpleDict.getOrDefault< scalar >("alphaSpreadMax", 0.99))
scalar alphaSpreadDiff(pimpleDict.getOrDefault< scalar >("alphaSpreadDiff", 0.2))
scalar alphaSpreadMin(pimpleDict.getOrDefault< scalar >("alphaSpreadMin", 0.01))
label nAlphaSpreadIter(pimpleDict.getOrDefault< label >("nAlphaSpreadIter", 1))
label nAlphaSweepIter(pimpleDict.getOrDefault< label >("nAlphaSweepIter", 5))
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:82
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:372
Type gMin(const FieldField< Field, Type > &f)
Type gMax(const FieldField< Field, Type > &f)
scalar maxAlphaCo