Source code for femagtools.ntib

"""
    femagtools.fsl
    ~~~~~~~~~~~~~~

    Creating FSL Scripts



"""
import logging
import math

logger = logging.getLogger(__name__)


[docs]def create(speed, current, beta, r1=0, m=3): """return Ntib info""" return ['Speed[1/min], Current[A], beta[Degr], R_STATOR[Ohm], n-p', 'Number of values: {0}'.format( min(len(speed), len(current), len(beta)))] + \ ['{0:12.1f}{1:12.3f}{2:12.3f}{3:12f}{4:12f}'.format( 60*n, math.sqrt(2.0)*i1, b, r1, m) for n, i1, b in zip(speed, current, beta)]
[docs]def toFloat(s, fac=1.0): try: return float(s)*fac except: return None
[docs]def read_los(filename): """return dict of losses in LOS-file""" result = dict(speed=[], torque=[], i1=[], beta=[], stajo=[], staza=[], rotfe=[], magnet=[], winding=[], total=[]) with open(filename) as f: started = False for l in f: l = l.strip() if not started and l.startswith('[1/min] '): started = True elif started: r = l.split() if len(r) > 7: result['speed'].append(toFloat(r[0], 1./60)) result['torque'].append(toFloat(r[1])) result['i1'].append(toFloat(r[2])) result['beta'].append(toFloat(r[3])) pfe1 = toFloat(r[4]) pfe2 = 0 p = 4 if len(r) > 8: pfe2 = toFloat(r[5]) p = 5 result['stajo'].append(pfe1) result['staza'].append(pfe2) result['rotfe'].append(toFloat(r[p+1])) result['magnet'].append(toFloat(r[p+2])) result['winding'].append(toFloat(r[p+3])) try: result['stafe'] = result['stajo'] + result['staza'] result['total'].append(sum([result[k][-1] for k in ('stajo', 'staza', 'rotfe', 'magnet', 'winding')])) except: result['total'].append(None) logger.info("%s num rows %d", filename, len(result['total'])) return result