In this paper I will give a short overview to the project I made of optimization of LA-156 Wing skin upper panel from this work using Abaqus FEA and python scripting.
In this paper, was observed analysis of a composite three-layer panel of the La-156 wing skin lower panel loaded with uniformly distributed pressure. It is necessary to carry out the design calculation by the finite element method (hereinafter FEM) with iterative change of some initial data. Initial data were taken from the work LA-156 Wing skin.
Aircraft wing design Scheme
Wing airfoil – NACA 2216.
Root chord, mm | 1925 |
---|---|
Edge chord, mm | 1025 |
Console length | 270 |
The model for the analysis was imported from the CATIA V5 system, so before starting the analysis it is necessary to specify the lines of the beginning and ends of the spar, walls and ribs. Luckily, these softwares were developed with one company, so I don’t need to convert my model to another format. The percentages are shown in table 2:
Lead edge, %* | 5 | Back edge, %5 | 95 |
---|---|---|---|
1 rib opening, %** | 6,5 | 1 rib ending, %** | 8 |
2 rib opening, %** | 26,5 | 2 rib ending, %** | 28 |
3 rib opening, %** | 47 | 3 rib ending, %** | 48,5 |
4 rib opening, %** | 63,5 | 4 rib ending, %** | 65 |
5 rib opening, %** | 90 | 5 rib ending, %** | 91,5 |
where, %* - along chord, %** - along console. The pressure varies from 0.92 MPa on the wing tip to 0.07 MPa on the rear panels. In this paper, the maximum was taken into account.
Tension elastic modulus | Et, GPa | 58 |
---|---|---|
Compression elastic modulus | Ec, GPa | 57,8 |
Transversal elastic modulus | G, GPa | 10,49 |
Tension critical stress along fiber | Ft1, MPa | 904 |
Compression critical stress along fiber | Fc1, MPa | 128 |
Tension critical stress across fiber | Ft2, MPa | 904 |
Compression critical stress across fiber | Fc2, MPa | 128 |
Transversal critical stress | F12, MPa | 176 |
Poisson coefficient | nu_xy | 0,06 |
Mono-layer thickness | d0, mm | 0,42 |
Density | po, kg/mm3 | 1335 |
In the modeling three-layered composite (hereinafter CM) panel has been taken some assumptions. Since the panel is connected to the spar, 2 walls and 5 ribs, in these places there can not be filler, since it is not able to transfer the load between the skin and the power sets, in these areas filler is truncated. The structure of the panel becomes segmented – 12 segments of foam filler are placed within the panel. Modeling such a structure for FEM analysis is a very time-consuming and not entirely justified task, since it takes a lot of time both for modeling and calculation, and the results can be incorrectly interpreted due to incorrect display of the operating stresses in the areas of stress concentrators – at the boundaries of segments.
In this regard, the modeling of a three-layer panel in this work takes place by introducing a filler as one of the layers of the composite. Abaqus allows to create layered profiles with the “Create composite layer”command.
The load is modeled as a uniform pressure , the boundary conditions (hereinafter, BC) – by fixing all the movements and rotations of the connection sections of the wing skin panel with the power elements Such GU correspond to reality, because the type of connection – adhesive, provides load transfer without displacements and turns.
The type of finite elements is set to quadrangular – since the panel has no stress concentrators, and it itself presented as curved in the plane quadrangular surface. The type of finite element approximation is the quadratic approximation of displacements within a single element. The size of the finite elements (FE) is given by the variable between iterations. For design iterations, the size of the FE set to be not more than 5% of the minimum (1025) overall panel size – 44mm – value set by ABAQUS as default for the initial iterations fits quite fine.
This panel has usual for most composite wing panel connection type - glue connection with ribs and longeron, so BC for this panel is next:
When the scripts generation from variables and templates is configured, the results search in results file is configured, in fact it is enough to write a cycle of successive calls of these functions in the executable file in order to automate the process. But in this project it is necessary to optimize the result by changing initial parameters.
There are many ways of optimization, their number depends only on engineer imagination. For example, we can set the stability calculation, and change the filler thickness based on the results from stress loss of stability. We can record the results of successive thickness increasing and reinforcement layers (RL) increasing, output the results as a graph with the axes of the resulting strength and mass, and select a point with a minimum mass. But in this project we will change only the number of layers and their orientation. The thickness of the filler is selected as 12 mm. Assume that this parameter is immutable.
The orientation angle optimization looks as follows:
As can be seen from the requirement abowe, it is necessary to implement 2 different iterative systems, one without the condition – the search of the angle regardless from results, and one conditional, the search of thicknesses depending on results. This was implemented 2 functions, conditionals (next code fragment) and unconditional.
def find_opymal_orient (params, angle_range):
global n
for fi in angle_range:
n += 1
print('Set up Ply3 and Ply6 as {}°, and Plyes 4 and 5 as {}°'.format(fi, -fi))
params['Pl_or']['Ply3'] = fi
params['Pl_or']['Ply4'] = -fi
params['Pl_or']['Ply5'] = -fi
params['Pl_or']['Ply6'] = fi
print('Generate scripts')
sctipt_name = Generate_scripts(params, n)
print('Start a calculation in Abaqus')
command = 'abaqus cae noGUI=' + sctipt_name
os.popen (command, 'w') #DELEGATION OPERATION TO ABAQUS
find_or_delay (None, 'Print' + str(n) + '.png')
print('\nCalculation ', n, 'is done\n')
print('THSAI =', '\n', parser_res('abaqus.rpt')[1], '\n')
results = parser_res('abaqus.rpt')[0]
min_THSAI = min(results.values())
iter_num_min_val = find_key_value(results, min_THSAI)
fi_min_val = iter_num_min_val -1
fi_opt = angle_range[fi_min_val]
print('\n', iter_num_min_val, ' -- number of iteration with the smallest value of result')
print('this iteration correspond to angle of ', fi_opt, '\n')
return fi_opt, results, min_THSAI
Optimization Function of the orientation angle
The function of thickness increasing won’t be given here, because it is not too different from this. However, the full code and the executable file, will be provided in the Application What this feature does in detail:
This panel with a thickness of 12 mm filler withstands specified loads and pressure with the number of layers equal to 2 pieces, and since it was a textile, its optimal stacking angle is 0°. It is obvious that this program will not optimize the panel, it will check all the angles, make sure that at 0° and 90° the results are equal and minimal, and the second function will not even starts at all, because the margin of safety is greater than 1.
In this regard, as an example, was analyzed model with a glass fiber material (E-glass 55%) with a filler thickness of 12mm. Characteristics of which are given in table 4.
Tension elastic modulus | Et, GPa | 41 |
---|---|---|
Compression elastic modulus | Ec, GPa | 10.4 |
Transversal elastic modulus | G, GPa | 4.3 |
Tension critical stress along fiber | Ft1, MPa | 1140 |
Compression critical stress along fiber | Fc1, MPa | 620 |
Tension critical stress across fiber | Ft2, MPa | 39 |
Compression critical stress across fiber | Fc2, MPa | 128 |
Transversal critical stress | F12, MPa | 89 |
Poisson coefficient | nu_xy | 0,06 |
Mono-layer thickness | d0, mm | 0,42 |
Density | po, kg/mm3 | 1970 |
The file with the results will be shown in Appendix, and here is the image of the last iteration with optimal stacking angle and the thickness of the bearing layers.