preCICE

For Adapter Developers

Please refer to the documentation on https://precice.org/docs and to the documentation of the precice::SolverInterface SolverInterface. Refer to precice::tooling for the tooling API.

For Library Developers

The directory src contains the sources of preCICE. Every component has its own directory and namespace. The namespaces of internal components are all rooted in the project namespace precice. The library API of preCICE is contained in the directory and namespace precice, which brings together the functionalities of all components.

The following components currently exist:

  • acceleration provides various acceleration schemes.
  • action contains actions that can be executed to modify the exchanged data, can be written in Python.
  • com defines a data communication abstraction layer and implementations.
  • cplscheme takes coupling data and communication objects and implements coupling schemes for coupled simulations.
  • drivers holds the main function for building the precice-tools executable.
  • io implements import and export of the coupling mesh and data.
  • logging contains the code for the logging framework, based on boost logging.
  • m2n defines the logical part of the parallel communication between participants.
  • mesh holds the coupling mesh and coupling data classes, which form the base of all other components.
  • math provides general mathematical constants and functions.
  • mapping defines data mapping from points to meshes by using geometrical queries.
  • partition computes the partitioning of distributed meshes at initialization.
  • query holds classes to perform geometrical queries on geometries.
  • testing holds the code that configure the boost testing framework and the main function for the testprecice executable.
  • utils contains functionality serving as technical basis for all other components.
  • xml contains the XML configuration parser.

The components of preCICE have some common subdirectory/namespace structure. Some typical directories appearing are tests, config, and impl.

  • tests holds classes for automated testing of the corresponding component.
  • config provides functionality to configure the classes of a component from xml files.
  • impl contains implementation of a component which is not part of its interface and used only internally.