Page 1 of 1

Flux Corrected Transport in Elmer

Posted: 01 Mar 2013, 14:15
by raback
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.

-Peter

Re: Flux Corrected Transport in Elmer

Posted: 25 Jun 2016, 01:56
by amrueda
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/do ... 1&type=pdf), 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

    Solver%Variable%PrevValues(:,1)
Thank you very much!
Kind regards,

Andrés

Re: Flux Corrected Transport in Elmer

Posted: 05 Jul 2016, 11:45
by raback
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.

-Peter