FEEL++

Fiche dév Ens Sup - Recherche
  • Création ou MAJ importante : 02/07/09
  • Correction mineure : 07/09/11
Mots-clés

FEEL++ : Finite Element Embedded Library in C++

Ce logiciel a été développé (ou est en cours de développement) dans la communauté de l'Enseignement Supérieur et de la Recherche. Son état peut être variable (cf champs ci-dessous) donc sans garantie de bon fonctionnement.
  • Site web
  • Système : UNIX-like, MacOS X
  • Version actuelle : 0.9.23 - March 27 2010
  • Licence(s) : GPL, LGPL
  • Etat : diffusé, stable
  • Support : maintenu, développement en cours
  • Concepteur(s) : Christophe Prud'homme
  • Contact concepteur(s) : christophe.prudhomme@ujf-grenoble.fr
  • Laboratoire(s), service(s)... : LJK, EPFL, Universidad de Coimbra

 

Fonctionnalités générales du logiciel

Description générale

FEEL++ est une bibliothèque C++ pour la résolution des EDP par des méthodes de Galerkin généralisées telles que les méthodes des éléments finis simples et étendues (FEM et hp-FEM) et les méthodes spéctrales.

Fonctionnalités principales :

  • permet de résoudre des problèmes en 1D, 2D, 3D.
  • supporte différents types d'objets géométriques pour la discrétisation (simplexes et hypercubes).
  • supporte différents types de polynômes pour l'interpolation (Lagrange, Dubiner, Legendre)
  • permet l'utilisation de concepts mathématiques fonctionnels forts (opérateurs, espaces de fonctions, éléments d'espaces de fonctions..).
  • utilise aussi bien les méthodes continues que discontinues de Galerkin./li>
  • utilise son propre langage intégré au C++ ( DSEL : domain specific embedded language) à l'aide de FEEL++

 

Exemples

1. Calcul de $\int_\Omega x^2+y^2+z^2$ :

/*
* Compute \int f where f= x^2 + y^2 + z^2 with a quadrature that integrates exactely second order polynomials
*/
double local_intf = integrate( elements(mesh), _Q<2>(), Px()*Px() + Py()*Py() + Pz()*Pz() ).evaluate()(0,0);

2. Assemblage du laplacien, conditions aux limites de Dirichlet (formulation faible ou forte)

space_ptrtype Xh = space_type::New( mesh );
element_type u( Xh, "u" );
element_type v( Xh, "v" );
sparse_matrix_ptrtype D( M_backend->newMatrix( Xh, Xh ) );
form2( Xh, Xh, D, _init=true ) = integrate( elements(mesh), _Q<2*(Order-1)>(),
nu*gradt(u)*trans(grad(v)) );
// weak Dirichlet (Nitsche formulation)
form2( Xh, Xh, D ) +=
integrate( markedfaces(mesh,1), _Q<2*Order>(),
-(gradt(u)*N())*id(v) -(grad(v)*N())*idt(u) +penaldir*id(v)*idt(u)/hFace()) +
integrate( markedfaces(mesh,3), _Q<2*Order>(),
-(gradt(u)*N())*id(v) -(grad(v)*N())*idt(u) +penaldir*id(v)*idt(u)/hFace());
D->close();

Prérequis

Logiciels

Bibliothèques

  • Boost >= 1.37
  • Mpi (optional)
  • Petsc >= 2.3.3 (optional)
  • Trilinos (optional)

Pre/Post-Traitement

Formats de Pre-Processing

  • GAMBIT neutral
  • Gmsh

Formats supportés pour le Post-processing

  • EnSight (use then ensight and/or paraview for visualisation)
  • Gmsh
Contexte d’utilisation du logiciel

Distributions dans lesquelles est intégré Feel++

Plateformes :

Toutes machines UNIX/Linux 32 ou 64b, MacOS X and Windows(cygwin)

Logiciels connexes

ParaView
Logiciel libre pour la visualisation scientifique parallèle
http://www.paraview.org

Gmsh
Logiciel libre pour la CAO et la génération de maillage
http://geuz.org/gmsh/

Publications liées au logiciel

La description détaillée des publications est donnée dans la fiche anglaise

Consultez la...