Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
587c9357
Commit
587c9357
authored
Jun 26, 2015
by
Henry Weller
Browse files
LTS, MULES and sub-cycling: Improved the handling of the rSubDeltaT field
parent
d14e8ed1
Changes
7
Hide whitespace changes
Inline
Side-by-side
applications/solvers/multiphase/interFoam/alphaEqn.H
View file @
587c9357
...
...
@@ -82,7 +82,7 @@
?
fv
::
localEulerDdtScheme
<
scalar
>
(
mesh
,
trSubDeltaT
().
name
()
nAlphaSubCycles
>
1
?
"rSubDeltaT"
:
"rDeltaT"
).
fvmDdt
(
alpha1
)
:
fv
::
EulerDdtScheme
<
scalar
>
(
mesh
).
fvmDdt
(
alpha1
)
)
...
...
applications/solvers/multiphase/interFoam/alphaEqnSubCycle.H
View file @
587c9357
...
...
@@ -13,6 +13,16 @@ if (nAlphaSubCycles > 1)
dimensionedScalar
(
"0"
,
rhoPhi
.
dimensions
(),
0
)
);
tmp
<
volScalarField
>
trSubDeltaT
;
if
(
LTS
)
{
trSubDeltaT
=
tmp
<
volScalarField
>
(
new
volScalarField
(
"rSubDeltaT"
,
trDeltaT
()
*
nAlphaSubCycles
)
);
}
for
(
subCycle
<
volScalarField
>
alphaSubCycle
(
alpha1
,
nAlphaSubCycles
);
...
...
applications/solvers/multiphase/interFoam/createRDeltaT.H
deleted
100644 → 0
View file @
d14e8ed1
bool
LTS
=
word
(
mesh
.
ddtScheme
(
"default"
))
==
fv
::
localEulerDdtScheme
<
scalar
>::
typeName
;
tmp
<
volScalarField
>
trDeltaT
;
tmp
<
volScalarField
>
trSubDeltaT
;
if
(
LTS
)
{
scalar
maxDeltaT
(
pimple
.
dict
().
lookupOrDefault
<
scalar
>
(
"maxDeltaT"
,
GREAT
)
);
trDeltaT
=
tmp
<
volScalarField
>
(
new
volScalarField
(
IOobject
(
"rDeltaT"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
AUTO_WRITE
),
mesh
,
1
/
dimensionedScalar
(
"maxDeltaT"
,
dimTime
,
maxDeltaT
),
zeroGradientFvPatchScalarField
::
typeName
)
);
trSubDeltaT
=
tmp
<
volScalarField
>
(
new
volScalarField
(
IOobject
(
"rSubDeltaT"
,
runTime
.
timeName
(),
mesh
),
mesh
,
1
/
dimensionedScalar
(
"maxDeltaT"
,
dimTime
,
maxDeltaT
)
)
);
}
applications/solvers/multiphase/interFoam/setRDeltaT.H
View file @
587c9357
{
volScalarField
&
rDeltaT
=
trDeltaT
();
volScalarField
&
rSubDeltaT
=
trSubDeltaT
();
const
dictionary
&
pimpleDict
=
pimple
.
dict
();
...
...
@@ -134,9 +133,4 @@
<<
gMin
(
1
/
rDeltaT
.
internalField
())
<<
", "
<<
gMax
(
1
/
rDeltaT
.
internalField
())
<<
endl
;
}
const
dictionary
&
alphaControls
=
mesh
.
solverDict
(
alpha1
.
name
());
label
nAlphaSubCycles
(
readLabel
(
alphaControls
.
lookup
(
"nAlphaSubCycles"
)));
rSubDeltaT
=
rDeltaT
*
nAlphaSubCycles
;
}
applications/solvers/multiphase/reactingTwoPhaseEulerFoam/phaseSystems/twoPhaseSystem/twoPhaseSystem.C
View file @
587c9357
...
...
@@ -175,6 +175,10 @@ void Foam::twoPhaseSystem::solve()
label
nAlphaSubCycles
(
readLabel
(
alphaControls
.
lookup
(
"nAlphaSubCycles"
)));
label
nAlphaCorr
(
readLabel
(
alphaControls
.
lookup
(
"nAlphaCorr"
)));
bool
LTS
=
word
(
mesh
.
ddtScheme
(
"default"
))
==
fv
::
localEulerDdtScheme
<
scalar
>::
typeName
;
word
alphaScheme
(
"div(phi,"
+
alpha1
.
name
()
+
')'
);
word
alpharScheme
(
"div(phir,"
+
alpha1
.
name
()
+
')'
);
...
...
@@ -316,6 +320,22 @@ void Foam::twoPhaseSystem::solve()
if
(
nAlphaSubCycles
>
1
)
{
tmp
<
volScalarField
>
trSubDeltaT
;
if
(
LTS
)
{
const
volScalarField
&
rDeltaT
=
mesh
.
objectRegistry
::
lookupObject
<
volScalarField
>
(
"rDeltaT"
);
trSubDeltaT
=
tmp
<
volScalarField
>
(
new
volScalarField
(
"rSubDeltaT"
,
rDeltaT
*
nAlphaSubCycles
)
);
}
for
(
subCycle
<
volScalarField
>
alphaSubCycle
(
alpha1
,
nAlphaSubCycles
);
...
...
src/finiteVolume/fvMatrices/solvers/MULES/CMULESTemplates.C
View file @
587c9357
...
...
@@ -96,7 +96,10 @@ void Foam::MULES::correct
if
(
LTS
)
{
const
volScalarField
&
rDeltaT
=
mesh
.
objectRegistry
::
lookupObject
<
volScalarField
>
(
"rSubDeltaT"
);
mesh
.
objectRegistry
::
lookupObject
<
volScalarField
>
(
mesh
.
time
().
subCycling
()
?
"rSubDeltaT"
:
"rDeltaT"
);
limitCorr
(
...
...
src/finiteVolume/fvMatrices/solvers/MULES/MULESTemplates.C
View file @
587c9357
...
...
@@ -118,7 +118,10 @@ void Foam::MULES::explicitSolve
if
(
LTS
)
{
const
volScalarField
&
rDeltaT
=
mesh
.
objectRegistry
::
lookupObject
<
volScalarField
>
(
"rSubDeltaT"
);
mesh
.
objectRegistry
::
lookupObject
<
volScalarField
>
(
mesh
.
time
().
subCycling
()
?
"rSubDeltaT"
:
"rDeltaT"
);
limit
(
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment