fedoo.constraint.SelfContact

class SelfContact(mesh: Mesh, normal_law: str = 'linear', extract_surface: bool = False, search_algorithm: str = 'search_nearest', space: ModelingSpace | None = None, name: str = 'Self contact')

Self contact Assembly (ie contact of a geomtry between itself) based on a node 2 surface formulation

__init__(mesh: Mesh, normal_law: str = 'linear', extract_surface: bool = False, search_algorithm: str = 'search_nearest', space: ModelingSpace | None = None, name: str = 'Self contact')

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

mesh: fedoo.Mesh

Mesh of the geometry where the self contact is created. Can be only the mesh of the surface or the mesh of the full object. If the full object mesh is given, the extract_surface argument should be set to True.

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

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

SelfContact.assemble_global_mat([compute])

Launch the assembly of global matrix.

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

SelfContact.delete_global_mat()

Delete Global Matrix and Global Vector related to the assembly.

SelfContact.get_all()

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

SelfContact.get_global_matrix()

Get the last computed global matrix.

SelfContact.get_global_vector()

Get the last computed global vector.

SelfContact.global_search()

SelfContact.initialize(pb)

Initialize the assembly for the current problem.

SelfContact.reset()

Reset the assembly.

SelfContact.run_normal_law(g)

SelfContact.set_disp(disp)

SelfContact.set_start(problem)

Begin a new time iteration.

SelfContact.to_start(pb)

Restart the current time iteration.

SelfContact.update(pb[, compute])

Update the assembly for the current problem state.

SelfContact.name

Name of the assembly if defined.

SelfContact.space

Modeling space associated to the assembly.

SelfContact.eps_a

Penalty parameter for soft contact in bilinear contact law.

SelfContact.eps_n

Contact penalty parameter.

SelfContact.max_dist

Max distance from nodes at which contact is considered.

SelfContact.clearance

Contact clearance to adjust the two surfaces.

SelfContact.tol

Tolerance for possible slide of a node outside an element.

SelfContact.contact_search_once

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

SelfContact.limit_soft_contact

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

SelfContact.sv

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

SelfContact.normal_law

Name of the contact law.

SelfContact.current

Assembly associated to the mesh of the deformed geometry.

SelfContact.associated_assembly_sum

AssemblySum object that contains the assembly.