GeMA
The GeMA main application
Contact Boundary Conditions

Contact boundary condition objects are used in GeMA to specify mesh surfaces that can become "in contact" as a simulation unfolds, together with their contact properties. Like a traditional boundary condition, contact conditions are also tied to physics objects and are used by them to compute the set of simulation equations.

The syntax for defining a contact boundary condition is very similar to the one used by common boundary conditions. Each contact condition consists of several "lines", each attaching a material type to an application point (contact surface). Application points are normally either node sets or mesh borders (sets of cell edges or faces), but since the contact boundary condition implementation is based on the standard boundary condition implementation, they can also be single nodes, single cells or single edges/faces. The names of the material types that can be attached to the application points are also defined within the contact boundary condition definition by an explicitly given material list.

Contact boundary conditions can be either local or global. For local conditions, each possible surface contact pairs are pre-defined. For global conditions, the set of surfaces that can be involved in a contact are specified, but each surface can possibly touch any other surface. In a GeMA model, when specifying local conditions, the surface pairs are formed by pairs of consecutive lines in the contact boundary condition definition (meaning that the number of lines must be even).

Property values can be attached to contact material pairs, identified by a name formated as "x:y", where both x and y are material names. That means that, for example, the property values tied to the "a:b" entry should be used when a surface with material a is in touch with a surface with material b (or if a surface with material b is in touch with a surface with material a). The set of properties attached to a material pair are defined in the same way as any mesh attribute or state variable, and their values can be functions, allowing for an easy way to represent conditions that change over time. The used syntax is equal to the one used for defining property sets.

The meaning of each of those properties is collectively identified by the contact boundary condition object type, which is interpreted by the physics object that will ultimately make use of this contact condition. When creating a model, the physics plugin is the authority that defines which are the available contcat condition types and their required properties. The contact boundary condition type also specifies the kind of application point for the condition (nodes, cells, cell edges or cell faces).

There can be several contact boundary condition objects on the simulation file, created by the ContactBoundaryCondition keyword.

Example

ContactBoundaryCondition {
id = 'Possible contacts',
description = 'Set of possible contact pairs',
type = 'node contact pairs',
mesh = 'mesh',
global = false,
materialList = {'concrete', 'steel'},
properties = {
{id = 'friction', description = 'Friction coefficient'},
},
propertyValues = {
{id='concrete:concrete', friction = 0.8},
{id='concrete:steel', friction = 0.65},
{id='steel:steel', friction = 0.5},
},
nodeValues = {
{'surface1', 'concrete'},
{'surface2', 'concrete'},
{'surface3', 'steel'},
{'surface4', 'concrete'},
}
}

Fields

Field Description Type Required
id The contact boundary condition name. String Yes
description A description of the contact boundary condition purpose. String No
type The type of contact boundary condition. This value should be a type name recognized by the physics object that will apply this contact condition on the calculations. It provides the semantic interpretation of the contact boundary condition data. String Yes
mesh The name of the mesh that this contact boundary condition is associated with. String Yes
global Is this a global or a local contact condition? If this optional field is missing, the contact will be local. Boolean No
merge This option allows for automatic merging of single nodes or cell edges/faces for global contact conditions whose materials are the same, into automatically generated node sets / borders, internal to the contact boundary condition. This is usefull to conserve resources and is also better for printing contact conditions. A value of 0 disables merging. A value greater than 0 limits merging to occur only if the boundary condition table has a maximum number of different line materials (not number of lines) less than the given value, bounding the time needed for merging (merging will not be done if the table has more than the given number of distinct materials). If you want to do a merge even if the table has a large number of distinct boundary condition materials, just use a big number in here, but be warned that the merge can be slow on those cases. If this option is missing, the value of the defBCMerge simulation option will be used instead. Important: This option can not be used for local conditions (global = false). Set merge to 0 on those cases to avoid a warning message. Number No
materialList The table listing the set of material names that can be associated with each application point (contact surface). Table Yes
Example: materialList = { "concrete", "steel" } will define that the contact surface possible materials are concrete and steel.
properties The table with the definition of the properties associated with contact material pairs. Each table entry is a sub-table with a property definition following the syntax described in the Data options page. The set of properties should follow the layout expected by the physics object that will apply this contact boundary condition type. Table Yes
Example: properties = { {id = "a"}, {id = "b", dim = 2} } will define two properties, a and b, the first a scalar and the second a bidimensional vector, to be associated with contact material pairs.
propertyValues The table with property values associated with contact material pairs. Each table entry is a subtable composed by an id defining the material pair (following the "material1:material2" syntax defined above), followed by pairs of property names and values, defining a value for each property listed in the properties table. Each property value should be a number for scalar properties or a table for vectors or matrices. Matrix values can be either given by a table of tables or linearized by column major format (the same used in the FORTRAN language), so, for a 2x2 matrix, both {11, 21, 12, 22} and { {11, 12}, {21, 22} } correspond to the matrix \(\begin{pmatrix} 11 & 12 \\ 21 & 22 \end{pmatrix}\). If a property accepts functions, its value can also be a string with the function name. For scalar values, the given value can also be a string if a constMap has been added to the property definition. The map value will be used to initialize the property. If a property name is missing from a values line, the property default value is assumed. Table Yes
Example: propertyValues = { {id = "concrete:concrete", a=1, b = 10}, {id = "concrete:steel", a=2, b=20} } will define that the values of the a and b properties are 1 and 10 for a concrete with concrete contacts, while being 2 and 20 for a steel with concrete contact. No values are defined for steel with steel contacts, and so, those contacts can not happend on the simulation.
nodeValues The table with contact boundary condition surface definitions (values) for node based conditions. Each table entry is a subtable that begins with a node number, a border name or a node set name (both from the associated mesh), followed by a material name. If the application point is given by a border name or by a node set name, the material will be associated to every node in that border/set. If it is a node number, the material will be tied to that node only. Negative values are accepted for associating a condition to a ghost node. Table Yes, for contact B.Cs applied on nodes
Examples: nodeValues = { { "myBorder", "concrete" } } will attach the concrete material to every node in "myBorder" (which should be either a border name or a node set name), while nodeValues = { { 10, "steel" } } will attach the steel material to node 10 and nodeValues = { { -2, "steel" } } will attach the steel material to the second mesh ghost node.
edgeValues The table with contact boundary condition surface definitions (values) for edge based conditions. Each table entry is a subtable that begins with an edge difinition or a border name (from the associated mesh), followed by a material name. If the application point is given by a border name, the material will be associated to every edge in that border. If it is an edge definition, composed by a table with two values, the first with the cell number and the second with the border number, the material will be tied to that edge only. Table Yes, for contact B.Cs applied on cell edges
Examples: edgeValues = { { "myBorder", "concrete" } } will attach the concrete material to every edge in "myBorder", while edgeValues = { { {10, 2}, "steel" } } will attach the steel material to border 2 of cell 10. See the Element types documentation for a reference about border numbering for the available mesh element types.
faceValues The table with contact boundary condition surface definitions (values) for face based conditions. Each table entry is a subtable that begins with a face difinition or a border name (from the associated mesh), followed by a material name. If the application point is given by a border name, the material will be associated to every face in that border. If it is a face definition, composed by a table with two values, the first with the cell number and the second with the face number, the material will be tied to that face only. Table Yes, for contact B.Cs applied on cell faces
Examples: faceValues = { { "myBorder", "concrete" } } will attach the concrete material to every face in "myBorder", while faceValues = { { {10, 2}, "steel" } } will attach the steel material to face 2 of cell 10. See the Element types documentation for a reference about face numbering for the available mesh element types.
cellValues The table with contact boundary condition surface definitions (values) for cell based conditions. Each table entry is a subtable that begins with a cell number, followed by a material name. The given material will be tied to that cell only. Table Yes, for contact B.Cs applied on cells
Example: cellValues = { { 10, "concrete" } } will attach the concrete material to cell 10.