A python Finite Element library inspired by jive
- Iuri Rocha (i.rocha@tudelft.nl)
- Frans van der Meer (f.p.vandermeer@tudelft.nl)
- Anne Poot
- Jelle Knibbe
- Andres Martinez Colan
The library works with modules and models. Modules define the flow of the program, e.g. the solvermodule
defines that a matrix and RHS vector need to be assembled after which a linear system of equation is solved. Models define how the main task are implemented, e.g. the elasticmodel
that assembles the stiffness matrix for an elasticity problem.
Modules and models interact through the take_action
function.
Problem-specific input is defined in a properties file (with .pro extension). The repository contains sample input files.
dofspace
: degree of freedom management to provide mapping between dof index and node number and dof typeshape
: abstract base class that defines the element typeconstrainer
: class that handles the application of constrains to the as-assembled stiffness matrix and force vector, and returns constrained versions of them ready for solving
Generates shape functions, gradients and weights. The following classes are implemented in paramshapes.py
:
Tri3Shape
: 3-node linear triangular shapeTri6Shape
: 6-node quadratic triangular shapeQuad4Shape
: 4-node linear quadrilateral shapeLine2Shape
: 2-node linear line shapeLine3Shape
: 3-node quadratic line shape
declare.py
: this is where the available models and modules are defined (this is needed to be able to construct a problem dependent module-model scheme)runPro.py
: simple master script that parses an input .pro file throughproputils.py
and callsmain.py
main.py
: defines chain of modules
Preprocessing
initmodule
: initializesglobdat
object with global data including mesh and nodegroups. Accepts mesh files fromgmsh
andmeshio
as well as manually generated mesh files (see syntaxis oninitmodule.py
)
Main solver routines
linbuckmodule
: solves eigenvalue problem for linear buckling analysissolvermodule
: assembles and solves system of equations on a given number of stepsnonlinmodule
: newton-raphson solver for nonlinear system of equationsmodeshapemodule
: solves eigenvalue problem for free vibration
Postprocessing
vtkoutmodule
: writes output to vtk file (compatible with paraview)viewmodule
: visualization of full field dataframeviewmodule
: dedicated postprocessor for frame structuresloaddispmodule
: stores load displacement data for specified nodegroups in globdatgraphmodule
: plots data for instance data stored by loaddispmoduleoutputmodule
: writes primary unknown to file
multimodel
: provides a fork from a single model into a list of modelselasticmodel
: assembles matrix for elasticity problembarmodel
: assembles matrix for a 1D bar problemtimoshenkomodel
: assembles matrix for a Timoshenko beam problemframemodel
: assembles matrix for frame problem with extensible Timoshenko elementsdirimodel
: implements Dirichlet boundary conditionsneumannmodel
: implements Neumann boundary conditions