5-th Feel++ User Days

Good/Best practices with Feel++ programming and usage

Users

Installation

  • Containers : docker (laptop, workstation) / singularity (cluster,supercomputer)

  • Natively

    • Build config : Debug, RelWithDebInfo, Release

    • Compilers : gcc (>=6), clang

    • Dependencies : see Feel++ user-manual

Mesh and partitioning

For large meshes, we recommend to :

  • Generate the mesh outside your application (e.g. via Gmsh)

  • Partition the mesh using feelpp_mesh_partitioner (see the morning talk)

  • Execute your Feel++ programme using the hdf5+json files

./feelpp_myapp --gmsh.filename mymesh.json (1)
check the markers in mesh and in code

Configuration files

Wrong command line arguments do not generate any error messages, look at the log files for some hints
Option encapsulated in a prefix

Solver/Preconditioner

By default, LU solver is used and it can take a lot of memory. We recommend

  • Monophysic preconditioners :

    • Additive Schwarz : gasm, asm

    • Algebraic Multigrid : gamg, ml, boomeramg

  • Multiphysic preconditioners :

    • FieldSplit family : bJacobi, block Gauss-Seidel, Schur complement

    • Apply monophysic preconditioners in each block

Feel++ Support

Developers

Coding styles

C++14

Use C++14 features to make more readable, shorter codes

Debug mode

  • More checks at runtime (use DCHECK, DVLOG()…​)

  • Debugger (don’t forget to setup exception catch in debugger, e.g. catch throw in gdb)

  • Memory leaks

  • Address sanitizer (including leaks) in Debug mode

Pull Request

Apply some changes in the Feel++ library :

  • Create a fork

  • Propose a pull request

  • Merge by the Feel++ team after review

for any kind of changes including cleanup and janitory work ! this is part of the software life

Ctest

100% tests passed, 0 tests failed out of 361

Label Time Summary:
testalg              =  57.57 sec (22 tests)
testcore             =  97.19 sec (42 tests)
testcrb              =  78.62 sec (15 tests)
testdiscr            = 539.09 sec (107 tests)
testfilters          =  47.65 sec (14 tests)
testfit              =  11.00 sec (4 tests)
testintegration      =  43.12 sec (14 tests)
testinterpolation    = 112.36 sec (25 tests)
testleaks            =  54.58 sec (16 tests)
testls               =   8.97 sec (3 tests)
testmaterial         =   4.10 sec (2 tests)
testmath             =   4.03 sec (2 tests)
testmesh             =  75.75 sec (24 tests)
testmodels           =   5.55 sec (2 tests)
testopt              =   9.70 sec (4 tests)
testpde              =  17.42 sec (4 tests)
testpoly             =  59.11 sec (18 tests)
testts               =  13.06 sec (5 tests)
testvf               = 110.98 sec (38 tests)

Total Test time (real) = 1353.72 sec

The following tests did not run:
    183 - feelpp_test_space_0d-np-6 (Skipped)
    184 - feelpp_test_space_0d-np-1 (Skipped)
    292 - feelpp_test_bdf3-np-1 (Skipped)
    299 - feelpp_test_laplacianv-np-6 (Skipped)
    300 - feelpp_test_laplacianv-np-1 (Skipped)
    301 - feelpp_test_laplacian-np-6 (Skipped)
    302 - feelpp_test_laplacian-np-1 (Skipped)
    303 - feelpp_test_laplaciant-np-6 (Skipped)
    304 - feelpp_test_laplaciant-np-1 (Skipped)
ctest will be run every night in a near future and the results should remain the same if not better.

Documentation Writer

Asciidoc

Asciidoc

Call for Action using AsciiDoc

  • Write documentation in AsciiDoc (it starts with README.adoc)

  • Write Feel++ Blog in AsciiDoc.

    • Your (future) talks

    • You feedback on a conference you attended

    • Present your work

    • Present some feature(s)

    • Proposal: Simulation of the Month (aka SOM)