MeshKit
1.0
|
00001 #ifndef MESHKIT_FREE_SMOOTH_DOMAIN_HPP 00002 #define MESHKIT_FREE_SMOOTH_DOMAIN_HPP 00003 00008 #include "MsqIGeom.hpp" 00009 #include "meshkit/Types.hpp" 00010 #include "moab/Types.hpp" 00011 00012 namespace MeshKit { 00013 00014 class MKCore; 00015 00019 class FreeSmoothDomain : public Mesquite::MsqCommonIGeom 00020 { 00021 public: 00022 00024 FreeSmoothDomain( MKCore* core, const MEntVector& entities ); 00025 00026 virtual ~FreeSmoothDomain(); 00027 00028 void snap_to( Mesquite::Mesh::VertexHandle entity_handle, 00029 Mesquite::Vector3D& coordinat ) const; 00030 00031 void vertex_normal_at( Mesquite::Mesh::VertexHandle entity_handle, 00032 Mesquite::Vector3D& coordinate ) const; 00033 00034 void element_normal_at( Mesquite::Mesh::ElementHandle entity_handle, 00035 Mesquite::Vector3D& coordinate ) const; 00036 00037 void vertex_normal_at( const Mesquite::Mesh::VertexHandle* handles, 00038 Mesquite::Vector3D coordinates[], 00039 unsigned count, 00040 Mesquite::MsqError& err ) const; 00041 00042 void closest_point( Mesquite::Mesh::VertexHandle handle, 00043 const Mesquite::Vector3D& position, 00044 Mesquite::Vector3D& closest, 00045 Mesquite::Vector3D& normal, 00046 Mesquite::MsqError& err ) const; 00047 00048 void domain_DoF( const Mesquite::Mesh::VertexHandle* handle_array, 00049 unsigned short* dof_array, 00050 size_t num_vertices, 00051 Mesquite::MsqError& err ) const; 00052 00053 00055 iBase_EntityHandle get_geometry( Mesquite::Mesh::EntityHandle mesh_ent ) const; 00056 00057 void get_geometry( const Mesquite::Mesh::EntityHandle* handles_array, 00058 size_t num_handles, 00059 iBase_EntityHandle* geom_array, 00060 Mesquite::MsqError& err ) const; 00061 00062 private: 00063 bool haveEntGeomRelTag; 00064 moab::Tag entGeomRel; 00065 moab::Interface* moabIface; 00066 mutable std::vector<iBase_EntityHandle> tmpHandles; 00067 00068 }; // class FreeSmoothDomain 00069 00070 } // namespace MeshKit 00071 00072 #endif