24#ifndef ANALYTICAL_BASE_F_HH
25#define ANALYTICAL_BASE_F_HH
32template<
unsigned D,
typename T,
typename S>
38 std::swap(
_f._ptrCalcC, this->_ptrCalcC );
41template<
unsigned D,
typename T,
typename S>
49template <
unsigned D,
typename OldT,
typename NewT,
typename OldS,
typename NewS>
59template <
unsigned D,
typename OldT,
typename NewT,
typename OldS,
typename NewS>
63 for (
unsigned i = 0; i < D; ++i) {
64 inputConv[i] = OldS {input[i]};
66 OldT outputConv[this->getTargetDim()];
68 _f(outputConv,inputConv);
70 for (
int i = 0; i < this->getTargetDim(); ++i) {
71 output[i] = NewT {outputConv[i]};
79template <
typename T,
typename S>
86template <
typename T,
typename S>
90 _indicatorF(&tmp, input);
AnalyticalF are applications from DD to XD, where X is set by the constructor.
IndicatorF3D< T > & _indicatorF
bool operator()(T output[], const S input[]) override
has to be implemented for 'every' derived class
AnalyticalFfromIndicatorF3D(IndicatorF3D< T > &indicatorF)
AnalyticalF< D, T, S > & _f
bool operator()(T output[], const S input[]) override
has to be implemented for 'every' derived class
AnalyticalIdentity(AnalyticalF< D, T, S > &f)
AnalyticalF< D, OldT, OldS > & _f
AnalyticalTypecast(AnalyticalF< D, OldT, OldS > &f)
bool operator()(NewT output[], const NewS input[]) override
std::string & getName()
read and write access to name
IndicatorF3D is an application from .
Top level namespace for all of OpenLB.