ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType > Class Template Reference

Lees-Edwards sweep. More...

#include <InterpolateAndShiftAtBoundary.hpp>

Public Member Functions

 InterpolateAndShiftAtBoundary (std::shared_ptr< StructuredBlockForest > blocks, BlockDataID field_id, BlockDataID tmp_field_id, unsigned int n_ghost_layers, unsigned int shear_direction, unsigned int shear_plane_normal, std::function< double()> get_pos_offset, std::function< double()> get_shift=[]() { return 0.0;})
 
FloatType get_pos_offset () const
 
FloatType get_shift () const
 
void operator() (IBlock *block)
 

Detailed Description

template<class FieldType, typename FloatType>
class walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType >

Lees-Edwards sweep.

Todo:
Currently is constrained by the blockforest domain decomposition. It only works if the structured block forest domain decomposition doesn't partition along the shear direction or the normal direction. The normal direction cannot be sliced, since we need full access to the sheared layer population on the opposite side of the box during the interpolation (we don't use the ghost populations). The shear direction cannot be sliced, because the ghost layer might not contain the data if the offset is larger than the ghost layer thickness.

As a practical example, consider a simulation where the shear direction is the z-axis, it is possible to run on 2 MPI ranks with MPI Cartesian topology [2, 1, 1]. At the moment, ESPResSo requires system.cell_system.node_grid to be in decreasing order, therefore parallelization requires a shear direction along the z-axis and a MPI node_grid of [x, y, 1] with x >= y.

Definition at line 56 of file InterpolateAndShiftAtBoundary.hpp.

Constructor & Destructor Documentation

◆ InterpolateAndShiftAtBoundary()

template<class FieldType , typename FloatType >
walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType >::InterpolateAndShiftAtBoundary ( std::shared_ptr< StructuredBlockForest >  blocks,
BlockDataID  field_id,
BlockDataID  tmp_field_id,
unsigned int  n_ghost_layers,
unsigned int  shear_direction,
unsigned int  shear_plane_normal,
std::function< double()>  get_pos_offset,
std::function< double()>  get_shift = []() { return 0.0; } 
)
inline

Definition at line 58 of file InterpolateAndShiftAtBoundary.hpp.

Member Function Documentation

◆ get_pos_offset()

template<class FieldType , typename FloatType >
FloatType walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType >::get_pos_offset ( ) const
inline

Definition at line 86 of file InterpolateAndShiftAtBoundary.hpp.

◆ get_shift()

template<class FieldType , typename FloatType >
FloatType walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType >::get_shift ( ) const
inline

Definition at line 90 of file InterpolateAndShiftAtBoundary.hpp.

◆ operator()()

template<class FieldType , typename FloatType >
void walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType >::operator() ( IBlock *  block)
inline

Definition at line 92 of file InterpolateAndShiftAtBoundary.hpp.

References block().


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