DESC icon indicating copy to clipboard operation
DESC copied to clipboard

Use non-ConcentricGrid for iota computation in ForceBalance

Open dpanici opened this issue 3 months ago • 2 comments

from desc.examples import get

for name in ["precise_QA","precise_QH","W7-X","ESTELL","NCSX","DSHAPE_current"]:
    eq = get(name)
    from desc.grid import *
    grid_conc =  ConcentricGrid(L=eq.L_grid, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, axis=False,sym=True)
    rho=grid_conc.nodes[grid_conc.unique_rho_idx,0]
    grid = LinearGrid(rho =rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, axis=False)
    iota = grid.compress(eq.compute("iota",grid=grid, override_grid=False)["iota"])
    iota_conc = grid_conc.compress(eq.compute("iota",grid=grid_conc, override_grid=False)["iota"])
    
    import matplotlib.pyplot as plt
    plt.figure()
    plt.plot(rho, iota,label="linear")
    plt.plot(rho, iota_conc,label="concentric")
    plt.title(name)


Image Image

dpanici avatar Aug 25 '25 18:08 dpanici

from desc.examples import get

for name in ["precise_QA","precise_QH","W7-X","ESTELL","NCSX","DSHAPE_current"]:
    eq = get(name)
    from desc.grid import *
    grid_conc =  ConcentricGrid(L=eq.L_grid, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, axis=False,sym=True)
    rho=grid_conc.nodes[grid_conc.unique_rho_idx,0]
    grid = LinearGrid(rho =rho, M=eq.M_grid, N=eq.N_grid, NFP=eq.NFP, axis=False)
    iota = grid.compress(eq.compute("iota_r",grid=grid, override_grid=False)["iota_r"])
    iota_conc = grid_conc.compress(eq.compute("iota_r",grid=grid_conc, override_grid=False)["iota_r"])
    
    import matplotlib.pyplot as plt
    plt.figure()
    plt.plot(rho, iota,label="linear")
    plt.plot(rho, iota_conc,label="concentric")
    plt.title(name)
    plt.legend()
Image Image

dpanici avatar Aug 25 '25 18:08 dpanici

Try increasing innermost flux surface in ConcentricGrid poits to 3 instead of 1 and compare above plots again

dpanici avatar Aug 25 '25 18:08 dpanici