waves
Basic FE playground
katoptron::ContactsList Class Reference

Class which is used to store the list of the contact interfaces. More...

#include <ContactsList.h>

Public Member Functions

 ContactsList (Problem &pbl, Teuchos::RCP< Map > map, Teuchos::RCP< ElementsList > elementsList, Teuchos::RCP< NodesList > nodesList)
 ContactsList constructor. More...
 
 ~ContactsList ()
 
local_ordinal_type getContactNumber ()
 Return the number of contact interfaces. More...
 
local_ordinal_type getSlaveNodesSize (local_ordinal_type i)
 Return the number of slave nodes for a given interface. More...
 
local_ordinal_type getSlaveElementsSize (local_ordinal_type i)
 Return the number of slave elements for a given interface. More...
 
local_ordinal_type getMasterNodesSize (local_ordinal_type i)
 Return the number of master nodes for a given interface. More...
 
local_ordinal_type getMasterElementsSize (local_ordinal_type i)
 Return the number of master elements for a given interface. More...
 
global_ordinal_type getSlaveNode (local_ordinal_type i, local_ordinal_type n1)
 Return the global ID of the slave node n1 of a given interface. More...
 
local_ordinal_type getSlaveElement (local_ordinal_type i, local_ordinal_type e1)
 Return the local ID of the slave element e1 of a given interface. More...
 
global_ordinal_type getMasterNode (local_ordinal_type i, local_ordinal_type n1)
 Return the global ID of the master node n1 of a given interface. More...
 
local_ordinal_type getMasterElement (local_ordinal_type i, local_ordinal_type e1)
 Return the local ID of the master element e1 of a given interface. More...
 
double getSlaveNormal (local_ordinal_type i, local_ordinal_type j)
 Return the jth component of the normal vector to the slave side of a given interface. More...
 
double getMasterNormal (local_ordinal_type i, local_ordinal_type j)
 Return the jth component of the normal vector to the master side of a given interface. More...
 
bool isStandardShapeFunction (local_ordinal_type i)
 Return true if the shape functions of the Lagrange multipliers are the standard shape function for a given interface. More...
 
bool isInitiallyOpen (local_ordinal_type i)
 Return true if contact of the given interface is initially open. More...
 
bool isInitiallyClose (local_ordinal_type i)
 Return true if contact of the given interface is initially close. More...
 
bool isUpdated (local_ordinal_type i)
 Return true if the contact status of the given interface should be checked and potentially updated. More...
 
bool isNotUpdated (local_ordinal_type i)
 Return true if the contact status of the given interface should not be checked. More...
 
bool isSticking (local_ordinal_type i)
 Return true if the given interface is a sticking contact interface. More...
 
bool isTying (local_ordinal_type i)
 Return true if the given interface is a mesh tying interface. More...
 
bool hasAtLeastOneSticking (void)
 Return true if at least one contact interface is sticking. More...
 
bool isSignorini (local_ordinal_type i)
 Return true if the given interface is a Signorini contact interface. More...
 
bool isNotSignorini (local_ordinal_type i)
 Return true if the given interface is not a Signorini contact interface. More...
 
bool isSignorini ()
 Return true if at least one contact interface is a Signorini contact interface. More...
 
bool isNotSignorini ()
 Return true if all the contact interfaces are not Signorini contact interfaces. More...
 
local_ordinal_type slaveDirichletSize (local_ordinal_type i)
 Return the number of Dirichlet nodes on the slave side for a given interface. More...
 
double getMortarScale (local_ordinal_type i)
 Return the multiplicative scale used to multiply the normals of a given interface. More...
 
bool isASlaveNode (local_ordinal_type i, global_ordinal_type j)
 Return true if the node of global ID j is a slave node of the interface i. More...
 
local_ordinal_type getInterfaceOfSlaveNode (local_ordinal_type j)
 Return the interface ID associated to a slave node of global ID j. More...
 
bool isASlaveDirichletNode (local_ordinal_type i, local_ordinal_type j)
 Return true if the slave node of global ID j is a Dirichlet node on the interface i. More...
 
bool isNodeInitiallyClosed (local_ordinal_type i, local_ordinal_type j)
 Return true if the Lagrange multiplier associated to the slave node of global ID j on the interface i is initially active (closed contact). More...
 

Private Types

typedef Map::local_ordinal_type local_ordinal_type
 
typedef Map::global_ordinal_type global_ordinal_type
 

Private Attributes

bool at_least_one_sticking = false
 
Kokkos::View< global_ordinal_type **, Kokkos::LayoutRight > contacts
 
Kokkos::View< global_ordinal_type **, Kokkos::LayoutRight > contacts_dirichlet
 
Kokkos::View< local_ordinal_type *, Kokkos::LayoutRight > shape_function
 
Kokkos::View< local_ordinal_type *, Kokkos::LayoutRight > signorini
 
Kokkos::View< local_ordinal_type *, Kokkos::LayoutRight > initially_open
 
Kokkos::View< local_ordinal_type *, Kokkos::LayoutRight > no_update
 
Kokkos::View< local_ordinal_type *, Kokkos::LayoutRight > sticking
 
Kokkos::View< local_ordinal_type *, Kokkos::LayoutRight > mesh_tying
 
Kokkos::View< double *, Kokkos::LayoutRight > contacts_scale
 
Kokkos::View< local_ordinal_type **, Kokkos::LayoutRight > initially_closed_nodes
 
Kokkos::View< double **, Kokkos::LayoutRight > contacts_normal
 
local_ordinal_type contacts_number
 
local_ordinal_type contacts_slave_nodes_size
 
local_ordinal_type contacts_slave_elems_size
 
local_ordinal_type contacts_master_nodes_size
 
local_ordinal_type contacts_master_elems_size
 
local_ordinal_type contacts_slave_normal
 
local_ordinal_type contacts_master_normal
 
local_ordinal_type contacts_slave_nodes
 
local_ordinal_type contacts_slave_elems
 
local_ordinal_type contacts_master_nodes
 
local_ordinal_type contacts_master_elems
 

Detailed Description

Class which is used to store the list of the contact interfaces.

Member Typedef Documentation

◆ global_ordinal_type

◆ local_ordinal_type

Constructor & Destructor Documentation

◆ ContactsList()

ContactsList::ContactsList ( Problem pbl,
Teuchos::RCP< Map map,
Teuchos::RCP< ElementsList elementsList,
Teuchos::RCP< NodesList nodesList 
)

ContactsList constructor.

This constructor allocates 11 Kokkos::View which store all the required information related to each contact interface, including:

  • all the slaves and master nodes and elements IDs,
  • all the normal of the surfaces,
  • type of Lagrange multiplier shape functions,
  • type of the interface (contact, Signorini, sticking contact, mesh tying),
  • initial status of the Lagrange multipliers and whether they should be updated.

To do so, we need the information regarding the contact interfaces (stored into the katoptron::Problem object), the information on the distribution of the nodes (stored into the katoptron::Map object), and the information on the nodes and elements (stored into the katoptron::NodesList and katoptron::ElementList objects).

Arguments:

  • pbl: a Problem object,
  • map: an RCP to a Map object,
  • elementsList: an RCP to an ElementList object,
  • nodesList: an RCP to a NodesList object.

◆ ~ContactsList()

katoptron::ContactsList::~ContactsList ( )
inline

Member Function Documentation

◆ getContactNumber()

local_ordinal_type katoptron::ContactsList::getContactNumber ( )
inline

Return the number of contact interfaces.

◆ getInterfaceOfSlaveNode()

local_ordinal_type katoptron::ContactsList::getInterfaceOfSlaveNode ( local_ordinal_type  j)
inline

Return the interface ID associated to a slave node of global ID j.

Argument:

  • j: the global ID of the node.

◆ getMasterElement()

local_ordinal_type katoptron::ContactsList::getMasterElement ( local_ordinal_type  i,
local_ordinal_type  e1 
)
inline

Return the local ID of the master element e1 of a given interface.

Arguments:

  • i: the interface ID,
  • e1: the ID of the element on the current interface.

◆ getMasterElementsSize()

local_ordinal_type katoptron::ContactsList::getMasterElementsSize ( local_ordinal_type  i)
inline

Return the number of master elements for a given interface.

Argument:

  • i: the interface ID.

◆ getMasterNode()

global_ordinal_type katoptron::ContactsList::getMasterNode ( local_ordinal_type  i,
local_ordinal_type  n1 
)
inline

Return the global ID of the master node n1 of a given interface.

Argument:

  • i: the interface ID,
  • n1: the ID of the node on the current interface.

◆ getMasterNodesSize()

local_ordinal_type katoptron::ContactsList::getMasterNodesSize ( local_ordinal_type  i)
inline

Return the number of master nodes for a given interface.

Argument:

  • i: the interface ID.

◆ getMasterNormal()

double katoptron::ContactsList::getMasterNormal ( local_ordinal_type  i,
local_ordinal_type  j 
)
inline

Return the jth component of the normal vector to the master side of a given interface.

Arguments:

  • i: the interface ID,
  • j: the index of the component of the normal vector.

◆ getMortarScale()

double katoptron::ContactsList::getMortarScale ( local_ordinal_type  i)
inline

Return the multiplicative scale used to multiply the normals of a given interface.

Argument:

  • i: the interface ID.

◆ getSlaveElement()

local_ordinal_type katoptron::ContactsList::getSlaveElement ( local_ordinal_type  i,
local_ordinal_type  e1 
)
inline

Return the local ID of the slave element e1 of a given interface.

Arguments:

  • i: the interface ID,
  • e1: the ID of the element on the current interface.

◆ getSlaveElementsSize()

local_ordinal_type katoptron::ContactsList::getSlaveElementsSize ( local_ordinal_type  i)
inline

Return the number of slave elements for a given interface.

Argument:

  • i: the interface ID.

◆ getSlaveNode()

global_ordinal_type katoptron::ContactsList::getSlaveNode ( local_ordinal_type  i,
local_ordinal_type  n1 
)
inline

Return the global ID of the slave node n1 of a given interface.

Arguments:

  • i: the interface ID,
  • n1: the ID of the node on the current interface.

◆ getSlaveNodesSize()

local_ordinal_type katoptron::ContactsList::getSlaveNodesSize ( local_ordinal_type  i)
inline

Return the number of slave nodes for a given interface.

Argument:

  • i: the interface ID.

◆ getSlaveNormal()

double katoptron::ContactsList::getSlaveNormal ( local_ordinal_type  i,
local_ordinal_type  j 
)
inline

Return the jth component of the normal vector to the slave side of a given interface.

Arguments:

  • i: the interface ID,
  • j: the index of the component of the normal vector.

◆ hasAtLeastOneSticking()

bool katoptron::ContactsList::hasAtLeastOneSticking ( void  )
inline

Return true if at least one contact interface is sticking.

◆ isASlaveDirichletNode()

bool katoptron::ContactsList::isASlaveDirichletNode ( local_ordinal_type  i,
local_ordinal_type  j 
)
inline

Return true if the slave node of global ID j is a Dirichlet node on the interface i.

Arguments:

  • i: the interface ID,
  • j: the global ID of the node.

◆ isASlaveNode()

bool katoptron::ContactsList::isASlaveNode ( local_ordinal_type  i,
global_ordinal_type  j 
)
inline

Return true if the node of global ID j is a slave node of the interface i.

Arguments:

  • i: the interface ID,
  • j: the global ID of the tested node.

◆ isInitiallyClose()

bool katoptron::ContactsList::isInitiallyClose ( local_ordinal_type  i)
inline

Return true if contact of the given interface is initially close.

Argument:

  • i: the interface ID.

◆ isInitiallyOpen()

bool katoptron::ContactsList::isInitiallyOpen ( local_ordinal_type  i)
inline

Return true if contact of the given interface is initially open.

Argument:

  • i: the interface ID.

◆ isNodeInitiallyClosed()

bool katoptron::ContactsList::isNodeInitiallyClosed ( local_ordinal_type  i,
local_ordinal_type  j 
)
inline

Return true if the Lagrange multiplier associated to the slave node of global ID j on the interface i is initially active (closed contact).

Arguments:

  • i: the interface ID,
  • j: the global ID of the node.

◆ isNotSignorini() [1/2]

bool katoptron::ContactsList::isNotSignorini ( )
inline

Return true if all the contact interfaces are not Signorini contact interfaces.

◆ isNotSignorini() [2/2]

bool katoptron::ContactsList::isNotSignorini ( local_ordinal_type  i)
inline

Return true if the given interface is not a Signorini contact interface.

Argument:

  • i: the interface ID.

◆ isNotUpdated()

bool katoptron::ContactsList::isNotUpdated ( local_ordinal_type  i)
inline

Return true if the contact status of the given interface should not be checked.

Argument:

  • i: the interface ID.

◆ isSignorini() [1/2]

bool katoptron::ContactsList::isSignorini ( )
inline

Return true if at least one contact interface is a Signorini contact interface.

◆ isSignorini() [2/2]

bool katoptron::ContactsList::isSignorini ( local_ordinal_type  i)
inline

Return true if the given interface is a Signorini contact interface.

Argument:

  • i: the interface ID.

◆ isStandardShapeFunction()

bool katoptron::ContactsList::isStandardShapeFunction ( local_ordinal_type  i)
inline

Return true if the shape functions of the Lagrange multipliers are the standard shape function for a given interface.

Argument:

  • i: the interface ID.

◆ isSticking()

bool katoptron::ContactsList::isSticking ( local_ordinal_type  i)
inline

Return true if the given interface is a sticking contact interface.

Argument:

  • i: the interface ID.

◆ isTying()

bool katoptron::ContactsList::isTying ( local_ordinal_type  i)
inline

Return true if the given interface is a mesh tying interface.

Argument:

  • i: the interface ID.

◆ isUpdated()

bool katoptron::ContactsList::isUpdated ( local_ordinal_type  i)
inline

Return true if the contact status of the given interface should be checked and potentially updated.

Argument:

  • i: the interface ID.

◆ slaveDirichletSize()

local_ordinal_type katoptron::ContactsList::slaveDirichletSize ( local_ordinal_type  i)
inline

Return the number of Dirichlet nodes on the slave side for a given interface.

Argument:

  • i: the interface ID.

Member Data Documentation

◆ at_least_one_sticking

bool katoptron::ContactsList::at_least_one_sticking = false
private

◆ contacts

Kokkos::View<global_ordinal_type **, Kokkos::LayoutRight> katoptron::ContactsList::contacts
private

◆ contacts_dirichlet

Kokkos::View<global_ordinal_type **, Kokkos::LayoutRight> katoptron::ContactsList::contacts_dirichlet
private

◆ contacts_master_elems

local_ordinal_type katoptron::ContactsList::contacts_master_elems
private

◆ contacts_master_elems_size

local_ordinal_type katoptron::ContactsList::contacts_master_elems_size
private

◆ contacts_master_nodes

local_ordinal_type katoptron::ContactsList::contacts_master_nodes
private

◆ contacts_master_nodes_size

local_ordinal_type katoptron::ContactsList::contacts_master_nodes_size
private

◆ contacts_master_normal

local_ordinal_type katoptron::ContactsList::contacts_master_normal
private

◆ contacts_normal

Kokkos::View<double **, Kokkos::LayoutRight> katoptron::ContactsList::contacts_normal
private

◆ contacts_number

local_ordinal_type katoptron::ContactsList::contacts_number
private

◆ contacts_scale

Kokkos::View<double *, Kokkos::LayoutRight> katoptron::ContactsList::contacts_scale
private

◆ contacts_slave_elems

local_ordinal_type katoptron::ContactsList::contacts_slave_elems
private

◆ contacts_slave_elems_size

local_ordinal_type katoptron::ContactsList::contacts_slave_elems_size
private

◆ contacts_slave_nodes

local_ordinal_type katoptron::ContactsList::contacts_slave_nodes
private

◆ contacts_slave_nodes_size

local_ordinal_type katoptron::ContactsList::contacts_slave_nodes_size
private

◆ contacts_slave_normal

local_ordinal_type katoptron::ContactsList::contacts_slave_normal
private

◆ initially_closed_nodes

Kokkos::View<local_ordinal_type **, Kokkos::LayoutRight> katoptron::ContactsList::initially_closed_nodes
private

◆ initially_open

Kokkos::View<local_ordinal_type *, Kokkos::LayoutRight> katoptron::ContactsList::initially_open
private

◆ mesh_tying

Kokkos::View<local_ordinal_type *, Kokkos::LayoutRight> katoptron::ContactsList::mesh_tying
private

◆ no_update

Kokkos::View<local_ordinal_type *, Kokkos::LayoutRight> katoptron::ContactsList::no_update
private

◆ shape_function

Kokkos::View<local_ordinal_type *, Kokkos::LayoutRight> katoptron::ContactsList::shape_function
private

◆ signorini

Kokkos::View<local_ordinal_type *, Kokkos::LayoutRight> katoptron::ContactsList::signorini
private

◆ sticking

Kokkos::View<local_ordinal_type *, Kokkos::LayoutRight> katoptron::ContactsList::sticking
private

The documentation for this class was generated from the following files: