OpenLB 1.7
Loading...
Searching...
No Matches
Public Member Functions | List of all members
olb::SuperLatticeTimeAveraged2DL2Norm< T > Class Template Referencefinal

#include <superLatticeTimeAveraged2D.h>

+ Inheritance diagram for olb::SuperLatticeTimeAveraged2DL2Norm< T >:
+ Collaboration diagram for olb::SuperLatticeTimeAveraged2DL2Norm< T >:

Public Member Functions

 SuperLatticeTimeAveraged2DL2Norm (SuperF2D< T, T > &sFunctorM, SuperF2D< T, T > &sFunctorN, SuperGeometry< T, 2 > &sGeometry, int material)
 
bool operator() (T output[], const int input[])
 
- Public Member Functions inherited from olb::SuperF2D< T, T >
SuperF2D< T, T > & operator- (SuperF2D< T, T > &rhs)
 
SuperF2D< T, T > & operator+ (SuperF2D< T, T > &rhs)
 
SuperF2D< T, T > & operator* (SuperF2D< T, T > &rhs)
 
SuperF2D< T, T > & operator/ (SuperF2D< T, T > &rhs)
 
SuperStructure< T, 2 > & getSuperStructure ()
 
int getBlockFSize () const
 
BlockF2D< T > & getBlockF (int iCloc)
 
bool operator() (T output[], const int input[]) override
 
- Public Member Functions inherited from olb::GenericF< T, S >
virtual ~GenericF ()=default
 
int getSourceDim () const
 read only access to member variable _m
 
int getTargetDim () const
 read only access to member variable _n
 
std::string & getName ()
 read and write access to name
 
std::string const & getName () const
 read only access to name
 
virtual bool operator() (T output[], const S input[])=0
 has to be implemented for 'every' derived class
 
bool operator() (T output[])
 wrapper that call the pure virtual operator() (T output[], const S input[]) from above
 
bool operator() (T output[], S input0)
 
bool operator() (T output[], S input0, S input1)
 
bool operator() (T output[], S input0, S input1, S input2)
 
bool operator() (T output[], S input0, S input1, S input2, S input3)
 

Additional Inherited Members

- Public Types inherited from olb::SuperF2D< T, T >
using identity_functor_type
 
- Public Types inherited from olb::GenericF< T, S >
using targetType = T
 
using sourceType = S
 
- Public Attributes inherited from olb::GenericF< T, S >
std::shared_ptr< GenericF< T, S > > _ptrCalcC
 memory management, frees resouces (calcClass)
 
- Protected Member Functions inherited from olb::SuperF2D< T, T >
 SuperF2D (SuperStructure< T, 2 > &superStructure, int targetDim)
 
- Protected Member Functions inherited from olb::GenericF< T, S >
 GenericF (int targetDim, int sourceDim)
 
- Protected Attributes inherited from olb::SuperF2D< T, T >
SuperStructure< T, 2 > & _superStructure
 
std::vector< std::unique_ptr< BlockF2D< T > > > _blockF
 Super functors may consist of several BlockF2D<W> derived functors.
 

Detailed Description

template<typename T>
class olb::SuperLatticeTimeAveraged2DL2Norm< T >

Definition at line 81 of file superLatticeTimeAveraged2D.h.

Constructor & Destructor Documentation

◆ SuperLatticeTimeAveraged2DL2Norm()

template<typename T >
olb::SuperLatticeTimeAveraged2DL2Norm< T >::SuperLatticeTimeAveraged2DL2Norm ( SuperF2D< T, T > & sFunctorM,
SuperF2D< T, T > & sFunctorN,
SuperGeometry< T, 2 > & sGeometry,
int material )

Definition at line 154 of file superLatticeTimeAveraged2D.hh.

155 : SuperF2D<T,T>(sFunctorM.getSuperStructure(),sFunctorM.getTargetDim()), _sFunctorM(sFunctorM), _sFunctorN(sFunctorN), _sGeometry(sGeometry),_material(material)
156{
157 this->getName() = "SuperLatticeTimeAveraged2DL2Norm";
158};
int getTargetDim() const
read only access to member variable _n
Definition genericF.hh:45
std::string & getName()
read and write access to name
Definition genericF.hh:51
SuperStructure< T, 2 > & getSuperStructure()

References olb::GenericF< T, S >::getName().

+ Here is the call graph for this function:

Member Function Documentation

◆ operator()()

template<typename T >
bool olb::SuperLatticeTimeAveraged2DL2Norm< T >::operator() ( T output[],
const int input[] )

Definition at line 161 of file superLatticeTimeAveraged2D.hh.

162{
163 output[0]=0;
164 CuboidGeometry2D<T>& geometry = _sFunctorM.getSuperStructure().getCuboidGeometry();
165
166 int inputTmp[3];
167 T tmpM[_sFunctorM.getTargetDim()];
168 T tmpN[_sFunctorN.getTargetDim()];
169 for (int iC = 0; iC < _sFunctorM.getSuperStructure().getLoadBalancer().size(); ++iC) {
170 Cuboid2D<T>& cuboid = geometry.get(_sFunctorM.getSuperStructure().getLoadBalancer().glob(iC));
171
172 const int nX = cuboid.getNx();
173 const int nY = cuboid.getNy();
174
175 inputTmp[0] = _sFunctorM.getSuperStructure().getLoadBalancer().glob(iC);
176
177 for (inputTmp[1] = 0; inputTmp[1] < nX; ++inputTmp[1]) {
178 for (inputTmp[2] = 0; inputTmp[2] < nY; ++inputTmp[2]) {
179 _sFunctorM(tmpM, inputTmp);
180 _sFunctorN(tmpN, inputTmp);
181 for (int iDim = 0; iDim < _sFunctorM.getTargetDim()/2; ++iDim) {
182 output[0] += (tmpM[iDim]-tmpN[iDim])*(tmpM[iDim]-tmpN[iDim]);
183 }
184
185 }
186 }
187 }
188
189#ifdef PARALLEL_MODE_MPI
190 singleton::mpi().reduceAndBcast(output[0],MPI_SUM);
191#endif
192
193 Cuboid2D<T>& cuboid = geometry.get(_sFunctorM.getSuperStructure().getLoadBalancer().glob(0));
194 const T weight = cuboid.getDeltaR();
195
196 output[0]=util::sqrt(output[0])*weight;
197 return true;
198
199};
CuboidGeometry< T, D > & getCuboidGeometry()
Read and write access to cuboid geometry.
LoadBalancer< T > & getLoadBalancer()
Read and write access to the load balancer.
void reduceAndBcast(T &reductVal, MPI_Op op, int root=0, MPI_Comm comm=MPI_COMM_WORLD)
Reduction operation, followed by a broadcast.
MpiManager & mpi()
cpu::simd::Pack< T > sqrt(cpu::simd::Pack< T > value)
Definition pack.h:100

References olb::CuboidGeometry2D< T >::get(), olb::Cuboid2D< T >::getDeltaR(), olb::Cuboid2D< T >::getNx(), olb::Cuboid2D< T >::getNy(), olb::singleton::mpi(), olb::singleton::MpiManager::reduceAndBcast(), and olb::util::sqrt().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: