Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
6 views

Linear Modelling Assignment 1

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Linear Modelling Assignment 1

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

Assignment 1

AE4ASM003 Linear Modelling (incl. F.E.M)


Lennarth Cohen (5002591)
Delft University of Technology
1
Method and Discussion of Results

This report discusses the method that was used to compute (with a computer program)
the nodal displacements & the strain and stress in the elements of a bar element. Fur-
thermore, this report will discuss the two most important assumptions that were used
during the computation of the results and their impact. Then the produced computer
program will be verified with Abaqus simulations for a 4 element bar element. Lastly,
there will be a discussion on the effect of a constant bar area and the influence of
discretization of such a bar element[1].

1.1. Coding Collaboration and Choice of Language


The code of for this assignment was written together with students: Aleksei Esser &
Maxim Kokorev. The choice of programming language is Python, since this program is
familiar for all the three of us.

1.2. Method of Computation


In order to make the code easily readable and understandable, the input variables for
the code are located in one file (HW1ForStudents_5002591.py), and the functions that
compute the results are located in another file (HW1functions_5002591.py).

The code method consists of several crucial steps. These steps are:

• Step 1: Define the input of the to be calculated bar element. This consists of:
– Bar element length (L) in meters
– Number of discretization elements (Nelem)
– Young’s modulus (E) in Pascals
– Height of the bar element at begin and end location w1 and w2 in meters
– Thickness of the bar element (t) in meters
– Load applied on the rightmost element (F) in Newton
– Boundary conditions on nodes (BC), this input, is clearly defined in the code.
It consists of the node numbers in one list, and the applied displacements
on these nodes in another list.
– Note: meaning/location of the variables is clarified by Figure 1.1

1
1.2. Method of Computation 2

Figure 1.1: Bar element

• Step 2: Define the x_locations of the nodes, the areas of the elements and the
stiffnesses of the elements.
• Step 3: In this step, the node, and element numbering is defined. For simplicity,
we chose the node, and element numbering counting from left to right. Which is
graphically represented by Figure 1.2.

Figure 1.2: Node and element numbering and axis system

Furthermore, this node and element numbering can be used to define the con-
nectivity matrix. The connectivity matrix (C) can now found to be given by Equa-
tion 1.1.

 
1 2
 2 3 
 
C=
 3 4 
 (1.1)
 ... ... 
Nelem Nelem + 1

• Step 4: Setting up the local stiffness matrices of elements (Kilocal , ”i” indicates the
element number), and using the connectivity matrix to obtain the global stiffness
matrix. Since the stiffness matrix of each element is of the form:

( )
ki −ki
Kilocal = (1.2)
−ki ki
1.3. Assumptions of the Method 3

The global stiffness matrix will be a Nelem + 1 by Nelem + 1 matrix, with the rows
and columns corresponding to the node numbers of the bar element and the cor-
responding stiffnesses.
• Step 5: Apply Boundary Conditions Initially, without implementing the Bound-
ary Conditions the global stiffness matrix is symmetric, and thus non-invertible.
In this step, the Boundary Conditions that were given as input are used to make
the global stiffness matrix invertible, this is needed to compute the displacement
vector (which is needed to compute the strain and stress of the bar element).

If a Boundary Condition is applied to a node Nelem , the global stiffness matrix, and
displacement, (applied) force vector change as follows:

1 2 . . . Nelem Nelem + 1     


1 k11 k12 . . . k1i k1j u1 0 k1i
2 k21 k22 . . . k2i k2j  u2   0  k2i 
     
.. .. .. .. .. ..  ..   ..   .. 
. .  .  =  .  −  . u i
 . . . .      
Nelem  ki1 ki2 . . . kii kij  ui   0   kii 
Nelem + 1 kj1 kj2 . . . kji kjj uj F kji

In this matrix equation, the first matrix is the global stiffness matrix, the second
column vector is the displacement vector, the third column vector is the (applied)
force vector, and the last column vector is the ”additional force vector” that is
isolated from the global stiffness matrix due to the Boundary Condition application.
This additional force vector is the ”step” that makes the global stiffness matrix
invertible.
• Step 6: Vector result calculations Now the displacement, strain, and stress
vectors of the bar element can be obtained. This is done by first obtaining the
displacement vector from the equation above, then the strain of each element can
be obtained by Equation 1.3. The stress on each element is then simply obtained
by multiplying the strain of each element with the Young’s modulus (Equation 1.4).
ui+1 − ui
ϵ= (1.3)
Lelement,original

σ =ϵ∗E (1.4)
Note: The explanation of the steps above is the theory behind the code, to better
understand the way this method is programmed, please look at the code.

1.3. Assumptions of the Method


The two most important assumptions in the solving method of this problem are the
following:
• Cross-section estimation The areas of the elements are estimated using a lin-
ear interpolation between w1 and w2 , this introduces errors in the area and thus
stiffness estimation of the elements/whole bar. Graphically representing this in-
terpolation, it can be seen that the area is underestimated (Figure 1.3).
1.4. Verification of Code Results 4

Figure 1.3: Linear interpolation of w1 and w2

From this figure it can also be seen, when the number of discretization elements
is increased, this estimation error gets smaller and smaller.
• Linear deformation of individual elements The deformations are assumed to
be linear, which implies constant stiffness. However, in one element, this assump-
tion doesn’t hold due to the varying cross-section. It’s intuitive when considering
the original configuration: as we move toward the end of the bar, deformations
increase while stiffness decreases. Although this may slightly underestimate dis-
placement, the system still tends to overestimate overall due to the larger errors
in regions with smaller cross-sections.

1.4. Verification of Code Results


The simulation performed by the Python program on the case where the bar element
consist of 4 elements and there is a fixed Boundary Condition on node 1 (leftmost node)
will be the base of the verification for the code written in Python. When simulating this
case, the Python code gives the results for displacement, strain, and stress tabulated
in Table 1.1 and Table 1.2.
Table 1.1: Nodal displacement code
Table 1.2: Element strain and stress code
Node Displacement
Element Strain Stress
Number [mm]
Number [-] [MPa]
1 0.000000
1 0.000104490 7.31429
2 0.006531
2 0.000121905 8.53333
3 0.014150
3 0.000146286 10.24
4 0.023293
4 0.000182857 12.8
5 0.034721

The same simulation in Abaqus resulted in the results given in Table 1.3 and Table 1.4.
Additionally, the geometry that is simulated and colorplots of displacement, strain, and
stress results are shown in Appendix A.
1.5. Constant bar element case 5

Table 1.3: Nodal displacement Abaqus


Table 1.4: Element strain and stress Abaqus
Element Displacement
Element Strain Stress
Number [mm]
Number [-] [MPa]
1 1e-33
1 0.000104489 7.31422
2 0.00653055
2 0.000121902 8.53315
3 0.0141494
3 0.000146280 10.2396
4 0.0232919
4 0.000182857 12.8
5 0.0347205

When comparing the results of the Python code with the results obtained by Abaqus, it
can be seen that the results are very similar. The only after the 5th /6th decimal or so, de-
viations start to occur, which are most likely coming from the calculation methods used
by Abaqus and Python. This is for examples rounding of numbers when inverting matri-
ces in the NumPy module and general rounding of the numbers during calculations in
NumPy. We checked more cases (more elements and different Boundary Conditions),
which also indicated this fact, as the results of both the Python code and Abaqus re-
mained really close to each other. This implies that the Python code is hereby verified
and can be used for similar cases in which certain assumptions that were implied by
using this theory are valid.

1.5. Constant bar element case


If the area of the bar would be constant, it would not make a difference whether you
use one or multiple elements to model the problem. This comes from the fact that
there is no error in the estimation of the cross-sectional area along the x-direction of
the bar element. The constant cross-sectional area would mean that the stiffness of all
discretization elements is equal. This would mean that the results of such a simulation
do not change when varying the number of discretization elements.
Bibliography

[1] Peeters, D., AE4AMS003 Linear Modelling Assignment 1: bar element, 2024.

6
A

Figure A.1: Wireframe render simulation geometry

Figure A.2: Abaqus displacement result simulation case

Figure A.3: Abaqus strain result simulation case

7
8

Figure A.4: Abaqus stress result simulation case

You might also like