ProjectTorreyPines / FUSE.jl

FUsion Synthesis Engine
https://fuse.help
Apache License 2.0
35 stars 2 forks source link

equilibrium issue on negD #502

Closed nanshi1177 closed 1 month ago

nanshi1177 commented 9 months ago

The STEP project involving negative triangularity includes four steps (state0_INIT, state1_EFIT, state2_CHEF, state3_TGYRO). There are two issues related to equilibrium. 1) An issue arises when attempting to read data from state0 to FUSE, resulting in the following error:

image

2) The other issue happened when evolve EPEDNN in flux_matcher_actor EPEDNN

The JSON files provided are ready to use in FUSE: shot193843state2_fuse.json shot193843ini_fuse.json

orso82 commented 9 months ago

@TimSlendebroek can you please take a look at these issues?

orso82 commented 9 months ago

ping @bclyons12

bclyons12 commented 9 months ago

Maybe I missed some of the discussion this morning, but I don't see where the equilibrium issue is here. @nanshi1177 did you say there was an error in TEQUILA somewhere?

nanshi1177 commented 9 months ago

Maybe I missed some of the discussion this morning, but I don't see where the equilibrium issue is here. @nanshi1177 did you say there was an error in TEQUILA somewhere?

It may not TEQUILA issue, since I didn't run equilibrium in this study. It happens when I read the data, it shows that can't handle 3 x-points. I am just wondering if we need to look into this since the unique shape of this case.

bclyons12 commented 9 months ago

Yes, this isn't related to the equilibrium solver. Could you provide a few lines to show how to reproduce the first error? I haven't started FUSE from a json file before.

nanshi1177 commented 9 months ago

Yes, this isn't related to the equilibrium solver. Could you provide a few lines to show how to reproduce the first error? I haven't started FUSE from a json file before.

Here it is: ini, act = FUSE.case_parameters(:D3D); ini.ods.filename=".../shot193843ini_fuse.json" act.ActorCXbuild.rebuild_wall = true dd=FUSE.init(ini,act)

bclyons12 commented 9 months ago

So here's the equilibrium in the saved ODS with the X-points denoted: image

I would think there should only be the one active X-point, so the issue appears to be on the STEP side. How is the state0_INIT ODS generated? PRO_create with EFIT?

nanshi1177 commented 9 months ago

I don't know how they got STATE0_INIT. Are there some ways I can check in STEP side?

bclyons12 commented 9 months ago

Do you have saved OMFIT project with these files? I'm getting an error when I try to load it:

Error in "OMFIT command box #1" at line  1
    OMFIT['ods0'] = load_omas_json('/home/lyonsbc/shot193843ini_fuse.json')
ValueError: core_sources.source shape (0,) is inconsistent with coordinates: ['1...N']
bclyons12 commented 9 months ago

I was able to open the file and it shows only two X-points. @orso82 It looks like flux_surfaces is finding and storing 3 X-points for this case

julia> dd = FUSE.load_ODSs_from_string("/Users/lyons/Downloads/shot193843ini_fuse.json");

julia> dd.global_time = 1.0;

julia> eqt = dd.equilibrium.time_slice[];

julia> println(length(eqt.boundary.x_point))
2

julia> IMAS.flux_surfaces(eqt);

julia> println(length(eqt.boundary.x_point))
3
orso82 commented 9 months ago

It is ok for the flux_surface tracer to find multiple X-points, although this has been a recent addition and some parts of the source may still assume that at most there are 2 X-points. Can you please share the json by uploading it directly to this issue?

bclyons12 commented 9 months ago

@orso82 It's this one shot193843ini_fuse.json

orso82 commented 9 months ago

@nanshi1177 I fixed the issue with the x-points. This is how I ran it:

ini, act = FUSE.case_parameters(:D3D);

ini.ods.filename="__FUSE__/sample/D3D_machine.json,/Users/meneghini/Downloads/shot193843ini_fuse.json" # can load data from multiple ODSs
ini.time.simulation_start = 4.0
ini.build.divertors = :none # FUSE cannot yet handle limited plasmas! this still needs fixing.

dd = FUSE.init(ini,act);

p = plot(dd.equilibrium)
plot!(p, dd.build; subplot=1)
plot!(dd.pf_active;subplot=1)
image