STEP¶
Contacts: Orso Meneghini, Sterling Smith, Brendan Lyons, Joseph McClenaghan, Tim Slendebroek, Tim Slendebroek
Short Description¶
STEP (Stability, Transport, Equilibrium, and Pedestal) workflow
Long Description¶
The STEP module (Stability Transport Equilibrium Pedestal), defines a series of ``steps’’, each of which reads all necessary input information from an ITER PDM, sets-up and executes a physics code, and then writes the code’s output back to the PDM. The history of the centralized data structure is kept to allow capturing provenance and full traceability of the workflow. At any stage of the workflow execution, the data stored in OMAS can be readily converted to IMAS, thus satisfying the ITER requirement for handling ITER data.
So far this module links together stability, transport, equilibrium, and pedestal codes in order to predict self-consistent equilibria and profiles.
Typical workflows¶
This module is used to:
Self-consistent prediction of equilibria and profiles
Optimize input actuators to achieve target parameters (e.g., beta, q95)
Supported devices¶
DIII-D, NSTX(-U), ITER
Relevant publications¶
STEP builds off of predictive analysis tools developed in the following:
Lyons B.C. et al., Phys. Plasmas 25, 056111 (2018)
Meneghini O. et al., Nucl. Fusion 57, 086034 (2017)
Meneghini O. et al., Phys. Plasmas 23, 042507 (2016)
Technical info¶
STEP uses OMAS for exchanging data between modules.
Documentation on OMAS can be found here: https://gafusion.github.io/omas/index.html
To add a new STEP for a new simulation code, use this template:
# SHOULD BE PUT IN root['STEPS']['<step name>']
# FILE SHOULD BE NAME <step name>_step.py
# DO NOT CHANGE LINES THAT ARE COMPLETED IN THIS SCRIPT ALREADY
from OMFITlib_step_opt import updateActuators
from OMFITlib_step import last_state
defaultVars(actuator_values=None,
setup=True,
run=True,
save=True,
overwrite=False)
step = '_'.join(os.path.basename(this.filename).split('_')[:-1])
# set shot,time,device,shots,times within this script
locals().update(root.experiment())
time_index,state=last_state(step,overwrite=overwrite)
if setup:
# <Setup the submodule tree as needed to run this STEP>
if not save:
root['STATE'][state+1]=root['STATE'][state].copy()
root['STATE'][state+1]['summary']['ids_properties']['comment']=step
if run:
updateActuators(step,actuator_values,saveValue=True)
# <Execute step>
if save:
root['STATE'][state+1]= #<Generate ODS from this STEP's results>
root['STATE'][state+1]['summary']['ids_properties']['comment']=step
# N.B. GUIS dictionary in root['GUIS']['STEPgui'] should be updated as well
Contributors¶
List of contributors sorted by number of lines authored:
1583 Brendan Lyons
1582 Tim Slendebroek
1293 Joseph McClenaghan
1161 Orso Meneghini
294 Tomas Odstrcil
236 Fusion Bot
50 Francesco Sciortino
29 Oak Nelson
23 Sterling Smith
16 Lukas Kripner
3 Kathreen Thome
1 Torrin Bechtel
Users¶
List of usernames sorted by number of module imports: mcclenaghanj, lyonsbc, slendebroekt, houshman, meneghini, wilsonhaley, nelsonand, shinan, holland, orlov, likai, xiangjian, saarelma, zhangjie, dingsiye, shisy, freibergers, shis, thomek, chenluoyu, grierson, jmcclena, weisbergd, wehnerw, deshazere, neisert, tangs, chrishol, wangy, siobhan, vaezip, denk, kripner, renq, smithsp, abbatej, anelson, callahank, hswilson, jparisi, kayanna, marshalli, odstrcilt, prattq, snyder, sontag, zhen.zhou, bassem, bechtelt, casalil, gavdeeva, hansenc, howardnt, jianx, jlchen, leem, lestzj, luoyiming, wangf, wuxh, carterb, chenji, chenly_dut, collinscs, edeshaze, fhaoc, fl.zhang, garofalo, guizzos, guterlj, huqiming, jiezhang, jlabbate, kinsey, knolkerm, lig, ligq, marinoni, maurizior, mcclenaghan, mclaughlink, odstrcil, pablorf, parisij, pharr, ql0457, razor, razord, saarelmas, smunaret, staebler, tang31, tangt, tneiser, wanghuiqian, wudonggui, xuemiao, zhangxx