preCICE allows participants to exchange data that is not associated with any mesh. Examples of such data are global background pressure (e.g. fluid-acoustic coupling) and angles between coordinate systems (e.g. fluid-structure coupling for rotor blades).
Configuration
Configuration of global data objects is described below with examples.
In order to use this feature, global data needs to be explicitly defined in the configuration file using the global-data
tag.
<precice-configuration dimensions="3" experimental="true">
<global-data:vector name="angles" />
...
Rest of the global data configuration steps are similar to the usual mesh-associated data as described in introduction to configuration.
...
<participant name="SolverOne">
<write-data name="angles" />
...
<participant name="SolverTwo">
<read-data name="angles">
...
<coupling-scheme:serial-explicit>
<exchange data="angles" from="SolverOne" to="SolverTwo" />
...
Since global data is not associated with any mesh, it should not be configured with the use-data
tag under the mesh
definition. Similarly, tags such as read-data
, write-data
, or exchange
require no mesh
attribute if used for global data.
API
The API functions writeGlobalData(...)
and readGlobalData(...)
enable exchange of global data analogous to the writeData(...)
and readData(...)
functions for mesh-associated data. For the above example, the API calls would be as follows.
For SolverOne:
...
participant.writeGlobalData("angles", writeAngles);
...
For SolverTwo:
...
participant.readGlobalData("angles", dt, readAngles);
...
Supported functionality
Global data exchange is supported in both explicit and implicit coupling schemes with serial as well as parallel coupling flow.
Within implicit coupling, convergence measures and acceleration are not yet supported.
Data initialization and time interpolation are also supported for global data.