Welcome to EdelweissFE
EdelweissFE is a light-weight, platform-independent, parallel finite element framework. By default, it makes use of the Marmot library for finite element and constitutive model formulations.
EdelweissFE aims to be…
… a development and learning environment for constitutive models and finite elements,
… an easy to use tool for coupled problems,
… a learning platform for learning the finite element method,
… a very flexible tool for implementing and employing special techniques (e.g., the indirect displacement control technique), which are often more difficult and time consuming to implement in mature, MPI-parallelized codes,
… an efficient tool for nonlinear simulations up to medium sized problems (~ \(10^5\) degrees of freedom).
EdelweissFE does not want to …
… compete with more mature (MPI-parallelized) codes such as MOOSE, which are also compatible with the Marmot library, but less suitable as development environments. Usually, EdelweissFE is used for developing and debugging constitutive models until they meet the requirements for production runs on HPC system using more mature frameworks.
Execute a simulation
Run a simulation simply by calling
python edelweiss.py inputfile.inp
Example input file
examples/CantileverBeam/test3D.inp*material, name=LinearElastic, id=linearelastic, provider=edelweiss
**Isotropic material
**E nu -> elasticity module and poisson's ratio
1.8e4, 0.22
** make job
*job, name=c3d8job, domain=3d
** choose solver
*solver, solver=NIST, name=theSolver
*modelGenerator, generator=boxGen, name=gen
** set number of elements for directions: 400, 4, 4
nX =400
nY =4
nZ =4
** create model: length 500mm, with section of 5mm x 5mm
lX =500
lY =5
lZ =5
** use provider: edelweiss
elProvider =edelweiss
** use hexahedron element with 8 nodes and normal integration
elType =C3D8
*section, name=section1, material=linearelastic, type=solid
** assign linear elastic section to all elements
all
** displacement output for all elements
*fieldOutput
>>perNode, elSet=all, field=displacement, result=U, name=displacement
** create output data to open with paraview
*output, type=ensight, name=test
>>perNode, fieldOutput=displacement
>>configuration, overwrite=yes
** set step size between 1 and 1e-9, 1000 iterations, 25 max iterations and step length 1
*step, solver=theSolver
maxInc=1e0, minInc=1e-9, maxNumInc=1000, maxIter=25, stepLength=1
>>options, name=theSolver, extrapolation=off
** fix one side (fixed support)
>>dirichlet, name=Left, nSet=gen_left, field=displacement, 1=0.0, 2=0.0, 3=.0
** set load in z to 0.012N for all the points on right back
>>nodeforces, name=cloadTop, nSet=gen_rightBack, components='0, 0, .012', field=displacement
More example files can be found in the testfiles folder!