HexahedronCompositeFEMForceFieldAndMass
HexahedronCompositeFEMForceFieldAndMass is a non-uniform finite element method (FEM) force field component for hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass and provides more advanced functionalities for modeling composite materials with varying properties across different regions of the mesh.
- abstract
- HexahedronCompositeFEMForceFieldAndMass simulates composite materials with non-uniform properties using hexahedral elements in SOFA, providing methods to compute stiffness and mass matrices at different resolutions.
- sheet
- # HexahedronCompositeFEMForceFieldAndMass ## Overview HexahedronCompositeFEMForceFieldAndMass is a component for simulating composite materials with non-uniform properties using hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass and provides advanced functionalities for modeling heterogeneous media by computing stiffness and mass matrices at different levels of resolution. ## Mathematical Model In FEM, each hexahedral element is described by its stiffness matrix (\(K")) and mass matrix (\
- description
- HexahedronCompositeFEMForceFieldAndMass is a non-uniform finite element method (FEM) force field component for hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass and provides more advanced functionalities for modeling composite materials with varying properties across different regions of the mesh.
- parameters
-
- {'name': 'finestToCoarse', 'type': 'bool', 'description': 'Indicates whether homogenization is done directly from the finest level to the coarse one.'}
- {'name': 'homogenizationMethod', 'type': 'int', 'description': 'Specifies the method used for homogenization (0: static, 1: constrained static, 2: modal analysis).'}
- {'name': 'completeInterpolation', 'type': 'bool', 'description': 'Indicates whether to use a non-linear complete interpolation method.'}
- {'name': 'useRamification', 'type': 'bool', 'description': 'Determines if ramifications are taken into account for SparseGridRamification topology.'}
- methods
-
- {'name': 'init()', 'description': 'Initializes the component, sets up topologies and calls computeMechanicalMatricesByCondensation().'}
- {'name': 'reinit()', 'description': "Reinitializes certain properties of the component but warns that composite mechanical properties can't be updated."}
- {'name': 'draw(vparams)', 'description': 'Draws the force field with optional visual parameters for display in the SOFA environment.'}
- properties
-
- {'name': '_weights', 'type': 'vector<vector<Weight>>', 'description': 'Stores weights for different levels of the hexahedral grid, used during homogenization.'}
- {'name': '_finalWeights', 'type': 'vector<pair<Index, Weight>>', 'description': 'Keeps track of final weights from coarsest to finest elements after all level multiplications are complete.'}
- notes
- This component is particularly useful for simulating materials with varying properties such as composite structures or heterogeneous tissues. It supports different homogenization methods and interpolation techniques to accurately model the mechanical behavior of complex geometries.
- examples
-
- HexahedronCompositeFEMForceFieldAndMass can be used to simulate a bone structure where the inner parts have different elastic properties compared to the outer layers.
- maths
- HexahedronCompositeFEMForceFieldAndMass is designed for simulating composite materials using finite element methods (FEM) with hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass to handle varying material properties across different regions of a mesh, making it suitable for modeling heterogeneous media such as layered composites or porous materials. ### Mathematical Description: #### 1. **Element Stiffness and Mass Matrices:*** In FEM, the mechanical behavior of each hexahedral element is described by its stiffness matrix (K) and mass matrix (M). These matrices are computed based on the material properties such as Young's modulus (E), Poisson ratio (ν), and density (ρ). - **Stiffness Matrix (K):** The element stiffness matrix for each hexahedral element is derived from its elastic properties. The general form of the stiffness matrix K can be given by: \[ K = rac{E}{1 - ν^2} \int_{element} B^T DB dV, \] where \(B\) is the strain-displacement matrix, and \(D\) is the elasticity matrix (depends on E and ν). - **Mass Matrix (M):** The mass matrix for each hexahedral element is defined by: \[ M = ρ \int_{element} N^T N dV, \] where \(N\) are the shape functions used to interpolate displacements within the element. #### 2. **Non-Uniform Material Properties:*** HexahedronCompositeFEMForceFieldAndMass allows for non-uniform material properties across different elements or sub-elements of a hexahedral mesh. This is achieved by defining varying Young's modulus (E) and Poisson ratio (ν) values at the level of individual elements or finer sub-elements. - **Material Stiffness:** The stiffness matrix for each element is computed based on its specific material properties: \[ K_i = rac{E_i}{1 - ν_i^2} \int_{element_i} B_i^T D_i B_i dV, \] where the subscript i denotes the individual element with material properties (Ei, νi). #### 3. **Condensation and Homogenization:*** The component computes coarse-grained mechanical matrices by condensing the stiffness and mass contributions from finer sub-elements. - **Homogenization Method:** Several homogenization methods are implemented to aggregate material properties: - *Direct Finest-to-Coarse:* Stiffness and mass matrices are directly computed at the finest level and then condensed into a coarser level. - *Recursive Condensation:* The stiffness and mass matrices are recursively computed for finer sub-elements, starting from coarse elements down to the finest level. - **Interpolation:** The interpolation method determines how displacements of fine nodes are mapped onto coarse nodes. Complete nonlinear interpolation may be used to accurately represent complex material behavior. #### 4. **Draw Functionality:*** To visualize the simulation, draw methods are provided for visualizing elements based on their properties and connectivity. - *Visual Parameters:* Color coding and drawing types can be configured to highlight different regions or properties of the mesh. ### Physical Description: HexahedronCompositeFEMForceFieldAndMass is used in simulations where materials exhibit non-uniform behavior, such as composites with varying layers or materials with microstructures. This component enables the precise modeling of mechanical interactions within these heterogeneous media by accounting for local variations in material properties. - **Applications:** The component can be applied to simulate composite structures like fiber-reinforced polymers (FRP) or bone tissue, where each layer or region has distinct elastic and density properties. Overall, HexahedronCompositeFEMForceFieldAndMass provides a robust framework for simulating complex material behavior within the SOFA physics engine.
{
"name": "HexahedronCompositeFEMForceFieldAndMass",
"main": {
"name": "HexahedronCompositeFEMForceFieldAndMass",
"namespace": "sofa::component::solidmechanics::fem::nonuniform",
"module": "Sofa.Component.SolidMechanics.FEM.NonUniform",
"include": "sofa/component/solidmechanics/fem/nonuniform/HexahedronCompositeFEMForceFieldAndMass.h",
"doc": "Non uniform Hexahedral finite elements.",
"inherits": [
"NonUniformHexahedronFEMForceFieldAndMass"
],
"templates": [
"sofa::defaulttype::Vec3Types"
],
"data_fields": [
{
"name": "d_finestToCoarse",
"type": "bool"
},
{
"name": "d_homogenizationMethod",
"type": "int"
},
{
"name": "d_completeInterpolation",
"type": "bool"
},
{
"name": "d_useRamification",
"type": "bool"
},
{
"name": "d_drawType",
"type": "int"
},
{
"name": "d_drawColor",
"type": "int"
},
{
"name": "d_drawSize",
"type": "float"
}
],
"links": [],
"methods": [
{
"name": "init",
"return_type": "void",
"params": [],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "reinit",
"return_type": "void",
"params": [],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "draw",
"return_type": "void",
"params": [
{
"name": "vparams",
"type": "const core::visual::VisualParams *"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "findFinestChildren",
"return_type": "void",
"params": [
{
"name": "finestChildren",
"type": "int &"
},
{
"name": "elementIndice",
"type": "const int"
},
{
"name": "level",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "computeMechanicalMatricesDirectlyFromTheFinestToCoarse",
"return_type": "void",
"params": [
{
"name": "K",
"type": "ElementStiffness &"
},
{
"name": "M",
"type": "ElementMass &"
},
{
"name": "elementIndice",
"type": "const int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "computeMechanicalMatricesRecursively",
"return_type": "void",
"params": [
{
"name": "K",
"type": "ElementStiffness &"
},
{
"name": "M",
"type": "ElementMass &"
},
{
"name": "elementIndice",
"type": "const int"
},
{
"name": "level",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "computeMechanicalMatricesRecursivelyWithRamifications",
"return_type": "void",
"params": [
{
"name": "K",
"type": "ElementStiffness &"
},
{
"name": "M",
"type": "ElementMass &"
},
{
"name": "elementIndice",
"type": "const int"
},
{
"name": "level",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "computeFinalWeights",
"return_type": "void",
"params": [
{
"name": "W",
"type": "const Weight &"
},
{
"name": "coarseElementIndice",
"type": "const int"
},
{
"name": "elementIndice",
"type": "const int"
},
{
"name": "level",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "computeFinalWeightsRamification",
"return_type": "void",
"params": [
{
"name": "W",
"type": "const Weight &"
},
{
"name": "coarseElementIndice",
"type": "const int"
},
{
"name": "elementIndice",
"type": "const int"
},
{
"name": "level",
"type": "int"
}
],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
},
{
"name": "computeMechanicalMatricesByCondensation",
"return_type": "void",
"params": [],
"is_virtual": false,
"is_pure_virtual": false,
"is_static": false,
"access": "public"
}
]
},
"desc": {
"description": "HexahedronCompositeFEMForceFieldAndMass is a non-uniform finite element method (FEM) force field component for hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass and provides more advanced functionalities for modeling composite materials with varying properties across different regions of the mesh.",
"parameters": [
{
"name": "finestToCoarse",
"type": "bool",
"description": "Indicates whether homogenization is done directly from the finest level to the coarse one."
},
{
"name": "homogenizationMethod",
"type": "int",
"description": "Specifies the method used for homogenization (0: static, 1: constrained static, 2: modal analysis)."
},
{
"name": "completeInterpolation",
"type": "bool",
"description": "Indicates whether to use a non-linear complete interpolation method."
},
{
"name": "useRamification",
"type": "bool",
"description": "Determines if ramifications are taken into account for SparseGridRamification topology."
}
],
"methods": [
{
"name": "init()",
"description": "Initializes the component, sets up topologies and calls computeMechanicalMatricesByCondensation()."
},
{
"name": "reinit()",
"description": "Reinitializes certain properties of the component but warns that composite mechanical properties can't be updated."
},
{
"name": "draw(vparams)",
"description": "Draws the force field with optional visual parameters for display in the SOFA environment."
}
],
"properties": [
{
"name": "_weights",
"type": "vector<vector<Weight>>",
"description": "Stores weights for different levels of the hexahedral grid, used during homogenization."
},
{
"name": "_finalWeights",
"type": "vector<pair<Index, Weight>>",
"description": "Keeps track of final weights from coarsest to finest elements after all level multiplications are complete."
}
],
"notes": "This component is particularly useful for simulating materials with varying properties such as composite structures or heterogeneous tissues. It supports different homogenization methods and interpolation techniques to accurately model the mechanical behavior of complex geometries.",
"examples": [
"HexahedronCompositeFEMForceFieldAndMass can be used to simulate a bone structure where the inner parts have different elastic properties compared to the outer layers."
]
},
"maths": {
"maths": "HexahedronCompositeFEMForceFieldAndMass is designed for simulating composite materials using finite element methods (FEM) with hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass to handle varying material properties across different regions of a mesh, making it suitable for modeling heterogeneous media such as layered composites or porous materials.\n\n### Mathematical Description:\n\n#### 1. **Element Stiffness and Mass Matrices:***\nIn FEM, the mechanical behavior of each hexahedral element is described by its stiffness matrix (K) and mass matrix (M). These matrices are computed based on the material properties such as Young's modulus (E), Poisson ratio (ν), and density (ρ).\n\n- **Stiffness Matrix (K):**\nThe element stiffness matrix for each hexahedral element is derived from its elastic properties. The general form of the stiffness matrix K can be given by:\n\n\\[\nK = \frac{E}{1 - ν^2} \\int_{element} B^T DB dV,\n\\]\nwhere \\(B\\) is the strain-displacement matrix, and \\(D\\) is the elasticity matrix (depends on E and ν).\n\n- **Mass Matrix (M):**\nThe mass matrix for each hexahedral element is defined by:\n\n\\[\nM = ρ \\int_{element} N^T N dV,\n\\]\nwhere \\(N\\) are the shape functions used to interpolate displacements within the element.\n\n#### 2. **Non-Uniform Material Properties:***\nHexahedronCompositeFEMForceFieldAndMass allows for non-uniform material properties across different elements or sub-elements of a hexahedral mesh. This is achieved by defining varying Young's modulus (E) and Poisson ratio (ν) values at the level of individual elements or finer sub-elements.\n\n- **Material Stiffness:**\nThe stiffness matrix for each element is computed based on its specific material properties:\n\\[\nK_i = \frac{E_i}{1 - ν_i^2} \\int_{element_i} B_i^T D_i B_i dV,\n\\]\nwhere the subscript i denotes the individual element with material properties (Ei, νi).\n\n#### 3. **Condensation and Homogenization:***\nThe component computes coarse-grained mechanical matrices by condensing the stiffness and mass contributions from finer sub-elements.\n\n- **Homogenization Method:**\nSeveral homogenization methods are implemented to aggregate material properties:\n - *Direct Finest-to-Coarse:* Stiffness and mass matrices are directly computed at the finest level and then condensed into a coarser level.\n - *Recursive Condensation:* The stiffness and mass matrices are recursively computed for finer sub-elements, starting from coarse elements down to the finest level.\n\n- **Interpolation:**\nThe interpolation method determines how displacements of fine nodes are mapped onto coarse nodes. Complete nonlinear interpolation may be used to accurately represent complex material behavior.\n\n#### 4. **Draw Functionality:***\nTo visualize the simulation, draw methods are provided for visualizing elements based on their properties and connectivity.\n\n- *Visual Parameters:* Color coding and drawing types can be configured to highlight different regions or properties of the mesh.\n\n### Physical Description:\nHexahedronCompositeFEMForceFieldAndMass is used in simulations where materials exhibit non-uniform behavior, such as composites with varying layers or materials with microstructures. This component enables the precise modeling of mechanical interactions within these heterogeneous media by accounting for local variations in material properties.\n\n- **Applications:**\nThe component can be applied to simulate composite structures like fiber-reinforced polymers (FRP) or bone tissue, where each layer or region has distinct elastic and density properties.\n\nOverall, HexahedronCompositeFEMForceFieldAndMass provides a robust framework for simulating complex material behavior within the SOFA physics engine."
},
"summary": {
"abstract": "HexahedronCompositeFEMForceFieldAndMass simulates composite materials with non-uniform properties using hexahedral elements in SOFA, providing methods to compute stiffness and mass matrices at different resolutions.",
"sheet": "# HexahedronCompositeFEMForceFieldAndMass\n\n## Overview\nHexahedronCompositeFEMForceFieldAndMass is a component for simulating composite materials with non-uniform properties using hexahedral elements in the SOFA physics engine. It extends NonUniformHexahedronFEMForceFieldAndMass and provides advanced functionalities for modeling heterogeneous media by computing stiffness and mass matrices at different levels of resolution.\n\n## Mathematical Model\nIn FEM, each hexahedral element is described by its stiffness matrix (\\(K\")) and mass matrix (\\"
}
}