This guide helps you to upgrade from preCICE 2.x to preCICE 3.x.


  • Migrate connectivity information to the vertex-only API. All setMeshX methods take vertex IDs as input and return nothing.
    • Directly define face elements or cells of your coupling mesh available in your solver by passing their vectices to preCICE, which automatically handles edges of triangles etc. See Mesh Connectivity for more information.
    • Rename setMeshTriangleWithEdges to setMeshTriangle and setMeshQuadWithEdges to setMeshQuad. The edge-based implementation was removed.
    • Use the new bulk functions to reduce sanitization overhead: setMeshEdges, setMeshTriangles, setMeshQuads, setMeshTetrahedra
  • Remove mapWriteDataFrom() and mapReadDataTo().
  • Remove initializeData() and initialize the data after defining the mesh and before calling initialize().
  • Remove isReadDataAvailable() and isWriteDataRequired(), or replace them with your own logic if you are subcycling in your adapter. <!–
  • preCICE does not reset your write data to 0 any longer. –>

preCICE configuration file

  • Replace mapping constraint scaled-consistent with scaled-consistent-surface.
  • Replace <use-mesh provide="true" ... /> with <provide-mesh ... />, and <use-mesh provide="false" ... /> with <receive-mesh ... />.

Language bindings