# Iceberg ahead and new preCICE release v2.5

**URL:** <https://precice.discourse.group/t/iceberg-ahead-and-new-precice-release-v2-5/1133>\
**Category:** News\
**Tags:** volume-coupling, precice-v2\
**Created:** [August 11, 2022, 10:25am UTC](https://precice.discourse.group/t/iceberg-ahead-and-new-precice-release-v2-5/1133 "2022-08-11T10:25:58Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![uekerman](https://yyz2.discourse-cdn.com/free1/user_avatar/precice.discourse.group/uekerman/32/2199_2.png) [@uekerman](https://precice.discourse.group/u/uekerman)\
**Post date:** [August 11, 2022, 10:25am UTC](https://precice.discourse.group/t/iceberg-ahead-and-new-precice-release-v2-5/1133/1 "2022-08-11T10:25:59Z")

</div>

Iceberg ahead 🚢 … we will be breaking soon 😱. Breaking means we will go to v3.0 and improve the API and configuration. Many things have piled up and it is about time. Full support of [waveform iterations](https://doi.org/10.1002/nme.6443) requires some changes, for instance – but it is worth the hassle: This feature will be great. 😁

Downside is that this means you and we will need to update all adapters and the preCICE configuration files of all testcases. Of course, we will help you updating. And no worries yet, v3.0 is scheduled for spring 2023, well after the [preCICE Workshop 2023](https://precice.org/precice-workshop-2023.html). If you already want to get a glimpse on what will come, you can inspect the [milestone on GitHub](https://github.com/precice/precice/milestone/9).

To prepare for this big step, we decided to fix a last stable version before that:

> **[Release v2.5.0 · precice/precice](https://github.com/precice/precice/releases/tag/v2.5.0)**
>
> Dear preCICE community,
> We are happy to announce a new preCICE release v2.5.0. This release will be the last version 2.x release and we are looking forward to release preCICE version 3.0.0 througho...

As always, we again fixed a few bugs, but we also added a few features. A few highlights (or see the [complete changelog](https://github.com/precice/precice/blob/develop/CHANGELOG.md#250)):

## Connectivity-based volume data mapping: linear cell interpolation

As you know, nearest-projection data mapping is a cheap, second-order accurate data mapping requiring mesh connectivity. It, however, only works for surface-coupled problems. Now, we also have a similar data mapping method for volume-coupled problems:

```xml
<mapping:linear-cell-interpolation direction="read" 
                                   from="MyMesh1" to="MyMesh2" 
                                   constraint="consistent"/>

```

To define volume mesh connectivity, you now need to define triangles in 2D and tetrahedra in 3D. For the latter, we added a new API method:

```cpp
void setMeshTetrahedron(
      int meshID,
      int firstVertexID,
      int secondVertexID,
      int thirdVertexID,
      int fourthVertexID);

```

Much more is happening under the hood. Boris Martin ([@boris-martin](https://github.com/boris-martin)) implemented and tested this new data mapping in his [master’s thesis](https://mediatum.ub.tum.de/1685618). See also the [complete project overview](https://github.com/orgs/precice/projects/7). He also added a nice new tutorial on [flow-chemistry coupling with FEniCS](https://github.com/precice/tutorials/pull/278) to test the method.

## New version macros

A new interface file `precice/Version.h` provides version macros `PRECICE_VERSION_MAJOR`, `PRECICE_VERSION_MINOR`, and `PRECICE_VERSION_PATCH`, as well as the convenience macro `PRECICE_VERSION_GREATER_EQUAL(major,minor,patch)`. You can use it to distinguish different preCICE versions in adapters:

```cpp
#ifndef PRECICE_VERSION_GREATER_EQUAL
   // compatibility with older versions
   #define PRECICE_VERSION_GREATER_EQUAL(x,y,z) FALSE
#endif

#if PRECICE_VERSION_GREATER_EQUAL(2,5,0)
  setMeshTetrahedron(...)
#endif

```

`SolverInterface.hpp` and `SolverInterfaceC.h` include `Version.h` to simplify macro usage on older versions lacking the header. This can however lead to the error

```
precice/Version.h cannot be found

```

when building adapters or bindings. This typically means that you haven’t installed preCICE properly. [Read more about this error](https://precice.org/installation-linking.html#preciceversionh-cannot-be-found).

## Stay tuned

On our way to v3, we will need your feedback. When building your adapters or preCICE itself, you will get some deprecation warnings, linking to issues on GitHub. Please do let us know if you still need some of these API methods.

Follow us on [Twitter](https://twitter.com/preCICE_org) for more news regarding v3 and our [upcoming workshop](https://precice.org/precice-workshop-2023.html). But for now: summer! 🍸 🕶
