ukaea / PROCESS

PROCESS is a systems code at UKAEA that calculates in a self-consistent manner the parameters of a fusion power plant with a specified performance, ensuring that its operating limits are not violated, and with the option to optimise to a given function of these parameters.
https://ukaea.github.io/PROCESS/
MIT License
36 stars 11 forks source link

How to identify constraints or boundary which limit iteration? #3328

Open JaeBeom1019 opened 2 months ago

JaeBeom1019 commented 2 months ago

Hello,

Specifically, I would like to understand how to identify which constraints, equations, or boundaries might render further iterations impossible.

For example, I received the following warning messages as output after running:

******************************************** Errors and Warnings *********************************************

PROCESS status flag: Warning messages

ID LEVEL MESSAGE
150 2 CHECK: Lower limit of volume averaged electron temperature (te) has been raised
285 2 [tfcoil]: fiooic shouldn't be above 0.7 for engineering reliability.
244 2 PHYSICS: Diamagnetic fraction is more than 1%, but not calculated. Consider using...

While these warnings provide some insight, determining the specific constraints equation or iteration variable that limits the changes in the figure of merit remains challenging. For instance, I am puzzled as to why the electron temperature reached its lower limit when there appear to be no explicit constraints or boundaries set for it.

Any assistance or clarification you could provide on this matter would be greatly appreciated.

mkovari commented 2 months ago

Can you upload the OUT.DAT?

mkovari commented 2 months ago

150 2 CHECK: Lower limit of volume averaged electron temperature (te) has been raised This means that you have set the volume-averaged electron temperature (te) as an iteration variable, with the statement ixc = 4. The optimiser adjusts the variable its upper and lower bounds. The default bounds are 5-150 keV, given in PROCESS/source/fortran/iteration_variables.f90:

  subroutine init_itv_4
    !! <LI> ( 4) te
    use numerics, only: lablxc, boundl, boundu
    implicit none
    lablxc(4) = 'te            '
    boundl(4) = 5.000D0
    boundu(4) = 150.0D0
  end subroutine init_itv_4

You can change the bounds in the input file by setting, for example,

boundl(4) = 2      * Lower bound
boundu(4) = 20     * Upper bound

The message arises when the volume-averaged electron temperature falls below the pedestal temperature, which is generally not a good idea. The code has overriden the value of the lower bound. This is usually harmless, and does not require any action on your part.

mkovari commented 2 months ago

285 2 [tfcoil]: fiooic shouldn't be above 0.7 for engineering reliability. When a superconducting magnet is used, there needs to be a reasonable margin between the critical current density and the actual current density. This is discussed in Critical current density for the superconductor:

image

You should set the upper bound of fiooic no higher than 70% - for example: boundu(50) = 0.6 * Upper bound

mkovari commented 2 months ago

244 2 PHYSICS: Diamagnetic fraction is more than 1%, but not calculated. Consider using... This is a truncated version of: Diamagnetic fraction is more than 1%, but not calculated. Consider using idia=2 and ips=1. This is discussed in 'Bootstrap, Diamagnetic and Pfirsch-Schlüter Current Scalings' in Plasma Current Scaling Laws.

It is just a warning and can be ignored if you wish.

mkovari commented 2 months ago

Would you prefer to communicate with me by email at michael.kovari@ukaea.uk?