Source code for tofu.geom.inputs.get_geom_TCV


import sys
import os
import scipy.io as scpio


import numpy as np


_HERE = os.path.abspath(os.path.dirname(__file__))
_TOFU_PATH = os.path.abspath(os.path.join(_HERE, '..', '..', '..'))


# import parser dict
sys.path.insert(1, _TOFU_PATH)
import tofu.geom as tfg
_ = sys.path.pop(1)


[docs]def get_from_mat_file_from_tcv_modified(pfe=None, Exp='TCV'): import tofu.geom as tfg # Check inputs c0 = (os.path.isfile(pfe) and pfe[-4:] == '.mat') if c0 is not True: msg = ("File does not exist or not a .mat file!\n" + "\t- pfe: {}\n".format(pfe)) raise Exception(msg) # Extract data out = scpio.loadmat(pfe) # Check file conformity lka = ['h2'] lkb = [k0 for k0 in out.keys() if '__' not in k0] if lka != lkb: msg = ("Content of file not as expected!\n" + "\t- pfe: {}\n".format(pfe) + "\t- expected keys: {}\n".format(lka) + "\t- observed keys: {}".format(lkb)) raise Exception(msg) # Create objects ls = [] out = out[lka[0]] for ii in range(out.shape[1]): name = out[0][ii][0][0].replace('_', '').replace('-', '') if name == 'Bcoil': continue if name[0] in ['A', 'B', 'C', 'D', 'E', 'F', 'T']: poly = out[0][ii][1].T obj = tfg.CoilPF(Name=name, Poly=poly, Exp=Exp) elif name == 'v': if 512 not in out[0][ii][1].shape: msg = ("Size of {} not as expected!\n".format(name) + "\t- expected: 512 pts\n" + "\t- observed: {} pts".format(out[0][ii][1].size/2)) raise Exception(msg) iin = np.r_[0, np.arange(512)] iout = np.arange(1, 257) poly = out[0][ii][1][iin, :].T obj = tfg.Ves(Name=name, Poly=poly, Exp=Exp) elif name == 't': if 314 not in out[0][ii][1].shape: msg = ("Size of {} not as expected!\n".format(name) + "\t- expected: 314 pts\n" + "\t- observed: {} pts".format(out[0][ii][1].size/2)) raise Exception(msg) ind = np.arange(57) poly = out[0][ii][1][ind, :].T obj = tfg.Ves(Name=name, Poly=poly, Exp=Exp) else: msg = "Unidentified element {}".format(name) raise Exception(msg) ls.append(obj) return tfg.Config(lStruct=ls, Name='V1', Exp=Exp)