MeshKit  1.0
FreeSmoothDomain.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines