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
29cea780
Commit
29cea780
authored
Sep 18, 2015
by
Henry Weller
Browse files
reactingMultiphaseEulerFoam: Optimize the handling of optional forces
parent
1979194f
Changes
4
Hide whitespace changes
Inline
Side-by-side
applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.C
View file @
29cea780
...
...
@@ -511,17 +511,12 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::momentumTransfer() const
template
<
class
BasePhaseSystem
>
Foam
::
autoPtr
<
Foam
::
PtrList
<
Foam
::
volVectorField
>
>
Foam
::
MomentumTransferPhaseSystem
<
BasePhaseSystem
>::
Fs
()
const
Foam
::
volVectorField
&
Foam
::
MomentumTransferPhaseSystem
<
BasePhaseSystem
>::
setF
(
PtrList
<
volVectorField
>&
Fs
,
const
label
phasei
)
const
{
autoPtr
<
PtrList
<
volVectorField
>
>
tFs
(
new
PtrList
<
volVectorField
>
(
this
->
phases
().
size
())
);
PtrList
<
volVectorField
>&
Fs
=
tFs
();
forAll
(
Fs
,
phasei
)
if
(
!
Fs
.
set
(
phasei
))
{
Fs
.
set
(
...
...
@@ -543,6 +538,20 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Fs() const
);
}
return
Fs
[
phasei
];
}
template
<
class
BasePhaseSystem
>
Foam
::
autoPtr
<
Foam
::
PtrList
<
Foam
::
volVectorField
>
>
Foam
::
MomentumTransferPhaseSystem
<
BasePhaseSystem
>::
Fs
()
const
{
autoPtr
<
PtrList
<
volVectorField
>
>
tFs
(
new
PtrList
<
volVectorField
>
(
this
->
phases
().
size
())
);
PtrList
<
volVectorField
>&
Fs
=
tFs
();
// Add the lift force
forAllConstIter
(
...
...
@@ -555,8 +564,8 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Fs() const
const
phasePair
&
pair
(
this
->
phasePairs_
[
liftModelIter
.
key
()]);
Fs
[
pair
.
phase1
().
index
()
]
+=
F
;
Fs
[
pair
.
phase2
().
index
()
]
-=
F
;
setF
(
Fs
,
pair
.
phase1
().
index
()
)
+=
F
;
setF
(
Fs
,
pair
.
phase2
().
index
()
)
-=
F
;
}
// Add the wall lubrication force
...
...
@@ -572,8 +581,8 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Fs() const
const
phasePair
&
pair
(
this
->
phasePairs_
[
wallLubricationModelIter
.
key
()]);
Fs
[
pair
.
phase1
().
index
()
]
+=
F
;
Fs
[
pair
.
phase2
().
index
()
]
-=
F
;
setF
(
Fs
,
pair
.
phase1
().
index
()
)
+=
F
;
setF
(
Fs
,
pair
.
phase2
().
index
()
)
-=
F
;
}
return
tFs
;
...
...
@@ -581,20 +590,13 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::Fs() const
template
<
class
BasePhaseSystem
>
Foam
::
autoPtr
<
Foam
::
PtrList
<
Foam
::
surfaceScalarField
>
>
Foam
::
MomentumTransferPhaseSystem
<
BasePhaseSystem
>::
p
hiD
s
Foam
::
surfaceScalarField
&
Foam
::
MomentumTransferPhaseSystem
<
BasePhaseSystem
>::
setP
hiD
(
const
PtrList
<
vol
ScalarField
>&
rAUs
PtrList
<
surface
ScalarField
>&
phiDs
,
const
label
phasei
)
const
{
autoPtr
<
PtrList
<
surfaceScalarField
>
>
tphiDs
(
new
PtrList
<
surfaceScalarField
>
(
this
->
phases
().
size
())
);
PtrList
<
surfaceScalarField
>&
phiDs
=
tphiDs
();
forAll
(
phiDs
,
phasei
)
if
(
!
phiDs
.
set
(
phasei
))
{
phiDs
.
set
(
...
...
@@ -603,7 +605,7 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::phiDs
(
IOobject
(
lift
Model
::
typeName
+
":
F
"
,
turbulentDispersion
Model
::
typeName
+
":
phiD
"
,
this
->
mesh_
.
time
().
timeName
(),
this
->
mesh_
,
IOobject
::
NO_READ
,
...
...
@@ -621,6 +623,23 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::phiDs
);
}
return
phiDs
[
phasei
];
}
template
<
class
BasePhaseSystem
>
Foam
::
autoPtr
<
Foam
::
PtrList
<
Foam
::
surfaceScalarField
>
>
Foam
::
MomentumTransferPhaseSystem
<
BasePhaseSystem
>::
phiDs
(
const
PtrList
<
volScalarField
>&
rAUs
)
const
{
autoPtr
<
PtrList
<
surfaceScalarField
>
>
tphiDs
(
new
PtrList
<
surfaceScalarField
>
(
this
->
phases
().
size
())
);
PtrList
<
surfaceScalarField
>&
phiDs
=
tphiDs
();
// Add the turbulent dispersion force
forAllConstIter
(
...
...
@@ -638,9 +657,9 @@ Foam::MomentumTransferPhaseSystem<BasePhaseSystem>::phiDs
fvc
::
snGrad
(
pair
.
phase1
())
*
this
->
mesh_
.
magSf
()
);
phiDs
[
pair
.
phase1
().
index
()
]
+=
setPhiD
(
phiDs
,
pair
.
phase1
().
index
()
)
+=
fvc
::
interpolate
(
rAUs
[
pair
.
phase1
().
index
()]
*
D
)
*
snGradAlpha1
;
phiDs
[
pair
.
phase2
().
index
()
]
-=
setPhiD
(
phiDs
,
pair
.
phase2
().
index
()
)
-=
fvc
::
interpolate
(
rAUs
[
pair
.
phase2
().
index
()]
*
D
)
*
snGradAlpha1
;
}
...
...
applications/solvers/multiphase/reactingEulerFoam/phaseSystems/PhaseSystems/MomentumTransferPhaseSystem/MomentumTransferPhaseSystem.H
View file @
29cea780
...
...
@@ -133,6 +133,20 @@ private:
//- Turbulent dispersion models
turbulentDispersionModelTable
turbulentDispersionModels_
;
//- Construct element phasei of Fs if not set and return
// Used by Fs()
volVectorField
&
setF
(
PtrList
<
volVectorField
>&
Fs
,
const
label
phasei
)
const
;
//- Construct element phasei of phiDs if not set and return
// Used by phiDs()
surfaceScalarField
&
setPhiD
(
PtrList
<
surfaceScalarField
>&
phiDs
,
const
label
phasei
)
const
;
public:
...
...
applications/solvers/multiphase/reactingEulerFoam/reactingMultiphaseEulerFoam/pU/pEqn.H
View file @
29cea780
...
...
@@ -38,22 +38,51 @@ forAll(phases, phasei)
PtrList
<
surfaceScalarField
>
phiFs
(
phases
.
size
());
{
autoPtr
<
PtrList
<
volVectorField
>
>
Fs
=
fluid
.
Fs
();
autoPtr
<
PtrList
<
surfaceScalarField
>
>
phiDs
=
fluid
.
phiDs
(
rAUs
);
forAll
(
phases
,
phasei
)
{
phaseModel
&
phase
=
phases
[
phasei
];
phiFs
.
set
(
phasei
,
new
surfaceScalarField
if
(
Fs
().
set
(
phasei
))
{
phiFs
.
set
(
IOobject
::
groupName
(
"phiF"
,
phase
.
name
()),
(
fvc
::
interpolate
(
rAUs
[
phasei
]
*
Fs
()[
phasei
])
&
mesh
.
Sf
())
+
phiDs
()[
phasei
]
)
);
phasei
,
new
surfaceScalarField
(
IOobject
::
groupName
(
"phiF"
,
phase
.
name
()),
(
fvc
::
interpolate
(
rAUs
[
phasei
]
*
Fs
()[
phasei
])
&
mesh
.
Sf
())
)
);
}
}
}
{
autoPtr
<
PtrList
<
surfaceScalarField
>
>
phiDs
=
fluid
.
phiDs
(
rAUs
);
forAll
(
phases
,
phasei
)
{
phaseModel
&
phase
=
phases
[
phasei
];
if
(
phiDs
().
set
(
phasei
))
{
if
(
phiFs
.
set
(
phasei
))
{
phiFs
[
phasei
]
+=
phiDs
()[
phasei
];
}
else
{
phiFs
.
set
(
phasei
,
new
surfaceScalarField
(
IOobject
::
groupName
(
"phiF"
,
phase
.
name
()),
phiDs
()[
phasei
]
)
);
}
}
}
}
...
...
@@ -101,12 +130,12 @@ while (pimple.correct())
ghf
*
fvc
::
snGrad
(
rho
)
*
mesh
.
magSf
()
);
PtrList
<
surfaceScalarField
>
phigs
(
phases
.
size
());
PtrList
<
surfaceScalarField
>
phig
F
s
(
phases
.
size
());
forAll
(
phases
,
phasei
)
{
phaseModel
&
phase
=
phases
[
phasei
];
phigs
.
set
phig
F
s
.
set
(
phasei
,
(
...
...
@@ -118,6 +147,11 @@ while (pimple.correct())
)
).
ptr
()
);
if
(
phiFs
.
set
(
phasei
))
{
phigFs
[
phasei
]
+=
phiFs
[
phasei
];
}
}
PtrList
<
surfaceScalarField
>
phiHbyAs
(
phases
.
size
());
...
...
@@ -177,8 +211,7 @@ while (pimple.correct())
MRF
.
absolute
(
phase
.
phi
().
oldTime
())
-
(
fvc
::
interpolate
(
phase
.
U
().
oldTime
())
&
mesh
.
Sf
())
)
/
runTime
.
deltaT
()
-
phiFs
[
phasei
]
-
phigs
[
phasei
]
-
phigFs
[
phasei
]
)
);
...
...
@@ -389,8 +422,7 @@ while (pimple.correct())
+
fvc
::
reconstruct
(
alpharAUfs
[
phasei
]
*
mSfGradp
-
phiFs
[
phasei
]
-
phigs
[
phasei
]
-
phigFs
[
phasei
]
);
phase
.
U
().
correctBoundaryConditions
();
fvOptions
.
correct
(
phase
.
U
());
...
...
tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bubbleColumn/constant/phaseProperties
View file @
29cea780
...
...
@@ -151,16 +151,13 @@ heatTransfer
);
lift
(
);
();
wallLubrication
(
);
();
turbulentDispersion
(
);
();
// Minimum allowable pressure
pMin 10000;
...
...
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