Beginner’s Guide#

Like any Python script, you should start by importing the core modules from the EasyFEA package:

from EasyFEA import Display, ElemType, Models, Simulations
from EasyFEA.Geoms import Domain

The most commonly used modules in EasyFEA are:

Display

Module containing functions used to display simulations and meshes with matplotlib (https://matplotlib.org/).

ElemType(value)

Implemented Lagrange isoparametric element types.

Models

Module containing constitutive laws for materials, including elastic, hyperelastic, damage, thermal, and beam materials.

Simulations

This module contains all available simulation classes.

Geoms

Module containing the geometric classes used to build meshes.

Let’s now create a 2D Mesh using a simple rectangular domain:

# ----------------------------------------------
# Mesh
# ----------------------------------------------
L = 120  # mm
h = 13

domain = Domain((0, 0), (L, h), h / 3)
mesh = domain.Mesh_2D([], ElemType.QUAD9, isOrganised=True)
Display.Plot_Mesh(mesh)
<Axes: title={'center': 'QUAD9: Ne = 81, Nn = 385'}, xlabel='$x$', ylabel='$y$'>
_images/begin_1_1.png

Next, define a linear ElasIsot material and set up the ElasticSimu simulation:

# ----------------------------------------------
# Simulation
# ----------------------------------------------
E = 210000  # MPa
v = 0.3
F = -800  # N

mat = Models.ElasIsot(2, E, v, planeStress=True, thickness=h)

simu = Simulations.ElasticSimu(mesh, mat)

Once the simulation has been set up, defining the boundary conditions, solving the problem and visualizing the results is straightforward.

nodesX0 = mesh.Nodes_Conditions(lambda x, y, z: x == 0)
nodesXL = mesh.Nodes_Conditions(lambda x, y, z: x == L)

simu.add_dirichlet(nodesX0, [0, 0], ["x", "y"])
simu.add_surfLoad(nodesXL, [F / h / h], ["y"])

simu.Solve()

# ----------------------------------------------
# Results
# ----------------------------------------------
Display.Plot_Mesh(simu, deformFactor=10)
Display.Plot_BoundaryConditions(simu)
Display.Plot_Result(simu, "uy", plotMesh=True)
Display.Plot_Result(simu, "Svm", plotMesh=True, ncolors=11)
<Axes: title={'center': '$\\sigma_{vm}$'}, xlabel='$x$', ylabel='$y$'>
_images/begin_3_1.png _images/begin_3_2.png _images/begin_3_3.png _images/begin_3_4.png

This script is available in the HelloWorld example.

For additional details, please refer to either the EasyFEA API documentation or the comprehensive collection of Examples.