Flux Corrected Transport in Elmer

Discussion about coding and new developments

Flux Corrected Transport in Elmer

Postby raback » 01 Mar 2013, 14:15

Hi All,

There is a 1st version of flux corrected transport (FCT) in Elmer in the current trunk version. For the theory see, for example
http://www.mathematik.tu-dortmund.de/pa ... n2011b.pdf

Now this algorithm is intended for advection dominated equations where the standard stabilization methods introduce too much artificial diffusion. FCT is monotonicity conserving. Therefore a prototype problem which FCT solves is case where the field value (say temperature) unphysically goes beyond given initial min/max values. Generally FCT ensures that fluxes never go against the gradient.

To take FCT into use say in Solver section
Code: Select all
  Linear System FCT = Logical True

You should also turn off other stabilization methods, and preferably use the following time-discretization method
Code: Select all
  Timestepping Method = newmark
  Newmark Beta = 0.5
  Bdf Order = 1

Additional keywords (for deeper investigation) in Solver section include:
Code: Select all
  FCT Correction Symmetric = Logical False
  FCT Correction Skip = Logical False
  FCT Correction Save = Logical True

So far this is still experimental, and also works only in serial. However, it should be mature enough for testing.

Site Admin
Posts: 3111
Joined: 22 Aug 2009, 11:57
Location: Espoo, Finland

Re: Flux Corrected Transport in Elmer

Postby amrueda » 25 Jun 2016, 01:56

Hello Peter,

I was just implementing the FCT Method in Elmer for an advection dominated problem that I have (Chemotaxis+Haptotaxis), when I saw your post of 2013!! :)
I have so many questions:

  • Have you worked further on this?
  • Is FCT already available for parallel computing in Elmer?
  • I have actually already programmed a beta version of the Kuzmin method inside my Solver. The inputs are the mass matrix, the stiffness matrix contribution due to diffusion, and the stiffness matrix contribution due to advective and reactive terms. Do you also read these matrices separately or how does your method calculate the artificial diffusion operator?
  • Since Kuzmin recommends using the solutions of the two previous time steps in order to calculate the fluxes for the first iteration (see equatiobn 44 of http://citeseerx.ist.psu.edu/viewdoc/download?doi=, I have been wondering if there is an easy way of reading the solution of time step n-1 without having to store it in a file. I already know that the solution of the time step n can be read using:
    Code: Select all

Thank you very much!
Kind regards,

Posts: 5
Joined: 19 Apr 2016, 02:43
Location: Colombia

Re: Flux Corrected Transport in Elmer

Postby raback » 05 Jul 2016, 11:45

Hi Andrés

Sorry for the late answer. It is interesting that you're working on the same topic. Maybe there could be some synergies between the two branches.

Some quick answers:
1) No. This was an agile attempt and since it was not really seriously taken into use I had no reason to push it further.

2) No. The essential part of the code is FCT_Correction() in SolverUtils.F90, see
https://github.com/ElmerCSC/elmerfem/bl ... rUtils.F90
The subroutine includes a low-level treatment of the CRS matrices - not a pretty routine. The problem is that these treatments should include parallel communication in case the matrix is splitted between several partitions.

3) The implementation saves the full stiffness matrix and mass matrix. I don't save diffusion/reaction/convection terms separately. The antidiffusive part is recognized on-the-fly as the antisymmetric part of the stiffness matrix.

4) If you regroup Eq. (44) you get something like (u^n-u^{n-1})/dt. This is computed as an auxiliary field "udot" in the routine. I don't know how it compares.

Hope this helps. I'm happy to ellaborate further.

Site Admin
Posts: 3111
Joined: 22 Aug 2009, 11:57
Location: Espoo, Finland

Return to Software development

Who is online

Users browsing this forum: No registered users and 1 guest