Simplifying COOLFluiD

Proposals for simplifying the use/install of COOLFluiD.

Installing COOLFluiD

  • The modules/testcases catalogs should be created by check-testcases.pl and not autogen.pl
  • Keep the ability to use configure (and not only the autogen.pl script) in parallel to the autogen.pl script
  • Making configure smarter, automatially detecting libraries and automatically disabling libraries that cannot be built (not needing to set for example SAMGLSS=off)
  • Reducing the output of ./configure --help ; For example, instead of "./configure --disable-SAMGLSS --disable-CLapack --..." use "./configure --disable-modules=SAMGLSS:CLapack" This will reduce output in ./configure --help, and make using configure easier. (The new build system already handles this syntax)
  • Allowing the use of Petsc-2.2.1 by detecting the version (similar to hdf5 fix). This implies migrating the interface from Petsc 2.1 to Petsc 2.2.
  • In general, allowing dependencies to be of the version >= than and not = (unless really good reason)
  • Fixing the capitalization of the module names at least in EXTERNAL (e.g. configure) uses (suggestion: make everything lowercase outside of C++)
    • this is also "standard" for libraries (most often library names are all in lowercase)
  • Optional use of Curl library. Is currently obligatory. Shoulb be simple.
  • Modules should compile irrespectivelly of the path in which they are housed. Inclusion paths should NOT have Numerics/ or Physics/ but simply the name of the module dir, like "THOR2CFmesh/Converter.hh" and "Common/CFlog.hh", even when present in the same directory.
  • Remove MPICXX from configure (not standard); Instead change the default compiler CXX/CC search list when MPI is enabled

Developing COOLFluiD

  • figure out how to stop rewriting coolfluid_config.hh if nothing changed (otherwise it forces relinking of all applications and rebuild of module Common)
  • Module dependencies!
    • the low-level parallel support (PE, GlobalReduce, type registration, ...) must become independent and moved into its own library
    • parallel high level code (FileMeshReaderModule, ...) moves into the directory together with the parallel model independent code (e.g. FileMeshReaderModuleMPI -> IOUtils/FileMeshReaderModule)
  • Propose to remove all 3 level namespaces. Numerics and Physics should disappear, but not as directories.
  • Go over the source and try to cleanup name confusion (e.g. module suffix or not? (FileMeshWriterModule) / capitalisation / ...)
  • in headers for macros and global variables: (e.g. HAVE_MPI, restrict, ...) add CF_ prefix (avoid conflict with petsc/trilinos/...)

Using COOLFluiD

  • Make (or link) all loadable modules from a "module" directory so we can avoid the coolfluid.pl wrappers and specify module-dir by hand (also makes parallel debug/working with external tools easier)
  • Support simple (one-time assignable) variables in CFcase files
  • better control over when to save and what to overwrite (function generating frame number depending on iteration number/real time/...)
  • a few REALLY WELL over-documented CFcase files