Skip to content
GitLab
Menu
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
cd082ff4
Commit
cd082ff4
authored
Jan 10, 2012
by
andy
Browse files
ENH: Further updates to liquid boiling model with contribution from Niklas Nordin
parent
05d2ab92
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.C
View file @
cd082ff4
...
...
@@ -157,19 +157,12 @@ void Foam::LiquidEvaporationBoil<CloudType>::calculate
// liquid volume fraction
const
scalarField
X
(
liquids_
.
X
(
Yl
));
// droplet
vapour
surface pressure
// droplet
surface pressure assumed to
surface
vapour
pressure
scalar
ps
=
liquids_
.
pv
(
pc
,
Ts
,
X
);
// vapour density at droplet surface [kg/m3]
scalar
rhos
=
ps
*
liquids_
.
W
(
X
)
/
(
specie
::
RR
*
Ts
);
// thermal conductivity of carrier [W/m/K]
scalar
kappac
=
0
.
0
;
forAll
(
this
->
owner
().
thermo
().
carrier
().
Y
(),
i
)
{
const
scalar
Yc
=
this
->
owner
().
thermo
().
carrier
().
Y
()[
i
][
cellI
];
kappac
+=
Yc
*
this
->
owner
().
thermo
().
carrier
().
kappa
(
i
,
Ts
);
}
// calculate mass transfer of each specie in liquid
forAll
(
activeLiquids_
,
i
)
...
...
@@ -178,13 +171,13 @@ void Foam::LiquidEvaporationBoil<CloudType>::calculate
const
label
lid
=
liqToLiqMap_
[
i
];
// boiling temperature at cell pressure for liquid species lid [K]
const
scalar
TBoil
=
liquids_
.
properties
()[
lid
].
pvInvert
(
p
s
);
const
scalar
TBoil
=
liquids_
.
properties
()[
lid
].
pvInvert
(
p
c
);
// limit droplet temperature to boiling/critical temperature
const
scalar
Td
=
min
(
T
,
0
.
999
*
TBoil
);
// saturation pressure for liquid species lid [Pa]
const
scalar
pSat
=
liquids_
.
properties
()[
lid
].
pv
(
p
s
,
Td
);
const
scalar
pSat
=
liquids_
.
properties
()[
lid
].
pv
(
p
c
,
Td
);
// carrier phase concentration
const
scalar
Xc
=
XcMix
[
gid
];
...
...
@@ -197,7 +190,7 @@ void Foam::LiquidEvaporationBoil<CloudType>::calculate
else
{
// vapour diffusivity [m2/s]
const
scalar
Dab
=
liquids_
.
properties
()[
lid
].
D
(
ps
,
T
d
);
const
scalar
Dab
=
liquids_
.
properties
()[
lid
].
D
(
ps
,
T
s
);
// Schmidt number
const
scalar
Sc
=
nu
/
(
Dab
+
ROOTVSMALL
);
...
...
@@ -212,35 +205,82 @@ void Foam::LiquidEvaporationBoil<CloudType>::calculate
const
scalar
deltaT
=
max
(
T
-
TBoil
,
0
.
5
);
// liquid specific heat capacity
const
scalar
Cp
=
liquids_
.
properties
()[
lid
].
Cp
(
pc
,
Td
);
scalar
Hsc
=
0
.
0
;
scalar
Hc
=
0
.
0
;
scalar
Cpc
=
0
.
0
;
scalar
kappac
=
0
.
0
;
forAll
(
this
->
owner
().
thermo
().
carrier
().
Y
(),
i
)
{
scalar
Yc
=
this
->
owner
().
thermo
().
carrier
().
Y
()[
i
][
cellI
];
Hc
+=
Yc
*
this
->
owner
().
thermo
().
carrier
().
H
(
i
,
Tc
);
Hsc
+=
Yc
*
this
->
owner
().
thermo
().
carrier
().
H
(
i
,
Ts
);
Cpc
+=
Yc
*
this
->
owner
().
thermo
().
carrier
().
Cp
(
i
,
Ts
);
kappac
+=
Yc
*
this
->
owner
().
thermo
().
carrier
().
kappa
(
i
,
Ts
);
}
// vapour heat of formation
const
scalar
hv
=
liquids_
.
properties
()[
lid
].
hl
(
pc
,
Td
);
const
scalar
lg
=
log
(
1
.
0
+
Cp
*
deltaT
/
max
(
SMALL
,
hv
));
// empirical heat transfer coefficient W/m2/K
scalar
alphaS
=
0
.
0
;
if
(
deltaT
<
5
.
0
)
{
alphaS
=
760
.
0
*
pow
(
deltaT
,
0
.
26
);
}
else
if
(
deltaT
<
25
.
0
)
{
alphaS
=
27
.
0
*
pow
(
deltaT
,
2
.
33
);
}
else
{
alphaS
=
13800
.
0
*
pow
(
deltaT
,
0
.
39
);
}
// flash-boil vaporisation rate
const
scalar
Gf
=
alphaS
*
deltaT
*
pi
*
sqr
(
d
)
/
hv
;
// model constants
// NOTE: using Sherwood number instead of Nusselt number
const
scalar
A
=
(
Hc
-
Hsc
)
/
hv
;
const
scalar
B
=
pi
*
kappac
/
Cpc
*
d
*
Sh
;
// mass transfer [kg]
// NOTE: Using Sherwood number instead of Nusselt number
dMassPC
[
lid
]
+=
pi
*
kappac
*
Sh
*
lg
*
d
/
Cp
*
dt
;
scalar
G
=
0
.
0
;
if
(
A
>
0
.
0
)
{
// heat transfer from the surroundings contributes
// to the vaporisation process
scalar
Gr
=
1e-5
;
for
(
label
i
=
0
;
i
<
50
;
i
++
)
{
scalar
GrDash
=
Gr
;
G
=
B
/
(
1
.
0
+
Gr
)
*
log
(
1
.
0
+
A
*
(
1
.
0
+
Gr
));
Gr
=
Gf
/
G
;
if
(
mag
(
Gr
-
GrDash
)
/
GrDash
<
1e-3
)
{
break
;
}
}
}
dMassPC
[
lid
]
+=
(
G
+
Gf
)
*
dt
;
}
else
{
// evaporation
// surface molar fraction - Raoult's Law
const
scalar
Xs
=
X
[
lid
]
*
pSat
/
p
s
;
const
scalar
Xs
=
X
[
lid
]
*
pSat
/
p
c
;
// molar ratio
const
scalar
Xr
=
(
Xs
-
Xc
)
/
max
(
SMALL
,
1
.
0
-
Xs
);
if
(
Xr
>
0
)
{
// mass transfer coefficient [m/s]
const
scalar
kc
=
Sh
*
Dab
/
(
d
+
ROOTVSMALL
);
// mass transfer [kg]
dMassPC
[
lid
]
+=
pi
*
sqr
(
d
)
*
kc
*
rhos
*
log
(
1
.
0
+
Xr
)
*
dt
;
dMassPC
[
lid
]
+=
pi
*
d
*
Sh
*
Dab
*
rhos
*
log
(
1
.
0
+
Xr
)
*
dt
;
}
}
}
...
...
@@ -291,7 +331,7 @@ Foam::scalar Foam::LiquidEvaporationBoil<CloudType>::dh
"const label, "
"const label, "
"const label"
")"
")
const
"
)
<<
"Unknown enthalpyTransfer type"
<<
abort
(
FatalError
);
}
}
...
...
src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporationBoil/LiquidEvaporationBoil.H
View file @
cd082ff4
...
...
@@ -27,7 +27,16 @@ Class
Description
Liquid evaporation model
- uses ideal gas assumption
- includes boiling model
- includes boiling model based on:
\verbatim
"Studies of Superheated Fuel Spray Structures and Vaporization in
GDI Engines"
Zuo, B., Gomes, A. M. and Rutland C. J.
International Journal of Engine Research, 2000, Vol. 1(4), pp. 321-336
\endverbatim
\*---------------------------------------------------------------------------*/
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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