thermophysicalPredictor.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2023 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
27 #include "fvcMeshPhi.H"
28 #include "fvcDdt.H"
29 #include "fvmDiv.H"
30 #include "fvmLaplacian.H"
31 #include "fvmSup.H"
32 
33 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
34 
36 {
37  volScalarField& T = mixture.T();
38 
39  fvScalarMatrix TEqn
40  (
43  + (
44  fvc::div(fvc::absolute(phi, U), p)()() // - contErr()/rho*p
45  + (fvc::ddt(rho, K) + fvc::div(rhoPhi, K))()()
46  - (U()&(fvModels().source(rho, U)&U)()) - contErr()*K
47  )*mixture.rCv()()
48  ==
49  fvModels().source(rho, T)
50  );
51 
52  TEqn.relax();
53 
54  fvConstraints().constrain(TEqn);
55 
56  TEqn.solve();
57 
59 
60  mixture.correctThermo();
61  mixture.correct();
62 }
63 
64 
65 // ************************************************************************* //
Generic GeometricField class.
bool constrain(fvMatrix< Type > &eqn) const
Apply constraints to an equation.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Definition: fvMatrix.H:118
void relax(const scalar alpha)
Relax matrix (for steady-state solution).
Definition: fvMatrix.C:603
SolverPerformance< Type > solve(const dictionary &)
Solve segregated or coupled returning the solution statistics.
Definition: fvMatrixSolve.C:58
Finite volume models.
Definition: fvModels.H:65
virtual tmp< volScalarField > nut() const =0
Return the turbulence viscosity.
Foam::fvModels & fvModels() const
Return the fvModels that are created on demand.
Definition: solver.C:96
Foam::fvConstraints & fvConstraints() const
Return the fvConstraints that are created on demand.
Definition: solver.C:107
const surfaceScalarField & phi
Reference to the mass-flux field.
Definition: VoFSolver.H:212
surfaceScalarField rhoPhi
Mass flux field.
Definition: VoFSolver.H:116
const volVectorField & U
Reference to the velocity field.
Definition: VoFSolver.H:209
const volScalarField & rho
Reference to the mixture continuity density field.
Definition: VoFSolver.H:110
virtual void thermophysicalPredictor()
Construct and solve the energy equation,.
volScalarField & p
Reference to the mixture static pressure field.
compressible::momentumTransportModel & momentumTransport
Momentum transport model.
tmp< volScalarField::Internal > contErr
Continuity error.
Calculate the first temporal derivative.
Calculate the mesh motion flux and convert fluxes from absolute to relative and back.
Calculate the matrix for the divergence of the given field and flux.
Calculate the matrix for the laplacian of the field.
Calculate the matrix for implicit and explicit sources.
tmp< VolField< Type > > ddt(const dimensioned< Type > dt, const fvMesh &mesh)
Definition: fvcDdt.C:45
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
Definition: fvcDiv.C:47
tmp< surfaceScalarField > absolute(const tmp< surfaceScalarField > &tphi, const volVectorField &U)
Return the given relative flux in absolute form.
Definition: fvcMeshPhi.C:202
tmp< fvMatrix< Type > > laplacian(const VolField< Type > &vf, const word &name)
Definition: fvmLaplacian.C:47
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const VolField< Type > &vf, const word &name)
Definition: fvmDiv.C:48
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const VolField< Type > &)
tmp< fvMatrix< Type > > ddt(const VolField< Type > &vf)
Definition: fvmDdt.C:46
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)