I am working with a code that solves diffusion/reaction equations on a 2D unstructured mesh. Due to the stiffness of some of the processes, I start with time steps near 1e-13, and end with a final time in the millisecond range with time steps near 1e-8.

The issue appears in that the problem is also, what I would like to call geometrically stiff. During the first ~250 ns of simulation I require a very fine mesh to resolve a geometric characteristic of the forcing function. After this time, however, the forcing of the system is approximately zero, and I no longer need the spatial resolution.

The fine mesh takes about 2 weeks to run through that first 250 ns. The coarse mesh takes 2-4 weeks to run the entire simulation out to 2.5 ms (an order of magnitude speed up). Running an adaptive mesh is not possible without a serious rewrite of the code (currently beyond my skillset as well), however there are utilities for me to restart a simulation. What I am considering doing is running the fine mesh out until it is no longer needed, taking the restart dump file, interpolating it onto the coarse mesh, then restarting to let it run out to the final time we want.

I can estimate the error in my interpolation fairly easily depending on my interpolation method, however I am unsure of how to estimate the error that is propogated once I begin time-stepping again. I am particularly worried about the smoothing on variables such at temperature will have, since many of my process rates are exponentially dependent on it. My question is, how do I estimate how some fixed error propogates through my stiff system without running multiple cases (computationally infeasible at the present time).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.