4634 add fuel ion equilibrium constraint - #4639
grmtrkngtn wants to merge 3 commits into
Conversation
…date associated outputs, labels and tests.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4639 +/- ##
=======================================
Coverage 49.92% 49.92%
=======================================
Files 151 151
Lines 30225 30242 +17
=======================================
+ Hits 15089 15099 +10
- Misses 15136 15143 +7 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@grmtrkngtn could you possibly explain (and justify) why the regression tests have changed results here? Its not immediately obvious why this has happened |
I noticed that too Tim, although they didn't seem to be significant changes - I can't explain it as these changes are not active in any of the regression tests! |
timothy-nunn
left a comment
There was a problem hiding this comment.
With these current changes it strikes me that the new constraint should always be active and that a sensible molflow_plasma_fuelling should be specified in each input file (or a sensible default applied).
There is also an inconsistency between models whether molflow_plasma_fuelling or molflow_plasma_fuelling_required is used.
If we use molflow_plasma_fuelling in the models, then I think the new iteration variable and constraint will always need to be active (and that should be documented).
If we use molflow_plasma_fuelling_required in the models, then the new iteration variable is not useful (unless I am missing something).
There was a problem hiding this comment.
@grmtrkngtn this will be where the changes have come from. Because the iteration variable and constraint is not on molflow_plasma_fuelling will always be the default value, whereas before it was molflow_plasma_fuelling_required which was calculated.
| self.data.physics.figmer, | ||
| _fusrat, | ||
| self.data.physics.molflow_plasma_fuelling_required, | ||
| self.data.physics.molflow_plasma_fuelling_equilibrium, |
There was a problem hiding this comment.
How come in vacuum we are using molflow_plasma_fuelling but here we use molflow_plasma_fuelling_equilibrium?
This makes fuel-ion equilibrium an explicit equality constraint in PROCESS.
Previously, the required plasma fuelling rate was calculated and set internally from the fusion rate and burnup fraction. This hides one of the coupled relationships required for PROCESS to arrive at a self-consistent solution.
The change separates:
molflow_plasma_fuelling, representing the plasma fuelling rate;molflow_plasma_fuelling_equilibrium, calculated from the plasma state.Constraint 93 then explicitly enforces fuel-ion equilibrium by requiring:
molflow_plasma_fuelling = molflow_plasma_fuelling_equilibriumThe equilibrium requirement is calculated in the physics model, while the constraint simply compares the two quantities.
Motivation
This is part of the work required to introduce a PROCESS solution mode for uncertainty-quantification evaluations.
For UQ, we want to evaluate PROCESS at sampled inputs without performing a full design optimisation. PROCESS must therefore be able to solve the coupled equations required for a physically self-consistent plant state independently of the optimisation problem.
Making fuel-ion equilibrium an explicit closure equation is one step towards separating:
solving the PROCESS model for a self-consistent state, from
optimising the design.
This will allow a future solution mode to solve the required internal equilibrium equations for each UQ sample while keeping the sampled/design quantities fixed.