Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
HPCAPPs
OpenFOAM-GPU-v2.0
Commits
ea17556c
Commit
ea17556c
authored
Mar 07, 2024
by
shunbo
Browse files
Initial commit
parents
Changes
798
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1224 additions
and
0 deletions
+1224
-0
applications/solvers/combustion/reactingFoam/pcEqn.H
applications/solvers/combustion/reactingFoam/pcEqn.H
+121
-0
applications/solvers/combustion/reactingFoam/reactingFoam.C
applications/solvers/combustion/reactingFoam/reactingFoam.C
+169
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/files
...combustion/reactingFoam/rhoReactingBuoyantFoam/Make/files
+3
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/options
...mbustion/reactingFoam/rhoReactingBuoyantFoam/Make/options
+29
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/UEqn.H
...ers/combustion/reactingFoam/rhoReactingBuoyantFoam/UEqn.H
+33
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H
...ion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H
+3
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H
...ustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H
+119
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H
...ers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H
+74
-0
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
...ctingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
+135
-0
applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/files
...olvers/combustion/reactingFoam/rhoReactingFoam/Make/files
+3
-0
applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/options
...vers/combustion/reactingFoam/rhoReactingFoam/Make/options
+29
-0
applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H
...combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H
+3
-0
applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H
...rs/combustion/reactingFoam/rhoReactingFoam/createFields.H
+104
-0
applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
...combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
+143
-0
applications/solvers/combustion/reactingFoam/setRDeltaT.H
applications/solvers/combustion/reactingFoam/setRDeltaT.H
+189
-0
applications/solvers/compressible/compressibleSolvers.H
applications/solvers/compressible/compressibleSolvers.H
+32
-0
applications/solvers/compressible/rhoCentralFoam/Allwclean
applications/solvers/compressible/rhoCentralFoam/Allwclean
+8
-0
applications/solvers/compressible/rhoCentralFoam/Allwmake
applications/solvers/compressible/rhoCentralFoam/Allwmake
+11
-0
applications/solvers/compressible/rhoCentralFoam/BCs/Make/files
...ations/solvers/compressible/rhoCentralFoam/BCs/Make/files
+5
-0
applications/solvers/compressible/rhoCentralFoam/BCs/Make/options
...ions/solvers/compressible/rhoCentralFoam/BCs/Make/options
+11
-0
No files found.
Too many changes to show.
To preserve performance only
798 of 798+
files are displayed.
Plain diff
Email patch
applications/solvers/combustion/reactingFoam/pcEqn.H
0 → 100644
View file @
ea17556c
rho
=
thermo
.
rho
();
volScalarField
rAU
(
1
.
0
/
UEqn
.
A
());
volScalarField
rAtU
(
1
.
0
/
(
1
.
0
/
rAU
-
UEqn
.
H1
()));
volVectorField
HbyA
(
constrainHbyA
(
rAU
*
UEqn
.
H
(),
U
,
p
));
if
(
pimple
.
nCorrPISO
()
<=
1
)
{
tUEqn
.
clear
();
}
if
(
pimple
.
transonic
())
{
surfaceScalarField
phid
(
"phid"
,
fvc
::
interpolate
(
psi
)
*
(
fvc
::
flux
(
HbyA
)
+
MRF
.
zeroFilter
(
fvc
::
interpolate
(
rho
*
rAU
)
*
fvc
::
ddtCorr
(
rho
,
U
,
phi
)
/
fvc
::
interpolate
(
rho
)
)
)
);
MRF
.
makeRelative
(
fvc
::
interpolate
(
psi
),
phid
);
surfaceScalarField
phic
(
"phic"
,
fvc
::
interpolate
(
rho
*
(
rAtU
-
rAU
))
*
fvc
::
snGrad
(
p
)
*
mesh
.
magSf
()
);
HbyA
-=
(
rAU
-
rAtU
)
*
fvc
::
grad
(
p
);
volScalarField
rhorAtU
(
"rhorAtU"
,
rho
*
rAtU
);
while
(
pimple
.
correctNonOrthogonal
())
{
fvScalarMatrix
pEqn
(
fvm
::
ddt
(
psi
,
p
)
+
fvm
::
div
(
phid
,
p
)
+
fvc
::
div
(
phic
)
-
fvm
::
laplacian
(
rhorAtU
,
p
)
==
fvOptions
(
psi
,
p
,
rho
.
name
())
);
pEqn
.
solve
(
mesh
.
solver
(
p
.
select
(
pimple
.
finalInnerIter
())));
if
(
pimple
.
finalNonOrthogonalIter
())
{
phi
==
phic
+
pEqn
.
flux
();
}
}
}
else
{
surfaceScalarField
phiHbyA
(
"phiHbyA"
,
(
fvc
::
flux
(
rho
*
HbyA
)
+
MRF
.
zeroFilter
(
fvc
::
interpolate
(
rho
*
rAU
)
*
fvc
::
ddtCorr
(
rho
,
U
,
phi
))
)
);
MRF
.
makeRelative
(
fvc
::
interpolate
(
rho
),
phiHbyA
);
phiHbyA
+=
fvc
::
interpolate
(
rho
*
(
rAtU
-
rAU
))
*
fvc
::
snGrad
(
p
)
*
mesh
.
magSf
();
HbyA
-=
(
rAU
-
rAtU
)
*
fvc
::
grad
(
p
);
volScalarField
rhorAtU
(
"rhorAtU"
,
rho
*
rAtU
);
// Update the pressure BCs to ensure flux consistency
constrainPressure
(
p
,
rho
,
U
,
phiHbyA
,
rhorAtU
,
MRF
);
while
(
pimple
.
correctNonOrthogonal
())
{
fvScalarMatrix
pEqn
(
fvm
::
ddt
(
psi
,
p
)
+
fvc
::
div
(
phiHbyA
)
-
fvm
::
laplacian
(
rhorAtU
,
p
)
==
fvOptions
(
psi
,
p
,
rho
.
name
())
);
pEqn
.
solve
(
mesh
.
solver
(
p
.
select
(
pimple
.
finalInnerIter
())));
if
(
pimple
.
finalNonOrthogonalIter
())
{
phi
=
phiHbyA
+
pEqn
.
flux
();
}
}
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
// Explicitly relax pressure for momentum corrector
p
.
relax
();
U
=
HbyA
-
rAtU
*
fvc
::
grad
(
p
);
U
.
correctBoundaryConditions
();
fvOptions
.
correct
(
U
);
K
=
0
.
5
*
magSqr
(
U
);
if
(
pressureControl
.
limit
(
p
))
{
p
.
correctBoundaryConditions
();
rho
=
thermo
.
rho
();
}
if
(
thermo
.
dpdt
())
{
dpdt
=
fvc
::
ddt
(
p
);
}
applications/solvers/combustion/reactingFoam/reactingFoam.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
reactingFoam
Group
grpCombustionSolvers
Description
Solver for combustion with chemical reactions.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "gpufvCFD.H"
#include "turbulentFluidThermoModel.H"
#include "psiReactionThermo.H"
#include "CombustionModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
#include <sys/time.h>
struct
my_timer
{
struct
timeval
start_time
,
end_time
;
double
time_use
;
void
start
()
{
gettimeofday
(
&
start_time
,
NULL
);
}
void
stop
()
{
gettimeofday
(
&
end_time
,
NULL
);
time_use
=
(
end_time
.
tv_sec
-
start_time
.
tv_sec
)
+
(
double
)(
end_time
.
tv_usec
-
start_time
.
tv_usec
)
/
1000000
.
0
;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Solver for combustion with chemical reactions"
);
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "gpucreateMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
double
totalYEqntime
=
0
.
0
;
turbulence
->
validate
();
if
(
!
LTS
)
{
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
run
())
{
#include "readTimeControls.H"
if
(
LTS
)
{
#include "setRDeltaT.H"
}
else
{
#include "compressibleCourantNo.H"
#include "setDeltaT.H"
}
++
runTime
;
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
#include "rhoEqn.H"
while
(
pimple
.
loop
())
{
#include "UEqn.H"
my_timer
tm
;
tm
.
start
();
#include "YEqn.H"
tm
.
stop
();
Info
<<
"------Timecost YEqn = "
<<
tm
.
time_use
<<
"s-------------------"
<<
nl
<<
endl
;
totalYEqntime
+=
tm
.
time_use
;
#include "EEqn.H"
// --- Pressure corrector loop
while
(
pimple
.
correct
())
{
if
(
pimple
.
consistent
())
{
#include "pcEqn.H"
}
else
{
#include "pEqn.H"
}
}
if
(
pimple
.
turbCorr
())
{
turbulence
->
correct
();
}
}
rho
=
thermo
.
rho
();
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"------TotalTimecost YEqn = "
<<
totalYEqntime
<<
"s-------------------"
<<
nl
<<
endl
;
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/files
0 → 100644
View file @
ea17556c
rhoReactingBuoyantFoam.C
EXE = $(FOAM_APPBIN)/rhoReactingBuoyantFoam
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/Make/options
0 → 100644
View file @
ea17556c
EXE_INC = \
-I$(FOAM_SOLVERS)/combustion/reactingFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-lsampling \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-lreactionThermophysicalModels \
-lspecie \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lchemistryModel \
-lODE \
-lcombustionModels
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/UEqn.H
0 → 100644
View file @
ea17556c
MRF
.
correctBoundaryVelocity
(
U
);
fvVectorMatrix
UEqn
(
fvm
::
ddt
(
rho
,
U
)
+
fvm
::
div
(
phi
,
U
)
+
MRF
.
DDt
(
rho
,
U
)
+
turbulence
->
divDevRhoReff
(
U
)
==
fvOptions
(
rho
,
U
)
);
UEqn
.
relax
();
fvOptions
.
constrain
(
UEqn
);
if
(
pimple
.
momentumPredictor
())
{
solve
(
UEqn
==
fvc
::
reconstruct
(
(
-
ghf
*
fvc
::
snGrad
(
rho
)
-
fvc
::
snGrad
(
p_rgh
)
)
*
mesh
.
magSf
()
)
);
fvOptions
.
correct
(
U
);
K
=
0
.
5
*
magSqr
(
U
);
}
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFieldRefs.H
0 → 100644
View file @
ea17556c
const
volScalarField
&
psi
=
thermo
.
psi
();
const
volScalarField
&
T
=
thermo
.
T
();
const
label
inertIndex
(
composition
.
species
()[
inertSpecie
]);
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/createFields.H
0 → 100644
View file @
ea17556c
#include "createRDeltaT.H"
Info
<<
"Reading thermophysical properties
\n
"
<<
endl
;
autoPtr
<
rhoReactionThermo
>
pThermo
(
rhoReactionThermo
::
New
(
mesh
));
rhoReactionThermo
&
thermo
=
pThermo
();
thermo
.
validate
(
args
.
executable
(),
"h"
,
"e"
);
basicSpecieMixture
&
composition
=
thermo
.
composition
();
PtrList
<
volScalarField
>&
Y
=
composition
.
Y
();
const
word
inertSpecie
(
thermo
.
get
<
word
>
(
"inertSpecie"
));
if
(
!
composition
.
species
().
found
(
inertSpecie
))
{
FatalIOErrorIn
(
args
.
executable
().
c_str
(),
thermo
)
<<
"Inert specie "
<<
inertSpecie
<<
" not found in available species "
<<
composition
.
species
()
<<
exit
(
FatalIOError
);
}
volScalarField
rho
(
IOobject
(
"rho"
,
runTime
.
timeName
(),
mesh
),
thermo
.
rho
()
);
Info
<<
"Reading field U
\n
"
<<
endl
;
volVectorField
U
(
IOobject
(
"U"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
volScalarField
&
p
=
thermo
.
p
();
#include "compressibleCreatePhi.H"
mesh
.
setFluxRequired
(
p
.
name
());
Info
<<
"Creating turbulence model.
\n
"
<<
nl
;
autoPtr
<
compressible
::
turbulenceModel
>
turbulence
(
compressible
::
turbulenceModel
::
New
(
rho
,
U
,
phi
,
thermo
)
);
Info
<<
"Creating reaction model
\n
"
<<
endl
;
autoPtr
<
CombustionModel
<
rhoReactionThermo
>>
reaction
(
CombustionModel
<
rhoReactionThermo
>::
New
(
thermo
,
turbulence
())
);
#include "readGravitationalAcceleration.H"
#include "readhRef.H"
#include "gh.H"
Info
<<
"Reading field p_rgh
\n
"
<<
endl
;
volScalarField
p_rgh
(
IOobject
(
"p_rgh"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
// Force p_rgh to be consistent with p
p_rgh
=
p
-
rho
*
gh
;
multivariateSurfaceInterpolationScheme
<
scalar
>::
fieldTable
fields
;
forAll
(
Y
,
i
)
{
fields
.
add
(
Y
[
i
]);
}
fields
.
add
(
thermo
.
he
());
volScalarField
Qdot
(
IOobject
(
"Qdot"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
READ_IF_PRESENT
,
IOobject
::
AUTO_WRITE
),
mesh
,
dimensionedScalar
(
dimEnergy
/
dimVolume
/
dimTime
,
Zero
)
);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"
#include "createFvOptions.H"
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/pEqn.H
0 → 100644
View file @
ea17556c
rho
=
thermo
.
rho
();
// Thermodynamic density needs to be updated by psi*d(p) after the
// pressure solution
const
volScalarField
psip0
(
psi
*
p
);
volScalarField
rAU
(
1
.
0
/
UEqn
.
A
());
surfaceScalarField
rhorAUf
(
"rhorAUf"
,
fvc
::
interpolate
(
rho
*
rAU
));
volVectorField
HbyA
(
constrainHbyA
(
rAU
*
UEqn
.
H
(),
U
,
p
));
surfaceScalarField
phig
(
-
rhorAUf
*
ghf
*
fvc
::
snGrad
(
rho
)
*
mesh
.
magSf
());
surfaceScalarField
phiHbyA
(
"phiHbyA"
,
(
fvc
::
flux
(
rho
*
HbyA
)
+
MRF
.
zeroFilter
(
rhorAUf
*
fvc
::
ddtCorr
(
rho
,
U
,
phi
))
)
+
phig
);
MRF
.
makeRelative
(
fvc
::
interpolate
(
rho
),
phiHbyA
);
// Update the pressure BCs to ensure flux consistency
constrainPressure
(
p_rgh
,
rho
,
U
,
phiHbyA
,
rhorAUf
,
MRF
);
fvScalarMatrix
p_rghDDtEqn
(
fvc
::
ddt
(
rho
)
+
psi
*
correction
(
fvm
::
ddt
(
p_rgh
))
+
fvc
::
div
(
phiHbyA
)
==
fvOptions
(
psi
,
p_rgh
,
rho
.
name
())
);
while
(
pimple
.
correctNonOrthogonal
())
{
fvScalarMatrix
p_rghEqn
(
p_rghDDtEqn
-
fvm
::
laplacian
(
rhorAUf
,
p_rgh
)
);
p_rghEqn
.
solve
(
mesh
.
solver
(
p_rgh
.
select
(
pimple
.
finalInnerIter
())));
if
(
pimple
.
finalNonOrthogonalIter
())
{
// Calculate the conservative fluxes
phi
=
phiHbyA
+
p_rghEqn
.
flux
();
// Explicitly relax pressure for momentum corrector
p_rgh
.
relax
();
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U
=
HbyA
+
rAU
*
fvc
::
reconstruct
((
phig
+
p_rghEqn
.
flux
())
/
rhorAUf
);
U
.
correctBoundaryConditions
();
fvOptions
.
correct
(
U
);
K
=
0
.
5
*
magSqr
(
U
);
}
}
p
=
p_rgh
+
rho
*
gh
;
// Thermodynamic density update
thermo
.
correctRho
(
psi
*
p
-
psip0
);
if
(
thermo
.
dpdt
())
{
dpdt
=
fvc
::
ddt
(
p
);
}
#include "rhoEqn.H"
#include "compressibleContinuityErrs.H"
applications/solvers/combustion/reactingFoam/rhoReactingBuoyantFoam/rhoReactingBuoyantFoam.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2012-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
rhoReactingBuoyantFoam
Group
grpCombustionSolvers
Description
Solver for combustion with chemical reactions using a density-based
thermodynamics package with enhanced buoyancy treatment.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "rhoReactionThermo.H"
#include "CombustionModel.H"
#include "turbulentFluidThermoModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Solver for combustion with chemical reactions using density-based"
" thermodynamics package,"
" with enhanced buoyancy treatment."
);
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
turbulence
->
validate
();
if
(
!
LTS
)
{
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
run
())
{
#include "readTimeControls.H"
if
(
LTS
)
{
#include "setRDeltaT.H"
}
else
{
#include "compressibleCourantNo.H"
#include "setDeltaT.H"
}
++
runTime
;
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
#include "rhoEqn.H"
// --- Pressure-velocity PIMPLE corrector loop
while
(
pimple
.
loop
())
{
#include "UEqn.H"
#include "YEqn.H"
#include "EEqn.H"
// --- Pressure corrector loop
while
(
pimple
.
correct
())
{
#include "pEqn.H"
}
if
(
pimple
.
turbCorr
())
{
turbulence
->
correct
();
}
}
rho
=
thermo
.
rho
();
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/files
0 → 100644
View file @
ea17556c
rhoReactingFoam.C
EXE = $(FOAM_APPBIN)/rhoReactingFoam
applications/solvers/combustion/reactingFoam/rhoReactingFoam/Make/options
0 → 100644
View file @
ea17556c
EXE_INC = \
-I$(FOAM_SOLVERS)/combustion/reactingFoam \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/chemistryModel/lnInclude \
-I$(LIB_SRC)/ODE/lnInclude \
-I$(LIB_SRC)/combustionModels/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-lsampling \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-lreactionThermophysicalModels \
-lspecie \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lchemistryModel \
-lODE \
-lcombustionModels
applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFieldRefs.H
0 → 100644
View file @
ea17556c
const
volScalarField
&
psi
=
thermo
.
psi
();
const
volScalarField
&
T
=
thermo
.
T
();
const
label
inertIndex
(
composition
.
species
()[
inertSpecie
]);
applications/solvers/combustion/reactingFoam/rhoReactingFoam/createFields.H
0 → 100644
View file @
ea17556c
#include "createRDeltaT.H"
Info
<<
"Reading thermophysical properties
\n
"
<<
endl
;
autoPtr
<
rhoReactionThermo
>
pThermo
(
rhoReactionThermo
::
New
(
mesh
));
rhoReactionThermo
&
thermo
=
pThermo
();
thermo
.
validate
(
args
.
executable
(),
"h"
,
"e"
);
basicSpecieMixture
&
composition
=
thermo
.
composition
();
PtrList
<
volScalarField
>&
Y
=
composition
.
Y
();
const
word
inertSpecie
(
thermo
.
get
<
word
>
(
"inertSpecie"
));
if
(
!
composition
.
species
().
found
(
inertSpecie
))
{
FatalIOErrorIn
(
args
.
executable
().
c_str
(),
thermo
)
<<
"Inert specie "
<<
inertSpecie
<<
" not found in available species "
<<
composition
.
species
()
<<
exit
(
FatalIOError
);
}
volScalarField
rho
(
IOobject
(
"rho"
,
runTime
.
timeName
(),
mesh
),
thermo
.
rho
()
);
Info
<<
"Reading field U
\n
"
<<
endl
;
volVectorField
U
(
IOobject
(
"U"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
volScalarField
&
p
=
thermo
.
p
();
#include "compressibleCreatePhi.H"
pressureControl
pressureControl
(
p
,
rho
,
pimple
.
dict
(),
false
);
mesh
.
setFluxRequired
(
p
.
name
());
Info
<<
"Creating turbulence model.
\n
"
<<
nl
;
autoPtr
<
compressible
::
turbulenceModel
>
turbulence
(
compressible
::
turbulenceModel
::
New
(
rho
,
U
,
phi
,
thermo
)
);
Info
<<
"Creating reaction model
\n
"
<<
endl
;
autoPtr
<
CombustionModel
<
rhoReactionThermo
>>
reaction
(
CombustionModel
<
rhoReactionThermo
>::
New
(
thermo
,
turbulence
())
);
multivariateSurfaceInterpolationScheme
<
scalar
>::
fieldTable
fields
;
forAll
(
Y
,
i
)
{
fields
.
add
(
Y
[
i
]);
}
fields
.
add
(
thermo
.
he
());
volScalarField
Qdot
(
IOobject
(
"Qdot"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
READ_IF_PRESENT
,
IOobject
::
AUTO_WRITE
),
mesh
,
dimensionedScalar
(
dimEnergy
/
dimVolume
/
dimTime
,
Zero
)
);
#include "createDpdt.H"
#include "createK.H"
#include "createMRF.H"
const
dimensionedScalar
rhoMax
(
"rhoMax"
,
dimDensity
,
GREAT
,
pimple
.
dict
());
const
dimensionedScalar
rhoMin
(
"rhoMin"
,
dimDensity
,
Zero
,
pimple
.
dict
());
#include "createFvOptions.H"
applications/solvers/combustion/reactingFoam/rhoReactingFoam/rhoReactingFoam.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
rhoReactingFoam
Group
grpCombustionSolvers
Description
Solver for combustion with chemical reactions using density-based
thermodynamics package.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "rhoReactionThermo.H"
#include "CombustionModel.H"
#include "turbulentFluidThermoModel.H"
#include "multivariateScheme.H"
#include "pimpleControl.H"
#include "pressureControl.H"
#include "fvOptions.H"
#include "localEulerDdtScheme.H"
#include "fvcSmooth.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Solver for combustion with chemical reactions using density-based"
" thermodynamics package."
);
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createFieldRefs.H"
#include "createRhoUfIfPresent.H"
#include "createTimeControls.H"
turbulence
->
validate
();
if
(
!
LTS
)
{
#include "compressibleCourantNo.H"
#include "setInitialDeltaT.H"
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
run
())
{
#include "readTimeControls.H"
if
(
LTS
)
{
#include "setRDeltaT.H"
}
else
{
#include "compressibleCourantNo.H"
#include "setDeltaT.H"
}
++
runTime
;
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
#include "rhoEqn.H"
// --- Pressure-velocity PIMPLE corrector loop
while
(
pimple
.
loop
())
{
#include "UEqn.H"
#include "YEqn.H"
#include "EEqn.H"
// --- Pressure corrector loop
while
(
pimple
.
correct
())
{
if
(
pimple
.
consistent
())
{
#include "../../../compressible/rhoPimpleFoam/pcEqn.H"
}
else
{
#include "../../../compressible/rhoPimpleFoam/pEqn.H"
}
}
if
(
pimple
.
turbCorr
())
{
turbulence
->
correct
();
}
}
rho
=
thermo
.
rho
();
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
applications/solvers/combustion/reactingFoam/setRDeltaT.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2013-2016 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
{
volScalarField
&
rDeltaT
=
trDeltaT
.
ref
();
const
dictionary
&
pimpleDict
=
pimple
.
dict
();
// Maximum flow Courant number
scalar
maxCo
(
pimpleDict
.
get
<
scalar
>
(
"maxCo"
));
// Maximum time scale
scalar
maxDeltaT
(
pimpleDict
.
getOrDefault
<
scalar
>
(
"maxDeltaT"
,
GREAT
));
// Smoothing parameter (0-1) when smoothing iterations > 0
scalar
rDeltaTSmoothingCoeff
(
pimpleDict
.
getOrDefault
<
scalar
>
(
"rDeltaTSmoothingCoeff"
,
0
.
1
)
);
// Damping coefficient (1-0)
scalar
rDeltaTDampingCoeff
(
pimpleDict
.
getOrDefault
<
scalar
>
(
"rDeltaTDampingCoeff"
,
1
.
0
)
);
// Maximum change in cell temperature per iteration
// (relative to previous value)
scalar
alphaTemp
(
pimpleDict
.
getOrDefault
<
scalar
>
(
"alphaTemp"
,
0
.
05
));
// Maximum change in cell concentration per iteration
// (relative to reference value)
scalar
alphaY
(
pimpleDict
.
getOrDefault
<
scalar
>
(
"alphaY"
,
1
.
0
));
Info
<<
"Time scales min/max:"
<<
endl
;
// Cache old reciprocal time scale field
volScalarField
rDeltaT0
(
"rDeltaT0"
,
rDeltaT
);
// Flow time scale
{
rDeltaT
.
ref
()
=
(
fvc
::
surfaceSum
(
mag
(
phi
))()()
/
((
2
*
maxCo
)
*
mesh
.
V
()
*
rho
())
);
// Limit the largest time scale
rDeltaT
.
max
(
1
/
maxDeltaT
);
Info
<<
" Flow = "
<<
1
/
gMax
(
rDeltaT
.
primitiveField
())
<<
", "
<<
1
/
gMin
(
rDeltaT
.
primitiveField
())
<<
endl
;
}
// Heat release rate time scale
if
(
alphaTemp
<
1
)
{
volScalarField
::
Internal
rDeltaTT
(
mag
(
Qdot
)
/
(
alphaTemp
*
rho
*
thermo
.
Cp
()
*
T
)
);
Info
<<
" Temperature = "
<<
1
/
(
gMax
(
rDeltaTT
.
field
())
+
VSMALL
)
<<
", "
<<
1
/
(
gMin
(
rDeltaTT
.
field
())
+
VSMALL
)
<<
endl
;
rDeltaT
.
ref
()
=
max
(
rDeltaT
(),
rDeltaTT
);
}
// Reaction rate time scale
if
(
alphaY
<
1
)
{
dictionary
Yref
(
pimpleDict
.
subDict
(
"Yref"
));
volScalarField
::
Internal
rDeltaTY
(
IOobject
(
"rDeltaTY"
,
runTime
.
timeName
(),
mesh
),
mesh
,
dimensionedScalar
(
rDeltaT
.
dimensions
(),
Zero
)
);
bool
foundY
=
false
;
forAll
(
Y
,
i
)
{
if
(
i
!=
inertIndex
&&
composition
.
active
(
i
))
{
volScalarField
&
Yi
=
Y
[
i
];
if
(
Yref
.
found
(
Yi
.
name
()))
{
foundY
=
true
;
const
scalar
Yrefi
=
Yref
.
get
<
scalar
>
(
Yi
.
name
());
rDeltaTY
.
field
()
=
max
(
mag
(
reaction
->
R
(
Yi
)().
source
()
/
((
Yrefi
*
alphaY
)
*
(
rho
*
mesh
.
V
()))
),
rDeltaTY
);
}
}
}
if
(
foundY
)
{
Info
<<
" Composition = "
<<
1
/
(
gMax
(
rDeltaTY
.
field
())
+
VSMALL
)
<<
", "
<<
1
/
(
gMin
(
rDeltaTY
.
field
())
+
VSMALL
)
<<
endl
;
rDeltaT
.
ref
()
=
max
(
rDeltaT
(),
rDeltaTY
);
}
else
{
IOWarningIn
(
args
.
executable
().
c_str
(),
Yref
)
<<
"Cannot find any active species in Yref "
<<
Yref
<<
endl
;
}
}
// Update tho boundary values of the reciprocal time-step
rDeltaT
.
correctBoundaryConditions
();
// Spatially smooth the time scale field
if
(
rDeltaTSmoothingCoeff
<
1
)
{
fvc
::
smooth
(
rDeltaT
,
rDeltaTSmoothingCoeff
);
}
// Limit rate of change of time scale
// - reduce as much as required
// - only increase at a fraction of old time scale
if
(
rDeltaTDampingCoeff
<
1
&&
runTime
.
timeIndex
()
>
runTime
.
startTimeIndex
()
+
1
)
{
rDeltaT
=
max
(
rDeltaT
,
(
scalar
(
1
)
-
rDeltaTDampingCoeff
)
*
rDeltaT0
);
}
// Update tho boundary values of the reciprocal time-step
rDeltaT
.
correctBoundaryConditions
();
Info
<<
" Overall = "
<<
1
/
gMax
(
rDeltaT
.
primitiveField
())
<<
", "
<<
1
/
gMin
(
rDeltaT
.
primitiveField
())
<<
endl
;
}
// ************************************************************************* //
applications/solvers/compressible/compressibleSolvers.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your option)
any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
You should have received a copy of the GNU General Public License along with
OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\defgroup grpCompressibleSolvers Compressible flow solvers
@{
\ingroup grpSolvers
This group contains compressible flow solvers.
@}
\*---------------------------------------------------------------------------*/
applications/solvers/compressible/rhoCentralFoam/Allwclean
0 → 100644
View file @
ea17556c
#!/bin/sh
cd
"
${
0
%/*
}
"
||
exit
# Run from this directory
#------------------------------------------------------------------------------
wclean libso BCs
wclean
#------------------------------------------------------------------------------
applications/solvers/compressible/rhoCentralFoam/Allwmake
0 → 100644
View file @
ea17556c
#!/bin/sh
cd
"
${
0
%/*
}
"
||
exit
# Run from this directory
.
${
WM_PROJECT_DIR
:?
}
/wmake/scripts/AllwmakeParseArguments
#------------------------------------------------------------------------------
(
wmake
$targetType
BCs
\
&&
wmake
$targetType
)
#------------------------------------------------------------------------------
applications/solvers/compressible/rhoCentralFoam/BCs/Make/files
0 → 100644
View file @
ea17556c
U/maxwellSlipUFvPatchVectorField.C
T/smoluchowskiJumpTFvPatchScalarField.C
rho/fixedRhoFvPatchScalarField.C
LIB = $(FOAM_LIBBIN)/librhoCentralFoam
applications/solvers/compressible/rhoCentralFoam/BCs/Make/options
0 → 100644
View file @
ea17556c
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude
LIB_LIBS = \
-lfiniteVolume \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie
Prev
1
…
6
7
8
9
10
11
12
13
14
…
40
Next
Write
Preview
Markdown
is supported
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