You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: examples/ansys/forum.md
+17-6Lines changed: 17 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,18 @@
1
-
# Grid fin optimization with ANSYS SpaceClaim and PyANSYS
1
+
# Grid Fin optimization with ANSYS SpaceClaim and PyANSYS
2
2
3
-
We want to perform a parameter optimization on a SpaceX-style grid fin geometry to maximize stiffness while maintaining a strict mass limit. This ensures the fin remains rigid during re-entry Max-Q (maximum dynamic pressure) for robust aerodynamic control. For this optimization the starting and ending positions of all the bar segments can be control by setting its angular positions. Hence for 8 segments this results in 16 free parameters. Below there are two images of two selected initial conditions:
3
+
Eagle-eyed viewers of a SpaceX Super Heavy rocket launch may have noticed that during booster re-entry the speed at which the booster passes the ascent Maximum Dynamic Pressure altitude (Max-Q) is actually higher than ascent. This means that the always-deployed grid fins are experiencing their maximum loading during this critical stage of aerodynamic control guiding the booster back to the pad.
We are going to use software from the Ansys product collection along with Tesseracts to perform a parameter optimization on a SpaceX-style grid fin geometry. The goal is to maximize stiffness while maintaining a strict mass limit of 8 grid bars. This ensures the grid fin has a near constant freestream surface and remains rigid during re-entry Max-Q, keeping constant lift and drag characteristics, enabling robust and authoritative aerodynamic control. For this optimization the starting and ending positions of all the bar segments can be control by setting its angular positions. Hence for 8 segments this results in 16 free parameters. Below there are two images of two selected initial conditions:
4
10
5
11
| Grid initial conditions | Random initial conditions |
For the boundary conditions, we fix the nuckles as they would be bolted to the rocket by setting the corresponding mesh vertices to Dirichlet. Additionally we add an out of plane load at the very end of the fin geometry. The boundary conditions are illustrated here:
15
+
For the Boundary Conditions (BC) we fix the knuckles, as they would be attached to the rocket, by setting the corresponding mesh vertices to Dirichlet. Additionally we add an out of plane load at the very end of the fin geometry. Placing the load here allows us to approximate the aerodynamic forces experience by the whole grid fin whilst de-coupling the load from the bars movement. The boundary conditions are illustrated here:
10
16
11
17

12
18
@@ -15,7 +21,7 @@ To simulate the grid fin under Max-Q loads, we employ a linear elastic solver, a
15
21
16
22
## Workflow
17
23
18
-
To demonstrate a realistic engineering workflow, we perform a gradient based end to optimization that plugs into ANSYS SpaceClaim as a design software and uses PyANSYS to setup a differentiable finite element simulation. We containerize the individual components into Tesseracts and compose them together using Tesseract-JAX, a library that allows us to use the automatic differentiation (AD) capabilites of JAX in conjunction with Tesseracts. An illustration of the complete workflow is given below:
24
+
To demonstrate a realistic engineering workflow, we perform a gradient based end to optimization that plugs into ANSYS SpaceClaim as a design software and uses PyANSYS to setup a differentiable finite element simulation. We containerize the individual components into Tesseracts and compose them together using Tesseract-JAX, a library that allows us to use the automatic differentiation (AD) capabilities of JAX in conjunction with Tesseracts. An illustration of the complete workflow is given below:
19
25
20
26

21
27
@@ -27,9 +33,9 @@ The workflow involves three Tesseracts:
27
33
28
34
-**SDF & Finite Difference Tesseract** takes the same set of geometry parameters, passes them to the SpaceClaim Tesseract (could be any other Tesseract that returns a polygon mesh) and computes the signed distance field for the geometry on a regular grid. Additionally, the Tesseract is differentiable and computes Jacobian of the SDF field with respect to the design space parameters using finite differences. It has some additional features, such as precomputing the Jacobian while the rest of the pipeline is busy with computing primals and vector Jacobian products (vjp) of later steps. In theory, we can plug any Tesseract that conforms to the in and output schema of the SpaceClaim Tesseract.
29
35
30
-
-**PyMapDL Tesseract** takes a hex mesh, the boundary descriptions and computes the strain energy for all cells as well as the total compliance. It uses the PyMapDL library to setup a fully differentiable FEM solver for linear elasticity. More about this here: ...
36
+
-**PyMAPDL Tesseract** takes a hex mesh, the boundary descriptions and computes the strain energy for all cells as well as the total compliance. It uses the PyMAPDL library to setup a fully differentiable FEM solver for linear elasticity. More about this here: ...
31
37
32
-
Aditionally there is python code that is responsible for setting the boundary condtions, constructing the hex mesh and deriving the density from an SDF. The functions responsible for setting the boundary conditions and mesh construction do not need to be differentiable. This is because we are differentiating with respect to the quantities that are carried on mesh cells. We are not differentating with respect to the mesh structure or the boundary conditions. The functions that computes rho from SDF is similar to a sigmoid function and is made differentiable with JAXs AD.
38
+
Aditionally there is python code that is responsible for setting the boundary conditions, constructing the hex mesh and deriving the density from an SDF. The functions responsible for setting the boundary conditions and mesh construction do not need to be differentiable. This is because we are differentiating with respect to the quantities that are carried on mesh cells. We are not differentiating with respect to the mesh structure or the boundary conditions. The functions that computes rho from SDF is similar to a sigmoid function and is made differentiable with JAXs AD.
33
39
34
40
35
41
## Optimization
@@ -39,3 +45,8 @@ As a very first experiment we compare the compliance of the two initial conditio
39
45

40
46
41
47
If we apply
48
+
...
49
+
50
+
## Results
51
+
52
+
The optimization results show how a non-uniform grid pattern can provide a stiffer grid fin for the same mass. This stiffness is desirable as it will reduce deformation, keeping the lift and drag coefficients of the grid fin close to those assumed by the aerodynamic control laws.
0 commit comments