Source code for omfit_classes.omfit_aurora
'''
Provides classes and utility functions for easily using Aurora within OMFIT.
Documentation: https://aurora-fusion.readthedocs.io/
'''
try:
# framework is running
from .startup_choice import *
except ImportError as _excp:
# class is imported by itself
if (
'attempted relative import with no known parent package' in str(_excp)
or 'No module named \'classes\'' in str(_excp)
or "No module named '__main__.startup_choice'" in str(_excp)
):
from startup_choice import *
else:
raise
__all__ = ['OMFITaurora']
[docs]class OMFITaurora(SortedDict, OMFITobject):
r"""
OMFIT class used to interface with Aurora simulation files.
:param filename: filename passed to OMFITobject class
:param \**kw: keyword dictionary passed to OMFITobject class
"""
def __init__(self, filename, namelist=None, geqdsk=None, **kw):
# AURORA is currently an OPTIONAL dependency, so import here
from aurora.core import aurora_sim
OMFITobject.__init__(self, filename, **kw)
SortedDict.__init__(self)
# user is initializing class
if namelist is not None:
self.dynaLoad = False
else:
self.dynaLoad = True
self.aurora_sim = aurora_sim(namelist=namelist, geqdsk=geqdsk)
@dynaLoad
def __getitem__(self, key):
return getattr(self.aurora_sim, key)
@dynaLoad
def __setitem__(self, key, value):
return setattr(self.aurora_sim, key, value)
@dynaLoad
def __getattr__(self, attr):
return getattr(self.aurora_sim, attr)
def __setattr__(self, attr, value):
if 'aurora_sim' in self.__dict__ and attr not in self.__dict__:
if self.dynaLoad:
self.load()
self.dynaLoad = False
setattr(self.aurora_sim, attr, value)
else:
self.__dict__[attr] = value
[docs] @dynaLoad
def keys(self):
return self.aurora_sim.__dict__.keys()
[docs] @dynaLoad
def items(self):
return self.aurora_sim.__dict__.items()
[docs] @dynaLoad
def load(self):
print(f'Loading {self.filename}')
return self.aurora_sim.load(self.filename)
[docs] @dynaSave
def save(self):
print(f'Saving {self.filename}')
return self.aurora_sim.save(self.filename)