SlideShare uma empresa Scribd logo
1 de 22
Numerical Simulation of Nonlinear
Mechanical Problems using Metafor
Romain BOMAN
Senior Assistant
University of Liège
Department of Aerospace and
Mechanical Engineering
CECI Meeting - 16th May 2014
Outline
2
1. Our in-house FE code : Metafor
2. Libraries and tools
3. Numerical examples
4. Future works
Outline
3
1. Our in-house FE code : Metafor
2. Libraries and tools
3. Numerical examples
4. Future works
Metafor
4
Implicit Finite Element code for the simulation of solids
submitted to large deformations
Metal Forming Applications
Biomechanics
Crash / Impact
•ALE formalism, remeshing,
•thermomechanical time integration schemes
•fracture modelling,
•crack propagation,
•contact algorithms
•Nonlinear constitutive laws,
•Mesh generation from medical images
•Enhanced finite elements
Fluid Structure
Interaction
•Fluid elements
•Monolothic scheme
Metafor
5
Version history
• 1992 : Version 1 (Fortran):
J.-P. Ponthot’s PhD thesis
• 1999 : As many versions as researchers
• 2000 : Rewritten as an Oofelie solver (C++)
• Today : Still one single version for 11 developers
How big is it?
• ~1500 C++ classes
• ~300k lines of code
• 52 libraries (.dll/.so)
• ~2200 FE models in the test suite
Operating Systems
Windows, Linux, MacOS
Users
• Researchers (PhD, FYP), students (FE course)
• Companies (ArcelorMittal, Techspace Aero, GDTech, …)
Outline
6
1. Our in-house FE code : Metafor
2. Libraries and tools
3. Numerical examples
4. Future works
Libraries and tools
7
Version management Makefiles/project
generator
3D display of meshes
Widgets, threads (GUI)
Interpreter &
user subroutines
Python interface
generator
Compiler, BLAS Parallelism (shared memory)
Threading
Building
Blocks
Parallel linear solver
PARDISO
Libraries and tools
8
Version management Makefiles/project
generator
3D display of meshes
Widgets, threads (GUI)
Interpreter &
user subroutines
Python interface
generator
Compiler, BLAS Parallelism (shared memory)
Threading
Building
Blocks
Parallel linear solver
PARDISO
Why TBB?
9
Shared Memory Parallel Programming with OpenMP
class Element; // a Finite Element
std::vector<Element*> els; // a set of Finite Elements
std::for_each(els.begin(), els.end(),
[&](Element *e)
{
e->getForces();
});
int nbelm = els.size();
#pragma omp parallel for
for(int i=0; i<nbelm; ++i)
{
Element *e = els[i];
e->getForces();
}
• C++ iterators are forbidden
• size_t cannot be used as a loop counter
• Calling a function in a for statement is not allowed
• Possibly bad load balancing
• Nested parallelism difficult to handle. Back to 1992!
Example of a loop over the set of Finite Elements…
ORIGINAL C++ LOOP OPENMP LOOP
Why TBB?
10
Intel Threading Building Blocks
• High Level Parallel programming library (SMP)
• Open Source!
• Highly portable (msvc, gcc, even old versions)
• Object oriented – similar to STL – tbb namespace )
• Task-oriented (instead of threads)
• Thread-safe C++ containers
• Efficient overloaded memory allocators (new, delete)
• Takes into account OpenMP libraries (Pardiso solver)
std::for_each(els.begin(), els.end(),
[&](Element *e)
{
e->getForces();
});
tbb::parallel_do(els.begin(), els.end(),
[&](Element *e)
{
e->getForces();
});
ORIGINAL C++ LOOP TBB LOOP
Same syntax as modern C++
Why TBB?
11
… and it is more efficient and reliable than OpenMP
Example: Matrix-vector product : a = B c (size = n)
• n=10000
 size(B)=763 Mb
• multiplication
performed 100x
Windows
Intel Core i7 960 3.2GHz (4 cores)
Hyper threading
Libraries and tools
12
Version management Makefiles/project
generator
3D display of meshes
Widgets, threads (GUI)
Interpreter &
user subroutines
Python interface
generator
Compiler, BLAS Parallelism (shared memory)
Threading
Building
Blocks
Parallel linear solver
PARDISO
Python interface
13
The main objects of Metafor are available through a python
interface for 2 main reasons
• Input files are written in python
• Less code: no complicated home-made parser required
• Full language: use of loops, conditional statements, objects in input
files
• Extensibility: calls to external libraries (Qt, wxWidgets, numpy, …)
• Glue language: calls to external codes (gmsh, SAMCEF, Abaqus,
matlab, etc.)
• Safety: errors are correctly handled (even C++ exceptions!)
• Extension of the code (“user subroutines”)
• A lot of C++ classes (boundary conditions, postprocessing commands,
geometrical entities, materials, meshers, etc.) can be derived by the
user in Python in the input file.
Python interface
14
Python scripts as input files
One Python class is automatically created by
SWIG for each C++ class
materials.i
%module materials
%{
%include "ElasticMat.h"
%}
#include "ElasticMat.h" materials.py
materials.pyd
from materials import *
mat = ElasticMat(E, nu)
model.setMaterial(mat)
model.run()
INPUT SCRIPT
(Compiled Python module)
(Shadow classes)
Adding one new material class requires
to add only two lines in the input file of
SWIG (material.i) to make it available
in Python!
Python interface
15
Python inheritance of C++ classes : “user subroutines”
SWIG can generate the (huge and complex) code required to derive
a C++ class in Python!
class ElasticMat
{
public:
virtual
T computeStress(T &strain);
};
C++ ELASTIC MATERIAL
from materials import *
class ElasticPlasticMat(ElasticMat):
def computeStress(self, strain):
# compute the stresses
# from the strains
# using python cmds here…
return stress
PYTHON ELASTICPLASTIC MATERIAL
This python code will be called
from the compiled C++ code!
Very useful for students (Final Year Projects)
A new material law is available
without any compiler!
Outline
16
1. Our in-house FE code : Metafor
2. Libraries and tools
3. Numerical examples
4. Future works
Fan Blade containment test
17
• Numerical simulation of an engine
validation test (FBO : Fan Blade Out)
• Implicit algorithm (Chung Hulbert)
• Fixed bearing & moving shaft
connected by springs
• Frictional contact interactions
between blades and casing
Buckling of a blade in LP compressor
18
• Thermo elasto visco plastic model
with damage / EAS finite elements
• We expect a lower buckling force
compared to a purely elastic model
 the total weight of the engine can
be safely decreased.
CPU time :
• 1 day 16 hours (1 core)
• 5h35’ (12 cores)
Roll forming simulation
19
Sheet Metal Forming : Simulation of a 15-stand forming mill
Outline
20
1. Our in-house FE code : Metafor
2. Libraries and tools
3. Numerical examples
4. Future works
Future?
21
Shared Memory Processing (TBB)
Go on with TBB parallelisation of loops…
• The contact algorithms are still sequential.
• Some materials are not thread safe.
Distributed Memory Processing (MPI?)
Nothing done until today…
• Domain decomposition should be implemented.
• How to manage contact efficiently?
22

Mais conteúdo relacionado

Mais procurados

Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1
Kanchilug
 

Mais procurados (20)

Tensorflow 2.0 and Coral Edge TPU
Tensorflow 2.0 and Coral Edge TPU Tensorflow 2.0 and Coral Edge TPU
Tensorflow 2.0 and Coral Edge TPU
 
Taming Snakemake
Taming SnakemakeTaming Snakemake
Taming Snakemake
 
型ヒントについて考えよう!
型ヒントについて考えよう!型ヒントについて考えよう!
型ヒントについて考えよう!
 
Test Driven Development of A Static Code Analyzer
Test Driven Development of A Static Code AnalyzerTest Driven Development of A Static Code Analyzer
Test Driven Development of A Static Code Analyzer
 
PYTHON CURRENT TREND APPLICATIONS- AN OVERVIEW
PYTHON CURRENT TREND APPLICATIONS- AN OVERVIEWPYTHON CURRENT TREND APPLICATIONS- AN OVERVIEW
PYTHON CURRENT TREND APPLICATIONS- AN OVERVIEW
 
Py Con 2009 Pumping Iron Into Python
Py Con 2009   Pumping Iron Into PythonPy Con 2009   Pumping Iron Into Python
Py Con 2009 Pumping Iron Into Python
 
How to be a bioinformatician
How to be a bioinformaticianHow to be a bioinformatician
How to be a bioinformatician
 
Python lecture 01
Python lecture 01Python lecture 01
Python lecture 01
 
Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.
 
Introduction python
Introduction pythonIntroduction python
Introduction python
 
Programming with Python: Week 1
Programming with Python: Week 1Programming with Python: Week 1
Programming with Python: Week 1
 
A peek into Python's Metaclass and Bytecode from a Smalltalk User
A peek into Python's Metaclass and Bytecode from a Smalltalk UserA peek into Python's Metaclass and Bytecode from a Smalltalk User
A peek into Python's Metaclass and Bytecode from a Smalltalk User
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1
 
introduction of python in data science
introduction of python in data scienceintroduction of python in data science
introduction of python in data science
 
A Sneak Peek of MLIR in TensorFlow
A Sneak Peek of MLIR in TensorFlowA Sneak Peek of MLIR in TensorFlow
A Sneak Peek of MLIR in TensorFlow
 
Python Introduction | JNTUA | R19 | UNIT 1
Python Introduction | JNTUA | R19 | UNIT 1 Python Introduction | JNTUA | R19 | UNIT 1
Python Introduction | JNTUA | R19 | UNIT 1
 
Python for All
Python for All Python for All
Python for All
 
A Peek into TFRT
A Peek into TFRTA Peek into TFRT
A Peek into TFRT
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Why learn python in 2017?
Why learn python in 2017?Why learn python in 2017?
Why learn python in 2017?
 

Semelhante a Numerical Simulation of Nonlinear Mechanical Problems using Metafor

Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
Dmitri Nesteruk
 

Semelhante a Numerical Simulation of Nonlinear Mechanical Problems using Metafor (20)

Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKenna
 
Making fitting in RooFit faster
Making fitting in RooFit fasterMaking fitting in RooFit faster
Making fitting in RooFit faster
 
6-9-2017-slides-vFinal.pptx
6-9-2017-slides-vFinal.pptx6-9-2017-slides-vFinal.pptx
6-9-2017-slides-vFinal.pptx
 
OpenMP And C++
OpenMP And C++OpenMP And C++
OpenMP And C++
 
CS4961-L9.ppt
CS4961-L9.pptCS4961-L9.ppt
CS4961-L9.ppt
 
Ccp4 mmdb-python
Ccp4 mmdb-pythonCcp4 mmdb-python
Ccp4 mmdb-python
 
pythonOCC PDE2009 presentation
pythonOCC PDE2009 presentationpythonOCC PDE2009 presentation
pythonOCC PDE2009 presentation
 
Return of c++
Return of c++Return of c++
Return of c++
 
Introduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdfIntroduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdf
 
C++Basics2022.pptx
C++Basics2022.pptxC++Basics2022.pptx
C++Basics2022.pptx
 
OpenSees: Future Directions
OpenSees: Future DirectionsOpenSees: Future Directions
OpenSees: Future Directions
 
Modern C++
Modern C++Modern C++
Modern C++
 
An Introduction to OMNeT++ 5.4
An Introduction to OMNeT++ 5.4An Introduction to OMNeT++ 5.4
An Introduction to OMNeT++ 5.4
 
An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0An Introduction to OMNeT++ 6.0
An Introduction to OMNeT++ 6.0
 
Async await in C++
Async await in C++Async await in C++
Async await in C++
 
C++ helps you to format the I/O operations like determining the number of dig...
C++ helps you to format the I/O operations like determining the number of dig...C++ helps you to format the I/O operations like determining the number of dig...
C++ helps you to format the I/O operations like determining the number of dig...
 
Unmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/InvokeUnmanaged Parallelization via P/Invoke
Unmanaged Parallelization via P/Invoke
 
Pysense: wireless sensor computing in Python?
Pysense: wireless sensor computing in Python?Pysense: wireless sensor computing in Python?
Pysense: wireless sensor computing in Python?
 
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
 
Introduction-to-C-Part-1.pptx
Introduction-to-C-Part-1.pptxIntroduction-to-C-Part-1.pptx
Introduction-to-C-Part-1.pptx
 

Último

Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
jaanualu31
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
Kamal Acharya
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
Epec Engineered Technologies
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
AldoGarca30
 

Último (20)

Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
kiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal loadkiln thermal load.pptx kiln tgermal load
kiln thermal load.pptx kiln tgermal load
 
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
NO1 Top No1 Amil Baba In Azad Kashmir, Kashmir Black Magic Specialist Expert ...
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
data_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdfdata_management_and _data_science_cheat_sheet.pdf
data_management_and _data_science_cheat_sheet.pdf
 
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills KuwaitKuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
Kuwait City MTP kit ((+919101817206)) Buy Abortion Pills Kuwait
 
Introduction to Serverless with AWS Lambda
Introduction to Serverless with AWS LambdaIntroduction to Serverless with AWS Lambda
Introduction to Serverless with AWS Lambda
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
Moment Distribution Method For Btech Civil
Moment Distribution Method For Btech CivilMoment Distribution Method For Btech Civil
Moment Distribution Method For Btech Civil
 
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLEGEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
GEAR TRAIN- BASIC CONCEPTS AND WORKING PRINCIPLE
 
Hospital management system project report.pdf
Hospital management system project report.pdfHospital management system project report.pdf
Hospital management system project report.pdf
 
School management system project Report.pdf
School management system project Report.pdfSchool management system project Report.pdf
School management system project Report.pdf
 
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
Unit 4_Part 1 CSE2001 Exception Handling and Function Template and Class Temp...
 
Standard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power PlayStandard vs Custom Battery Packs - Decoding the Power Play
Standard vs Custom Battery Packs - Decoding the Power Play
 
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
Navigating Complexity: The Role of Trusted Partners and VIAS3D in Dassault Sy...
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
Wadi Rum luxhotel lodge Analysis case study.pptx
Wadi Rum luxhotel lodge Analysis case study.pptxWadi Rum luxhotel lodge Analysis case study.pptx
Wadi Rum luxhotel lodge Analysis case study.pptx
 

Numerical Simulation of Nonlinear Mechanical Problems using Metafor

  • 1. Numerical Simulation of Nonlinear Mechanical Problems using Metafor Romain BOMAN Senior Assistant University of Liège Department of Aerospace and Mechanical Engineering CECI Meeting - 16th May 2014
  • 2. Outline 2 1. Our in-house FE code : Metafor 2. Libraries and tools 3. Numerical examples 4. Future works
  • 3. Outline 3 1. Our in-house FE code : Metafor 2. Libraries and tools 3. Numerical examples 4. Future works
  • 4. Metafor 4 Implicit Finite Element code for the simulation of solids submitted to large deformations Metal Forming Applications Biomechanics Crash / Impact •ALE formalism, remeshing, •thermomechanical time integration schemes •fracture modelling, •crack propagation, •contact algorithms •Nonlinear constitutive laws, •Mesh generation from medical images •Enhanced finite elements Fluid Structure Interaction •Fluid elements •Monolothic scheme
  • 5. Metafor 5 Version history • 1992 : Version 1 (Fortran): J.-P. Ponthot’s PhD thesis • 1999 : As many versions as researchers • 2000 : Rewritten as an Oofelie solver (C++) • Today : Still one single version for 11 developers How big is it? • ~1500 C++ classes • ~300k lines of code • 52 libraries (.dll/.so) • ~2200 FE models in the test suite Operating Systems Windows, Linux, MacOS Users • Researchers (PhD, FYP), students (FE course) • Companies (ArcelorMittal, Techspace Aero, GDTech, …)
  • 6. Outline 6 1. Our in-house FE code : Metafor 2. Libraries and tools 3. Numerical examples 4. Future works
  • 7. Libraries and tools 7 Version management Makefiles/project generator 3D display of meshes Widgets, threads (GUI) Interpreter & user subroutines Python interface generator Compiler, BLAS Parallelism (shared memory) Threading Building Blocks Parallel linear solver PARDISO
  • 8. Libraries and tools 8 Version management Makefiles/project generator 3D display of meshes Widgets, threads (GUI) Interpreter & user subroutines Python interface generator Compiler, BLAS Parallelism (shared memory) Threading Building Blocks Parallel linear solver PARDISO
  • 9. Why TBB? 9 Shared Memory Parallel Programming with OpenMP class Element; // a Finite Element std::vector<Element*> els; // a set of Finite Elements std::for_each(els.begin(), els.end(), [&](Element *e) { e->getForces(); }); int nbelm = els.size(); #pragma omp parallel for for(int i=0; i<nbelm; ++i) { Element *e = els[i]; e->getForces(); } • C++ iterators are forbidden • size_t cannot be used as a loop counter • Calling a function in a for statement is not allowed • Possibly bad load balancing • Nested parallelism difficult to handle. Back to 1992! Example of a loop over the set of Finite Elements… ORIGINAL C++ LOOP OPENMP LOOP
  • 10. Why TBB? 10 Intel Threading Building Blocks • High Level Parallel programming library (SMP) • Open Source! • Highly portable (msvc, gcc, even old versions) • Object oriented – similar to STL – tbb namespace ) • Task-oriented (instead of threads) • Thread-safe C++ containers • Efficient overloaded memory allocators (new, delete) • Takes into account OpenMP libraries (Pardiso solver) std::for_each(els.begin(), els.end(), [&](Element *e) { e->getForces(); }); tbb::parallel_do(els.begin(), els.end(), [&](Element *e) { e->getForces(); }); ORIGINAL C++ LOOP TBB LOOP Same syntax as modern C++
  • 11. Why TBB? 11 … and it is more efficient and reliable than OpenMP Example: Matrix-vector product : a = B c (size = n) • n=10000  size(B)=763 Mb • multiplication performed 100x Windows Intel Core i7 960 3.2GHz (4 cores) Hyper threading
  • 12. Libraries and tools 12 Version management Makefiles/project generator 3D display of meshes Widgets, threads (GUI) Interpreter & user subroutines Python interface generator Compiler, BLAS Parallelism (shared memory) Threading Building Blocks Parallel linear solver PARDISO
  • 13. Python interface 13 The main objects of Metafor are available through a python interface for 2 main reasons • Input files are written in python • Less code: no complicated home-made parser required • Full language: use of loops, conditional statements, objects in input files • Extensibility: calls to external libraries (Qt, wxWidgets, numpy, …) • Glue language: calls to external codes (gmsh, SAMCEF, Abaqus, matlab, etc.) • Safety: errors are correctly handled (even C++ exceptions!) • Extension of the code (“user subroutines”) • A lot of C++ classes (boundary conditions, postprocessing commands, geometrical entities, materials, meshers, etc.) can be derived by the user in Python in the input file.
  • 14. Python interface 14 Python scripts as input files One Python class is automatically created by SWIG for each C++ class materials.i %module materials %{ %include "ElasticMat.h" %} #include "ElasticMat.h" materials.py materials.pyd from materials import * mat = ElasticMat(E, nu) model.setMaterial(mat) model.run() INPUT SCRIPT (Compiled Python module) (Shadow classes) Adding one new material class requires to add only two lines in the input file of SWIG (material.i) to make it available in Python!
  • 15. Python interface 15 Python inheritance of C++ classes : “user subroutines” SWIG can generate the (huge and complex) code required to derive a C++ class in Python! class ElasticMat { public: virtual T computeStress(T &strain); }; C++ ELASTIC MATERIAL from materials import * class ElasticPlasticMat(ElasticMat): def computeStress(self, strain): # compute the stresses # from the strains # using python cmds here… return stress PYTHON ELASTICPLASTIC MATERIAL This python code will be called from the compiled C++ code! Very useful for students (Final Year Projects) A new material law is available without any compiler!
  • 16. Outline 16 1. Our in-house FE code : Metafor 2. Libraries and tools 3. Numerical examples 4. Future works
  • 17. Fan Blade containment test 17 • Numerical simulation of an engine validation test (FBO : Fan Blade Out) • Implicit algorithm (Chung Hulbert) • Fixed bearing & moving shaft connected by springs • Frictional contact interactions between blades and casing
  • 18. Buckling of a blade in LP compressor 18 • Thermo elasto visco plastic model with damage / EAS finite elements • We expect a lower buckling force compared to a purely elastic model  the total weight of the engine can be safely decreased. CPU time : • 1 day 16 hours (1 core) • 5h35’ (12 cores)
  • 19. Roll forming simulation 19 Sheet Metal Forming : Simulation of a 15-stand forming mill
  • 20. Outline 20 1. Our in-house FE code : Metafor 2. Libraries and tools 3. Numerical examples 4. Future works
  • 21. Future? 21 Shared Memory Processing (TBB) Go on with TBB parallelisation of loops… • The contact algorithms are still sequential. • Some materials are not thread safe. Distributed Memory Processing (MPI?) Nothing done until today… • Domain decomposition should be implemented. • How to manage contact efficiently?
  • 22. 22