Feel++ est un langage dédié (DSEL) à la résolution d'équations différentielles partielles à l'aide de méthodes de Galerkine généralisées [1],[2],[3],[4] (i.e. fem, hp/fem, méthodes spectrales) écrit en C++.

Feel++

Informations
Environnement Linux, Mac OS X.
Type Calcul numérique
Licence LGPL/GPL
Site web www.feelpp.org

Histoire

modifier

Exemple

modifier

Voici un exemple de programme pour résoudre un laplacien avec le choix d'une condition de type dirichlet homogène sur un carré unité (voir Manuel en ligne Feel++).

using namespace Feel;

int main(int argc, char**argv )
{
    Environment env( _argc=argc, _argv=argv,
                     _desc=feel_options(),
                     _about=about(_name="mylaplacian",
                                  _author="Feel++ Consortium",
                                  _email="feelpp-devel at feelpp.org"));
    // create mesh
    auto mesh = unitSquare();

    // function space
    auto Vh = Pch<1>( mesh );
    auto u = Vh->element();
    auto v = Vh->element();

    // left hand side
    auto a = form2( _trial=Vh, _test=Vh );
    a = integrate(_range=elements(mesh), _expr=gradt(u)*trans(grad(v)) );

    // right hand side
    auto l = form1( _test=Vh );
    l = integrate(_range=elements(mesh), _expr=id(v));

    // boundary condition
    a+=on(_range=boundaryfaces(mesh), _rhs=l, _element=u, _expr=constant(0.) );

    // solve the equation a(u,v) = l(v)
    a.solve(_rhs=l,_solution=u);

    // export results
    auto e = exporter( _mesh=mesh );
    e->add( "u", u );
    e->save();
}

Voir aussi

modifier

Références

modifier
  1. Di Pietro, D. A., Gratien, J. M., & Prud’Homme, C. (2013). A domain-specific embedded language in C++ for lowest-order discretizations of diffusive problems on general meshes. BIT Numerical Mathematics, 53(1), 111-152.
  2. Prud’Homme, C., Chabannes, V., Doyeux, V., Ismail, M., Samake, A., & Pena, G. (2012, December). Feel++: A computational framework for galerkin methods and advanced numerical methods. In ESAIM: Proceedings (Vol. 38, pp. 429-455). EDP Sciences.
  3. Samake, A., Bertoluzza, S., Pennacchio, M., Prud’Homme, C., & Zaza, C. (2013). A Parallel Implementation of the Mortar Element Method in 2D and 3D. ESAIM: Proceedings, 43, 213–224. doi:10.1051/proc/201343014
  4. Daversin, C., Veys, S., Trophime, C., & Prud’Homme, C. (2013). A Reduced Basis Framework: Application to large scale non-linear multi-physics problems. ESAIM: Proceedings, 43, 225–254. doi:10.1051/proc/201343015

Liens externes

modifier