Skip to content

Conversation

@FilipovicLado
Copy link
Member

This pull request introduces a 3rd-order Runge-Kutta (RK3) time integration scheme for advection, offering higher-order temporal accuracy compared to the existing Forward Euler method. This also meant a slight refactoring of the Advect class. Added lsAdvectForwardEuler.hpp and lsAdvectRungeKutta3.hpp.

Modified Advect to take the adaptiveTimeStepSubdivisions parameter instead of adaptiveTimeStepThreshold. This way, user can choose how many steps should be taken per CFL during thin layer etching.

Added Python example for Epitaxy.

Added several advection tests:

  • SLLF
  • Forward Euler and Runge Kutta 3 time integration comparison in C++ and Python
  • Advection test in C++ and Python for all spatial schemes

@FilipovicLado FilipovicLado requested a review from tobre1 December 15, 2025 20:23
@tobre1
Copy link
Member

tobre1 commented Dec 16, 2025

Thanks for the PR!

I tested the new scheme, but I seem to get different results for RK3 and the normal (forward Euler) method. I tested the AirGapDepositionExample, but with a fixed advection time of 10 and I get the following results:
compare_RK3

Could there be something wrong with the timestep in the implementation?

@FilipovicLado
Copy link
Member Author

Thanks for the PR!

I tested the new scheme, but I seem to get different results for RK3 and the normal (forward Euler) method. I tested the AirGapDepositionExample, but with a fixed advection time of 10 and I get the following results: compare_RK3

Could there be something wrong with the timestep in the implementation?

Thanks for the test! There were two issues:

  1. The AirGapDepositionExample was based on number of advection steps and not the simulation time. This is now updated
  2. The RK3 advection step requires three sub-steps. However, instead of returning the total time during advection, the advect function was returning the duration of a single time step. This has been fixed and the RK3 matches the FE advected surface.

@FilipovicLado
Copy link
Member Author

There are several things that need to be adapted to have the RK3 time integration scheme work with ViennaPS. This is still work in progress and it should not be merged with master at this stage, otherwise ViennaPS workflows will be broken.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants