Precice fails with a moving back in time error

Hi,

I am writing a adapter that reads the simulation data from the WRF simulation, and then could be ported to a local-scale fluid simualtion, say using OpenFOAM.

Since I requires the WRF simulation to set the time interval for the data exchange, and the OpenFOAM side should subcycle. The thing is that the WRF side controls the simulation time step with a REAL (in fortran) variable, and I have to upgrade it to double precision to collaborate with the PreCICE. When I did that, a very small resiudal for the precision upgrade appears, which then make the OpenFOAM run with a very very small time step (normally with a time step of 10e-7 s). I have no choice, but round the time step that the WRF side tells the PreCICE (currently I left three digits) by,

wrf_time_step = DBLE( NINT(time_step * 1000.0D0) ) / 1000.0D0

when runing my adapter with a real WRF simulation case, a wierd error occurs reporting

ASSERTION FAILED
Location: void precice::impl::ParticipantImpl::handleDataAfterAdvance(bool, bool, double, double, const precice::cplscheme::ImplicitData&)
File: /work/home/trs001/apps/precice-3.1.1/src/precice/impl/ParticipantImpl.cpp:435
Expression: math::greater(timeSteppedTo, timeAfterAdvance)
Rank: 0
Arguments:
0: “We must have moved back in time!” == We must have moved back in time!

is there an explaination of the error, and suggestions of modification are warmly welcome

Does this trick help?

(of course, we need to replace this assertion with a meaningful error message)