|
| | SerialContactManager (std::shared_ptr< ContactInterface > interface, nimble::DataManager &data_manager) |
| |
| void | ComputeContactForce (int step, bool debug_output, nimble::Viewify< 2 > contact_force) override |
| | Compute the contact force.
|
| |
| virtual void | ComputeSerialContactForce (int step, bool debug_output, nimble::Viewify< 2 > contact_force)=0 |
| |
| | ContactManager (std::shared_ptr< ContactInterface > interface, nimble::DataManager &data_manager) |
| | Constructor.
|
| |
| virtual | ~ContactManager ()=default |
| | Default destructor.
|
| |
| bool | ContactEnabled () const |
| | Indicates whether contact is enabled or not.
|
| |
| void | SetPenaltyParameter (double penalty_parameter) |
| | Set the penalty parameter for enforcing contact.
|
| |
| void | CreateContactEntities (GenesisMesh const &mesh, nimble::VectorCommunicator &mpi_container, std::vector< int > const &primary_block_ids, std::vector< int > const &secondary_block_ids) |
| | Create contact entities between different blocks.
|
| |
| virtual void | InitializeContactVisualization (std::string const &contact_visualization_exodus_file_name) |
| | Initialize contact visualization output.
|
| |
| virtual void | ContactVisualizationWriteStep (double time_current) |
| | Write information about contact.
|
| |
| size_t | numContactFaces () const |
| | Returns the number of contact faces.
|
| |
| size_t | numContactNodes () const |
| | Returns the number of contact nodes.
|
| |
| size_t | numActiveContactFaces () const |
| | Returns the number of contact faces "actively" in collision.
|
| |
| size_t | numActiveContactNodes () const |
| | Returns the number of contact nodes "actively" in collision.
|
| |
| const std::unordered_map< std::string, double > & | getTimers () |
| | Return timing information.
|
| |
| double | GetPenaltyForceParam () const noexcept |
| | Return the penalty coefficient for enforcing contact force.
|
| |
|
| enum | ProjectionType { UNKNOWN = 0
, NODE_OR_EDGE = 1
, FACE = 2
} |
| |
| typedef enum nimble::ContactManager::ProjectionType | PROJECTION_TYPE |
| |
| static void | SkinBlocks (GenesisMesh const &mesh, std::vector< int > const &block_ids, int entity_id_offset, std::vector< std::vector< int > > &skin_faces, std::vector< int > &entity_ids) |
| |
| static void | RemoveInternalSkinFaces (GenesisMesh const &mesh, std::vector< std::vector< int > > &faces, std::vector< int > &entity_ids) |
| |
| static void | SimpleClosestPointProjectionSingle (const ContactEntity &node, const ContactEntity &tri, PROJECTION_TYPE *projection_type, ContactEntity::vertex *closest_point, double &gap, double *normal, double tolerance=1.e-8) |
| | Compute the projection of a point onto a triangular face.
|
| |
| static void | Projection (const ContactEntity &node, const ContactEntity &tri, bool &in, double &gap, double *normal, double *barycentric_coordinates, double tolerance=1.e-8) |
| | Compute the projection of a point onto a triangular face.
|
| |
| void | WriteVisualizationData (double t) |
| | Write visualization data to Exodus file at time t.
|
| |
| template<typename ArgT> |
| void | CreateContactNodesAndFaces (std::vector< std::vector< int > > const &primary_skin_faces, std::vector< int > const &primary_skin_entity_ids, std::vector< int > const &secondary_node_ids, std::vector< int > const &secondary_node_entity_ids, std::map< int, double > const &secondary_node_char_lens, ArgT &contact_nodes, ArgT &contact_faces) const |
| |
| void | BoundingBox (double &x_min, double &x_max, double &y_min, double &y_max, double &z_min, double &z_max) const |
| |
| double | BoundingBoxAverageCharacteristicLengthOverAllRanks () const |
| |
| void | ComputeContactForce (int step, bool debug_output) |
| |
| void | ApplyDisplacements (nimble_kokkos::DeviceVectorNodeView displacement_d) |
| |
| void | GetForces (nimble_kokkos::DeviceVectorNodeView contact_force_d) const |
| |
| void | BruteForceBoxIntersectionSearch (std::vector< ContactEntity > const &nodes, std::vector< ContactEntity > const &triangles) |
| |
| void | ClosestPointProjection (const ContactEntity *nodes, const ContactEntity *triangles, ContactEntity::vertex *closest_points, PROJECTION_TYPE *projection_types, std::size_t num_elements) |
| |
| void | ClosestPointProjectionSingle (const ContactEntity &node, const ContactEntity &tri, ContactEntity::vertex *closest_point, PROJECTION_TYPE *projection_type, double tolerance) |
| |
| const ContactEntity & | getContactFace (size_t i_face) const |
| | Returns a read-only reference to contact face entity.
|
| |
| const ContactEntity & | getContactNode (size_t i_node) const |
| | Returns a read-only reference to contact node entity.
|
| |
| void | ResetContactStatus () |
| | Reset the contact status for all entities.
|
| |
| void | ZeroContactForce () |
| | Zero the contact forces.
|
| |
| template<typename VecType> |
| void | EnforceNodeFaceInteraction (ContactEntity &node, ContactEntity &face, const double gap, const double direction[3], const double facet_coordinates[3], VecType &full_contact_force) const |
| |
| NIMBLE_INLINE_FUNCTION void | startTimer (const std::string &str_val) |
| |
| NIMBLE_INLINE_FUNCTION void | stopTimer (const std::string &str_val) |
| |
| nimble::DataManager & | data_manager_ |
| |
| nimble::TimeKeeper | total_search_time |
| |
| nimble::TimeKeeper | total_enforcement_time |
| |
| std::size_t | total_num_contacts = 0 |
| |
| PenaltyContactEnforcement | enforcement |
| |
| bool | contact_enabled_ = false |
| |
| double | penalty_parameter_ |
| |
| std::vector< int > | node_ids_ |
| |
| std::vector< double > | model_coord_ |
| |
| std::vector< double > | coord_ |
| |
| std::vector< double > | force_ |
| |
| double | contact_visualization_model_coord_bounding_box_ [6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0} |
| |
| nimble::GenesisMesh | genesis_mesh_for_contact_visualization_ |
| |
| nimble::ExodusOutput | exodus_output_for_contact_visualization_ |
| |
| nimble_kokkos::DeviceIntegerArrayView | node_ids_d_ = nimble_kokkos::DeviceIntegerArrayView("contact node_ids_d", 1) |
| |
| nimble_kokkos::DeviceScalarNodeView | model_coord_d_ = nimble_kokkos::DeviceScalarNodeView("contact model_coord_d", 1) |
| |
| nimble_kokkos::DeviceScalarNodeView | coord_d_ = nimble_kokkos::DeviceScalarNodeView("contact coord_d", 1) |
| |
| nimble_kokkos::DeviceScalarNodeView | force_d_ = nimble_kokkos::DeviceScalarNodeView("contact force_d", 1) |
| |
| nimble_kokkos::DeviceContactEntityArrayView | contact_faces_d_ |
| |
| nimble_kokkos::DeviceContactEntityArrayView | contact_nodes_d_ |
| |
| nimble_kokkos::HostContactEntityArrayView | contact_faces_h_ |
| |
| nimble_kokkos::HostContactEntityArrayView | contact_nodes_h_ |
| |
| nimble_kokkos::ModelData * | model_data_ = nullptr |
| |
| std::unordered_map< std::string, double > | timers_ |
| |
| std::shared_ptr< ContactInterface > | contact_interface |
| |