34template<
typename T,
typename DESCRIPTOR>
37 std::vector<int> bulkMaterials)
44template<
typename T,
typename DESCRIPTOR>
50 for (
int iCloc = 0; iCloc < sLattice.
getLoadBalancer().size(); ++iCloc) {
51 defineUBouzidi<T,DESCRIPTOR>(sLattice.getBlockIndicator(iCloc), indicator->getBlockIndicatorF(iCloc),
52 bulkIndicator->getBlockIndicatorF(iCloc),
59template<
typename T,
typename DESCRIPTOR>
63 if (indicator(iX,iY)) {
64 for (
int iPop = 1; iPop < DESCRIPTOR::q ; ++iPop) {
65 int iXn = iX + descriptors::c<DESCRIPTOR >(iPop,0);
66 int iYn = iY + descriptors::c<DESCRIPTOR >(iPop,1);
67 if (block.
isInside({iXn,iYn}) && bulkIndicator(iXn, iYn)) {
68 T intersection[] = { T(), T() };
69 int opp = descriptors::opposite<DESCRIPTOR >(iPop);
70 if (getBoundaryIntersection<T,DESCRIPTOR>(block, iX, iY, opp, intersection) ) {
73 defineUBouzidi<T,DESCRIPTOR>(iX, iY, opp, vel);
82template<
typename T,
typename DESCRIPTOR>
89 clout <<
"defineUBouzidi(" << iX <<
", " << iY <<
" )" << std::endl;
95template<
typename T,
typename DESCRIPTOR>
101template<
typename T,
typename DESCRIPTOR>
104 bool _output =
false;
108 clout <<
"setBoundaryIntersection(" << iX <<
", " << iY <<
" )" << std::endl;
AnalyticalF are applications from DD to XD, where X is set by the constructor.
Base block indicator functor (discrete)
Platform-abstracted block lattice for external access and inter-block interaction.
virtual Dynamics< T, DESCRIPTOR > * getDynamics(DynamicsPromise< T, DESCRIPTOR > &&)=0
Return pointer to dynamics yielded by promise.
void forSpatialLocations(F f) const
bool isInside(LatticeR< D > latticeR) const
Return whether location is valid.
Smart pointer for managing the various ways of passing functors around.
class for marking output with some text
Representation of a statistic for a parallel 2D geometry.
std::unique_ptr< SuperIndicatorF< T, D > > getMaterialIndicator(std::vector< int > &&materials)
Returns a material indicator using the given vector of materials.
Super class maintaining block lattices for a cuboid decomposition.
LoadBalancer< T > & getLoadBalancer()
Read and write access to the load balancer.
Dynamics for offLattice boundary conditions OffDynamics are basically NoLatticeDynamics with the addi...
bool getBoundaryIntersection(BlockLattice< T, DESCRIPTOR > &block, int iX, int iY, int iPop, T point[DESCRIPTOR::d])
void defineUBouzidi(SuperLattice< T, DESCRIPTOR > &sLattice, SuperGeometry< T, 2 > &superGeometry, int material, AnalyticalF2D< T, T > &u, std::vector< int > bulkMaterials=std::vector< int >(1, 1))
void setBoundaryIntersection(BlockLattice< T, DESCRIPTOR > &block, int iX, int iY, int iPop, T distance)
Top level namespace for all of OpenLB.