12. ../../../figures/logos/logoUDS../../../figures/logos/logoUJF../../../figures/logos/logoLNCMI../../../figures/logos/logoCMUC
../../../figures/logos/logoUPMC
HPC with feel++
Feel++ [et al., ]
Finite Element Embedded Library in C++ : a C++ library
Features
Generalized Galerkin (cG, dG) methods in 1D, 2D and 3D with meshes
from simplices and hypercubes
Domain specific language embedded in C++ for variational formulation
Seamless interpolation tool (space, toppological dimension and mesh)
integrated in the variational language
Concepts/Classes mimic closely the mathematics which allows for
genericity and to handle complexity (Operators, function spaces,
elements of function spaces ...)
Seamless transition from 1D to 2D to 3D thanks to the variational
language (e.g. same code used either for 2D or 3D computations)
http://www.feelpp.org
C. Caldini-Queiros, V. Chabannes (CEMRACS’12) VIVABRAIN August 28 2012 10 / 23
13. ../../../figures/logos/logoUDS../../../figures/logos/logoUJF../../../figures/logos/logoLNCMI../../../figures/logos/logoCMUC
../../../figures/logos/logoUPMC
HPC with feel++
Example : Stokes
find (u, p) ∈ Xh = Xu
h × Xp
h such that :
Ω
u : v −
Ω
p · v =
Ω
fv ∀v ∈ Xu
h
Ω
q · u = 0 ∀q ∈ Xp
h
form2( _test=Xh, _trial=Xh, _matrix=D ) =
integrate( _range=elements(mesh),
_expr=trace(trans(deft)*grad(v)) ) // Ω
u : v
-integrate( _range=elements(mesh),
_expr=idt(p)*div(v) ) //− Ω
p · v
+integrate( _range=elements(mesh),
_expr=id(q)*divt(u) ); // Ω
q · u
form1( _test=Xh, _vector=F ) =
integrate( _range=elements(mesh),
_expr=f*id(v) ); // Ω
fv
C. Caldini-Queiros, V. Chabannes (CEMRACS’12) VIVABRAIN August 28 2012 11 / 23
14. ../../../figures/logos/logoUDS../../../figures/logos/logoUJF../../../figures/logos/logoLNCMI../../../figures/logos/logoCMUC
../../../figures/logos/logoUPMC
HPC with feel++
Feel++ //
Contruction of partitioned mesh : use Gmsh
[Geuzaine and Remacle, 2009] with chaco or metis partitioners.
Degrees of freedom distribution :
Step 1 : build the local dof table with
ghost dofs
Step 2 : build the global dof table
without ghost dofs
the single global dof belongs to the process
of smallest rank
communication : update the id of
interprocess dofs on the global table
Algebraic parallel solver : Petsc libraries
[Balay et al., 2011, Balay et al., 2010, Balay et al., 1997, Smith, 2006]
C. Caldini-Queiros, V. Chabannes (CEMRACS’12) VIVABRAIN August 28 2012 12 / 23
26. ../../../figures/logos/logoUDS../../../figures/logos/logoUJF../../../figures/logos/logoLNCMI../../../figures/logos/logoCMUC
../../../figures/logos/logoUPMC
Conclusion
References I
Balay, S., Brown, J., , Buschelman, K., Eijkhout, V., Gropp, W. D., Kaushik, D., Knepley, M. G., McInnes, L. C., Smith, B. F., and Zhang, H. (2010).
PETSc users manual.
Technical Report ANL-95/11 - Revision 3.1, Argonne National Laboratory.
Balay, S., Brown, J., Buschelman, K., Gropp, W. D., Kaushik, D., Knepley, M. G., McInnes, L. C., Smith, B. F., and Zhang, H. (2011).
PETSc Web page.
http://www.mcs.anl.gov/petsc.
Balay, S., Gropp, W. D., McInnes, L. C., and Smith, B. F. (1997).
Efficient management of parallelism in object oriented numerical software libraries.
In Arge, E., Bruaset, A. M., and Langtangen, H. P., editors, Modern Software Tools in Scientific Computing, pages 163–202. Birkhäuser Press.
et al., C. P.
Feel++: The finite element embedded language (and library) in c++.
http://www.feelpp.org.
Geuzaine, C. and Remacle, J.-F. (2009).
Gmsh: a three-dimensional finite element mesh generator with built-in pre-and post-processing facilities.
International Journal for Numerical Methods in Engineering, 79(11):1309–1331.
Passat, N. (2005).
Contributiona la segmentation des réseaux vasculaires cérébraux obtenus en IRM. Intégration de connaissance anatomique pour le guidage
d’outils de morphologie mathématique.
PhD thesis, PhD thesis, Université Louis Pasteur de Strasbourg.
Smith, B. (2006).
Petsc introductory tutorial.
C. Caldini-Queiros, V. Chabannes (CEMRACS’12) VIVABRAIN August 28 2012 23 / 23