Glossary
This page contains definitions for various terminology and abbreviations used throughout opensg documentation and code.
Terminology
ABD Matrix: A 6x6 matrix used in classical lamination theory to relate generalized forces and moments to generalized strains and curvatures. The matrix has the structure [[A, B], [B, D]] where A is the 3x3 membrane stiffness, B is the 3x3 coupling stiffness, and D is the 3x3 bending stiffness.
Boundary Condition: A condition imposed on facets or boundaries of a mesh, such as Dirichlet boundary conditions (specifying function values on the boundary) or Neumann boundary conditions (specifying derivative values).
Cell: A fundamental element of a mesh (e.g., a triangle in 2D, tetrahedron in 3D) that divides the domain into discrete parts for FEA computations.
Composite Laminate: A structural material made up of multiple layers (plies) of fiber-reinforced material, each potentially having different fiber orientations and material properties.
Composite Layup: See Composite Laminate.
Connectivity: The relationship between different entities in a mesh (e.g., between vertices and cells, cells and facets). Connectivity maps define how entities are connected within a mesh.
Dehomogenization: The process of recovering local stress and strain fields from homogenized beam properties using fluctuating functions. This allows analysis of detailed stress distributions within the original 3D structure.
Eigenvalue Analysis: Mathematical technique used to determine natural frequencies, buckling loads, or other critical values by solving generalized eigenvalue problems of the form Ax = λBx.
Euler-Bernoulli Beam Theory: A classical beam theory that assumes plane sections remain plane and perpendicular to the neutral axis after deformation. Neglects shear deformation effects.
Facet: A boundary entity of a cell that is one dimension lower than the cell itself.
Fluctuating Functions: Mathematical functions that represent the deviation from average behavior in homogenization theory. Used to capture local effects within the Structure Genome.
Frame: Local coordinate system defined at each point in the mesh, typically consisting of orthogonal unit vectors (e1, e2, e3) that define material orientations.
Gamma Functions: Mathematical operators (gamma_h, gamma_e, gamma_l, gamma_d) used in MSG formulations to relate displacement fields to strain measures for different beam theories.
Homogenization: The process of computing effective structural properties (stiffness matrices, mass properties) from either 1D, 2D, or 3D SGs.
Layup: The sequence and orientation of composite layers (plies) that make up a laminated structure, including thickness, material, and fiber angle for each layer.
Local Frame: A coordinate system attached to specific geometric entities (edges, faces) that defines the orientation of materials and the direction of structural axes.
Mesh: A collection of cells (e.g., triangles, quadrilaterals in 2D, or tetrahedrons, hexahedrons in 3D) representing a discretized computational domain. A dolfinx.mesh.Mesh object encapsulates both the geometry and topology of this mesh.
Nullspace: In finite element analysis, the mathematical space containing rigid body motions that must be constrained to ensure a unique solution to the structural problem.
Segment: A portion of a blade mesh that is analyzed as a separate entity. Wind turbine blades are typically divided into multiple segments along their span for analysis.
Shell Element: A finite element type used for modeling thin-walled structures like wind turbine blade skins.
Solid Element: A finite element type used for modeling three-dimensional volumetric structures.
Stiffness Matrix: A matrix that relates applied forces to resulting displacements in a structural system. Can be 4x4 for Euler-Bernoulli beams or 6x6 for Timoshenko beams.
Structure Gene (SG): The fundamental building block in MSG theory - a representative cross-section of the structure that captures all geometric and material complexity in 1D, 2D, or 3D form.
Timoshenko Beam Theory: An enhanced beam theory that includes the effects of shear deformation and rotary inertia, providing more accurate results for thick beams or shells.
Topology: In dolfinx, refers to the structural organization of the mesh, including the number and types of entities (vertices, edges, faces, cells) and their connectivity.
Abbreviations
ABD: A-B-D matrix (membrane-bending-coupling stiffness matrix)
BECAS: BEam Cross section Analysis Software (alternative cross-sectional analysis tool)
DOF: Degrees of Freedom
DOLFINx: The next-generation finite element library (part of FEniCS)
EB: Euler-Bernoulli (beam theory)
EPS: Eigenvalue Problem Solver (from SLEPc library)
FEA: Finite Element Analysis
FEniCS: Open-source finite element computing platform
GEP: Generalized Eigenvalue Problem
GMSH: 3D finite element mesh generator
MPI: Message Passing Interface (for parallel computing)
MSG: Mechanics of Structure Genome
MSH: GMSH mesh file format
PETSc: Portable Extensible Toolkit for Scientific Computation
SG: Structure Gene
SLEPc: Scalable Library for Eigenvalue Problem Computations
UFL: Unified Form Language (part of FEniCS for expressing finite element forms)
VABS: Variational Asymptotic Beam Sectional Analysis (beam cross-section analysis tool)
YAML: Yet Another Markup Language (data serialization format used for input files)
Variable Name Conventions
Timoshenko Beam Model (Tapered Shell Wind Blade Segment)
Input: .yaml File
Output: Timoshenko Stiffness Matrix:
Boundary Timoshenko Stiffness (Deff_l/Deff_r)
Entire Blade Segment Timoshenko Stiffness (Deff_srt)
Byproduct and intermediate step of computation:
Boundary Euler-Bernoulli Stiffness (D_effEB_l/D_effEB_r)
Entire Blade Segment Euler-Bernoulli Stiffness (D_eff)
Input Variables/Data:
section_idConstant - Segment_id of wind blade to be computed
meshmesh data of entire wind blade (WB) segment
subdomainslayup id of mesh elements (a.k.a. physical domain of mesh)
boundariesfacet id of boundary elements of WB mesh (Not useful in computation)
x_min, x_maxminimum/maximum x (beam axis) coordinate to define boundary mesh
tdim, fdimmesh topology/facet dimension (For quad mesh: tdim=2, fdim=1)
facets_left/rightLeft/Right boundary facet id of WB mesh (In WB numbering) - useful in generating boundary mesh
mesh_r/mesh_lleft and right boundary mesh (Generated in dolfinx as submesh)
entity_mapl/maprfacet id of left/right boundary (In boundary mesh numbering)
num_cellsnumber of quadrilateral mesh elements
o_cell_idxOriginal mesh element connectivity (SG_Shell.msh). Note: dolfinx does the renumbering of vertex and mesh connectivity
VVfunctionspace (Discontinuous galerkin) to store orientation data
frame ([EE1,EE2,N])Local Orientation frame (from .yaml) stored as ufl function
[EE1,EE2,N]: EE1-> curvilinear tangent direction (along beam axis), EE2-> Circumferential tangent Direction (CCW about +x (beam) axis), N -> Inward normal direction
material_parametersStores anisotropic material properties of layups (Same for all WB Segments)
Layup and Material Data:
nphasesnumber of layups in the WB segment
nlay[nphases,1] - number of layers in each layup of WB segment
matid[nphases,nlay,1] - Contains thickness data of layup id- nlay
thick[nphases,nlay,1]
conn3[num_cells,4] - facet connectivity matrix for each element
subdomains_llayup id of left boundary mesh (Output for subdomains.values[:] arranged in boundary dofs)
frame_lLocal orientation frame (orthogonal) for each left boundary element
[E1l,E2l,Nl]: E1l-> beam axis (+x dir), E2l-> Circumferential tangent Direction (CCW about +x (beam) axis), E3l -> Inward normal direction
boundary_facets_left[num_facets_left_boundary,1] - facet id connectivity of boundary mesh (In mesh_l based numbering)
D_effEB_l/D_effEB_rEuler-Bernoulli matrix of left/right boundary of WB Segment
Deff_l/Deff_rTimoshenko Stiffness matrix of left/right boundary of WB Segment
Function Spaces and Solution Variables:
ndofs_WBmesh[3*len(np.arange(*V.dofmap.index_map.local_range)),1] - total dofs of WB segment mesh (Note: V=> functionspace of WB mesh)
V0_l/V0_r[ndofs_leftmesh,4] - Fluctuating function solution after solving 4 load cases (for EB Stiffness/a.k.a zeroth order)
V1_l/V1_r[ndofs_leftmesh,4] - Fluctuating function solution after solving 4 load cases (for Timo Stiffness/ a.k.a first order)
e_lLocal orientation Frame for left boundary mesh interpolated in V_l (Serendipidity) functionspace
e_rLocal orientation Frame for right boundary mesh interpolated in V_r (Serendipidity) functionspace
eLocal orientation Frame for WB Segment mesh interpolated in V (Serendipidity) functionspace
V_l/V_rfunctionspace of left/right boundary mesh (UFL)
Vfunctionspace for defining WB segment mesh (UFL)
dvl, v_lTrial and Test Functions for left boundary (V_l) (UFL)
dvr, v_rTrial and Test Functions for right boundary (V_r) (UFL)
dv, v_Trial and Test Functions for WB mesh (V) (UFL)
x_l, x_rSpatial Coordinate Data for left/right boundary (UFL)
dx_lMeasure for left boundary mesh with subdomains_l assigned
dxMeasure for WB mesh with subdomains assigned (Used in defining weak form *dx(i) mean integration over mesh elements with layup id i)
nullspace_lcontain nullspace vector for used as constraint to block Rigid body motion when solving variation form (ksp solver) over left boundary mesh
ndofs_leftmesh[3*len(np.arange(*V.dofmap.index_map.local_range)),1] - total dofs of left boundary mesh
Assembly Matrices and Weak Forms:
A_l[ndofs_leftmesh,ndofs_leftmesh] - Global Assembly Coefficient matrix (in ufl form) for left boundary
Can print matrix as array by A_l[:,:]
Used in solving 4 load cases where A_l w_l = F_l (similar to Ax=b)
Unknown w_l is stored in V0_l[:,p] for load case p
A[ndofs_WBmesh,ndofs_WBmesh] - Global Assembly matrix for WB mesh
aBilinear weak form for WB mesh - a(dv,v_)
F2Linear weak form for WB mesh - F2(v_)
Can compare with weak form to solve as a(dv,v_) w = F2(v_), where w.vector[ndofs_WBmesh,1] is unknown dofs value stored in V0[ndofs_WBmesh,4]
F[ndofs_WBmesh,1] - Global Assembled Right hand vector for EB case
b[ndofs_WBmesh, 4] - Equivalent to Right hand vector F for Timo case
v0Stores the solved V0[ndofs_WBmesh,p] in ufl function form for each load case
v2aUFL function defined over V (functionspace_WB mesh) - Output by v2a.vector[:]
bcDirichlet bc (known ufl function storing boundary solutions, dofs of boundary need to be constrained)
Stiffness Matrix Components:
Dhe[ndofs_WBmesh,4] - < gamma_h.T ABD gamma_e>
Dle[ndofs_WBmesh,4] - < gamma_l.T ABD gamma_e>
Dll[ndofs_WBmesh,ndofs_WBmesh] - < gamma_l.T ABD gamma_l>
Dhl[ndofs_WBmesh,ndofs_WBmesh] - < gamma_h.T ABD gamma_l>
D_ee[4,4] - < gamma_e.T ABD gamma_e>
D1[4,4] - < V0.T -Dhe> Information matrix from fluctuating function data
V0[ndofs_WBmesh, 4] - Solve [A w =F] Fluctuating function after solving 4 load cases on WB mesh (EB)
V1s[ndofs_WBmesh, 4] - Solve [A w =b] Fluctuating function after solving 4 load cases on WB mesh (Timo)
D_eff[4,4] - Euler-Bernoulli Stiffness matrix of entire WB segment
Deff_srt[6,6] - Timoshenko Stiffness matrix of entire WB segment
Note
For Boundary Timo Solving, Dhe, Dle, Dll, Dhl, Dee use (dofs_leftmesh/dofs_rightmesh) in place of dofs_WBmesh