Branch data Line data Source code
1 : : /**
2 : : * MOAB, a Mesh-Oriented datABase, is a software component for creating,
3 : : * storing and accessing finite element mesh data.
4 : : *
5 : : * Copyright 2004 Sandia Corporation. Under the terms of Contract
6 : : * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
7 : : * retains certain rights in this software.
8 : : *
9 : : * This library is free software; you can redistribute it and/or
10 : : * modify it under the terms of the GNU Lesser General Public
11 : : * License as published by the Free Software Foundation; either
12 : : * version 2.1 of the License, or (at your option) any later version.
13 : : *
14 : : */
15 : :
16 : : #include "StructuredElementSeq.hpp"
17 : : #include "ScdVertexData.hpp"
18 : : #include "ScdElementData.hpp"
19 : : #include "moab/Interface.hpp"
20 : : #include "moab/ReadUtilIface.hpp"
21 : : #include "moab/CN.hpp"
22 : : #include "Internals.hpp"
23 : :
24 : : namespace moab
25 : : {
26 : :
27 : 28 : StructuredElementSeq::StructuredElementSeq( EntityHandle shandle, const int imin, const int jmin, const int kmin,
28 : : const int imax, const int jmax, const int kmax, int* is_per )
29 : : : ElementSequence( shandle,
30 : : ScdElementData::calc_num_entities( shandle, imax - imin, jmax - jmin, kmax - kmin, is_per ),
31 : 28 : CN::VerticesPerEntity( TYPE_FROM_HANDLE( shandle ) ),
32 [ + - ]: 56 : new ScdElementData( shandle, imin, jmin, kmin, imax, jmax, kmax, is_per ) )
33 : : {
34 : 28 : }
35 : :
36 [ - + ]: 112 : StructuredElementSeq::~StructuredElementSeq() {}
37 : :
38 : 176184 : ErrorCode StructuredElementSeq::get_connectivity( EntityHandle handle, std::vector< EntityHandle >& connect,
39 : : bool /*topological*/ ) const
40 : : {
41 : : int i, j, k;
42 [ + - ]: 176184 : ErrorCode rval = get_params( handle, i, j, k );
43 [ + - ][ + - ]: 176184 : if( MB_SUCCESS == rval ) rval = get_params_connectivity( i, j, k, connect );
44 : 176184 : return rval;
45 : : }
46 : :
47 : 176184 : ErrorCode StructuredElementSeq::get_connectivity( EntityHandle handle, EntityHandle const*& connect,
48 : : int& connect_length, bool topo,
49 : : std::vector< EntityHandle >* storage ) const
50 : : {
51 [ - + ]: 176184 : if( !storage )
52 : : {
53 : 0 : connect = 0;
54 : 0 : connect_length = 0;
55 : 0 : return MB_STRUCTURED_MESH;
56 : : }
57 : :
58 : 176184 : storage->clear();
59 : 176184 : ErrorCode rval = get_connectivity( handle, *storage, topo );
60 : 176184 : connect = &( *storage )[0];
61 : 176184 : connect_length = storage->size();
62 : 176184 : return rval;
63 : : }
64 : :
65 : 0 : ErrorCode StructuredElementSeq::set_connectivity( EntityHandle, EntityHandle const*, int )
66 : : {
67 : 0 : return MB_STRUCTURED_MESH;
68 : : }
69 : :
70 : 1 : EntityHandle* StructuredElementSeq::get_connectivity_array()
71 : : {
72 : 1 : return 0;
73 : : }
74 : :
75 : 78 : int StructuredElementSeq::values_per_entity() const
76 : : {
77 : 78 : return -1;
78 : : } // never reuse freed handles for structured elements
79 : :
80 : 0 : EntitySequence* StructuredElementSeq::split( EntityHandle here )
81 : : {
82 [ # # ]: 0 : return new StructuredElementSeq( *this, here );
83 : : }
84 : :
85 : 0 : SequenceData* StructuredElementSeq::create_data_subset( EntityHandle, EntityHandle ) const
86 : : {
87 : 0 : return 0;
88 : : }
89 : :
90 : 0 : void StructuredElementSeq::get_const_memory_use( unsigned long& bytes_per_entity, unsigned long& sequence_size ) const
91 : : {
92 : 0 : sequence_size = sizeof( *this );
93 : 0 : bytes_per_entity = sdata()->get_memory_use() / sdata()->size();
94 : 0 : }
95 : :
96 [ + - ][ + - ]: 228 : } // namespace moab
|