QuadSetTopologyModifier
Topology modifier dedicated to a quad topology. A class that modifies the topology by adding and removing quads
Modifies quad-based mesh topology by adding and removing quads while ensuring the mesh remains consistent and valid.
- module
- Sofa.Component.Topology.Container.Dynamic
- namespace
- sofa::component::topology::container::dynamic
- include
- sofa/component/topology/container/dynamic/QuadSetTopologyModifier.h
- inherits
-
- EdgeSetTopologyModifier
- description
QuadSetTopologyModifier
The QuadSetTopologyModifier is a topology modifier dedicated to handling the addition and removal of quadrilateral elements (quads) within a simulation mesh. This component does not directly contribute to any specific governing equations, constitutive laws, or numerical methods commonly associated with Finite Element Methods (FEM). Instead, it primarily operates at the level of mesh topology management.
Role in FEM Pipeline
- Mesh Topology Management: The
QuadSetTopologyModifieris responsible for dynamically modifying the quad-based mesh by adding and removing quads. It ensures that the mesh topology remains consistent and valid after such modifications. - Integration into Scene Graph Architecture: As part of SOFA's scene graph architecture, it interacts with other components to ensure that changes in mesh topology are properly propagated and accounted for within the simulation framework.
Governing Equations/Operators
The QuadSetTopologyModifier does not directly implement any governing equations or operators such as mass matrix (M), stiffness matrix (K), internal force vector (( f_{int} \")), residual vector (R), etc. These are handled by other components in the simulation pipeline, particularly within elements like ForceFields and Mass components.
Constitutive/Kinematic Laws
- The component does not implement any constitutive or kinematic laws. It is purely a topology manager for quad-based meshes.
Numerical Methods/Discretization Choices
- Mesh Management: When adding quads, it ensures that the new elements are properly integrated into the mesh and associated with existing edges and vertices. This involves updating various data structures (e.g., vertex-to-edge and edge-to-quadrilateral mappings) to reflect these changes.
- Removal of Quads: When removing quads, it carefully handles dependencies, such as isolated edges or points that might become orphaned without further adjustments. It ensures that the mesh remains valid after removal operations by cleaning up associated structures appropriately.
Integration into Variational/Lagrangian Mechanics Framework
The QuadSetTopologyModifier indirectly supports variational and Lagrangian mechanics frameworks by ensuring that the underlying mesh topology is consistent and valid. This consistency is critical for correct application of weak form formulations, finite element discretizations, and subsequent nonlinear solve steps in FEM simulations.
Summary
- The
QuadSetTopologyModifierdoes not directly implement any mathematical equations or operators commonly associated with FEM simulations. - It manages the topology of quad-based meshes by adding and removing quads while ensuring consistency and validity.
- Its role is to support other components in the SOFA framework that handle governing equations, constitutive laws, and numerical methods.
Methods
void
init
()
virtual
void
addQuads
(const int & quads)
virtual
void
addQuads
(const int & quads, const int & ancestors, const int & baryCoefs)
virtual
void
addQuadProcess
(Quad e)
void
removeQuads
(const int & quadIds, const bool removeIsolatedEdges, const bool removeIsolatedPoints)
virtual
void
removeItems
(const int & items)
void
addQuadsWarning
(const int nQuads, const int & quadsList, const int & quadsIndexList)
void
addQuadsWarning
(const int nQuads, const int & quadsList, const int & quadsIndexList, const int & ancestors, const int & baryCoefs)
void
addQuadsProcess
(const int & quads)
virtual
void
removeQuadsWarning
(int & quads)
virtual
void
removeQuadsProcess
(const int & indices, const bool removeIsolatedEdges, const bool removeIsolatedPoints)
virtual
void
addEdgesProcess
(const int & edges)
void
removeEdgesProcess
(const int & indices, const bool removeIsolatedItems)
void
addPointsProcess
(const int nPoints)
void
removePointsProcess
(const int & indices, const bool removeDOF)
void
renumberPointsProcess
(const int & index, const int & inv_index, const bool renumberDOF)
void
propagateTopologicalEngineChanges
()
virtual
{
"name": "QuadSetTopologyModifier",
"namespace": "sofa::component::topology::container::dynamic",
"module": "Sofa.Component.Topology.Container.Dynamic",
"include": "sofa/component/topology/container/dynamic/QuadSetTopologyModifier.h",
"doc": "Topology modifier dedicated to a quad topology.\n\nA class that modifies the topology by adding and removing quads",
"inherits": [
"EdgeSetTopologyModifier"
],
"templates": [],
"data_fields": [],
"links": [],
"methods": [
{
"name": "init",
"return_type": "void",
"params": [],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "addQuads",
"return_type": "void",
"params": [
{
"name": "quads",
"type": "const int &"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "addQuads",
"return_type": "void",
"params": [
{
"name": "quads",
"type": "const int &"
},
{
"name": "ancestors",
"type": "const int &"
},
{
"name": "baryCoefs",
"type": "const int &"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "addQuadProcess",
"return_type": "void",
"params": [
{
"name": "e",
"type": "Quad"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "removeQuads",
"return_type": "void",
"params": [
{
"name": "quadIds",
"type": "const int &"
},
{
"name": "removeIsolatedEdges",
"type": "const bool"
},
{
"name": "removeIsolatedPoints",
"type": "const bool"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "removeItems",
"return_type": "void",
"params": [
{
"name": "items",
"type": "const int &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "addQuadsWarning",
"return_type": "void",
"params": [
{
"name": "nQuads",
"type": "const int"
},
{
"name": "quadsList",
"type": "const int &"
},
{
"name": "quadsIndexList",
"type": "const int &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "addQuadsWarning",
"return_type": "void",
"params": [
{
"name": "nQuads",
"type": "const int"
},
{
"name": "quadsList",
"type": "const int &"
},
{
"name": "quadsIndexList",
"type": "const int &"
},
{
"name": "ancestors",
"type": "const int &"
},
{
"name": "baryCoefs",
"type": "const int &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "addQuadsProcess",
"return_type": "void",
"params": [
{
"name": "quads",
"type": "const int &"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "removeQuadsWarning",
"return_type": "void",
"params": [
{
"name": "quads",
"type": "int &"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "removeQuadsProcess",
"return_type": "void",
"params": [
{
"name": "indices",
"type": "const int &"
},
{
"name": "removeIsolatedEdges",
"type": "const bool"
},
{
"name": "removeIsolatedPoints",
"type": "const bool"
}
],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "addEdgesProcess",
"return_type": "void",
"params": [
{
"name": "edges",
"type": "const int &"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "removeEdgesProcess",
"return_type": "void",
"params": [
{
"name": "indices",
"type": "const int &"
},
{
"name": "removeIsolatedItems",
"type": "const bool"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "addPointsProcess",
"return_type": "void",
"params": [
{
"name": "nPoints",
"type": "const int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "removePointsProcess",
"return_type": "void",
"params": [
{
"name": "indices",
"type": "const int &"
},
{
"name": "removeDOF",
"type": "const bool"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "renumberPointsProcess",
"return_type": "void",
"params": [
{
"name": "index",
"type": "const int &"
},
{
"name": "inv_index",
"type": "const int &"
},
{
"name": "renumberDOF",
"type": "const bool"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
},
{
"name": "propagateTopologicalEngineChanges",
"return_type": "void",
"params": [],
"is_virtual": true,
"is_pure_virtual": false,
"is_static": false,
"access": "protected"
}
],
"description": "QuadSetTopologyModifier",
"parameters": [
{
"name": "filename",
"description": "Name of the file to save the topology.",
"type": "string"
},
{
"name": "saveEachAdd",
"description": "If true, each time we add something in the topology (point or quad), the new topology is saved. Otherwise it's only done at the end.",
"type": "bool"
}
],
"maths": "### QuadSetTopologyModifier\n\nThe `QuadSetTopologyModifier` is a topology modifier dedicated to handling the addition and removal of quadrilateral elements (quads) within a simulation mesh. This component does not directly contribute to any specific governing equations, constitutive laws, or numerical methods commonly associated with Finite Element Methods (FEM). Instead, it primarily operates at the level of mesh topology management.\n\n#### Role in FEM Pipeline\n- **Mesh Topology Management**: The `QuadSetTopologyModifier` is responsible for dynamically modifying the quad-based mesh by adding and removing quads. It ensures that the mesh topology remains consistent and valid after such modifications.\n- **Integration into Scene Graph Architecture**: As part of SOFA's scene graph architecture, it interacts with other components to ensure that changes in mesh topology are properly propagated and accounted for within the simulation framework.\n\n#### Governing Equations/Operators\nThe `QuadSetTopologyModifier` does not directly implement any governing equations or operators such as mass matrix (M), stiffness matrix (K), internal force vector (\\( f_{int} \\\")), residual vector (R), etc. These are handled by other components in the simulation pipeline, particularly within elements like ForceFields and Mass components.\n\n#### Constitutive/Kinematic Laws\n- The component does not implement any constitutive or kinematic laws. It is purely a topology manager for quad-based meshes.\n\n#### Numerical Methods/Discretization Choices\n- **Mesh Management**: When adding quads, it ensures that the new elements are properly integrated into the mesh and associated with existing edges and vertices. This involves updating various data structures (e.g., vertex-to-edge and edge-to-quadrilateral mappings) to reflect these changes.\n- **Removal of Quads**: When removing quads, it carefully handles dependencies, such as isolated edges or points that might become orphaned without further adjustments. It ensures that the mesh remains valid after removal operations by cleaning up associated structures appropriately.\n\n#### Integration into Variational/Lagrangian Mechanics Framework\nThe `QuadSetTopologyModifier` indirectly supports variational and Lagrangian mechanics frameworks by ensuring that the underlying mesh topology is consistent and valid. This consistency is critical for correct application of weak form formulations, finite element discretizations, and subsequent nonlinear solve steps in FEM simulations.\n\n### Summary\n- The `QuadSetTopologyModifier` does not directly implement any mathematical equations or operators commonly associated with FEM simulations.\n- It manages the topology of quad-based meshes by adding and removing quads while ensuring consistency and validity.\n- Its role is to support other components in the SOFA framework that handle governing equations, constitutive laws, and numerical methods.",
"abstract": "Modifies quad-based mesh topology by adding and removing quads while ensuring the mesh remains consistent and valid.",
"sheet": "# QuadSetTopologyModifier\n\n## Overview\nThe `QuadSetTopologyModifier` is a topology modifier dedicated to handling the addition and removal of quadrilateral elements (quads) within a simulation mesh. It ensures that the mesh topology remains consistent and valid after such modifications, integrating seamlessly into SOFA's scene graph architecture.\n\n## Dependencies and Connections\nThis component typically requires interaction with other components in the SOFA framework to ensure proper propagation of topological changes. For instance, it may need to communicate with ForceFields or Mass components to update their internal state based on mesh topology modifications."
}