Skip to content

Example 11: 2D Flapping Wing Pipeline

This example demonstrates the complete 2D aerodynamic and structural simulation pipeline for a membrane-like flapping wing. It utilizes the Vortex Lattice Method (VLM) for aerodynamic load estimation and maps these loads onto a 1D/2D structural mesh for Finite Element Method (FEM) analysis in CalculiX.

1. Structural Generation and Meshing

The wing's internal structure is generated using the recursive fractal generator (frond.generator.TreeGenerator). For the 2D case, these branches are idealized as 1D beam elements (B31) embedded within a 2D planar skin mesh (S3/S4).

Structural Mesh Placeholder Placeholder: 2D Skin and 1D Beam Mesh

2. Aerodynamic Loads (VortexLattice.jl)

The run_vlm_analysis module calls a Julia-based VLM solver to estimate the aerodynamic forces across the wing at a given angle of attack ($\alpha$) and velocity ($V$).

Aero Mesh Placeholder Placeholder: Aerodynamic Pressure Distribution

3. Load Mapping & Conservation

A critical feature of FROND is the conservative mapping of aerodynamic forces onto the structural skin mesh. Because the aerodynamic VLM grid and the structural FEM mesh do not align perfectly, we use Inverse Distance Weighting (IDW) to distribute the forces.

FROND actively verifies conservation. The difference between the total raw aerodynamic force and the mapped structural force is calculated via the L2 norm discrepancy:

$$ \Delta F = \lVert \sum \vec{F}{aero} - \sum \vec{F}{mapped} \rVert_2 $$

If the discrepancy exceeds a defined tolerance, a warning is raised, ensuring strict physical conservation of forces before FEM execution.

4. Kinematic Constraints (Web-to-Skin MPCs)

In the 2D simulation, the 1D beams must drive the deformation of the 2D skin. This is accomplished using Multi-Point Constraints (MPCs).

For every structural node $i$ on the 1D beam, we find its nearest neighbor $j$ on the 2D skin and enforce a rigid constraint (TIE) mapping their displacements:

$$ \vec{u}{skin, j} = \vec{u}{beam, i} $$ $$ \vec{\theta}{skin, j} = \vec{\theta}{beam, i} $$

These equations are automatically formulated into *EQUATION or *TIE entries in the CalculiX input deck, rigidly embedding the fractal structure into the membrane.

5. FEM Results & Visualization

CalculiX calculates the resulting stresses, strains, and displacements. FROND provides post-processing utilities (run_utils.split_vtu_file) to export these results into native PolyData (.vtp) for the beams and UnstructuredGrids (.vtu) for the skin.

By parsing the exact branch thickness parameters defined by the fractal generator, the script generates a TubeRadius array. When visualized in ParaView via the Tube filter, the 1D beams render as 3D cylinders with their exact, physically varying dimensions.

FEM Results Placeholder Placeholder: Deformed Wing and Structural Stresses