quadgrid 0.1
simple cartesian quad grid with particles for c++/octave
Loading...
Searching...
No Matches
quadgrid_t< distributed_vector >::cell_t Class Reference

#include <quadgrid_cpp.h>

Public Member Functions

 cell_t (const grid_properties_t &_gp)
real_t p (idx_t i, idx_t j) const
real_t centroid (idx_t i)
idx_t t (idx_t i) const
idx_t gt (idx_t i) const
idx_t e (idx_t i) const
real_t shp (real_t x, real_t y, idx_t inode) const
real_t shp_new (real_t x, real_t y, idx_t inode) const
real_t shg (real_t x, real_t y, idx_t idir, idx_t inode) const
neighbor_iterator begin_neighbor_sweep ()
const neighbor_iterator begin_neighbor_sweep () const
neighbor_iterator end_neighbor_sweep ()
const neighbor_iterator end_neighbor_sweep () const
idx_t get_local_cell_idx () const
idx_t get_global_cell_idx () const
idx_t end_cell_col () const
idx_t end_cell_row () const
idx_t start_cell_col () const
idx_t start_cell_row () const
idx_t num_rows () const
idx_t num_cols () const
idx_t row_idx () const
idx_t col_idx () const
idx_t sub2gind (idx_t r, idx_t c) const
idx_t gind2row (idx_t idx) const
idx_t gind2col (idx_t idx) const
void reset ()

Static Public Attributes

static constexpr idx_t nodes_per_cell = 4
static constexpr idx_t edges_per_cell = 4
static constexpr idx_t NOT_ON_BOUNDARY = -1

Private Attributes

bool is_ghost
idx_t rowidx
idx_t colidx
idx_t local_cell_idx
idx_t global_cell_idx
const grid_properties_t & grid_properties

Friends

class cell_iterator
class quadgrid_t

Detailed Description

template<class distributed_vector>
class quadgrid_t< distributed_vector >::cell_t

Definition at line 263 of file quadgrid_cpp.h.

Constructor & Destructor Documentation

◆ cell_t()

template<class distributed_vector>
quadgrid_t< distributed_vector >::cell_t::cell_t ( const grid_properties_t & _gp)
inline

Definition at line 276 of file quadgrid_cpp.h.

277 : grid_properties (_gp), rowidx (0), colidx (0), is_ghost (false) { };
const grid_properties_t & grid_properties

Member Function Documentation

◆ begin_neighbor_sweep() [1/2]

template<class distributed_vector>
neighbor_iterator quadgrid_t< distributed_vector >::cell_t::begin_neighbor_sweep ( )

◆ begin_neighbor_sweep() [2/2]

template<class distributed_vector>
const neighbor_iterator quadgrid_t< distributed_vector >::cell_t::begin_neighbor_sweep ( ) const

◆ centroid()

template<class distributed_vector>
real_t quadgrid_t< distributed_vector >::cell_t::centroid ( idx_t i)

◆ col_idx()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::col_idx ( ) const
inline

Definition at line 366 of file quadgrid_cpp.h.

367 { return colidx; };

◆ e()

template<class distributed_vector>
quadgrid_t< T >::idx_t quadgrid_t< T >::cell_t::e ( idx_t i) const

Definition at line 212 of file quadgrid_cpp_imp.h.

212 {
213 // should check that iedge < 4 in an efficient way
214
215 if (row_idx () == 0 && iedge == 0)
216 return 0;
217
218 if (row_idx () == num_rows () - 1 && iedge == 1)
219 return 1;
220
221 if (col_idx () == 0 && iedge == 2)
222 return 2;
223
224 if (col_idx () == num_cols () - 1 && iedge == 3)
225 return 3;
226
227 return (NOT_ON_BOUNDARY);
228}
static constexpr idx_t NOT_ON_BOUNDARY
idx_t row_idx() const
idx_t num_rows() const
idx_t col_idx() const
idx_t num_cols() const

◆ end_cell_col()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::end_cell_col ( ) const
inline

Definition at line 338 of file quadgrid_cpp.h.

339 { return grid_properties.end_cell_col; };

◆ end_cell_row()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::end_cell_row ( ) const
inline

Definition at line 342 of file quadgrid_cpp.h.

343 { return grid_properties.end_cell_row; };

◆ end_neighbor_sweep() [1/2]

template<class distributed_vector>
neighbor_iterator quadgrid_t< distributed_vector >::cell_t::end_neighbor_sweep ( )
inline

Definition at line 322 of file quadgrid_cpp.h.

323 { return neighbor_iterator (); };
neighbor_iterator(cell_t *_data=nullptr, int _face_idx=-1)

◆ end_neighbor_sweep() [2/2]

template<class distributed_vector>
const neighbor_iterator quadgrid_t< distributed_vector >::cell_t::end_neighbor_sweep ( ) const
inline

Definition at line 326 of file quadgrid_cpp.h.

327 { return neighbor_iterator (); };

◆ get_global_cell_idx()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::get_global_cell_idx ( ) const
inline

Definition at line 334 of file quadgrid_cpp.h.

335 { return global_cell_idx; };

◆ get_local_cell_idx()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::get_local_cell_idx ( ) const
inline

Definition at line 330 of file quadgrid_cpp.h.

331 { return local_cell_idx; };

◆ gind2col()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::gind2col ( idx_t idx) const
inline

Definition at line 381 of file quadgrid_cpp.h.

381 {
382 return quadgrid_t:: gind2col (idx, grid_properties.numrows);
383 }
HOST static DEVICE idx_t gind2col(idx_t idx, idx_t numrows)

◆ gind2row()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::gind2row ( idx_t idx) const
inline

Definition at line 376 of file quadgrid_cpp.h.

376 {
377 return quadgrid_t:: gind2row (idx, grid_properties.numrows);
378 }
HOST static DEVICE idx_t gind2row(idx_t idx, idx_t numrows)

◆ gt()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::gt ( idx_t i) const
inline

Definition at line 289 of file quadgrid_cpp.h.

289 {
290 // should check that inode < 4 in an efficient way
291 switch (i) {
292 case 0 :
293 case 1 :
294 case 2 :
295 case 3 :
296 return quadgrid_t::gt (i, col_idx (), row_idx (), num_rows ());
297 break;
298 default :
299 return -1;
300 }
301 }
HOST static DEVICE idx_t gt(idx_t inode, idx_t cidx, idx_t ridx, idx_t numrows)

◆ num_cols()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::num_cols ( ) const
inline

Definition at line 358 of file quadgrid_cpp.h.

359 { return grid_properties.numcols; };

◆ num_rows()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::num_rows ( ) const
inline

Definition at line 354 of file quadgrid_cpp.h.

355 { return grid_properties.numrows; };

◆ p()

template<class distributed_vector>
real_t quadgrid_t< T >::cell_t::p ( idx_t i,
idx_t j ) const

Definition at line 201 of file quadgrid_cpp_imp.h.

202 {
203
204 return quadgrid_t::p (idir, inode, col_idx (), row_idx (),
206
207}
HOST static DEVICE real_t p(idx_t idir, idx_t inode, idx_t colidx, idx_t rowidx, real_t hx, real_t hy)
real_t hx() const

◆ reset()

template<class distributed_vector>
void quadgrid_t< distributed_vector >::cell_t::reset ( )
inline

Definition at line 386 of file quadgrid_cpp.h.

386 {
387 rowidx = grid_properties.start_cell_row;
388 colidx = grid_properties.start_cell_col;
391 sub2gind (grid_properties.start_cell_row,
392 grid_properties.start_cell_col);
393 };
idx_t sub2gind(idx_t r, idx_t c) const

◆ row_idx()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::row_idx ( ) const
inline

Definition at line 362 of file quadgrid_cpp.h.

363 { return rowidx; };

◆ shg()

template<class T>
real_t quadgrid_t< T >::cell_t::shg ( real_t x,
real_t y,
idx_t idir,
idx_t inode ) const

Definition at line 276 of file quadgrid_cpp_imp.h.

276 {
277 switch (inode) {
278 case 3 :
279 case 2 :
280 case 1 :
281 case 0 :
283 break;
284 default :
285 throw std::out_of_range ("inode must be in range 0..3, idir must be either 0 or 1");
286 }
287 return 0.;
288};
HOST static DEVICE real_t shg(real_t x, real_t y, idx_t idir, idx_t inode, idx_t c, idx_t r, real_t hx, real_t hy)

◆ shp()

template<class T>
real_t quadgrid_t< T >::cell_t::shp ( real_t x,
real_t y,
idx_t inode ) const

Definition at line 233 of file quadgrid_cpp_imp.h.

233 {
234
235 switch (inode) {
236 case 3 :
237 case 2 :
238 case 1 :
239 case 0 :
241 break;
242 default :
243 throw std::out_of_range ("inode must be in range 0..3");
244 }
245};
HOST static DEVICE real_t shp(real_t x, real_t y, idx_t inode, idx_t c, idx_t r, real_t hx, real_t hy)

◆ shp_new()

template<class distributed_vector>
real_t quadgrid_t< distributed_vector >::cell_t::shp_new ( real_t x,
real_t y,
idx_t inode ) const

◆ start_cell_col()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::start_cell_col ( ) const
inline

Definition at line 346 of file quadgrid_cpp.h.

347 { return grid_properties.start_cell_col; };

◆ start_cell_row()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::start_cell_row ( ) const
inline

Definition at line 350 of file quadgrid_cpp.h.

351 { return grid_properties.start_cell_row; };

◆ sub2gind()

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::sub2gind ( idx_t r,
idx_t c ) const
inline

Definition at line 371 of file quadgrid_cpp.h.

371 {
372 return quadgrid_t::sub2gind (r, c, grid_properties.numrows);
373 }
HOST static DEVICE idx_t sub2gind(idx_t r, idx_t c, idx_t nr)

◆ t()

template<class distributed_vector>
quadgrid_t< T >::idx_t quadgrid_t< T >::cell_t::t ( idx_t i) const

Definition at line 167 of file quadgrid_cpp_imp.h.

167 {
168 static idx_t glob = 0;
169 glob = gt (inode);
170 // should check that inode < 4 in an efficient way
171 if (glob < grid_properties.start_owned_nodes
172 || glob >= (grid_properties.start_owned_nodes
173 + grid_properties.num_owned_nodes))
174 return (glob);
175 else
176 return (glob - grid_properties.start_owned_nodes);
177}
idx_t gt(idx_t i) const

◆ cell_iterator

template<class distributed_vector>
friend class cell_iterator
friend

Definition at line 267 of file quadgrid_cpp.h.

◆ quadgrid_t

template<class distributed_vector>
friend class quadgrid_t
friend

Definition at line 268 of file quadgrid_cpp.h.

Member Data Documentation

◆ colidx

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::colidx
private

Definition at line 399 of file quadgrid_cpp.h.

◆ edges_per_cell

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::edges_per_cell = 4
staticconstexpr

Definition at line 273 of file quadgrid_cpp.h.

◆ global_cell_idx

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::global_cell_idx
private

Definition at line 401 of file quadgrid_cpp.h.

◆ grid_properties

template<class distributed_vector>
const grid_properties_t& quadgrid_t< distributed_vector >::cell_t::grid_properties
private

Definition at line 402 of file quadgrid_cpp.h.

◆ is_ghost

template<class distributed_vector>
bool quadgrid_t< distributed_vector >::cell_t::is_ghost
private

Definition at line 397 of file quadgrid_cpp.h.

◆ local_cell_idx

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::local_cell_idx
private

Definition at line 400 of file quadgrid_cpp.h.

◆ nodes_per_cell

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::nodes_per_cell = 4
staticconstexpr

Definition at line 272 of file quadgrid_cpp.h.

◆ NOT_ON_BOUNDARY

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::NOT_ON_BOUNDARY = -1
staticconstexpr

Definition at line 274 of file quadgrid_cpp.h.

◆ rowidx

template<class distributed_vector>
idx_t quadgrid_t< distributed_vector >::cell_t::rowidx
private

Definition at line 398 of file quadgrid_cpp.h.


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