mpacts.contact.models.collision.linearforce. linearforce_fl

In order to be able to use this module import it like this:

import mpacts.contact.models.collision.linearforce.linearforce_fl
#or assign it to a shorter name
import mpacts.contact.models.collision.linearforce.linearforce_fl as lin

FlatLayerAdhesionFprimInt

Description: Linear flat layer force including adhesion Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad Deformable_Triangle
Rigid_Triangle YES YES YES
Rigid_Quad   YES YES
Rigid_CylinderBottom     YES
Rigid_Cylinder YES YES YES
Deformable_Triangle     YES

FlatLayerAdhesionFprimInt (Deformable_Triangle Deformable_Triangle)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
Feedback

FlatLayerAdhesionFprimInt (Deformable_Triangle Rigid_Cylinder)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
Feedback

FlatLayerAdhesionFprimInt (Deformable_Triangle Rigid_CylinderBottom)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_radius (default value = 0) — If given, the radius will be increased with the given extend. Useful for hollow cylinders to avoid problems in the corner.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in radians) for which the contact will still be considered flat (default: 1 degree).

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_Cylinder_2_DataDeformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
NGon_Disk  <Bottom_Selector >
  ↓
NoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
Feedback

FlatLayerAdhesionFprimInt (Deformable_Triangle Rigid_Quad)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
Feedback

FlatLayerAdhesionFprimInt (Deformable_Triangle Rigid_Triangle)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
Feedback

FlatLayerAdhesionFprimInt (Rigid_Quad Rigid_Cylinder)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <4 >
  ↓
NGon_HollowCylinderNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerAdhesionFprimInt (Rigid_Quad Rigid_Quad)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <4 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

FlatLayerAdhesionFprimInt (Rigid_Quad Rigid_Triangle)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerAdhesionFprimInt (Rigid_Triangle Rigid_Cylinder)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerAdhesionFprimInt (Rigid_Triangle Rigid_Triangle)

Linear flat layer force including adhesion

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • attrConst — Adhesion energy (J/m^2) of two surfaces brought together
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonNoContactAdhesionModifierLinearFlatLayerAdhesion_Int  <12 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

FlatLayerDebug

Description: Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad Deformable_Triangle
Rigid_Triangle YES YES YES
Rigid_Quad   YES YES
Rigid_CylinderBottom     YES
Rigid_Cylinder YES YES YES
Deformable_Triangle     YES

FlatLayerDebug (Deformable_Triangle Deformable_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesDistributeForcesAndMomentsToTriangle_2_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_DeformableTriangle_2AssembleSimpleTangentialForces_DeformableTriangle_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2AbortIfSameParentFeedback

FlatLayerDebug (Deformable_Triangle Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Deformable_Triangle Rigid_CylinderBottom)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_radius (default value = 0) — If given, the radius will be increased with the given extend. Useful for hollow cylinders to avoid problems in the corner.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in radians) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_Cylinder_2_DataDeformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
NGon_Disk  <Bottom_Selector >
  ↓
LinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Deformable_Triangle Rigid_Quad)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Deformable_Triangle Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Rigid_Quad Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <4 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Rigid_Quad Rigid_Quad)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <4 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2AbortIfSameParentFeedback

FlatLayerDebug (Rigid_Quad Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Rigid_Triangle Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2Feedback

FlatLayerDebug (Rigid_Triangle Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: No

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • overlap1 — Array with unsigned which stores the Overlap per primitive for pc1.
    • overlap2 — Array with unsigned which stores the Overlap per primitive for pc1.
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
    • reject_case1 — Array with unsigned which stores the rejectCase per primitive for pc1.
    • reject_case2 — Array with unsigned which stores the rejectCase per primitive for pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2WriteRejectCase_Primitives_2WriteRejectCase_Primitives_1WriteTotalOverlap_Primitives_1WriteTotalOverlap_Primitives_2Assemble_ContactArea_1Assemble_ContactArea_2AbortIfSameParentFeedback

FlatLayerFprimInt

Description: Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad Deformable_Triangle
Rigid_Triangle YES YES YES
Rigid_Quad   YES YES
Rigid_CylinderBottom     YES
Rigid_Cylinder YES YES YES
Deformable_Triangle     YES

FlatLayerFprimInt (Deformable_Triangle Deformable_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesDistributeForcesAndMomentsToTriangle_2_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_DeformableTriangle_2AssembleSimpleTangentialForces_DeformableTriangle_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

FlatLayerFprimInt (Deformable_Triangle Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Deformable_Triangle Rigid_CylinderBottom)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_radius (default value = 0) — If given, the radius will be increased with the given extend. Useful for hollow cylinders to avoid problems in the corner.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in radians) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_Cylinder_2_DataDeformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
NGon_Disk  <Bottom_Selector >
  ↓
LinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Deformable_Triangle Rigid_Quad)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Deformable_Triangle Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Rigid_Quad Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <4 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Rigid_Quad Rigid_Quad)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <4 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

FlatLayerFprimInt (Rigid_Quad Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Rigid_Triangle Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerFprimInt (Rigid_Triangle Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces. First checks AABBs for overlap and aborts if there is none to speed up calculations. And saves forces to each triangle for later analysis

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

FlatLayerInt

Description: Simple flat layer force model between n-gons with only normal forces. Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad Deformable_Triangle
Rigid_Triangle YES YES YES
Rigid_Quad   YES YES
Rigid_CylinderBottom     YES
Rigid_Cylinder YES YES YES
Deformable_Triangle     YES

FlatLayerInt (Deformable_Triangle Deformable_Triangle)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesDistributeForcesAndMomentsToTriangle_2_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_DeformableTriangle_2AssembleSimpleTangentialForces_DeformableTriangle_2AbortIfSameParentFeedback

FlatLayerInt (Deformable_Triangle Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

FlatLayerInt (Deformable_Triangle Rigid_CylinderBottom)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_radius (default value = 0) — If given, the radius will be increased with the given extend. Useful for hollow cylinders to avoid problems in the corner.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in radians) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_Cylinder_2_DataDeformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
NGon_Disk  <Bottom_Selector >
  ↓
LinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

FlatLayerInt (Deformable_Triangle Rigid_Quad)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

FlatLayerInt (Deformable_Triangle Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

FlatLayerInt (Rigid_Quad Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <4 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2Feedback

FlatLayerInt (Rigid_Quad Rigid_Quad)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <4 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AbortIfSameParentFeedback

FlatLayerInt (Rigid_Quad Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

FlatLayerInt (Rigid_Triangle Rigid_Cylinder)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2Feedback

FlatLayerInt (Rigid_Triangle Rigid_Triangle)

Simple flat layer force model between n-gons with only normal forces.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime.
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • A1 (default value = -1) — Normal damping coefficient (s) of material 1. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • A2 (default value = -1) — Normal damping coefficient (s) of material 2. If given, we estimate c_layer = k_layer * (A1+A2)/2.
    • E1 (default value = -1) — Young’s modulus of material 1. If given, we estimate ‘k_layer’ based on E1 and E2
    • E2 (default value = -1) — Young’s modulus of material 2. If given, we estimate ‘k_layer’ based on E1 and E2
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • c_layer (default value = -1) — layer normal damping coefficient [kg/(m^2 s)]
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • k_layer (default value = -1) — Contact layer stiffnes [Pa/m]. If not given, this will be roughly approximated based on two required Young’s moduli.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • nu1 (default value = -1) — Poisson’s ratio of material 1
    • nu2 (default value = -1) — Poisson’s ratio of material 2
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • c — Contact damping [Pa*s/m]. Read-only
    • k — Contact stiffness [Pa/m]. Read-only

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerPressure_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AbortIfSameParentFeedback

FlatLayerNGonSphere

Description: Linear flat layer force for spheres with Coulomb as tangential friction model implemented as a dashpot. Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad
Sphere YES YES

FlatLayerNGonSphere (Rigid_Quad Sphere)

Linear flat layer force for spheres with Coulomb as tangential friction model implemented as a dashpot.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — Layer stiffness
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • c_layer (default value = 0) — Layer damping coefficient
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • flip_normals (default value = 0) — Optionally flip normals if sphere is more than its radius submerged. In most cases, we recommend that you leave this option to its default ‘false’.
    • reject_large_overlap (default value = 1) — Optionally reject overlaps reject_overlap_r times larger than the radius. Unless you have a fully concave ‘container’ geometry, we recommend that you leave this value to its default ‘true’.
    • reject_overlap_r (default value = 1) — If reject_large_overlap is True, this specifies the number of sphere radii of overlap that should be rejected (Default=1).

This contact model is composed out of following pieces (click on the chain elements to get more information):

DefaultBoilerPlateSphere_2_DataRigid_NGon_1_Data  <4 >
  ↓
NGon_SphereN_LinearFlatLayerForce_NGonSphereT_CoulombFrictionAssembleForcesAssembleMomentsFeedback

FlatLayerNGonSphere (Rigid_Triangle Sphere)

Linear flat layer force for spheres with Coulomb as tangential friction model implemented as a dashpot.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — Layer stiffness
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • c_layer (default value = 0) — Layer damping coefficient
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • flip_normals (default value = 0) — Optionally flip normals if sphere is more than its radius submerged. In most cases, we recommend that you leave this option to its default ‘false’.
    • reject_large_overlap (default value = 1) — Optionally reject overlaps reject_overlap_r times larger than the radius. Unless you have a fully concave ‘container’ geometry, we recommend that you leave this value to its default ‘true’.
    • reject_overlap_r (default value = 1) — If reject_large_overlap is True, this specifies the number of sphere radii of overlap that should be rejected (Default=1).

This contact model is composed out of following pieces (click on the chain elements to get more information):

DefaultBoilerPlateSphere_2_DataRigid_NGon_1_Data  <3 >
  ↓
NGon_SphereN_LinearFlatLayerForce_NGonSphereT_CoulombFrictionAssembleForcesAssembleMomentsFeedback

FlatLayerSheetFprimInt

Description: Simple flat layer force model between double-sided sheets. First checks AABBs for overlap and aborts if there is none to speed up calculations. Saves forces to each triangle for later analysis. Geometry combinations available:

PC2 | PC1 - Deformable_Triangle
Rigid_Triangle YES
Rigid_Quad YES
Deformable_Triangle YES

FlatLayerSheetFprimInt (Deformable_Triangle Deformable_Triangle)

Simple flat layer force model between double-sided sheets. First checks AABBs for overlap and aborts if there is none to speed up calculations. Saves forces to each triangle for later analysis.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonSheet_SheetLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesDistributeForcesAndMomentsToTriangle_2_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_DeformableTriangle_2AssembleSimpleTangentialForces_DeformableTriangle_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

FlatLayerSheetFprimInt (Deformable_Triangle Rigid_Quad)

Simple flat layer force model between double-sided sheets. First checks AABBs for overlap and aborts if there is none to speed up calculations. Saves forces to each triangle for later analysis.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonSheet_NGonLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerSheetFprimInt (Deformable_Triangle Rigid_Triangle)

Simple flat layer force model between double-sided sheets. First checks AABBs for overlap and aborts if there is none to speed up calculations. Saves forces to each triangle for later analysis.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonSheet_NGonLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

FlatLayerSphere

Description: Linear flat layer force for spheres with Coulomb as tangential friction model implemented as a dashpot. Geometry combinations available:

PC2 | PC1 - Sphere
Sphere YES

FlatLayerSphere (Sphere Sphere)

Linear flat layer force for spheres with Coulomb as tangential friction model implemented as a dashpot.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — Layer stiffness
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • c_layer (default value = 0) — Layer damping coefficient
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.

This contact model is composed out of following pieces (click on the chain elements to get more information):

DefaultBoilerPlateSphere_2_DataSphere_1_DataSphere_SphereN_LinearFlatLayerForce_SphereT_CoulombFrictionAssembleForcesAssembleMomentsFeedback

LinearForceCoulombNGonCylinder

Description: Custom force for contact between rigid NGons and hollow cylinders (i.e. cylinders with a negative radius). Coulomb Friction model. Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad
Rigid_Triangle YES YES
Rigid_Quad   YES
Rigid_Cylinder YES YES

LinearForceCoulombNGonCylinder (Rigid_Quad Rigid_Cylinder)

Custom force for contact between rigid NGons and hollow cylinders (i.e. cylinders with a negative radius). Coulomb Friction model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k (kg . s^-2) — effective spring constant.
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • c (kg . s^-1) (default value = 0) — damping coefficient.
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <4 >
  ↓
NGon_HollowCylinderN_LinearForceT_CoulombFrictionAssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2Feedback

LinearForceCoulombNGonCylinder (Rigid_Quad Rigid_Quad)

Custom force for contact between rigid NGons and hollow cylinders (i.e. cylinders with a negative radius). Coulomb Friction model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k (kg . s^-2) — effective spring constant.
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • c (kg . s^-1) (default value = 0) — damping coefficient.
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <4 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonN_LinearForceT_CoulombFrictionAssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

LinearForceCoulombNGonCylinder (Rigid_Quad Rigid_Triangle)

Custom force for contact between rigid NGons and hollow cylinders (i.e. cylinders with a negative radius). Coulomb Friction model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k (kg . s^-2) — effective spring constant.
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • c (kg . s^-1) (default value = 0) — damping coefficient.
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonN_LinearForceT_CoulombFrictionAssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

LinearForceCoulombNGonCylinder (Rigid_Triangle Rigid_Cylinder)

Custom force for contact between rigid NGons and hollow cylinders (i.e. cylinders with a negative radius). Coulomb Friction model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k (kg . s^-2) — effective spring constant.
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • c (kg . s^-1) (default value = 0) — damping coefficient.
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderN_LinearForceT_CoulombFrictionAssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2Feedback

LinearForceCoulombNGonCylinder (Rigid_Triangle Rigid_Triangle)

Custom force for contact between rigid NGons and hollow cylinders (i.e. cylinders with a negative radius). Coulomb Friction model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k (kg . s^-2) — effective spring constant.
    • mu — The coulomb friction coefficient (both static and dynamic).
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • c_t (default value = -1) — ‘c’ value of the linear dashpot (N*s/m) in tangential direction. The higher this value, the more accurate the results will be, but the simulation can become unstable, requiring smaller timesteps.
    • c (kg . s^-1) (default value = 0) — damping coefficient.
    • cp_t (default value = -1) — Optional contact area-dependent linear dashpot coefficent (Pa*s/m). Give either c_t or cp_t but not both.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonN_LinearForceT_CoulombFrictionAssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

LinearForceFprimInt

Description: Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model. Geometry combinations available:

PC2 | PC1 - Rigid_Triangle Rigid_Quad Deformable_Triangle
Rigid_Triangle YES YES YES
Rigid_Quad   YES YES
Rigid_CylinderBottom     YES
Rigid_Cylinder YES YES YES
Deformable_Triangle     YES

LinearForceFprimInt (Deformable_Triangle Deformable_Triangle)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesDistributeForcesAndMomentsToTriangle_2_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_DeformableTriangle_2AssembleSimpleTangentialForces_DeformableTriangle_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

LinearForceFprimInt (Deformable_Triangle Rigid_Cylinder)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateDeformable_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Deformable_Triangle Rigid_CylinderBottom)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_radius (default value = 0) — If given, the radius will be increased with the given extend. Useful for hollow cylinders to avoid problems in the corner.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in radians) for which the contact will still be considered flat (default: 1 degree).

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_Cylinder_2_DataDeformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
NGon_Disk  <Bottom_Selector >
  ↓
LinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Deformable_Triangle Rigid_Quad)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Deformable_Triangle Rigid_Triangle)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerForce_Int  <6 >
  ↓
DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Rigid_Quad Rigid_Cylinder)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <4 >
  ↓
NGon_HollowCylinderLinearFlatLayerForce_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Rigid_Quad Rigid_Quad)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <4 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerForce_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

LinearForceFprimInt (Rigid_Quad Rigid_Triangle)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <4 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <4 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerForce_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Rigid_Triangle Rigid_Cylinder)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderLinearFlatLayerForce_Int  <6 >
  ↓
AssembleForces_1AssembleForces_2AssembleMoments_1AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2Feedback

LinearForceFprimInt (Rigid_Triangle Rigid_Triangle)

Linear integrated contact force model between n-gons and other geometries. Integrates the contact force over the intersection polygon using 6 integration points per sub-triangle, and re-normalizes the total integrated force so it scales linearly with the maximal overlap of the contact. This allows for a consistent behavior that is almost identical compared to the standard LinearForceCoulomb model.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • c_t — Tangential Coulomb damping coefficient in static regime (N*s/m)
    • c — Normal damping coefficient for the linear dashpot (N*s/m)
    • k — Linear contact stiffness (N/m)
    • mu — Coulomb friction coefficient
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • Fprim1 (default value = None) — Array with vectors which stores the contact force per primitive for pc1. If not given, the array pc1[‘Fprim’] is searched first, and if not found, nothing will be done
    • Fprim2 (default value = None) — Array with vectors which stores the contact force per primitive for pc2. If not given, the array pc2[‘Fprim’] is searched first, and if not found, nothing will be done
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateRigid_NGon_1_Data  <3 >
  ↓
Rigid_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonLinearFlatLayerForce_Int  <6 >
  ↓
AssembleForces_1AssembleMoments_cps_1AssembleMoments_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2AssembleForces_Primitives_1AssembleForces_Primitives_2AbortIfSameParentFeedback

TruncatedLinearTraction

Description: Truncated traction and flat layer repulsion for a brittle connected material. Geometry combinations available:

PC2 | PC1 - Deformable_Triangle
Rigid_Triangle YES
Rigid_Quad YES
Rigid_CylinderBottom YES
Rigid_Cylinder YES
Deformable_Triangle YES

TruncatedLinearTraction (Deformable_Triangle Deformable_Triangle)

Truncated traction and flat layer repulsion for a brittle connected material.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • abort_if_different (default value = 0) — If ‘True’, inverts the regular function of ‘AbortIfSameParent’, and makes the contact model early abort if the particles’ parents are different. Please do not change this ‘Property’ if you are not sure what you are doing.
    • always_init_contact_state (default value = 0) — If ‘True’, the contact states may be initialized every time this contact model chain element is executed. This effectively makes the contact force model an adhesion model instead of a brittle fracture model. This mode is useful to obtain initial configurations.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • init_contact_state (default value = 1) — If ‘True’, will again ‘fix’ the contacts within adhesive range on the next iteration. Afterwards, this value is automatically set to false, and broken springs will only re-attach if this property is explicitly set to ‘True’ again.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • k — contact stiffness (N/m). Will be computed internally for a given contact based on the contact geometry and k_layer. Can be consulted for de-bugging reasons.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateKeepTimeStepDeformable_NGon_1_Data  <3 >
  ↓
Deformable_NGon_2_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonTruncatedLinearTraction_Int  <16 >
  ↓
Assemble_ContactArea_1Assemble_ContactArea_2DistributeForcesAndMomentsToTriangle_1_NodesDistributeForcesAndMomentsToTriangle_2_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_DeformableTriangle_2AssembleSimpleTangentialForces_DeformableTriangle_2AbortIfSameParentFeedback

TruncatedLinearTraction (Deformable_Triangle Rigid_Cylinder)

Truncated traction and flat layer repulsion for a brittle connected material.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • always_init_contact_state (default value = 0) — If ‘True’, the contact states may be initialized every time this contact model chain element is executed. This effectively makes the contact force model an adhesion model instead of a brittle fracture model. This mode is useful to obtain initial configurations.
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_cylinder_hull (default value = 0) — Distance that the cylinder will be extended at top and bottom for contact resolution.It is recommended that you choose a non-zero value here, to prevent particles falling out at the edges. A good choice would be the maximal allowed overlap.Default: zero.
    • init_contact_state (default value = 1) — If ‘True’, will again ‘fix’ the contacts within adhesive range on the next iteration. Afterwards, this value is automatically set to false, and broken springs will only re-attach if this property is explicitly set to ‘True’ again.
  • Read only properties:
    • k — contact stiffness (N/m). Will be computed internally for a given contact based on the contact geometry and k_layer. Can be consulted for de-bugging reasons.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateKeepTimeStepDeformable_NGon_1_Data  <3 >
  ↓
Rigid_Cylinder_2_DataFlatLayer_NGon_1_Data  <3 >
  ↓
NGon_HollowCylinderTruncatedLinearTraction_Int  <16 >
  ↓
Assemble_ContactArea_1Assemble_ContactArea_2DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

TruncatedLinearTraction (Deformable_Triangle Rigid_CylinderBottom)

Truncated traction and flat layer repulsion for a brittle connected material.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • always_init_contact_state (default value = 0) — If ‘True’, the contact states may be initialized every time this contact model chain element is executed. This effectively makes the contact force model an adhesion model instead of a brittle fracture model. This mode is useful to obtain initial configurations.
    • contact_range (default value = 0) — The range of negative overlaps for which the intersection polygon will be expanded. Default: 0
    • extend_radius (default value = 0) — If given, the radius will be increased with the given extend. Useful for hollow cylinders to avoid problems in the corner.
    • init_contact_state (default value = 1) — If ‘True’, will again ‘fix’ the contacts within adhesive range on the next iteration. Afterwards, this value is automatically set to false, and broken springs will only re-attach if this property is explicitly set to ‘True’ again.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in radians) for which the contact will still be considered flat (default: 1 degree).
  • Read only properties:
    • k — contact stiffness (N/m). Will be computed internally for a given contact based on the contact geometry and k_layer. Can be consulted for de-bugging reasons.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateKeepTimeStepRigid_Cylinder_2_DataDeformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
NGon_Disk  <Bottom_Selector >
  ↓
TruncatedLinearTraction_Int  <16 >
  ↓
Assemble_ContactArea_1Assemble_ContactArea_2DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

TruncatedLinearTraction (Deformable_Triangle Rigid_Quad)

Truncated traction and flat layer repulsion for a brittle connected material.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • always_init_contact_state (default value = 0) — If ‘True’, the contact states may be initialized every time this contact model chain element is executed. This effectively makes the contact force model an adhesion model instead of a brittle fracture model. This mode is useful to obtain initial configurations.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • init_contact_state (default value = 1) — If ‘True’, will again ‘fix’ the contacts within adhesive range on the next iteration. Afterwards, this value is automatically set to false, and broken springs will only re-attach if this property is explicitly set to ‘True’ again.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • k — contact stiffness (N/m). Will be computed internally for a given contact based on the contact geometry and k_layer. Can be consulted for de-bugging reasons.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateKeepTimeStepRigid_NGon_2_Data  <4 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <4 >
  ↓
PABB_NGon_NGonNGon_NGonTruncatedLinearTraction_Int  <16 >
  ↓
Assemble_ContactArea_1Assemble_ContactArea_2DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback

TruncatedLinearTraction (Deformable_Triangle Rigid_Triangle)

Truncated traction and flat layer repulsion for a brittle connected material.

Parallel Compatible: Yes

Properties:

  • Required keywords:
    • k_layer — layer stiffnes [Pa/m]. Not that k_layer = bulk modulus / layer thickness
    • pc1 — The first particle container in the binary contact detection.
    • pc2 — The second particle container in the binary contact detection. If contact detection within the same particle container is desired, and it is applicable for the contactmodel, pass the same pc to both pc1 and pc2.
  • Optional keywords:
    • PABB_margin (default value = -1) — Margin used by the Particle-Aligned Bounding Boxes (PABBs). This margin is added in all Particle-aligned axes of the bounding boxes in each direction. If specified as a value between 0 and half the calling contact detector’s ‘keep_distance’, the PABBs are considered as a pre-contact resolution step, and executed every timestep. Hence, the ‘margin’ can be interpreted as half the maximal overlap distance that should still be detected in the extreme case of two parallel N-gons. If ‘margin’ is not specified (or < 0), the PABBs are considered as a post-contact detection filtering step. The margin is then computed automatically based on the contact detector’s ‘keep_distance’ property, and the PABBs are only used to filter contacts whenever contact detection takes place, i.e. every ‘update_every’ steps. If unsure, leave this parameter as its default which is as safe as a Grid-Based contact detector and induces little overhead in general. However, for simulations with relatively ‘stiff’ and ‘fast’ particles, setting this to a non-zero value might significantly boost the simulation speed.
    • always_init_contact_state (default value = 0) — If ‘True’, the contact states may be initialized every time this contact model chain element is executed. This effectively makes the contact force model an adhesion model instead of a brittle fracture model. This mode is useful to obtain initial configurations.
    • enable_PABB (default value = 1) — If ‘True’, the contacts will be pre-filtered using Particle-Aligned Bounding Boxes (PABBs). The usage strategy of the PABBs depends on the simulation, and can be configured using the property ‘PABB_margin’
    • init_contact_state (default value = 1) — If ‘True’, will again ‘fix’ the contacts within adhesive range on the next iteration. Afterwards, this value is automatically set to false, and broken springs will only re-attach if this property is explicitly set to ‘True’ again.
    • max_flat_angle (default value = 0.017453292519943295) — Maximal deviation of normal1 and -normal2 (in RADIAN) for which the contact will still be considered flat (default: 1 degree).
    • reject_angle (default value = 1.2309594173407747) — Angles sharper than this angle (in RADIAN) will be ignored, regardless of node normals.Higher = more stable, but might miss sharp contacts. Lower = more inclusive, but numerically dangerous.Only change this setting from its default if you know what you are doing. Default value = arccos(1/3), the angle of the tetrahedron, which is the sharpest we can safely deal with.
    • weight_normal_1 (default value = 0.5) — Weight that will be assigned to the contribution of the normal of p1 in determining the normal unit vector. the weight from the normal of p2 is (1-weight_normal_1). Default is equal weights. Only change this setting if you know what you are doing.
  • Read only properties:
    • k — contact stiffness (N/m). Will be computed internally for a given contact based on the contact geometry and k_layer. Can be consulted for de-bugging reasons.

This contact model is composed out of following pieces (click on the chain elements to get more information):

FlatNGonBoilerPlateKeepTimeStepRigid_NGon_2_Data  <3 >
  ↓
Deformable_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_1_Data  <3 >
  ↓
FlatLayer_NGon_2_Data  <3 >
  ↓
PABB_NGon_NGonNGon_NGonTruncatedLinearTraction_Int  <16 >
  ↓
Assemble_ContactArea_1Assemble_ContactArea_2DistributeForcesAndMomentsToTriangle_1_NodesAssembleForces_DeformableTriangle_1AssembleSimpleTangentialForces_DeformableTriangle_1AssembleForces_2AssembleMoments_cps_2AssembleMoments_2Feedback