fvOptions::SemiImplicitSource: Added support for Function1 specifications of the explicit and implicit sources
This significant improvement is flexibility of SemiImplicitSource required a
generalisation of the source specification syntax and all tutorials have been
updated accordingly.
Description
Semi-implicit source, described using an input dictionary. The injection
rate coefficients are specified as pairs of Su-Sp coefficients, i.e.
\f[
S(x) = S_u + S_p x
\f]
where
\vartable
S(x) | net source for field 'x'
S_u | explicit source contribution
S_p | linearised implicit contribution
\endvartable
Example tabulated heat source specification for internal energy:
\verbatim
volumeMode absolute; // specific
sources
{
e
{
explicit table ((0 0) (1.5 $power));
implicit 0;
}
}
\endverbatim
Example coded heat source specification for enthalpy:
\verbatim
volumeMode absolute; // specific
sources
{
h
{
explicit
{
type coded;
name heatInjection;
code
#{
// Power amplitude
const scalar powerAmplitude = 1000;
// x is the current time
return mag(powerAmplitude*sin(x));
#};
}
implicit 0;
}
}
\endverbatim
This commit is contained in:
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -83,8 +83,9 @@ Foam::word Foam::fv::SemiImplicitSource<Type>::volumeModeTypeToWord
|
|||||||
template<class Type>
|
template<class Type>
|
||||||
void Foam::fv::SemiImplicitSource<Type>::setFieldData(const dictionary& dict)
|
void Foam::fv::SemiImplicitSource<Type>::setFieldData(const dictionary& dict)
|
||||||
{
|
{
|
||||||
fieldNames_.setSize(dict.toc().size());
|
fieldNames_.setSize(dict.size());
|
||||||
injectionRate_.setSize(fieldNames_.size());
|
Su_.setSize(fieldNames_.size());
|
||||||
|
Sp_.setSize(fieldNames_.size());
|
||||||
|
|
||||||
applied_.setSize(fieldNames_.size(), false);
|
applied_.setSize(fieldNames_.size(), false);
|
||||||
|
|
||||||
@ -92,7 +93,9 @@ void Foam::fv::SemiImplicitSource<Type>::setFieldData(const dictionary& dict)
|
|||||||
forAllConstIter(dictionary, dict, iter)
|
forAllConstIter(dictionary, dict, iter)
|
||||||
{
|
{
|
||||||
fieldNames_[i] = iter().keyword();
|
fieldNames_[i] = iter().keyword();
|
||||||
dict.lookup(iter().keyword()) >> injectionRate_[i];
|
const dictionary& fieldSubDict(iter().dict());
|
||||||
|
Su_.set(i, Function1<Type>::New("explicit", fieldSubDict));
|
||||||
|
Sp_.set(i, Function1<scalar>::New("implicit", fieldSubDict));
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,8 +120,7 @@ Foam::fv::SemiImplicitSource<Type>::SemiImplicitSource
|
|||||||
:
|
:
|
||||||
cellSetOption(name, modelType, dict, mesh),
|
cellSetOption(name, modelType, dict, mesh),
|
||||||
volumeMode_(vmAbsolute),
|
volumeMode_(vmAbsolute),
|
||||||
VDash_(1.0),
|
VDash_(1)
|
||||||
injectionRate_()
|
|
||||||
{
|
{
|
||||||
read(dict);
|
read(dict);
|
||||||
}
|
}
|
||||||
@ -139,6 +141,8 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
|
|||||||
<< ">::addSup for source " << name_ << endl;
|
<< ">::addSup for source " << name_ << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const scalar t = mesh_.time().value();
|
||||||
|
|
||||||
const GeometricField<Type, fvPatchField, volMesh>& psi = eqn.psi();
|
const GeometricField<Type, fvPatchField, volMesh>& psi = eqn.psi();
|
||||||
|
|
||||||
typename GeometricField<Type, fvPatchField, volMesh>::Internal Su
|
typename GeometricField<Type, fvPatchField, volMesh>::Internal Su
|
||||||
@ -161,7 +165,7 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
UIndirectList<Type>(Su, cells_) = injectionRate_[fieldi].first()/VDash_;
|
UIndirectList<Type>(Su, cells_) = Su_[fieldi].value(t)/VDash_;
|
||||||
|
|
||||||
volScalarField::Internal Sp
|
volScalarField::Internal Sp
|
||||||
(
|
(
|
||||||
@ -178,12 +182,12 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
|
|||||||
(
|
(
|
||||||
"zero",
|
"zero",
|
||||||
Su.dimensions()/psi.dimensions(),
|
Su.dimensions()/psi.dimensions(),
|
||||||
0.0
|
0
|
||||||
),
|
),
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
UIndirectList<scalar>(Sp, cells_) = injectionRate_[fieldi].second()/VDash_;
|
UIndirectList<scalar>(Sp, cells_) = Sp_[fieldi].value(t)/VDash_;
|
||||||
|
|
||||||
eqn += Su + fvm::SuSp(Sp, psi);
|
eqn += Su + fvm::SuSp(Sp, psi);
|
||||||
}
|
}
|
||||||
@ -207,4 +211,21 @@ void Foam::fv::SemiImplicitSource<Type>::addSup
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class Type>
|
||||||
|
bool Foam::fv::SemiImplicitSource<Type>::read(const dictionary& dict)
|
||||||
|
{
|
||||||
|
if (cellSetOption::read(dict))
|
||||||
|
{
|
||||||
|
volumeMode_ = wordToVolumeModeType(coeffs_.lookup("volumeMode"));
|
||||||
|
setFieldData(coeffs_.subDict("sources"));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -39,14 +39,41 @@ Description
|
|||||||
S_p | linearised implicit contribution
|
S_p | linearised implicit contribution
|
||||||
\endvartable
|
\endvartable
|
||||||
|
|
||||||
Example of the source specification:
|
Example tabulated heat source specification for internal energy:
|
||||||
|
|
||||||
\verbatim
|
\verbatim
|
||||||
volumeMode absolute; // specific
|
volumeMode absolute; // specific
|
||||||
injectionRateSuSp
|
sources
|
||||||
{
|
{
|
||||||
k (30.7 0);
|
e
|
||||||
epsilon (1.5 0);
|
{
|
||||||
|
explicit table ((0 0) (1.5 $power));
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
Example coded heat source specification for enthalpy:
|
||||||
|
\verbatim
|
||||||
|
volumeMode absolute; // specific
|
||||||
|
sources
|
||||||
|
{
|
||||||
|
h
|
||||||
|
{
|
||||||
|
explicit
|
||||||
|
{
|
||||||
|
type coded;
|
||||||
|
name heatInjection;
|
||||||
|
code
|
||||||
|
#{
|
||||||
|
// Power amplitude
|
||||||
|
const scalar powerAmplitude = 1000;
|
||||||
|
|
||||||
|
// x is the current time
|
||||||
|
return mag(powerAmplitude*sin(x));
|
||||||
|
#};
|
||||||
|
}
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
@ -65,8 +92,8 @@ SourceFiles
|
|||||||
#ifndef SemiImplicitSource_H
|
#ifndef SemiImplicitSource_H
|
||||||
#define SemiImplicitSource_H
|
#define SemiImplicitSource_H
|
||||||
|
|
||||||
#include "Tuple2.H"
|
|
||||||
#include "cellSetOption.H"
|
#include "cellSetOption.H"
|
||||||
|
#include "Function1.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -75,22 +102,6 @@ namespace Foam
|
|||||||
namespace fv
|
namespace fv
|
||||||
{
|
{
|
||||||
|
|
||||||
// Forward declaration of classes
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
class SemiImplicitSource;
|
|
||||||
|
|
||||||
|
|
||||||
// Forward declaration of friend functions
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
Ostream& operator<<
|
|
||||||
(
|
|
||||||
Ostream&,
|
|
||||||
const SemiImplicitSource<Type>&
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*\
|
/*---------------------------------------------------------------------------*\
|
||||||
Class SemiImplicitSource Declaration
|
Class SemiImplicitSource Declaration
|
||||||
\*---------------------------------------------------------------------------*/
|
\*---------------------------------------------------------------------------*/
|
||||||
@ -111,25 +122,28 @@ public:
|
|||||||
vmSpecific
|
vmSpecific
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
// Private member data
|
||||||
|
|
||||||
//- Word list of volume mode type names
|
//- Word list of volume mode type names
|
||||||
static const wordList volumeModeTypeNames_;
|
static const wordList volumeModeTypeNames_;
|
||||||
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
// Protected data
|
|
||||||
|
|
||||||
//- Volume mode
|
//- Volume mode
|
||||||
volumeModeType volumeMode_;
|
volumeModeType volumeMode_;
|
||||||
|
|
||||||
//- Volume normalisation
|
//- Volume normalisation
|
||||||
scalar VDash_;
|
scalar VDash_;
|
||||||
|
|
||||||
//- Source field values
|
//- Explicit source functions for the fields
|
||||||
List<Tuple2<Type, scalar>> injectionRate_;
|
PtrList<Function1<Type>> Su_;
|
||||||
|
|
||||||
|
//- Implicit source functions for the fields
|
||||||
|
PtrList<Function1<scalar>> Sp_;
|
||||||
|
|
||||||
|
|
||||||
// Protected functions
|
// Private member functions
|
||||||
|
|
||||||
//- Helper function to convert from a word to a volumeModeType
|
//- Helper function to convert from a word to a volumeModeType
|
||||||
volumeModeType wordToVolumeModeType(const word& vtName) const;
|
volumeModeType wordToVolumeModeType(const word& vtName) const;
|
||||||
@ -161,24 +175,6 @@ public:
|
|||||||
|
|
||||||
// Member Functions
|
// Member Functions
|
||||||
|
|
||||||
// Access
|
|
||||||
|
|
||||||
//- Return const access to the volume mode
|
|
||||||
inline const volumeModeType& volumeMode() const;
|
|
||||||
|
|
||||||
//- Return const access to the source field values
|
|
||||||
inline const List<Tuple2<Type, scalar>>& injectionRate() const;
|
|
||||||
|
|
||||||
|
|
||||||
// Edit
|
|
||||||
|
|
||||||
//- Return access to the volume mode
|
|
||||||
inline volumeModeType& volumeMode();
|
|
||||||
|
|
||||||
//- Return access to the source field values
|
|
||||||
inline List<Tuple2<Type, scalar>>& injectionRate();
|
|
||||||
|
|
||||||
|
|
||||||
// Evaluation
|
// Evaluation
|
||||||
|
|
||||||
//- Add explicit contribution to equation
|
//- Add explicit contribution to equation
|
||||||
@ -213,15 +209,10 @@ public:
|
|||||||
|
|
||||||
#ifdef NoRepository
|
#ifdef NoRepository
|
||||||
#include "SemiImplicitSource.C"
|
#include "SemiImplicitSource.C"
|
||||||
#include "SemiImplicitSourceIO.C"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
#include "SemiImplicitSourceI.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -1,62 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration | Website: https://openfoam.org
|
|
||||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
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/>.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "SemiImplicitSource.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
inline const typename Foam::fv::SemiImplicitSource<Type>::volumeModeType&
|
|
||||||
Foam::fv::SemiImplicitSource<Type>::volumeMode() const
|
|
||||||
{
|
|
||||||
return volumeMode_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
inline const Foam::List<Foam::Tuple2<Type, Foam::scalar>>&
|
|
||||||
Foam::fv::SemiImplicitSource<Type>::injectionRate() const
|
|
||||||
{
|
|
||||||
return injectionRate_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
inline typename Foam::fv::SemiImplicitSource<Type>::volumeModeType&
|
|
||||||
Foam::fv::SemiImplicitSource<Type>::volumeMode()
|
|
||||||
{
|
|
||||||
return volumeMode_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
inline Foam::List<Foam::Tuple2<Type,
|
|
||||||
Foam::scalar>>& Foam::fv::SemiImplicitSource<Type>::injectionRate()
|
|
||||||
{
|
|
||||||
return injectionRate_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
/*---------------------------------------------------------------------------*\
|
|
||||||
========= |
|
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
||||||
\\ / O peration | Website: https://openfoam.org
|
|
||||||
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
|
|
||||||
\\/ M anipulation |
|
|
||||||
-------------------------------------------------------------------------------
|
|
||||||
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/>.
|
|
||||||
|
|
||||||
\*---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#include "SemiImplicitSource.H"
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
template<class Type>
|
|
||||||
bool Foam::fv::SemiImplicitSource<Type>::read(const dictionary& dict)
|
|
||||||
{
|
|
||||||
if (cellSetOption::read(dict))
|
|
||||||
{
|
|
||||||
volumeMode_ = wordToVolumeModeType(coeffs_.lookup("volumeMode"));
|
|
||||||
setFieldData(coeffs_.subDict("injectionRateSuSp"));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -35,10 +35,19 @@ fixedPower
|
|||||||
|
|
||||||
power 100; // Set power (W)
|
power 100; // Set power (W)
|
||||||
|
|
||||||
injectionRateSuSp
|
sources
|
||||||
{
|
{
|
||||||
e ($power 0);
|
e
|
||||||
h ($power 0);
|
{
|
||||||
|
explicit $power;
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h
|
||||||
|
{
|
||||||
|
explicit $power;
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -26,9 +26,13 @@ options
|
|||||||
selectionMode all;
|
selectionMode all;
|
||||||
volumeMode specific;
|
volumeMode specific;
|
||||||
|
|
||||||
injectionRateSuSp
|
sources
|
||||||
{
|
{
|
||||||
h (1e7 0); // W/m^3 == kg/m/s^3
|
h
|
||||||
|
{
|
||||||
|
explicit 1e7; // W/m^3 == kg/m/s^3
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,9 +27,13 @@ options
|
|||||||
cellSet ignition;
|
cellSet ignition;
|
||||||
volumeMode specific;
|
volumeMode specific;
|
||||||
|
|
||||||
injectionRateSuSp
|
sources
|
||||||
{
|
{
|
||||||
e (5e7 0); // kg/m/s^3
|
e
|
||||||
|
{
|
||||||
|
explicit 5e7; // kg/m/s^3
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,9 +24,14 @@ momentumSource
|
|||||||
selectionMode all;
|
selectionMode all;
|
||||||
|
|
||||||
volumeMode specific;
|
volumeMode specific;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
U ((5 0 0) 0);
|
U
|
||||||
|
{
|
||||||
|
explicit (5 0 0);
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,9 +50,8 @@ IOdictionary fvOptions
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
const dictionary& gradPDict =
|
const dictionary& gradPDict =
|
||||||
fvOptions.subDict("momentumSource").subDict("injectionRateSuSp");
|
fvOptions.subDict("momentumSource").subDict("sources");
|
||||||
const scalar K =
|
const scalar K(vector(gradPDict.subDict("U").lookup("explicit")).x());
|
||||||
Tuple2<vector, scalar>(gradPDict.lookup("U")).first().x();
|
|
||||||
|
|
||||||
dictionary probes(IFstream(runTime.system()/"probes")());
|
dictionary probes(IFstream(runTime.system()/"probes")());
|
||||||
const point location = pointField(probes.lookup("probeLocations"))[0];
|
const point location = pointField(probes.lookup("probeLocations"))[0];
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
tail -n +4 ../postProcessing/probes/0/U | \
|
tail -n +4 ../postProcessing/probes/0/U | \
|
||||||
tr -s " " | tr -d '(' | cut -d " " -f2-3 > ../Numerical.dat
|
tr -s " " | tr -d '(' | cut -d " " -f1-2 > ../Numerical.dat
|
||||||
|
|
||||||
if ! which gnuplot > /dev/null 2>&1
|
if ! which gnuplot > /dev/null 2>&1
|
||||||
then
|
then
|
||||||
@ -24,4 +24,4 @@ gnuplot<<EOF
|
|||||||
"../WatersKing.dat" with lines t "Analytical" lt -1
|
"../WatersKing.dat" with lines t "Analytical" lt -1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
#------------------------------------------------------------------------------
|
||||||
|
|||||||
@ -57,10 +57,26 @@ massSource1
|
|||||||
);
|
);
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
rho (1e-4 0); // kg/s
|
rho
|
||||||
H2O (1e-4 0); // kg/s
|
{
|
||||||
|
explicit 1e-4; // kg/s
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
H2O
|
||||||
|
{
|
||||||
|
explicit 1e-4; // kg/s
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h
|
||||||
|
{
|
||||||
|
explicit 10;
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,29 +94,14 @@ momentumSource1
|
|||||||
);
|
);
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
U ((0 0.005 0) 0);
|
U
|
||||||
}
|
{
|
||||||
}
|
explicit (0 0.005 0);
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
energySource1
|
|
||||||
{
|
|
||||||
type scalarSemiImplicitSource;
|
|
||||||
|
|
||||||
timeStart 0.2;
|
|
||||||
duration 2.0;
|
|
||||||
selectionMode points;
|
|
||||||
points
|
|
||||||
(
|
|
||||||
(2.75 0.5 0)
|
|
||||||
);
|
|
||||||
|
|
||||||
volumeMode absolute;
|
|
||||||
injectionRateSuSp
|
|
||||||
{
|
|
||||||
h (10 0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,9 +35,14 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
thermo:rho.water (1 0); // kg/s
|
thermo:rho.water
|
||||||
|
{
|
||||||
|
explicit 1; // kg/s
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,9 +35,20 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
thermo:rho.air (1e-3 0); // kg/s
|
thermo:rho.air
|
||||||
|
{
|
||||||
|
explicit 1e-3; // kg/s
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
e.air
|
||||||
|
{
|
||||||
|
explicit 500; // kg*m^2/s^3
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,22 +59,14 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
U.air ((0 -1e-2 0) 0); // kg*m/s^2
|
U.air
|
||||||
}
|
{
|
||||||
}
|
explicit (0 -1e-2 0); // kg*m/s^2
|
||||||
|
implicit 0; // kg*m/s^2
|
||||||
energySource1
|
}
|
||||||
{
|
|
||||||
type scalarSemiImplicitSource;
|
|
||||||
|
|
||||||
$injector1;
|
|
||||||
|
|
||||||
volumeMode absolute;
|
|
||||||
injectionRateSuSp
|
|
||||||
{
|
|
||||||
e.air (500 0); // kg*m^2/s^3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -35,9 +35,20 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
thermo:rho.steam (1.0e-3 0); // kg/s
|
thermo:rho.steam
|
||||||
|
{
|
||||||
|
explicit 1.0e-3; // kg/s
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
h.steam
|
||||||
|
{
|
||||||
|
explicit 3700; // kg*m^2/s^3
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,22 +59,14 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
U.steam ((0 1e-1 0) 0); // kg*m/s^2
|
U.steam
|
||||||
}
|
{
|
||||||
}
|
explicit (0 1e-1 0); // kg*m/s^2
|
||||||
|
implicit 0;
|
||||||
energySource1
|
}
|
||||||
{
|
|
||||||
type scalarSemiImplicitSource;
|
|
||||||
|
|
||||||
$injector1;
|
|
||||||
|
|
||||||
volumeMode absolute;
|
|
||||||
injectionRateSuSp
|
|
||||||
{
|
|
||||||
h.steam (3700 0); // kg*m^2/s^3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,9 +35,20 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
thermo:rho.air (1e-3 0); // kg/s
|
thermo:rho.air
|
||||||
|
{
|
||||||
|
explicit 1e-3; // kg/s
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
e.air
|
||||||
|
{
|
||||||
|
explicit 500; // kg*m^2/s^3
|
||||||
|
implicit 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,22 +59,14 @@ options
|
|||||||
$injector1;
|
$injector1;
|
||||||
|
|
||||||
volumeMode absolute;
|
volumeMode absolute;
|
||||||
injectionRateSuSp
|
|
||||||
|
sources
|
||||||
{
|
{
|
||||||
U.air ((0 -1e-2 0) 0); // kg*m/s^2
|
U.air
|
||||||
}
|
{
|
||||||
}
|
explicit (0 -1e-2 0); // kg*m/s^2
|
||||||
|
implicit 0; // kg*m/s^2
|
||||||
energySource1
|
}
|
||||||
{
|
|
||||||
type scalarSemiImplicitSource;
|
|
||||||
|
|
||||||
$injector1;
|
|
||||||
|
|
||||||
volumeMode absolute;
|
|
||||||
injectionRateSuSp
|
|
||||||
{
|
|
||||||
e.air (500 0); // kg*m^2/s^3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user