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)