Skip to content

Conversation

@totork
Copy link

@totork totork commented Nov 7, 2025

This PR is aiming to add the following things:

  • 1D FCI tests for parallel flow, heat conduction, ion/electron viscosity. Amid these tests, changes for the Div_par_mod operator are introduced that allows the use of a dissipative form. If this is used, the 2nd order convergence is not achieved.
  • 2D FCI tests for the perpendicular diffusion of density and pressure. During the tests, it appeared that the dagp operator is not properly working for slab grids and another operator is introduced (even though intermediately) to cross check.
    - Both tests have their required files are tar files added.
  • For these tests, I introduced some variables that allows me to disable the time evolution or the double adding of source terms

A crucial physics change is the use of only the self-collision time for each species conduction/viscosity. This should be in line with Braginskii? The proper treatment shall be pulled from master, but it is getting refactored now

  • I began working on the relax potential component.
  • Added option to not extrapolate into sheath. I had mixed experience with extrapolation in FCI, so it might be worth testing if simulations are unstable

totork added 30 commits October 30, 2025 15:09
@totork totork changed the title [WIP] FCI Tests and options for testing FCI Tests and options for testing Nov 22, 2025
@totork
Copy link
Author

totork commented Nov 22, 2025

I think it might be wise to keep it like this now. It is already quite alot of changes. Changed to be ready @bendudson @dschwoerer

continue;
}

//const Field3D tau = 1. / get<Field3D>(species["collision_frequency"]);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
//const Field3D tau = 1. / get<Field3D>(species["collision_frequency"]);


// Calculate ion collision times
const Field3D tau = 1. / floor(get<Field3D>(species["collision_frequency"]), 1e-10);
//const Field3D tau = 1. / floor(get<Field3D>(species["collision_frequency"]), 1e-10);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
//const Field3D tau = 1. / floor(get<Field3D>(species["collision_frequency"]), 1e-10);

ddt(NV) -= AA * FV::Div_par_fvv<hermes::Limiter>(Nlim, V, fastest_wave, fix_momentum_boundary_flux);


if (isMMS) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels a bit wrong, to use a different method in MMS testing than in production. The Div_par_fvv operator converges for non-FCI, so the issue must be in the FCI branch of Div_par_fvv.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I use the standard operator, I am getting first order convergence. I presume that this is due to the dissipation of the operator? @ZedThree had a similar experience with testing this operator. I could also use this operator and set the "accepted" mark to first order instead of second order.

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