fedoo.constraint.Contact

class Contact(slave_nodes: list[int] | Mesh, surface_mesh: Mesh, normal_law: str = 'linear', search_algorithm: str = 'bucket', space: ModelingSpace | None = None, name: str = 'Contact nodes 2 surface')

Contact Assembly based on a node 2 surface formulation

__init__(slave_nodes: list[int] | Mesh, surface_mesh: Mesh, normal_law: str = 'linear', search_algorithm: str = 'bucket', space: ModelingSpace | None = None, name: str = 'Contact nodes 2 surface')

Assembly related to surface 2 surface contact, using a node 2 surface formulation with a penality method.

Parameters:
  • slave_nodes (numpy array of int or Mesh) – List of nodes indices: nodes that belong to the slave surface or Mesh of the slave surface (in this case, the slave node indices are extracted).

  • surface_mesh (fedoo.Mesh) – Mesh of the master surface

  • normal_law (str in {'linear', 'bilinear'}, default = 'linear') – Type of contact law for the normal contact.

  • space (ModelingSpace) – Modeling space associated to the weakform. If None is specified, the active ModelingSpace is considered.

  • name (str) – The name of contact assembly

Notes

Several attributes can be modified to change the contact behavior:
  • eps_n: contact penalty parameter. Need to be adjusted depending of the rigidity of the material in contact.

  • clearance: Contact clearance to adjust the two surfaces.

  • contact_search_once: If True (default) the elmement in contact are only searched at the begining of iteration. It avoid oscilations between contact and non contact state during the NR iterations.

  • tol: Tolerance for possible slide of a node outside an element.

  • max_dist: Max distance from nodes at which contact is considered.

  • eps_a: Penalty parameter for soft contact in bilinear contact law (only used if bilinear law is choosen).

  • limit_soft_contact: For bilinear contact law, define the penetration limit between soft contact (stiffness eps_a), and hard contact (stiffness eps_n) - only used if bilinear law is choosen.

Methods

Contact.assemble_global_mat([compute])

Launch the assembly of global matrix.

Contact.contact_search([contact_list, ...])

Contact.delete_global_mat()

Delete Global Matrix and Global Vector related to the assembly.

Contact.get_all()

Return a dict with all the known Assembly (with a name).

Contact.get_global_matrix()

Get the last computed global matrix.

Contact.get_global_vector()

Get the last computed global vector.

Contact.global_search()

Contact.initialize(pb)

Initialize the assembly for the current problem.

Contact.reset()

Reset the assembly.

Contact.run_normal_law(g)

Contact.set_disp(disp)

Contact.set_start(problem)

Begin a new time iteration.

Contact.to_start(pb)

Restart the current time iteration.

Contact.update(pb[, compute])

Update the assembly for the current problem state.

Contact.name

Name of the assembly if defined.

Contact.space

Modeling space associated to the assembly.

Contact.eps_a

Penalty parameter for soft contact in bilinear contact law.

Contact.eps_n

Contact penalty parameter.

Contact.max_dist

Max distance from nodes at which contact is considered.

Contact.clearance

Contact clearance to adjust the two surfaces.

Contact.tol

Tolerance for possible slide of a node outside an element.

Contact.contact_search_once

It True, only search contact at the begining of iteration.

Contact.limit_soft_contact

For bilinear contact law, define the penetration limit between soft contact (stiffness eps_a), and hard contact (stiffness eps_n).

Contact.sv

Dictionary of state variables associated to the associated for the current problem.

Contact.normal_law

Name of the contact law.

Contact.current

Assembly associated to the mesh of the deformed geometry.

Contact.associated_assembly_sum

AssemblySum object that contains the assembly.