30 #ifndef CORE_DATATYPES_VMESHSHARED_H
31 #define CORE_DATATYPES_VMESHSHARED_H
50 basis_ = &(mesh_->get_basis());
59 basis_order_ = mesh_->basis_order();
61 dimension_ = mesh_->dimensionality();
63 is_editable_ = mesh_->is_editable();
65 has_normals_ = mesh_->has_normals();
68 is_regular_ = (mesh_->topology_geometry()&
Mesh::REGULAR) != 0;
78 num_nodes_per_elem_ = basis_->number_of_mesh_vertices();
81 num_enodes_per_elem_ = basis_->number_of_vertices() - basis_->number_of_mesh_vertices();
84 num_edges_per_elem_ = basis_->number_of_edges();
87 num_faces_per_elem_ = basis_->faces_of_cell();
90 num_nodes_per_face_ = basis_->vertices_of_face();
93 num_edges_per_face_ = 0;
94 if (basis_->vertices_of_face() > 0) num_edges_per_face_ = basis_->vertices_of_face()-1;
97 num_gradients_per_node_ = basis_->num_hderivs();
99 element_size_ = basis_->domain_size();
101 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
102 generation_ = mesh_->generation;
105 unit_vertices_.resize(num_nodes_per_elem_);
106 for (
size_t k=0; k < num_nodes_per_elem_; k++)
109 for (
int p=0; p<dimension_; p++) c[p] = basis_->unit_vertices[k][p];
110 unit_vertices_[k] = c;
113 unit_edges_.
resize(num_edges_per_elem_);
114 for (
size_t k=0; k < num_edges_per_elem_; k++)
116 unit_edges_[k].resize(2);
117 for (
size_t p=0; p<2; p++)
119 unit_edges_[k][p] = 0;
120 unit_edges_[k][p] = basis_->unit_edges[k][p];
124 unit_center_.resize(dimension_);
125 for (
int k=0; k < dimension_; k++)
127 unit_center_[k] = basis_->unit_center[k];
129 #ifdef SCIRUN4_CODE_TO_BE_ENABLED_LATER
136 virtual bool synchronize(
unsigned int sync);
137 virtual bool unsynchronize(
unsigned int sync);
138 virtual bool clear_synchronization();
143 virtual double get_epsilon()
const;
146 std::vector<double>& weights,
147 int basis_order)
const;
150 std::vector<double>& weights,
151 int basis_order)
const;
153 virtual void get_gaussian_scheme(std::vector<VMesh::coords_type>& coords,
154 std::vector<double>& weights,
int order)
const;
155 virtual void get_regular_scheme(std::vector<VMesh::coords_type>& coords,
156 std::vector<double>& weights,
int order)
const;
171 mesh_->get_canonical_transform(t);
177 std::vector<double>& weights,
178 int basis_order)
const
183 weights.resize(1); weights[0] = 1.0;
186 weights.resize(basis_->num_linear_weights());
187 basis_->get_linear_weights(coords,&(weights[0]));
190 weights.resize(basis_->num_quadratic_weights());
191 basis_->get_quadratic_weights(coords,&(weights[0]));
194 weights.resize(basis_->num_cubic_weights());
195 basis_->get_cubic_weights(coords,&(weights[0]));
198 ASSERTFAIL(
"Weights of unknown order requested");
204 std::vector<double>& weights,
205 int basis_order)
const
210 weights.resize(1); weights[0] = 1.0;
213 weights.resize(basis_->num_linear_derivate_weights());
214 basis_->get_linear_derivate_weights(coords,&(weights[0]));
217 weights.resize(basis_->num_quadratic_derivate_weights());
218 basis_->get_quadratic_derivate_weights(coords,&(weights[0]));
221 weights.resize(basis_->num_cubic_derivate_weights());
222 basis_->get_cubic_derivate_weights(coords,&(weights[0]));
225 ASSERTFAIL(
"Derivate weights of unknown order requested");
230 template <
class MESH>
234 return(mesh_->get_bounding_box());
237 template <
class MESH>
241 return(mesh_->get_epsilon());
255 return(mesh_->synchronize(sync));
262 return(mesh_->unsynchronize(sync));
269 return(mesh_->clear_synchronization());
275 std::vector<double>& weights,
int order)
const
277 basis_->get_gaussian_scheme(coords,weights,order);
283 std::vector<double>& weights,
int order)
const
285 basis_->get_regular_scheme(coords,weights,order);
MESH::basis_type * basis_
Definition: VMeshShared.h:162
virtual void get_gaussian_scheme(std::vector< VMesh::coords_type > &coords, std::vector< double > &weights, int order) const
Definition: VMeshShared.h:274
#define SCISHARE
Definition: share.h:39
virtual bool unsynchronize(unsigned int sync)
Definition: VMeshShared.h:260
virtual ~VMeshShared()
Definition: VMeshShared.h:134
virtual void get_weights(const VMesh::coords_type &coords, std::vector< double > &weights, int basis_order) const
Definition: VMeshShared.h:176
virtual bool clear_synchronization()
Definition: VMeshShared.h:267
Definition: VMeshShared.h:40
virtual bool synchronize(unsigned int sync)
This call is for synchronizing tables of precomputed elements.
Definition: VMeshShared.h:253
MESH * mesh_
Definition: VMeshShared.h:161
virtual void transform(const Core::Geometry::Transform &t)
Definition: VMeshShared.h:246
virtual void get_derivate_weights(const VMesh::coords_type &coords, std::vector< double > &weights, int basis_order) const
Definition: VMeshShared.h:203
#define ASSERTFAIL(string)
Definition: Assert.h:52
virtual void get_regular_scheme(std::vector< VMesh::coords_type > &coords, std::vector< double > &weights, int order) const
Definition: VMeshShared.h:282
virtual Core::Geometry::BBox get_bounding_box() const
Rerouting of some of the virtual mesh function calls.
Definition: VMeshShared.h:232
VMeshShared(MESH *mesh)
Definition: VMeshShared.h:47
void resize(size_t size, const value_type &val=value_type())
Definition: StackVector.h:61
virtual void get_canonical_transform(Core::Geometry::Transform &t)
Definition: VMeshShared.h:169
virtual double get_epsilon() const
Definition: VMeshShared.h:239
Definition: PropertyManager.h:193