-
Notifications
You must be signed in to change notification settings - Fork 46
Example 3: airplane bearing bracket
This example shows approach to the topology optimization on the part downloaded from the Airplane Bearing Bracket Challenge where the task is described (geometry, material, load cases). Here steps to prepare the model in Salome and PrePoMax are described, followed by topology optimization and initial smoothing of the results in Paraview.
Geometry and meshing was done in the Salome from the step model. Since loads will be introduced through rigid body element, bearing is removed and its hole is simplified to a cylindrical shape. This model is partitioned to obtain design and non-design spaces (green). Non-design spaces are under the bolts and around the bearing. Geometry groups are created from them and also from faces to apply constraints (at bolts) and force at bearing.
For meshing those algorithms were used: Netgen 3D, Mefisto for 2D meshing, and Wire Discretsation with Local length 5 mm for rough mesh, resp. for fine mesh with Netgen 3D Parameters (max and min size 2 mm, fineness Very Fine) and Local length 2 mm for the line meshing. First order mesh was used to keep hardware resources rather for finer elements (provided that obtained solution should be later checked with 2nd order elements). Mesh groups were created from geometry groups.
Next, mesh was though unv format loaded to PrePoMax to create CalculiX input file. Material with E = 200000 MPa, ν = 0.27. Solid section is defined for the design space elements and second one for non-design space elements. Nodes on bolt “faces” are modeled as fixed. Load forces are transferred through the rigid body element with reference point in the bearing hole (101.6, -2.07, 0), which is for three load cases: F1 = (281, 0, 0), F2 = (298, -298, 0), F3 = (0, -562, 0).Bolts as rigid body elements with reference points: (36.83, -3.175, 8.255), (36.83, -3.175, -8.255), (0, -3.175, 9.525), (0, -3.175, -9.525).
Solver path and file name are set, e.g.
path_calculix = "C://soft//PrePoMax0.4.7//Solver//ccx_2.13_MT"
file_name = "Analysis-1.inp"
Material properties are set again for the design domain:
elset_name = "design_space"
domain_optimized[elset_name] = True
domain_density[elset_name] = [7.833e-12, 7.833e-6] # g/mm3
domain_FI[elset_name] = [[("stress_von_Mises", 1000.0e6)], [("stress_von_Mises", 1000.0)]]
domain_material[elset_name] = ["*ELASTIC \n200000e-6, 0.27" "*ELASTIC \n200000, 0.27"]
And for non-design domain:
elset_name = "nondesign_space"
domain_optimized[elset_name] = False
domain_density[elset_name] = [7.833e-12, 7.833e-6] # g/mm3
domain_FI[elset_name] = [[("stress_von_Mises", 1000.0e6)], [("stress_von_Mises", 1000.0)]]
domain_material[elset_name] = ["*ELASTIC \n200000e-6, 0.27" "*ELASTIC \n200000, 0.27"]
The mass goal is set to 10 % of initial mass
mass_goal_ratio = 0.1
Filtering is set with radius 10 mm (for rough mesh, or 4 mm for finer mesh with element size 2 mm)
filter_list = [["simple", 10]]
Optimization base is “stiffness” which means minimizing compliance
optimization_base = "stiffness"
After violating 1 element excessive stress (over 1000 MPa as set for the domains above) optimization will stop to decrease weight
FI_violated_tolerance = 1
decay_coefficient = -0.2
Each iteration 4 % of mass will be added and 8 % will be removed relatively to actual mass
mass_addition_ratio = 0.04
mass_removal_ratio = 0.08
ratio_type = "relative"
Results included to download are for rough mesh (for easy manipulation only with 14 000 elements), but result in the pictures below are for the finer mesh (with 166 000 elements). Running rough model took about 0.3 GB RAM and 16 minutes whereas fine model took 5.3 GB and 4,5 hour for the first order mesh, reps. 5,6 GB (shortly about 7.7 GB) and 36 h for the second order mesh. Results for the first and second order meshes were visually similar.
The file resulting_states.vtk can be used to display element states through iterations by use of Threshold filter in Paraview to hide void elements.
Resulting files from separate iterations, e.g. file073.vtk can be used to display failure criteria from within the 73rd iteration and can be used for initial smoothing in Paraview by Clip filter with Clip type set to Scalar on elemet_states_averaged_at_nodes scalars with value 0.5. Then when Excract Surface filter and Triangulate filter are used, the mesh can be exported to the stl (File / Save Data). However, I got the mesh which further needed to be repaired and the design is not fully satisfactory since only bolts on one side are attached.
Preprocessing files and output files for rough mesh are in the work_files.zip