cgma
|
#include <ChollaMesh.hpp>
Public Member Functions | |
ChollaMesh () | |
~ChollaMesh () | |
FacetEntity * | convert_to_facet (SMD::SMDElement elem) |
CubitPoint * | convert_to_point (SMD::SMDNode node) |
SMD::SMDElement | convert_from_facet (FacetEntity *f) |
SMD::SMDNode | convert_from_point (CubitPoint *p) |
SMD::ErrorCode | get_ids (size_t num, const SMD::SMDNode nodes[], int ids[]) |
SMD::ErrorCode | get_ids (size_t num, const SMD::SMDElement elems[], int ids[]) |
SMD::ErrorCode | get_node_handle (int id, SMD::SMDNode &node) |
SMD::ErrorCode | get_element_handle (SMD::ElementType type, int id, SMD::SMDElement &elem) |
SMD::ErrorCode | get_element_types (int num_elems, const SMD::SMDElement elem_handle_array[], SMD::ElementType type_array[], bool *same_type) |
SMD::ErrorCode | get_element_dimensions (int num_elems, const SMD::SMDElement elem_handle_array[], int dimensions[]) |
SMD::ErrorCode | get_element_length (SMD::SMDElement elem_handle, double &length) |
SMD::ErrorCode | get_element_area (SMD::SMDElement elem_handle, double &area) |
SMD::ErrorCode | get_element_normal (SMD::SMDElement elem_handle, double normal_vector[3]) |
SMD::ErrorCode | get_element_centroid (SMD::SMDElement elem_handle, double centroid[3]) |
SMD::ErrorCode | get_coords (int num_nodes, const SMD::SMDNode node_handle_array[], float coords[][3]) |
SMD::ErrorCode | get_coords (int num_nodes, const SMD::SMDNode node_handle_array[], double coords[][3]) |
SMD::ErrorCode | get_coords (int num_nodes, const SMD::SMDNode node_handle_array[], SMD::Real x_coords[], SMD::Real y_coords[], SMD::Real z_coords[]) |
SMD::ErrorCode | get_connectivity (int num_elems, const SMD::SMDElement elements[], int &node_array_size, SMD::SMDNode node_handles[]) |
SMD::ErrorCode | get_expanded_connectivity (int num_elems, const SMD::SMDElement elements[], unsigned int nodes_per_elem, int node_array_size, SMD::SMDNode node_handles[]) |
SMD::ErrorCode | get_expanded_connectivity (SMD::SMDElement elements, unsigned int &nodes_per_elem, int node_array_size, SMD::SMDNode node_handles[]) |
SMD::ErrorCode | create_nodes (unsigned int num_nodes, const SMD::Real coords[][3], SMD::SMeshOwner owner, SMD::SMDNode node_handles[]) |
SMD::ErrorCode | create_nodes (unsigned int num_nodes, const SMD::Real *coords, SMD::SMeshOwner owner, SMD::SMDNode node_handles[]) |
SMD::ErrorCode | create_elements (SMD::ElementType type, unsigned int num_nodes, const SMD::SMDNode node_handle_array[], unsigned int num_elements, unsigned int num_nodes_per_element, const unsigned int connectivity[], SMD::SMeshOwner new_entities_owner, SMD::SMDElement *created_element_handles) |
SMD::ErrorCode | delete_node (SMD::SMDNode node) |
SMD::ErrorCode | delete_element (SMD::SMDElement element) |
SMD::ErrorCode | reverse_element_connectivity (SMD::SMDElement element) |
SMD::ErrorCode | find_element (SMD::ElementType type, unsigned int num_pts, const SMD::SMDNode nodes[], SMD::SMDElement &found_element) |
Definition at line 11 of file ChollaMesh.hpp.
Definition at line 7 of file ChollaMesh.cpp.
{ }
Definition at line 11 of file ChollaMesh.cpp.
{ }
SMD::SMDElement ChollaMesh::convert_from_facet | ( | FacetEntity * | f | ) |
Definition at line 25 of file ChollaMesh.cpp.
{ SMD::SMDElement e; e.mHandle = reinterpret_cast<size_t>(f); return e; }
SMD::SMDNode ChollaMesh::convert_from_point | ( | CubitPoint * | p | ) |
Definition at line 32 of file ChollaMesh.cpp.
{ SMD::SMDNode n; n.mHandle = reinterpret_cast<size_t>(p); return n; }
FacetEntity * ChollaMesh::convert_to_facet | ( | SMD::SMDElement | elem | ) |
Definition at line 15 of file ChollaMesh.cpp.
{ return reinterpret_cast<FacetEntity*>(elem.mHandle); }
CubitPoint * ChollaMesh::convert_to_point | ( | SMD::SMDNode | node | ) |
Definition at line 20 of file ChollaMesh.cpp.
{ return reinterpret_cast<CubitPoint*>(node.mHandle); }
SMD::ErrorCode ChollaMesh::create_elements | ( | SMD::ElementType | type, |
unsigned int | num_nodes, | ||
const SMD::SMDNode | node_handle_array[], | ||
unsigned int | num_elements, | ||
unsigned int | num_nodes_per_element, | ||
const unsigned int | connectivity[], | ||
SMD::SMeshOwner | new_entities_owner, | ||
SMD::SMDElement * | created_element_handles | ||
) |
Definition at line 299 of file ChollaMesh.cpp.
{ if(type == SMD::EDGE) { unsigned int conn_offset=0; for(unsigned int i=0; i<num_elements; i++, conn_offset += num_nodes_per_element) { CubitPoint* pts[2]; pts[0] = convert_to_point(node_handle_array[connectivity[conn_offset]]); pts[1] = convert_to_point(node_handle_array[connectivity[conn_offset+1]]); created_element_handles[i] = convert_from_facet(new CubitFacetEdgeData(pts[0], pts[1])); } return SMD::STATUS_OK; } else if(type == SMD::TRI) { unsigned int conn_offset=0; for(unsigned int i=0; i<num_elements; i++, conn_offset += num_nodes_per_element) { CubitPoint* pts[3]; pts[0] = convert_to_point(node_handle_array[connectivity[conn_offset]]); pts[1] = convert_to_point(node_handle_array[connectivity[conn_offset+1]]); pts[2] = convert_to_point(node_handle_array[connectivity[conn_offset+2]]); created_element_handles[i] = convert_from_facet(new CubitFacetData(pts[0], pts[1], pts[2])); } return SMD::STATUS_OK; } return SMD::ERR_INVALID_ENTITY_TYPE; }
SMD::ErrorCode ChollaMesh::create_nodes | ( | unsigned int | num_nodes, |
const SMD::Real | coords[][3], | ||
SMD::SMeshOwner | owner, | ||
SMD::SMDNode | node_handles[] | ||
) |
Definition at line 285 of file ChollaMesh.cpp.
{ for(unsigned int i=0; i<num_nodes; i++) { node_handles[i] = convert_from_point(new CubitPointData(coords[i][0], coords[i][1], coords[i][2])); } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::create_nodes | ( | unsigned int | num_nodes, |
const SMD::Real * | coords, | ||
SMD::SMeshOwner | owner, | ||
SMD::SMDNode | node_handles[] | ||
) | [inline] |
Definition at line 69 of file ChollaMesh.hpp.
{return SMD::ERR_NOT_IMPLEMENTED;}
SMD::ErrorCode ChollaMesh::delete_element | ( | SMD::SMDElement | element | ) |
Definition at line 351 of file ChollaMesh.cpp.
{ FacetEntity* f = convert_to_facet(element); if(!f) return SMD::ERR_INVALID_ENTITY_HANDLE; delete f; return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::delete_node | ( | SMD::SMDNode | node | ) |
Definition at line 339 of file ChollaMesh.cpp.
{ CubitPoint* f = convert_to_point(node); if(!f) return SMD::ERR_INVALID_ENTITY_HANDLE; delete f; return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::find_element | ( | SMD::ElementType | type, |
unsigned int | num_pts, | ||
const SMD::SMDNode | nodes[], | ||
SMD::SMDElement & | found_element | ||
) |
Definition at line 382 of file ChollaMesh.cpp.
{ if(type == SMD::EDGE && num_pts == 2) { CubitFacetEdge* edge = convert_to_point(nodes[0])->shared_edge(convert_to_point(nodes[1])); found_element = convert_from_facet(edge); return SMD::STATUS_OK; } else if(type == SMD::TRI && num_pts == 3) { DLIList<CubitFacet*> facets[3]; convert_to_point(nodes[0])->facets(facets[0]); convert_to_point(nodes[1])->facets(facets[1]); convert_to_point(nodes[2])->facets(facets[2]); facets[0].intersect_unordered(facets[1]); facets[0].intersect_unordered(facets[2]); if(facets[0].size()) { found_element = convert_from_facet(facets[0][0]); } return SMD::STATUS_OK; } return SMD::ERR_INVALID_ENTITY_TYPE; }
SMD::ErrorCode ChollaMesh::get_connectivity | ( | int | num_elems, |
const SMD::SMDElement | elements[], | ||
int & | node_array_size, | ||
SMD::SMDNode | node_handles[] | ||
) |
Definition at line 221 of file ChollaMesh.cpp.
{ CubitFacet* tri; CubitFacetEdge* edge; int offset = 0; for(int i=0; i<num_elems; i++) { FacetEntity* f = convert_to_facet(elements[i]); if((tri = dynamic_cast<CubitFacet*>(f))) { if(offset + 3 > node_array_size) { return SMD::ERR_ARRAY_TOO_SMALL; } node_handles[offset++] = convert_from_point(tri->point(0)); node_handles[offset++] = convert_from_point(tri->point(1)); node_handles[offset++] = convert_from_point(tri->point(2)); } else if((edge = dynamic_cast<CubitFacetEdge*>(f))) { if(offset + 2 > node_array_size) { return SMD::ERR_ARRAY_TOO_SMALL; } node_handles[offset++] = convert_from_point(edge->point(0)); node_handles[offset++] = convert_from_point(edge->point(1)); } else { return SMD::ERR_INVALID_ENTITY_HANDLE; } } node_array_size = offset; return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_coords | ( | int | num_nodes, |
const SMD::SMDNode | node_handle_array[], | ||
float | coords[][3] | ||
) |
Definition at line 184 of file ChollaMesh.cpp.
{ for(int i=0; i<num_nodes; i++) { CubitPoint* p = convert_to_point(node_handle_array[i]); coords[i][0] = p->x(); coords[i][1] = p->y(); coords[i][2] = p->z(); } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_coords | ( | int | num_nodes, |
const SMD::SMDNode | node_handle_array[], | ||
double | coords[][3] | ||
) |
Definition at line 196 of file ChollaMesh.cpp.
{ for(int i=0; i<num_nodes; i++) { CubitPoint* p = convert_to_point(node_handle_array[i]); coords[i][0] = p->x(); coords[i][1] = p->y(); coords[i][2] = p->z(); } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_coords | ( | int | num_nodes, |
const SMD::SMDNode | node_handle_array[], | ||
SMD::Real | x_coords[], | ||
SMD::Real | y_coords[], | ||
SMD::Real | z_coords[] | ||
) |
Definition at line 208 of file ChollaMesh.cpp.
{ for(int i=0; i<num_nodes; i++) { CubitPoint* p = convert_to_point(node_handle_array[i]); x_coords[i] = p->x(); y_coords[i] = p->y(); z_coords[i] = p->z(); } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_element_area | ( | SMD::SMDElement | elem_handle, |
double & | area | ||
) |
Definition at line 141 of file ChollaMesh.cpp.
{ CubitFacet* f = dynamic_cast<CubitFacet*>(convert_to_facet(elem_handle)); if(!f) { return SMD::ERR_INVALID_ENTITY_HANDLE; } area = f->area(); return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_element_centroid | ( | SMD::SMDElement | elem_handle, |
double | centroid[3] | ||
) |
Definition at line 169 of file ChollaMesh.cpp.
{ CubitFacet* f = dynamic_cast<CubitFacet*>(convert_to_facet(elem_handle)); if(!f) { return SMD::ERR_INVALID_ENTITY_HANDLE; } CubitVector c = f->center(); centroid[0] = c.x(); centroid[1] = c.y(); centroid[2] = c.z(); return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_element_dimensions | ( | int | num_elems, |
const SMD::SMDElement | elem_handle_array[], | ||
int | dimensions[] | ||
) |
Definition at line 106 of file ChollaMesh.cpp.
{ for(int i=0; i<num_elems; i++) { FacetEntity* f = convert_to_facet(elem_handle_array[i]); if(dynamic_cast<CubitFacet*>(f)) { dimensions[i] = 2; } else if(dynamic_cast<CubitFacetEdge*>(f)) { dimensions[i] = 1; } else { dimensions[i] = 0; } } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_element_handle | ( | SMD::ElementType | type, |
int | id, | ||
SMD::SMDElement & | elem | ||
) |
Definition at line 79 of file ChollaMesh.cpp.
{
return SMD::ERR_NOT_IMPLEMENTED;
}
SMD::ErrorCode ChollaMesh::get_element_length | ( | SMD::SMDElement | elem_handle, |
double & | length | ||
) |
Definition at line 129 of file ChollaMesh.cpp.
{ CubitFacetEdge* f = dynamic_cast<CubitFacetEdge*>(convert_to_facet(elem_handle)); if(!f) { return SMD::ERR_INVALID_ENTITY_HANDLE; } length = f->length(); return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_element_normal | ( | SMD::SMDElement | elem_handle, |
double | normal_vector[3] | ||
) |
Definition at line 154 of file ChollaMesh.cpp.
{ CubitFacet* f = dynamic_cast<CubitFacet*>(convert_to_facet(elem_handle)); if(!f) { return SMD::ERR_INVALID_ENTITY_HANDLE; } CubitVector n = f->normal(); normal_vector[0] = n.x(); normal_vector[1] = n.y(); normal_vector[2] = n.z(); return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_element_types | ( | int | num_elems, |
const SMD::SMDElement | elem_handle_array[], | ||
SMD::ElementType | type_array[], | ||
bool * | same_type | ||
) |
Definition at line 84 of file ChollaMesh.cpp.
{ for(int i=0; i<num_elems; i++) { FacetEntity* f = convert_to_facet(elem_handle_array[i]); if(dynamic_cast<CubitFacet*>(f)) { type_array[i] = SMD::TRI; } else if(dynamic_cast<CubitFacetEdge*>(f)) { type_array[i] = SMD::EDGE; } else { type_array[i] = SMD::NO_ELEMENT_TYPE; } } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_expanded_connectivity | ( | int | num_elems, |
const SMD::SMDElement | elements[], | ||
unsigned int | nodes_per_elem, | ||
int | node_array_size, | ||
SMD::SMDNode | node_handles[] | ||
) |
Definition at line 264 of file ChollaMesh.cpp.
{
return SMD::ERR_NOT_IMPLEMENTED;
}
SMD::ErrorCode ChollaMesh::get_expanded_connectivity | ( | SMD::SMDElement | elements, |
unsigned int & | nodes_per_elem, | ||
int | node_array_size, | ||
SMD::SMDNode | node_handles[] | ||
) |
Definition at line 274 of file ChollaMesh.cpp.
{ SMD::ErrorCode ret = get_connectivity(1, &element, node_array_size, node_handles); nodes_per_elem = node_array_size; return ret; }
SMD::ErrorCode ChollaMesh::get_ids | ( | size_t | num, |
const SMD::SMDNode | nodes[], | ||
int | ids[] | ||
) |
Definition at line 40 of file ChollaMesh.cpp.
{ for(size_t i=0; i<num; i++) { ids[i] = convert_to_point(nodes[i])->id(); } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_ids | ( | size_t | num, |
const SMD::SMDElement | elems[], | ||
int | ids[] | ||
) |
Definition at line 49 of file ChollaMesh.cpp.
{ CubitFacet* tri; CubitFacetEdge* edge; for(size_t i=0; i<num; i++) { FacetEntity* f = convert_to_facet(elems[i]); if((tri = dynamic_cast<CubitFacet*>(f))) { ids[i] = tri->id(); } else if((edge = dynamic_cast<CubitFacetEdge*>(f))) { ids[i] = edge->id(); } else { ids[i] = 0; } } return SMD::STATUS_OK; }
SMD::ErrorCode ChollaMesh::get_node_handle | ( | int | id, |
SMD::SMDNode & | node | ||
) |
Definition at line 74 of file ChollaMesh.cpp.
{
return SMD::ERR_NOT_IMPLEMENTED;
}
SMD::ErrorCode ChollaMesh::reverse_element_connectivity | ( | SMD::SMDElement | element | ) |
Definition at line 363 of file ChollaMesh.cpp.
{ FacetEntity* f = convert_to_facet(element); CubitFacet* tri; CubitFacetEdge* edge; if((tri = dynamic_cast<CubitFacet*>(f))) { tri->flip(); return SMD::STATUS_OK; } else if((edge = dynamic_cast<CubitFacetEdge*>(f))) { edge->flip(); return SMD::STATUS_OK; } return SMD::ERR_INVALID_ENTITY_HANDLE; }