STEP

Contacts: Orso Meneghini, Sterling Smith, Brendan Lyons, Joseph McClenaghan, Tim Slendebroek, Tim Slendebroek

Short Description

STEP (Stability, Transport, Equilibrium, and Pedestal) workflow

Keywords

Stability, Transport, Equilibrium, Pedestal, Integrated, Predict-first, OMAS

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:

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:

1582 Brendan Lyons
1577 Tim Slendebroek
1286 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: lyonsbc, mcclenaghanj, meneghini, slendebroekt, likai, xiangjian, saarelma, orlov, holland, zhangjie, shisy, thomek, vaezip, kripner, smithsp, snyder, dingsiye, luoyiming, grierson, houshman, howardnt, jianx, jiezhang, mcclenaghan, neisert, saarelmas, xuemiao