Mesh Oriented datABase  (version 5.5.0)
An array-based unstructured mesh library
moab::ScdElementData Class Reference

#include <ScdElementData.hpp>

+ Inheritance diagram for moab::ScdElementData:
+ Collaboration diagram for moab::ScdElementData:

Classes

class  VertexDataRef
 structure to hold references to bounding vertex blocks More...
 

Public Member Functions

 ScdElementData (EntityHandle start_handle, const int imin, const int jmin, const int kmin, const int imax, const int jmax, const int kmax, int *is_periodic)
 constructor More...
 
virtual ~ScdElementData ()
 
EntityHandle get_vertex (const HomCoord &coords) const
 get handle of vertex at homogeneous coords More...
 
EntityHandle get_vertex (int i, int j, int k) const
 
EntityHandle get_element (const int i, const int j, const int k) const
 get handle of element at i, j, k More...
 
const HomCoordmin_params () const
 get min params for this element More...
 
const HomCoordmax_params () const
 get max params for this element More...
 
void param_extents (int &di, int &dj, int &dk) const
 get the number of vertices in each direction, inclusive More...
 
ErrorCode get_params (const EntityHandle ehandle, int &i, int &j, int &k) const
 given a handle, get the corresponding parameters More...
 
int is_periodic_i () const
 return whether rectangle is periodic in i More...
 
int is_periodic_j () const
 return whether rectangle is periodic in j More...
 
void is_periodic (int is_p[2]) const
 
int i_min () const
 convenience functions for parameter extents More...
 
int j_min () const
 
int k_min () const
 
int i_max () const
 
int j_max () const
 
int k_max () const
 
bool boundary_complete () const
 test the bounding vertex sequences and determine whether they fully define the vertices covering this element block's parameter space More...
 
bool contains (const HomCoord &coords) const
 test whether this sequence contains these parameters More...
 
bool contains_vertex (const HomCoord &coords) const
 test whether vertex parameterization in this sequence contains these parameters More...
 
ErrorCode get_params_connectivity (const int i, const int j, const int k, std::vector< EntityHandle > &connectivity) const
 get connectivity of an entity given entity's parameters More...
 
ErrorCode add_vsequence (ScdVertexData *vseq, const HomCoord &p1, const HomCoord &q1, const HomCoord &p2, const HomCoord &q2, const HomCoord &p3, const HomCoord &q3, bool bb_input=false, const HomCoord &bb_min=HomCoord::unitv[0], const HomCoord &bb_max=HomCoord::unitv[0])
 add a vertex seq ref to this element sequence; if bb_input is true, bounding box (in eseq-local coords) of vseq being added is input in bb_min and bb_max (allows partial sharing of vseq rather than the whole vseq); if it's false, the whole vseq is referenced and the eseq-local coordinates is computed from the transformed bounding box of the vseq More...
 
SequenceDatasubset (EntityHandle start, EntityHandle end, const int *sequence_data_sizes, const int *tag_data_sizes) const
 
unsigned long get_memory_use () const
 
- Public Member Functions inherited from moab::SequenceData
 SequenceData (int num_sequence_arrays, EntityHandle start, EntityHandle end)
 
virtual ~SequenceData ()
 
EntityHandle start_handle () const
 
EntityHandle end_handle () const
 
EntityID size () const
 
void * get_sequence_data (int array_num)
 
void const * get_sequence_data (int array_num) const
 
AdjacencyDataTypeget_adjacency_data ()
 
AdjacencyDataType const * get_adjacency_data () const
 
void * get_tag_data (unsigned tag_num)
 
void const * get_tag_data (unsigned tag_num) const
 
void * create_sequence_data (int array_num, int bytes_per_ent, const void *initial_val=0)
 Allocate array of sequence-specific data. More...
 
void * create_custom_data (int array_num, size_t total_bytes)
 Allocate array of sequence-specific data. More...
 
AdjacencyDataTypeallocate_adjacency_data ()
 Allocate array for storing adjacency data. More...
 
void * allocate_tag_array (int index, int bytes_per_ent, const void *default_value=0)
 Allocate array of dense tag data. More...
 
SequenceDatasubset (EntityHandle start, EntityHandle end, const int *sequence_data_sizes) const
 Create new SequenceData that is a copy of a subset of this one. More...
 
void move_tag_data (SequenceData *destination, const int *tag_sizes, int num_tag_sizes)
 Move tag data for a subset of this sequences to specified sequence. More...
 
void release_tag_data (const int *tag_sizes, int num_tag_sizes)
 Free all tag data arrays. More...
 
void release_tag_data (int index, int tag_size)
 Free specified tag data array. More...
 

Static Public Member Functions

static EntityID calc_num_entities (EntityHandle start_handle, int irange, int jrange, int krange, int *is_periodic=NULL)
 

Private Member Functions

 ScdElementData ()
 bare constructor, so compiler doesn't create one for me More...
 

Private Attributes

HomCoord boxParams [3]
 parameter min/max/stride for vertices, in homogeneous coords ijkh; elements are one less than max More...
 
int dIJK [3]
 difference between max and min params plus one (i.e. # VERTICES in each parametric direction) More...
 
int dIJKm1 [3]
 difference between max and min params (i.e. # ELEMENTS in each parametric direction) More...
 
int isPeriodic [2]
 whether scd element rectangle is periodic in i and possibly j More...
 
std::vector< VertexDataRefvertexSeqRefs
 list of bounding vertex blocks More...
 

Additional Inherited Members

- Public Types inherited from moab::SequenceData
typedef std::vector< EntityHandle > * AdjacencyDataType
 
- Public Attributes inherited from moab::SequenceData
TypeSequenceManager::SequenceDataPtr seqManData
 SequenceManager data. More...
 
- Protected Member Functions inherited from moab::SequenceData
 SequenceData (const SequenceData *subset_from, EntityHandle start, EntityHandle end, const int *sequence_data_sizes)
 

Detailed Description

Definition at line 43 of file ScdElementData.hpp.

Constructor & Destructor Documentation

◆ ScdElementData() [1/2]

moab::ScdElementData::ScdElementData ( )
private

bare constructor, so compiler doesn't create one for me

◆ ScdElementData() [2/2]

moab::ScdElementData::ScdElementData ( EntityHandle  start_handle,
const int  imin,
const int  jmin,
const int  kmin,
const int  imax,
const int  jmax,
const int  kmax,
int *  is_periodic 
)

constructor

Definition at line 54 of file ScdElementData.cpp.

62  : SequenceData( 0,
63  shandle,
64  shandle + calc_num_entities( shandle, imax - imin, jmax - jmin, kmax - kmin, is_p ) - 1 )
65 {
66  // need to have meaningful parameters
67  assert( imax >= imin && jmax >= jmin && kmax >= kmin );
68 
69  isPeriodic[0] = ( is_p ? is_p[0] : 0 );
70  isPeriodic[1] = ( is_p ? is_p[1] : 0 );
71 
72  boxParams[0] = HomCoord( imin, jmin, kmin );
73  boxParams[1] = HomCoord( imax, jmax, kmax );
74  boxParams[2] = HomCoord( 1, 1, 1 );
75 
76  // assign and compute parameter stuff
77  dIJK[0] = boxParams[1][0] - boxParams[0][0] + 1;
78  dIJK[1] = boxParams[1][1] - boxParams[0][1] + 1;
79  dIJK[2] = boxParams[1][2] - boxParams[0][2] + 1;
80  dIJKm1[0] = dIJK[0] - ( isPeriodic[0] ? 0 : 1 );
81  dIJKm1[1] = dIJK[1] - ( isPeriodic[1] ? 0 : 1 );
82  dIJKm1[2] = dIJK[2] - 1;
83 }

References boxParams, dIJK, dIJKm1, and isPeriodic.

◆ ~ScdElementData()

moab::ScdElementData::~ScdElementData ( )
virtual

Definition at line 85 of file ScdElementData.cpp.

85 {}

Member Function Documentation

◆ add_vsequence()

ErrorCode moab::ScdElementData::add_vsequence ( ScdVertexData vseq,
const HomCoord p1,
const HomCoord q1,
const HomCoord p2,
const HomCoord q2,
const HomCoord p3,
const HomCoord q3,
bool  bb_input = false,
const HomCoord bb_min = HomCoord::unitv[0],
const HomCoord bb_max = HomCoord::unitv[0] 
)
inline

add a vertex seq ref to this element sequence; if bb_input is true, bounding box (in eseq-local coords) of vseq being added is input in bb_min and bb_max (allows partial sharing of vseq rather than the whole vseq); if it's false, the whole vseq is referenced and the eseq-local coordinates is computed from the transformed bounding box of the vseq

Definition at line 312 of file ScdElementData.hpp.

322 {
323  // compute the transform given the vseq-local parameters and the mapping to
324  // this element sequence's parameters passed in minmax
325  HomXform M;
326  M.three_pt_xform( p1, q1, p2, q2, p3, q3 );
327 
328  // min and max in element seq's parameter system may not be same as those in
329  // vseq's system, so need to take min/max
330 
331  HomCoord minmax[2];
332  if( bb_input )
333  {
334  minmax[0] = bb_min;
335  minmax[1] = bb_max;
336  }
337  else
338  {
339  minmax[0] = vseq->min_params() * M;
340  minmax[1] = vseq->max_params() * M;
341  }
342 
343  // check against other vseq's to make sure they don't overlap
344  for( std::vector< VertexDataRef >::const_iterator vsit = vertexSeqRefs.begin(); vsit != vertexSeqRefs.end();
345  ++vsit )
346  if( ( *vsit ).contains( minmax[0] ) || ( *vsit ).contains( minmax[1] ) ) return MB_FAILURE;
347 
348  HomCoord tmp_min( std::min( minmax[0].i(), minmax[1].i() ), std::min( minmax[0].j(), minmax[1].j() ),
349  std::min( minmax[0].k(), minmax[1].k() ) );
350  HomCoord tmp_max( std::max( minmax[0].i(), minmax[1].i() ), std::max( minmax[0].j(), minmax[1].j() ),
351  std::max( minmax[0].k(), minmax[1].k() ) );
352 
353  // set up a new vertex sequence reference
354  VertexDataRef tmp_seq_ref( tmp_min, tmp_max, M, vseq );
355 
356  // add to the list
357  vertexSeqRefs.push_back( tmp_seq_ref );
358 
359  return MB_SUCCESS;
360 }

References moab::ScdVertexData::max_params(), MB_SUCCESS, moab::ScdVertexData::min_params(), moab::HomXform::three_pt_xform(), and vertexSeqRefs.

Referenced by moab::ScdBox::add_vbox(), and moab::SequenceManager::add_vsequence().

◆ boundary_complete()

bool moab::ScdElementData::boundary_complete ( ) const

test the bounding vertex sequences and determine whether they fully define the vertices covering this element block's parameter space

Definition at line 87 of file ScdElementData.cpp.

88 {
89  // test the bounding vertex sequences to see if they fully define the
90  // vertex parameter space for this rectangular block of elements
91 
92  int p;
93  std::vector< VertexDataRef > minlist, maxlist;
94 
95  // pseudo code:
96  // for each vertex sequence v:
97  for( std::vector< VertexDataRef >::const_iterator vseq = vertexSeqRefs.begin(); vseq != vertexSeqRefs.end();
98  ++vseq )
99  {
100  // test min corner mincorner:
101  bool mincorner = true;
102  // for each p = (i-1,j,k), (i,j-1,k), (i,j,k-1):
103  for( p = 0; p < 3; p++ )
104  {
105 
106  // for each vsequence v' != v:
107  for( std::vector< VertexDataRef >::const_iterator othervseq = vertexSeqRefs.begin();
108  othervseq != vertexSeqRefs.end(); ++othervseq )
109  {
110  if( othervseq == vseq ) continue;
111  // if v.min-p contained in v'
112  if( ( *othervseq ).contains( ( *vseq ).minmax[0] - HomCoord::unitv[p] ) )
113  {
114  // mincorner = false
115  mincorner = false;
116  break;
117  }
118  }
119  if( !mincorner ) break;
120  }
121 
122  bool maxcorner = true;
123  // for each p = (i-1,j,k), (i,j-1,k), (i,j,k-1):
124  for( p = 0; p < 3; p++ )
125  {
126 
127  // for each vsequence v' != v:
128  for( std::vector< VertexDataRef >::const_iterator othervseq = vertexSeqRefs.begin();
129  othervseq != vertexSeqRefs.end(); ++othervseq )
130  {
131  if( othervseq == vseq ) continue;
132  // if v.max+p contained in v'
133  if( ( *othervseq ).contains( ( *vseq ).minmax[1] + HomCoord::unitv[p] ) )
134  {
135  // maxcorner = false
136  maxcorner = false;
137  break;
138  }
139  }
140  if( !maxcorner ) break;
141  }
142 
143  // if mincorner add to min corner list minlist
144  if( mincorner ) minlist.push_back( *vseq );
145  // if maxcorner add to max corner list maxlist
146  if( maxcorner ) maxlist.push_back( *vseq );
147  }
148 
149  //
150  // if minlist.size = 1 & maxlist.size = 1 & minlist[0] = esequence.min &
151  // maxlist[0] = esequence.max+(1,1,1)
152  if( minlist.size() == 1 && maxlist.size() == 1 && minlist[0].minmax[0] == boxParams[0] &&
153  maxlist[0].minmax[1] == boxParams[1] )
154  // complete
155  return true;
156  // else
157 
158  return false;
159 }

References boxParams, moab::HomCoord::unitv, and vertexSeqRefs.

Referenced by moab::StructuredElementSeq::boundary_complete(), moab::SweptElementSeq::boundary_complete(), and get_vertex().

◆ calc_num_entities()

EntityID moab::ScdElementData::calc_num_entities ( EntityHandle  start_handle,
int  irange,
int  jrange,
int  krange,
int *  is_periodic = NULL 
)
static

Definition at line 27 of file ScdElementData.cpp.

32 {
33  size_t result = 1;
35  switch( dim )
36  {
37  case 3:
38  result *= krange;
39  // fall through
40  case 2:
41  result *= ( is_periodic && is_periodic[1] ? ( jrange + 1 ) : jrange );
42  // fall through
43  case 1:
44  result *= ( is_periodic && is_periodic[0] ? ( irange + 1 ) : irange );
45  break;
46  default:
47  result = 0;
48  assert( false );
49  break;
50  }
51  return result;
52 }

References dim, moab::CN::Dimension(), is_periodic(), moab::SequenceData::start_handle(), and moab::TYPE_FROM_HANDLE().

◆ contains()

bool moab::ScdElementData::contains ( const HomCoord coords) const
inline

test whether this sequence contains these parameters

Definition at line 254 of file ScdElementData.hpp.

255 {
256  // upper bound is < instead of <= because element params max is one less
257  // than vertex params max, except in case of 2d or 1d sequence
258  return ( ( dIJKm1[0] && temp.i() >= boxParams[0].i() && temp.i() < boxParams[0].i() + dIJKm1[0] ) &&
259  ( ( !dIJKm1[1] && temp.j() == boxParams[1].j() ) ||
260  ( dIJKm1[1] && temp.j() >= boxParams[0].j() && temp.j() < boxParams[0].j() + dIJKm1[1] ) ) &&
261  ( ( !dIJKm1[2] && temp.k() == boxParams[1].k() ) ||
262  ( dIJKm1[2] && temp.k() >= boxParams[0].k() && temp.k() < boxParams[0].k() + dIJKm1[2] ) ) );
263 }

References boxParams, dIJKm1, moab::HomCoord::i(), moab::HomCoord::j(), and moab::HomCoord::k().

Referenced by moab::StructuredElementSeq::contains(), moab::SweptElementSeq::contains(), and get_params_connectivity().

◆ contains_vertex()

bool moab::ScdElementData::contains_vertex ( const HomCoord coords) const
inline

test whether vertex parameterization in this sequence contains these parameters

Definition at line 265 of file ScdElementData.hpp.

266 {
267  // upper bound is < instead of <= because element params max is one less
268  // than vertex params max, except in case of 2d or 1d sequence
269  return ( ( dIJK[0] && temp.i() >= boxParams[0].i() && temp.i() < boxParams[0].i() + dIJK[0] ) &&
270  ( ( !dIJK[1] && temp.j() == boxParams[1].j() ) ||
271  ( dIJK[1] && temp.j() >= boxParams[0].j() && temp.j() < boxParams[0].j() + dIJK[1] ) ) &&
272  ( ( !dIJK[2] && temp.k() == boxParams[1].k() ) ||
273  ( dIJK[2] && temp.k() >= boxParams[0].k() && temp.k() < boxParams[0].k() + dIJK[2] ) ) );
274 }

References boxParams, dIJK, moab::HomCoord::i(), moab::HomCoord::j(), and moab::HomCoord::k().

◆ get_element()

EntityHandle moab::ScdElementData::get_element ( const int  i,
const int  j,
const int  k 
) const
inline

get handle of element at i, j, k

Definition at line 209 of file ScdElementData.hpp.

210 {
211  return start_handle() + ( i - i_min() ) + ( j - j_min() ) * dIJKm1[0] + ( k - k_min() ) * dIJKm1[0] * dIJKm1[1];
212 }

References dIJKm1, i_min(), j_min(), k_min(), and moab::SequenceData::start_handle().

Referenced by moab::StructuredElementSeq::get_element(), and moab::SweptElementSeq::get_element().

◆ get_memory_use()

unsigned long moab::ScdElementData::get_memory_use ( ) const

Definition at line 169 of file ScdElementData.cpp.

170 {
171  return sizeof( *this ) + vertexSeqRefs.capacity() * sizeof( VertexDataRef );
172 }

References vertexSeqRefs.

Referenced by moab::StructuredElementSeq::get_const_memory_use(), and moab::SweptElementSeq::get_const_memory_use().

◆ get_params()

ErrorCode moab::ScdElementData::get_params ( const EntityHandle  ehandle,
int &  i,
int &  j,
int &  k 
) const
inline

given a handle, get the corresponding parameters

Definition at line 232 of file ScdElementData.hpp.

233 {
234  if( TYPE_FROM_HANDLE( ehandle ) != TYPE_FROM_HANDLE( start_handle() ) ) return MB_FAILURE;
235 
236  int hdiff = ehandle - start_handle();
237 
238  // use double ?: test below because on some platforms, both sides of the : are
239  // evaluated, and if dIJKm1[1] is zero, that'll generate a divide-by-zero
240  k = ( dIJKm1[1] > 0 ? hdiff / ( dIJKm1[1] > 0 ? dIJKm1[0] * dIJKm1[1] : 1 ) : 0 );
241  j = ( hdiff - ( k * dIJKm1[0] * dIJKm1[1] ) ) / dIJKm1[0];
242  i = hdiff % dIJKm1[0];
243 
244  k += boxParams[0].k();
245  j += boxParams[0].j();
246  i += boxParams[0].i();
247 
248  return ( ehandle >= start_handle() && ehandle < start_handle() + size() && i >= i_min() && i <= i_max() &&
249  j >= j_min() && j <= j_max() && k >= k_min() && k <= k_max() )
250  ? MB_SUCCESS
251  : MB_FAILURE;
252 }

References boxParams, dIJKm1, moab::HomCoord::i(), i_max(), i_min(), moab::HomCoord::j(), j_max(), j_min(), moab::HomCoord::k(), k_max(), k_min(), MB_SUCCESS, moab::SequenceData::size(), moab::SequenceData::start_handle(), and moab::TYPE_FROM_HANDLE().

Referenced by moab::StructuredElementSeq::get_params(), and moab::SweptElementSeq::get_params().

◆ get_params_connectivity()

ErrorCode moab::ScdElementData::get_params_connectivity ( const int  i,
const int  j,
const int  k,
std::vector< EntityHandle > &  connectivity 
) const
inline

get connectivity of an entity given entity's parameters

Definition at line 362 of file ScdElementData.hpp.

366 {
367  if( contains( HomCoord( i, j, k ) ) == false ) return MB_FAILURE;
368 
369  int ip1 = ( isPeriodic[0] ? ( i + 1 ) % dIJKm1[0] : i + 1 ),
370  jp1 = ( isPeriodic[1] ? ( j + 1 ) % dIJKm1[1] : j + 1 );
371 
372  connectivity.push_back( get_vertex( i, j, k ) );
373  connectivity.push_back( get_vertex( ip1, j, k ) );
374  if( CN::Dimension( TYPE_FROM_HANDLE( start_handle() ) ) < 2 ) return MB_SUCCESS;
375  connectivity.push_back( get_vertex( ip1, jp1, k ) );
376  connectivity.push_back( get_vertex( i, jp1, k ) );
377  if( CN::Dimension( TYPE_FROM_HANDLE( start_handle() ) ) < 3 ) return MB_SUCCESS;
378  connectivity.push_back( get_vertex( i, j, k + 1 ) );
379  connectivity.push_back( get_vertex( ip1, j, k + 1 ) );
380  connectivity.push_back( get_vertex( ip1, jp1, k + 1 ) );
381  connectivity.push_back( get_vertex( i, jp1, k + 1 ) );
382  return MB_SUCCESS;
383 }

References contains(), dIJKm1, moab::CN::Dimension(), get_vertex(), isPeriodic, MB_SUCCESS, moab::SequenceData::start_handle(), and moab::TYPE_FROM_HANDLE().

Referenced by moab::StructuredElementSeq::get_params_connectivity(), and moab::SweptElementSeq::get_params_connectivity().

◆ get_vertex() [1/2]

EntityHandle moab::ScdElementData::get_vertex ( const HomCoord coords) const
inline

get handle of vertex at homogeneous coords

Definition at line 291 of file ScdElementData.hpp.

292 {
293  assert( boundary_complete() );
294  for( std::vector< VertexDataRef >::const_iterator it = vertexSeqRefs.begin(); it != vertexSeqRefs.end(); ++it )
295  {
296  if( ( *it ).minmax[0] <= coords && ( *it ).minmax[1] >= coords )
297  {
298  // first get the vertex block-local parameters
299  HomCoord local_coords = coords / ( *it ).xform;
300 
301  assert( ( *it ).srcSeq->contains( local_coords ) );
302 
303  // now get the vertex handle for those coords
304  return ( *it ).srcSeq->get_vertex( local_coords );
305  }
306  }
307 
308  // got here, it's an error
309  return 0;
310 }

References boundary_complete(), and vertexSeqRefs.

Referenced by get_params_connectivity(), moab::StructuredElementSeq::get_vertex(), moab::SweptElementSeq::get_vertex(), and get_vertex().

◆ get_vertex() [2/2]

EntityHandle moab::ScdElementData::get_vertex ( int  i,
int  j,
int  k 
) const
inline

Definition at line 99 of file ScdElementData.hpp.

100  {
101  return get_vertex( HomCoord( i, j, k ) );
102  }

References get_vertex().

◆ i_max()

int moab::ScdElementData::i_max ( ) const
inline

Definition at line 150 of file ScdElementData.hpp.

151  {
152  return ( boxParams[1].hom_coord() )[0];
153  }

References boxParams.

Referenced by get_params().

◆ i_min()

int moab::ScdElementData::i_min ( ) const
inline

convenience functions for parameter extents

Definition at line 138 of file ScdElementData.hpp.

139  {
140  return ( boxParams[0].hom_coord() )[0];
141  }

References boxParams.

Referenced by get_element(), and get_params().

◆ is_periodic()

void moab::ScdElementData::is_periodic ( int  is_p[2]) const
inline

Definition at line 131 of file ScdElementData.hpp.

132  {
133  is_p[0] = isPeriodic[0];
134  is_p[1] = isPeriodic[1];
135  }

References isPeriodic.

Referenced by calc_num_entities(), and moab::StructuredElementSeq::is_periodic().

◆ is_periodic_i()

int moab::ScdElementData::is_periodic_i ( ) const
inline

return whether rectangle is periodic in i

Definition at line 120 of file ScdElementData.hpp.

121  {
122  return isPeriodic[0];
123  };

References isPeriodic.

Referenced by moab::StructuredElementSeq::is_periodic_i().

◆ is_periodic_j()

int moab::ScdElementData::is_periodic_j ( ) const
inline

return whether rectangle is periodic in j

Definition at line 126 of file ScdElementData.hpp.

127  {
128  return isPeriodic[1];
129  };

References isPeriodic.

Referenced by moab::StructuredElementSeq::is_periodic_j().

◆ j_max()

int moab::ScdElementData::j_max ( ) const
inline

Definition at line 154 of file ScdElementData.hpp.

155  {
156  return ( boxParams[1].hom_coord() )[1];
157  }

References boxParams.

Referenced by get_params().

◆ j_min()

int moab::ScdElementData::j_min ( ) const
inline

Definition at line 142 of file ScdElementData.hpp.

143  {
144  return ( boxParams[0].hom_coord() )[1];
145  }

References boxParams.

Referenced by get_element(), and get_params().

◆ k_max()

int moab::ScdElementData::k_max ( ) const
inline

Definition at line 158 of file ScdElementData.hpp.

159  {
160  return ( boxParams[1].hom_coord() )[2];
161  }

References boxParams.

Referenced by get_params().

◆ k_min()

int moab::ScdElementData::k_min ( ) const
inline

Definition at line 146 of file ScdElementData.hpp.

147  {
148  return ( boxParams[0].hom_coord() )[2];
149  }

References boxParams.

Referenced by get_element(), and get_params().

◆ max_params()

const HomCoord & moab::ScdElementData::max_params ( ) const
inline

get max params for this element

Definition at line 219 of file ScdElementData.hpp.

220 {
221  return boxParams[1];
222 }

References boxParams.

Referenced by moab::StructuredElementSeq::max_params(), moab::SweptElementSeq::max_params(), and moab::ScdBox::ScdBox().

◆ min_params()

const HomCoord & moab::ScdElementData::min_params ( ) const
inline

get min params for this element

Definition at line 214 of file ScdElementData.hpp.

215 {
216  return boxParams[0];
217 }

References boxParams.

Referenced by moab::StructuredElementSeq::min_params(), moab::SweptElementSeq::min_params(), and moab::ScdBox::ScdBox().

◆ param_extents()

void moab::ScdElementData::param_extents ( int &  di,
int &  dj,
int &  dk 
) const
inline

get the number of vertices in each direction, inclusive

Definition at line 225 of file ScdElementData.hpp.

226 {
227  di = dIJK[0];
228  dj = dIJK[1];
229  dk = dIJK[2];
230 }

References dIJK.

Referenced by moab::StructuredElementSeq::param_extents(), and moab::SweptElementSeq::param_extents().

◆ subset()

SequenceData * moab::ScdElementData::subset ( EntityHandle  start,
EntityHandle  end,
const int *  sequence_data_sizes,
const int *  tag_data_sizes 
) const

Definition at line 161 of file ScdElementData.cpp.

165 {
166  return 0;
167 }

Member Data Documentation

◆ boxParams

HomCoord moab::ScdElementData::boxParams[3]
private

parameter min/max/stride for vertices, in homogeneous coords ijkh; elements are one less than max

Definition at line 65 of file ScdElementData.hpp.

Referenced by boundary_complete(), contains(), contains_vertex(), get_params(), i_max(), i_min(), j_max(), j_min(), k_max(), k_min(), max_params(), min_params(), and ScdElementData().

◆ dIJK

int moab::ScdElementData::dIJK[3]
private

difference between max and min params plus one (i.e. # VERTICES in each parametric direction)

Definition at line 69 of file ScdElementData.hpp.

Referenced by contains_vertex(), param_extents(), and ScdElementData().

◆ dIJKm1

int moab::ScdElementData::dIJKm1[3]
private

difference between max and min params (i.e. # ELEMENTS in each parametric direction)

Definition at line 73 of file ScdElementData.hpp.

Referenced by contains(), get_element(), get_params(), get_params_connectivity(), and ScdElementData().

◆ isPeriodic

int moab::ScdElementData::isPeriodic[2]
private

whether scd element rectangle is periodic in i and possibly j

Definition at line 76 of file ScdElementData.hpp.

Referenced by get_params_connectivity(), is_periodic(), is_periodic_i(), is_periodic_j(), and ScdElementData().

◆ vertexSeqRefs

std::vector< VertexDataRef > moab::ScdElementData::vertexSeqRefs
private

list of bounding vertex blocks

Definition at line 82 of file ScdElementData.hpp.

Referenced by add_vsequence(), boundary_complete(), get_memory_use(), and get_vertex().


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