28#ifndef PL_UNITCONVERTER_H
29#define PL_UNITCONVERTER_H
76template <
typename T,
typename DESCRIPTOR>
77class PowerLawUnitConverter :
public UnitConverter<T, DESCRIPTOR> {
89 constexpr PowerLawUnitConverter( T physDeltaX, T physDeltaT, T charPhysLength,
90 T charPhysVelocity, T physConsistencyCoeff, T powerLawIndex,
91 T physDensity, T charPhysPressure = 0 )
92 : UnitConverter<T, DESCRIPTOR>( physDeltaX, physDeltaT, charPhysLength, charPhysVelocity,
93 physConsistencyCoeff * util::
pow(charPhysVelocity / (2*charPhysLength), powerLawIndex-1),
94 physDensity, charPhysPressure ),
95 _conversionConsistencyCoeff(util::
pow( physDeltaT,powerLawIndex-2 ) * util::
pow( physDeltaX,2 ) ),
96 _powerLawIndex(powerLawIndex),
97 _physConsistencyCoeff(physConsistencyCoeff),
98 clout(std::cout,
"PowerLawUnitConverter")
103 constexpr T getReynoldsNumber( )
const
106 return util::pow(this->_charPhysVelocity, T{2} - _powerLawIndex) * util::pow(this->_charPhysLength, _powerLawIndex)
107 / _physConsistencyCoeff;
111 constexpr T getPhysConsistencyCoeff( )
const
113 return _physConsistencyCoeff;
116 constexpr T getPhysConsistencyCoeff( T latticeConsistencyCoeff )
const
118 return _conversionConsistencyCoeff * latticeConsistencyCoeff;
121 constexpr T getLatticeConsistencyCoeff( )
const
123 return _physConsistencyCoeff / _conversionConsistencyCoeff;
126 constexpr T getConversionFactorConsistencyCoeff()
const
128 return _conversionConsistencyCoeff;
132 constexpr T getPowerLawIndex()
const
134 return _powerLawIndex;
138 void print()
const override;
139 void print(std::ostream& fout)
const override;
141 void write(std::string
const& fileName =
"unitConverter")
const override;
145 const T _conversionConsistencyCoeff;
148 const T _powerLawIndex;
149 const T _physConsistencyCoeff;
152 mutable OstreamManager clout;
156template <
typename T,
typename DESCRIPTOR>
159template <
typename T,
typename DESCRIPTOR>
160class PowerLawUnitConverterFrom_Resolution_RelaxationTime_Reynolds_PLindex :
public PowerLawUnitConverter<T, DESCRIPTOR> {
162 constexpr PowerLawUnitConverterFrom_Resolution_RelaxationTime_Reynolds_PLindex(
164 T latticeRelaxationTime,
170 T charPhysPressure = 0)
171 : PowerLawUnitConverter<T, DESCRIPTOR>( (charPhysLength/resolution),
172 (latticeRelaxationTime - 0.5) / descriptors::
invCs2<T,DESCRIPTOR>() * util::
pow((charPhysLength/resolution),2) / ( ( charPhysLength * charPhysVelocity * util::
pow( charPhysVelocity / ( 2 * charPhysLength ), 1 - powerLawIndex ) / Re ) * util::
pow( charPhysVelocity / (2 * charPhysLength ), powerLawIndex - 1 ) ),
173 charPhysLength, charPhysVelocity,
174 charPhysLength * charPhysVelocity * util::
pow( charPhysVelocity / ( 2 * charPhysLength ), 1 - powerLawIndex ) / Re, powerLawIndex, physDensity, charPhysPressure )
Pack< T > pow(Pack< T > base, Pack< T > exp)
constexpr T invCs2() any_platform
void write(BlockReduction3D2D< T > &blockReduction, int iT, const plotParam< T > param={}, const std::vector< T > &valueArea=std::vector< T >())
This function is used to plot heat maps as jpeg files.
void print(U data, const std::string &name="", OstreamManager clout=OstreamManager(std::cout,"print"), const char delimiter=',')
Top level namespace for all of OpenLB.
PowerLawUnitConverter< T, DESCRIPTOR > * createPowerLawUnitConverter(XMLreader const ¶ms)
Unit conversion handling – header file.
Set of functions commonly used in LB computations – header file.
Input/Output in XML format – header file.