Loading a Mesh

The next step is to load a mesh.

The loadMesh function has a _name option set by default as the default value of the --gmsh.filename option that point either to a .geo, either to a .msh, or a .h5 file.

Meshes in general are more detailed in this section.

auto mesh=loadMesh( _mesh=new Mesh<Simplex<2>> );

1. Exporting the Mesh for visualisation

See this section for more details about exporting and visualizing meshes.

2. Implementation

An implementation reads as follows:

#include <feel/feelcore/environment.hpp>
#include <feel/feelfilters/loadmesh.hpp>
#include <feel/feelvf/integrate.hpp>
#include <feel/feelvf/cst.hpp>

#include "ut.hpp"

int main( int argc, char** argv )
{
    using namespace Feel;
    
    // initialize Feel++ Environment
    Environment env( _argc=argc, _argv=argv,
                     _about=about( _name="mymesh" ,
                                   _author="Feel++ Consortium",
                                   _email="feelpp-devel@feelpp.org" ) );
   
                                   
    // tag::mesh[]
    // create a mesh with GMSH using Feel++ geometry tool
    auto mesh = loadMesh(_mesh=new  Mesh<Simplex<2>>);
    // end::mesh[]

    LOG(INFO) << "mesh " << soption(_name="gmsh.filename") << " loaded";
    using namespace Feel::vf;
    auto I1 = integrate( _range=elements( mesh ), _expr=cst( 1. ) ).evaluate();
    LOG(INFO) << "volume =" << I1;
    auto I2 = integrate( _range=boundaryfaces( mesh ), _expr=cst( 1. ) ).evaluate();
    LOG(INFO) << "surface = " << I2;

    using namespace boost::ut;
    "Mesh"_test  = [&] {
        expect( I1(0,0) == 4.00000000_d );
        expect( I2(0,0) == 8.00000000_d );
    };
}

and the associated config file

[gmsh]
hsize=1e-1
filename=$cfgdir/03-mymesh.geo