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_id
Constant - Segment_id of wind blade to be computed
mesh
mesh data of entire wind blade (WB) segment
subdomains
layup id of mesh elements (a.k.a. physical domain of mesh)
boundaries
facet id of boundary elements of WB mesh (Not useful in computation)
x_min, x_max
minimum/maximum x (beam axis) coordinate to define boundary mesh
tdim, fdim
mesh topology/facet dimension (For quad mesh: tdim=2, fdim=1)
facets_left/right
Left/Right boundary facet id of WB mesh (In WB numbering) - useful in generating boundary mesh
mesh_r/mesh_l
left and right boundary mesh (Generated in dolfinx as submesh)
entity_mapl/mapr
facet id of left/right boundary (In boundary mesh numbering)
num_cells
number of quadrilateral mesh elements
o_cell_idx
Original mesh element connectivity (SG_Shell.msh). Note: dolfinx does the renumbering of vertex and mesh connectivity
VV
functionspace (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_parameters
Stores anisotropic material properties of layups (Same for all WB Segments)
Layup and Material Data:
nphases
number 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_l
layup id of left boundary mesh (Output for subdomains.values[:] arranged in boundary dofs)
frame_l
Local 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_r
Euler-Bernoulli matrix of left/right boundary of WB Segment
Deff_l/Deff_r
Timoshenko 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_l
Local orientation Frame for left boundary mesh interpolated in V_l (Serendipidity) functionspace
e_r
Local orientation Frame for right boundary mesh interpolated in V_r (Serendipidity) functionspace
e
Local orientation Frame for WB Segment mesh interpolated in V (Serendipidity) functionspace
V_l/V_r
functionspace of left/right boundary mesh (UFL)
V
functionspace for defining WB segment mesh (UFL)
dvl, v_l
Trial and Test Functions for left boundary (V_l) (UFL)
dvr, v_r
Trial and Test Functions for right boundary (V_r) (UFL)
dv, v_
Trial and Test Functions for WB mesh (V) (UFL)
x_l, x_r
Spatial Coordinate Data for left/right boundary (UFL)
dx_l
Measure for left boundary mesh with subdomains_l assigned
dx
Measure for WB mesh with subdomains assigned (Used in defining weak form *dx(i) mean integration over mesh elements with layup id i)
nullspace_l
contain 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
a
Bilinear weak form for WB mesh - a(dv,v_)
F2
Linear 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
v0
Stores the solved V0[ndofs_WBmesh,p] in ufl function form for each load case
v2a
UFL function defined over V (functionspace_WB mesh) - Output by v2a.vector[:]
bc
Dirichlet 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