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
34 stars 11 forks source link

Update the flux lines in divertor legs #1053

Closed jonmaddock closed 1 year ago

jonmaddock commented 4 years ago

In GitLab by @ajpearcey on Jun 1, 2020, 15:04

Summary

Currently the shape to the fields lines extending from the x-point are made by extending the arcs used in calculating the plasma geometry.

Investigate using analyical solov'ev model to create more physically consistent field lines around the divertor region. See https://aip.scitation.org/doi/10.1063/1.3328818 .

This connects to work already done on implementing the Solov'ev profiles in issue #932 and can support future work on including an optional equilibrium solver in PROCESS, see issue #1019 .

Checklist

After implementing issue do the following

jonmaddock commented 4 years ago

In GitLab by @ajpearcey on Jun 18, 2020, 14:33

The paper Vacuum solution for Solov'ev's equilibrium configuration in tokamaks gives another approach to the Solovev Grad-Shafranov equation solution. While it doesn't look quite as useful for our PROCESS needs, as its implementation requires some numerical integration, it does present an equation for the angle between the divertor leg in the double null case.

jonmaddock commented 4 years ago

In GitLab by @ajpearcey on Jun 23, 2020, 18:51

Using the Solovev analytical solution I have managed to extract the angle made by the divertor at the x-point from the python script.

For example, in the NSTX example we find angle between the legs at the xpoint is 1.37 rads or 78.8 degrees. Here is a plot of the output of the python equilibrium solver based with the tangents used for the computation of the angle. image

We do this be finding the tangent vector of the surface that satisfies $\psi (x,y) = 0$ and then using the angle made by two intersecting vectors, which is

\theta = \arccos \Big(\frac{\mathbf{t}_i \cdot \mathbf{t}_o}{|\mathbf{t}_i||\mathbf{t}_o|}\Big)

where here $\mathbf{t}_i$ is the tangent of the inner leg and $\mathbf{t}_o$ the tangent of the outer leg.

We find the tangent vectors by first noting that we know as an input in the Solovev solution the position of the x-point and consider some line just below the x-point at constant z and look for the two zeros in the flux at $\psi(x,y_{sep}-\epsilon)=0$. There is almost certainly a smarter way of finding these zeros, but with the complexity of the flux function solution I couldn't find a nice analytical way doing so, additionally trying the linearise the solution around the x-point did not give a good approximation of the field lines.

Once we have these we can find the tangent vector field of the scalar flux field and evaluate at the positions we found. The tangents are given by,

\mathbf{t}_o = \frac{(\partial_y\psi,-\partial_x\psi)}{\sqrt{\partial_x \psi)^2 + (\partial_y \psi)^2 }}
\mathbf{t}_i = \frac{(-\partial_y\psi,\partial_x\psi)}{\sqrt{\partial_x \psi)^2 + (\partial_y \psi)^2 }}

I have yet to explore the changes in angle if we use other example configurations from the python/matlab scripts

ref @jmorris-uk and @mkovari

jonmaddock commented 4 years ago

In GitLab by @mkovari on Jun 23, 2020, 19:38

I suppose 79 degrees is not so far from 90 that people will laugh at us.

jonmaddock commented 2 years ago

In GitLab by @ajpearcey on Aug 10, 2022, 10:46

closed