Skip to content

Neutral passive momentum#543

Open
Vandoo wants to merge 5 commits into
masterfrom
neutral_passive_momentum
Open

Neutral passive momentum#543
Vandoo wants to merge 5 commits into
masterfrom
neutral_passive_momentum

Conversation

@Vandoo
Copy link
Copy Markdown
Collaborator

@Vandoo Vandoo commented Apr 15, 2026

Add an option to solve only the neutral density equation, with ( Td = Td+ ) as described in https://doi.org/10.1016/j.nme.2024.101824 (the definition of D_n remains unchanged). The parallel mometum is passively given by the local reaction balance (Nn_eq) * U(the ion parallel velocity), assuming a highly collisional regime.

Initial tests in an early transition phase indicate that, for the same simulated physical time, this approach could reduce computational cost by ~60%.

Comment thread src/neutral_mixed.cxx
@@ -40,21 +42,28 @@ NeutralMixed::NeutralMixed(const std::string& name, Options& alloptions, Solver*
evolve_momentum = options["evolve_momentum"]
.doc("Evolve parallel neutral momentum?")
.withDefault<bool>(true);
passive_momentum = options["passive_momentum"]
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@Vandoo Thanks for this PR, I'd like to try it as well in my SOLPS comparison if I have the time. I have a few questions. First one - is there some reason why you lumped in the passive momentum and Tn = Ti together into one option? is it possible to separate them?

Comment thread src/neutral_mixed.cxx
// Equilibrium neutral density:
// Nn_eq = Ni * (Nn * nu_cx + Ne * nu_rec) / (Ni * nu_cx + Ne * nu_iz)
// Quasineutrality: Ni = Ne
Field3D Nn_eq = (Nnlim * nu_cx + Ne * nu_rec)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

How come you can't use the existing collisionality block? I wrote this collisionality thing, it's really messy and seeing it twice in one file makes it even worse! I need to refactor it when I have the time, but in the meantime maybe the first block can be reused?

Copy link
Copy Markdown
Collaborator

@dschwoerer dschwoerer left a comment

Choose a reason for hiding this comment

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

There is also some commented out code, that should be removed.

Comment thread src/neutral_mixed.cxx
Comment on lines 309 to 310
logPnlim.applyBoundary();
///////////////////////////////////////////////////////
// Calculate cross-field diffusion from collision frequency
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
logPnlim.applyBoundary();
///////////////////////////////////////////////////////
// Calculate cross-field diffusion from collision frequency
logPnlim.applyBoundary();
///////////////////////////////////////////////////////
// Calculate cross-field diffusion from collision frequency

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