24#ifndef REFINEMENT_COARSE_CELL_H
25#define REFINEMENT_COARSE_CELL_H
31template <
typename CELL>
42 : _cell{std::move(cell)}
43 , _fineLatticeR{fineLatticeR}
45 _cell.setLatticeR(_fineLatticeR / 2);
50 , _fineLatticeR{fineLatticeR}
52 _cell.setLatticeR(_fineLatticeR / 2);
57 , _fineLatticeR(rhs._fineLatticeR)
62 using DESCRIPTOR =
typename CELL::descriptor_t;
63 bool coIncident =
true;
64 for (
unsigned iD=0; iD < DESCRIPTOR::d; ++iD) {
65 coIncident &= !(_fineLatticeR[iD] & 1);
77 return CoarseCell{_cell, _fineLatticeR + offset};
82template <
typename DATA>
92 : _data{std::move(data)}
113template <
typename DATA>
123 : _data{std::move(data)}
135 return _data.getCellId() != std::numeric_limits<CellID>::max();
148 const CellID index = data.template getFieldComponent<fields::refinement::CONTEXT_NEIGHBORS>(iN);
149 data.setCellId(index);
CoarseCell(const CoarseCell &rhs) any_platform
CoarseCell neighbor(LatticeR< descriptor_t::d > offset) any_platform
Return neighbor along fine offset.
typename CELL::descriptor_t descriptor_t
CoarseCell(CELL &&cell, const LatticeR< CELL::descriptor_t::d > &fineLatticeR) any_platform
CELL & operator*() any_platform
Return reference to coarse cell (only well defined if isCoIncident)
typename CELL::value_t value_t
CoarseCell(const CELL &cell, const LatticeR< CELL::descriptor_t::d > &fineLatticeR) any_platform
ContextDataWithNeighbors(const DATA &data) any_platform
ContextDataWithNeighbors neighbor(unsigned iN) any_platform
ContextDataWithNeighbors(const ContextDataWithNeighbors &rhs) any_platform
DATA * operator->() any_platform
typename DATA::value_t value_t
DATA & operator*() any_platform
ContextDataWithNeighbors(DATA &&data) any_platform
typename DATA::descriptor_t descriptor_t
DATA & operator*() any_platform
ContextData(const DATA &data) any_platform
typename DATA::value_t value_t
ContextData(const ContextData &rhs) any_platform
DATA * operator->() any_platform
ContextData(DATA &&data) any_platform
typename DATA::descriptor_t descriptor_t
Top level namespace for all of OpenLB.
std::uint32_t CellID
Type for sequential block-local cell indices.