interfaceOxideRate.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2021 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::meltingEvaporationModels::interfaceOxideRate
28
29Description
30 The \c interfaceOxideRate is a simple model to calculate the formation
31 rate of oxide inclusions (\c mDotOxide), which is a local function of
32 the volume fraction of reducing agent (\c alpha), temperature (\c T)
33 and oxide-inclusion density (\c chi).
34
35 The oxide-inclusion formation rate is modelled as follows:
36
37 \f[
38 S_\chi = C_\chi S_\alpha S_T S_\rho
39 \f]
40
41 with
42
43 \f[
44 S_\alpha = \alpha (1 - \alpha)
45 \f]
46
47 \f[
48 S_T =
49 \exp{
50 1 - \frac{1}{max(T - T_{solidus}/(T_liquidus - T_solidus), 1e-6)}
51 }
52 \f]
53
54 \f[
55 S_\rho =
56 max \left(\frac{\chi_{crit} - \chi_{curr}}{\chi_{curr}}, 0\right)
57 \f]
58
59 where
60 \vartable
61 S_\chi | Oxide-inclusion formation rate [kg/(m^3 s)]
62 C_\chi | Oxide-inclusion formation rate constant [kg/(m^3 s)]
63 S_\alpha | Formation factor due to volume fraction of reducing agent [-]
64 S_T | Formation factor due to temperature [-]
65 S_\rho | Formation factor due to oxide-inclusion density [-]
66 \alpha | Volume fraction of reducing agent [-]
67 T | Local temperature [K]
68 T_{solidus} | Solidus temperature of reducing agent [K]
69 T_{liquidus} | Liquidus temperature of reducing agent [K]
70 \chi_{crit} | Critical oxide-inclusion density [kg/m^3]
71 \chi_{curr} | Current oxide-inclusion density [kg/m^3]
72 \endvartable
73
74 References:
75 \verbatim
76 Oxide-inclusion model (tag:CSC):
77 Cao, L., Sun, F., Chen, T., Tang, Y., & Liao, D. (2018).
78 Quantitative prediction of oxide inclusion defects inside
79 the casting and on the walls during cast-filling processes.
80 International Journal of Heat and Mass Transfer, 119, 614-623.
81 DOI:10.1016/j.ijheatmasstransfer.2017.11.127
82 \endverbatim
83
84Usage
85 Minimal example by using \c constant/phaseProperties.massTransferModel:
86 \verbatim
87 massTransferModel
88 (
89 (liquid to oxide)
90 {
91 type interfaceOxideRate;
92 C <scalar>;
93 Tliquidus <scalar>;
94 Tsolidus <scalar>;
95 oxideCrit <scalar>;
96 isoAlpha <scalar>;
97 }
98 );
99 \endverbatim
100
101 where the entries mean:
102 \table
103 Property | Description | Type | Reqd | Deflt
104 type | Type name: interfaceOxideRate | word | yes | -
105 C | Oxide-inclusion formation rate constant | scalar | yes | -
106 Tliquidus | Liquidus temperature of reducing agent | scalar | yes | -
107 Tsolidus | Solidus temperature of reducing agent | scalar | yes | -
108 oxideCrit | Critical oxide-inclusion density | scalar | yes | -
109 isoAlpha | Location of the source | scalar | no | 0.5
110 \endtable
111
112Note
113 - \c oxideCrit should be determined experimentally (CSC:p. 616).
114 - \c C should be determined by practical production (CSC:p. 616).
115
116SourceFiles
117 interfaceOxideRate.C
118
119\*---------------------------------------------------------------------------*/
120
121#ifndef meltingEvaporationModels_interfaceOxideRate_H
122#define meltingEvaporationModels_interfaceOxideRate_H
123
124#include "InterfaceCompositionModel.H"
125
126// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *//
127
128namespace Foam
129{
130
131// Forward Declarations
132class phasePair;
133
134namespace meltingEvaporationModels
135{
136
137/*---------------------------------------------------------------------------*\
138 Class interfaceOxideRate Declaration
139\*---------------------------------------------------------------------------*/
140
141template<class Thermo, class OtherThermo>
142class interfaceOxideRate
143:
144 public InterfaceCompositionModel<Thermo, OtherThermo>
145{
146 // Private Data
147
148 //- Oxide-inclusion formation rate constant
149 const dimensionedScalar C_;
150
151 //- Liquidus temperature of reducing agent (e.g. a casting metal)
152 const dimensionedScalar Tliquidus_;
153
154 //- Solidus temperature of reducing agent (e.g. a casting metal)
155 const dimensionedScalar Tsolidus_;
156
157 //- Critical oxide-inclusion density
158 const dimensionedScalar oxideCrit_;
159
160 //- Oxide-inclusion formation rate
161 volScalarField mDotOxide_;
162
163 //- Interface Iso-value
164 scalar isoAlpha_;
165
166
167public:
168
169 //- Runtime type information
170 TypeName("interfaceOxideRate");
171
172
173 // Constructors
174
175 //- Construct from components
177 (
178 const dictionary& dict,
179 const phasePair& pair
180 );
181
182
183 //- Destructor
184 virtual ~interfaceOxideRate() = default;
185
186
187 // Member Functions
188
189 //- Explicit total mass transfer coefficient
190 virtual tmp<volScalarField> Kexp
191 (
192 const volScalarField& field
193 );
194
195 //- Implicit mass transfer coefficient
196 virtual tmp<volScalarField> KSp
197 (
198 label modelVariable,
199 const volScalarField& field
200 );
201
202 //- Explicit mass transfer coefficient
203 virtual tmp<volScalarField> KSu
204 (
205 label modelVariable,
206 const volScalarField& field
207 );
208
209 //- Return solidus temperature of reducing agent
210 virtual const dimensionedScalar& Tactivate() const noexcept
211 {
212 return Tsolidus_;
213 }
214
215 //- Add/subtract alpha*div(U) as a source term
216 //- for alpha, substituting div(U) = mDot(1/rho1 - 1/rho2)
217 virtual bool includeDivU() const noexcept
218 {
219 return true;
220 }
221};
222
223
224// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
225
226} // End namespace meltingEvaporationModels
227} // End namespace Foam
228
229// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
230
231#ifdef NoRepository
232# include "interfaceOxideRate.C"
233#endif
234
235// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
236#endif
237
238// ************************************************************************* //
Base class for interface composition models, templated on the two thermodynamic models either side of...
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
The interfaceOxideRate is a simple model to calculate the formation rate of oxide inclusions (mDotOxi...
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
virtual ~interfaceOxideRate()=default
Destructor.
TypeName("interfaceOxideRate")
Runtime type information.
virtual tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
interfaceOxideRate(const dictionary &dict, const phasePair &pair)
Construct from components.
virtual const dimensionedScalar & Tactivate() const noexcept
Return solidus temperature of reducing agent.
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
const phasePair & pair() const
The phase pair.
modelVariable
Enumeration for variable based mass transfer models.
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Definition: phasePair.H:56
A class for managing temporary objects.
Definition: tmp.H:65
rDeltaTY field()
Namespace for OpenFOAM.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:82
const direction noexcept
Definition: Scalar.H:223
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73