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 -------------------------------------------------------------------------------
10 License
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 
26 Class
27  Foam::meltingEvaporationModels::interfaceOxideRate
28 
29 Description
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 
84 Usage
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 
112 Note
113  - \c oxideCrit should be determined experimentally (CSC:p. 616).
114  - \c C should be determined by practical production (CSC:p. 616).
115 
116 SourceFiles
117  interfaceOxideRate.C
118 
119 \*---------------------------------------------------------------------------*/
120 
121 #ifndef meltingEvaporationModels_interfaceOxideRate_H
122 #define meltingEvaporationModels_interfaceOxideRate_H
123 
124 #include "InterfaceCompositionModel.H"
125 
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *//
127 
128 namespace Foam
129 {
130 
131 // Forward Declarations
132 class phasePair;
133 
134 namespace meltingEvaporationModels
135 {
136 
137 /*---------------------------------------------------------------------------*\
138  Class interfaceOxideRate Declaration
139 \*---------------------------------------------------------------------------*/
140 
141 template<class Thermo, class OtherThermo>
142 class 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 
167 public:
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 // ************************************************************************* //
Foam::meltingEvaporationModels::interfaceOxideRate::~interfaceOxideRate
virtual ~interfaceOxideRate()=default
Destructor.
Foam::meltingEvaporationModels::interfaceOxideRate::TypeName
TypeName("interfaceOxideRate")
Runtime type information.
Foam::phasePair
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Definition: phasePair.H:53
Foam::InterfaceCompositionModel
Base class for interface composition models, templated on the two thermodynamic models either side of...
Definition: InterfaceCompositionModel.H:58
Foam::meltingEvaporationModels::interfaceOxideRate::KSu
virtual tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
Definition: interfaceOxideRate.C:198
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::interfaceCompositionModel::pair
const phasePair & pair() const
The phase pair.
Definition: interfaceCompositionModel.C:122
Foam::meltingEvaporationModels::interfaceOxideRate::interfaceOxideRate
interfaceOxideRate(const dictionary &dict, const phasePair &pair)
Construct from components.
Definition: interfaceOxideRate.C:38
Foam::meltingEvaporationModels::interfaceOxideRate::includeDivU
virtual bool includeDivU() const noexcept
Definition: interfaceOxideRate.H:302
Foam::meltingEvaporationModels::interfaceOxideRate
The interfaceOxideRate is a simple model to calculate the formation rate of oxide inclusions (mDotOxi...
Definition: interfaceOxideRate.H:227
Foam::meltingEvaporationModels::interfaceOxideRate::Kexp
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
Definition: interfaceOxideRate.C:98
Foam::dimensionedScalar
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Definition: dimensionedScalarFwd.H:42
field
rDeltaTY field()
Foam::volScalarField
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Definition: volFieldsFwd.H:57
interfaceOxideRate.C
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam::dimensioned< scalar >
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::interfaceCompositionModel::modelVariable
modelVariable
Enumeration for variable based mass transfer models.
Definition: interfaceCompositionModel.H:66
Foam::meltingEvaporationModels::interfaceOxideRate::Tactivate
virtual const dimensionedScalar & Tactivate() const noexcept
Return solidus temperature of reducing agent.
Definition: interfaceOxideRate.H:295
Foam::meltingEvaporationModels::interfaceOxideRate::KSp
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
Definition: interfaceOxideRate.C:186
Foam::GeometricField< scalar, fvPatchField, volMesh >