28#ifndef UNITCONVERTER_H
29#define UNITCONVERTER_H
54 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
60 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
66 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
72 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
78 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
84 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
91 template <
typename T,
typename DESCRIPTOR,
typename FIELD>
108 virtual void print(std::ostream& fout)
const = 0;
109 virtual void write(std::string
const& fileName =
"unitConverter")
const = 0;
140template <
typename T,
typename DESCRIPTOR>
152 constexpr UnitConverter( T physDeltaX, T physDeltaT, T charPhysLength, T charPhysVelocity,
153 T physViscosity, T physDensity, T charPhysPressure = 0 )
171 clout(std::cout,
"UnitConverter")
193 template <
typename DESCRIPTOR_>
303 template <
unsigned D>
374 template <
unsigned D>
398 template <
unsigned D>
432 virtual void print()
const;
433 void print(std::ostream& fout)
const;
435 void write(std::string
const& fileName =
"unitConverter")
const;
465template <
typename T,
typename DESCRIPTOR>
470 const T refinementFactor = T{1} / scale;
483template <
typename T,
typename DESCRIPTOR>
486template <
typename T,
typename DESCRIPTOR>
491 T latticeRelaxationTime,
497 (charPhysLength/resolution),
498 (latticeRelaxationTime - 0.5) / descriptors::invCs2<T,DESCRIPTOR>() * util::pow((charPhysLength/resolution),2) / physViscosity,
507template <
typename T,
typename DESCRIPTOR>
512 T charLatticeVelocity,
518 (charPhysLength/resolution),
519 (charLatticeVelocity / charPhysVelocity * charPhysLength / resolution),
528template <
typename T,
typename DESCRIPTOR>
532 T latticeRelaxationTime,
533 T charLatticeVelocity,
539 (physViscosity * charLatticeVelocity / charPhysVelocity * descriptors::invCs2<T,DESCRIPTOR>() / (latticeRelaxationTime - 0.5)),
540 (physViscosity * charLatticeVelocity * charLatticeVelocity / charPhysVelocity / charPhysVelocity * descriptors::invCs2<T,DESCRIPTOR>() / (latticeRelaxationTime - 0.5)),
class for marking output with some text
constexpr UnitConverterFromRelaxationTimeAndLatticeVelocity(T latticeRelaxationTime, T charLatticeVelocity, T charPhysLength, T charPhysVelocity, T physViscosity, T physDensity, T charPhysPressure=0)
constexpr UnitConverterFromResolutionAndLatticeVelocity(size_t resolution, T charLatticeVelocity, T charPhysLength, T charPhysVelocity, T physViscosity, T physDensity, T charPhysPressure=0)
constexpr UnitConverterFromResolutionAndRelaxationTime(size_t resolution, T latticeRelaxationTime, T charPhysLength, T charPhysVelocity, T physViscosity, T physDensity, T charPhysPressure=0)
Conversion between physical and lattice units, as well as discretization.
constexpr T getConversionFactorViscosity() const
access (read-only) to private member variable
void write(std::string const &fileName="unitConverter") const
constexpr T getLatticeViscosity() const
conversion from physical to lattice viscosity
constexpr T getLatticeForce(T physForce) const
conversion from physical to lattice force
constexpr T getCharPhysLength() const
return characteristic length in physical units
constexpr T getLatticeTorque(T physTorque) const
conversion from physical to lattice torque
constexpr T getMachNumber() const
return Mach number
constexpr T getPhysViscosity(T latticeViscosity) const
conversion from lattice to physical viscosity
constexpr int getResolution() const
return resolution
const T _conversionViscosity
constexpr T getConversionFactorDensity() const
access (read-only) to private member variable
constexpr T getPhysDensity() const
return density in physical units
const T _charLatticeVelocity
constexpr T getLatticeRelaxationFrequency() const
return relaxation frequency in lattice units
const T _conversionPressure
constexpr T getConversionFactorLength() const
access (read-only) to private member variable
constexpr T getCharLatticeVelocity() const
return characteristic velocity in lattice units
constexpr T getLatticeDensity(T physDensity) const
conversion from physical to lattice density
constexpr size_t getLatticeTime(T physTime) const
conversion from physical to lattice time
constexpr T getLatticeDensityFromPhysPressure(T physPressure) const
constexpr T getPhysDensity(T latticeDensity) const
conversion from lattice to physical density
constexpr T getConversionFactorVelocity() const
access (read-only) to private member variable
constexpr T getPhysTorque(T latticeTorque) const
conversion from lattice to physical torque
constexpr T getPhysMass(T latticeMass) const
conversion from lattice to physical mass
constexpr T getPhysVelocity(T latticeVelocity) const
conversion from lattice to physical velocity
constexpr T getLatticePressure(T physPressure) const
conversion from physical to lattice pressure
constexpr T getConversionFactorMass() const
access (read-only) to private member variable
const T _conversionVelocity
constexpr T getPhysViscosity() const
return viscosity in physical units
constexpr T getConversionFactorForce() const
access (read-only) to private member variable
const T _conversionDensity
constexpr Vector< T, D > getLatticeVelocity(Vector< T, D > physU) const
conversion from physical to lattice velocity
constexpr T getConversionFactorPressure() const
access (read-only) to private member variable
constexpr T getLatticeVelocity(T physVelocity) const
conversion from physical to lattice velocity
constexpr UnitConverter(T physDeltaX, T physDeltaT, T charPhysLength, T charPhysVelocity, T physViscosity, T physDensity, T charPhysPressure=0)
Documentation of constructor:
constexpr T getKnudsenNumber() const
return Knudsen number
constexpr T getCharPhysVelocity() const
return characteristic velocity in physical units
constexpr T getPhysDeltaT() const
returns time spacing (timestep length) in s
constexpr T getConversionFactorTime() const
access (read-only) to private member variable
constexpr T getPhysForce(T latticeForce) const
conversion from lattice to physical force
constexpr int getLatticeLength(T physLength) const
conversion from physical to lattice length, returns number of voxels for given physical length
constexpr Vector< T, D > getPhysForce(Vector< T, D > latticeForce) const
conversion from lattice to physical force vector
const T _charPhysPressure
const T _conversionLength
constexpr T getCharPhysPressure() const
return characteristic pressure in physical units
constexpr Vector< T, D > getPhysTorque(Vector< T, D > latticeTorque) const
conversion from lattice to physical force vector
virtual void print() const
nice terminal output for conversion factors, characteristical and physical data
constexpr T getPhysPressure(T latticePressure) const
conversion from lattice to physical pressure
virtual ~UnitConverter()=default
constexpr T getPhysLength(int latticeLength) const
conversion from lattice to physical length
constexpr T getCharCFLnumber() const
return characteristic CFL number
constexpr T getLatticeRelaxationFrequencyFromDiffusivity(const T physDiffusivity) const
return relaxation frequency in lattice units computed from given physical diffusivity in m^2 / s
constexpr T getPhysTime(size_t latticeTime) const
conversion from lattice to physical time
const T _charPhysVelocity
constexpr T getLatticeMass(T physMass) const
conversion from physical to lattice mass
const T _conversionTorque
const T _latticeRelaxationTime
constexpr T getLatticeRelaxationTime() const
return relaxation time in lattice units
constexpr T getReynoldsNumber() const
return Reynolds number
constexpr T getPhysDeltaX() const
returns grid spacing (voxel length) in m
constexpr T getConversionFactorTorque() const
access (read-only) to private member variable
Unit conversion handling – header file.
constexpr T invCs2() any_platform
any_platform T densityFromPressure(T latticePressure)
compute lattice density from lattice pressure
Top level namespace for all of OpenLB.
UnitConverter< T, DESCRIPTOR > * createUnitConverter(XMLreader const ¶ms)
creator function with data given by a XML file
UnitConverter< T, DESCRIPTOR > convectivelyRefineUnitConverter(const UnitConverter< T, DESCRIPTOR > &converter, unsigned scale=2)
virtual void write(std::string const &fileName="unitConverter") const =0
virtual void print() const =0
virtual void print(std::ostream &fout) const =0
virtual ~UnitConverterBase()=default
Base of a field whose size is defined by [C_0,C_1,C_2]^T * [1,D,Q].
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
static constexpr auto isValid(FieldD< T, DESCRIPTOR, FIELD > value)
Unit conversion handling – header file.
Set of functions commonly used in LB computations – header file.
Input/Output in XML format – header file.