Source code for femagtools.vbf

"""
    femagtools.vbf
    ~~~~~~~~~~~~~~

    Manage VBF magnetizing curve data files



"""
import sys
import femagtools.losscoeffs as lc
import logging

logger = logging.getLogger(__name__)

fo = 50.
Bo = 1.5


[docs]class Reader(object): def __init__(self, filename): self.losses = {} with open(filename) as f: self.losses['name'] = f.readline().strip() self.losses['fo'], self.losses['Bo'] = [float(s) for s in f.readline().strip().split()] # Ignore the next line f.readline() self.losses['f'] = [float(s) for s in f.readline().strip().split()] self.losses['B'] = [] self.losses['pfe'] = [] for l in f.readlines(): values = [float(s) for s in l.strip().split()] if len(values) > 1: self.losses['B'].append(values[0]) self.losses['pfe'].append( [v if v > 0 else None for v in values[1:]]) logger.info("%s fmax %5.1f Bmax %3.2f", filename, max(self.losses['f']), max(self.losses['B'])) def __getitem__(self, index): return self.losses[index]
[docs] def getLossValues(self): return self.losses
[docs]def read(filename): """read VBF file and return dict of content""" vbf = Reader(filename) return vbf.getLossValues()
if __name__ == "__main__": import matplotlib.pylab as pl import femagtools.plot if len(sys.argv) == 2: filename = sys.argv[1] else: filename = sys.stdin.readline().strip() logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s') losses = read(filename) print(losses) femagtools.plot.felosses(losses, lc.fitjordan( losses['f'], losses['B'], losses['pfe'], losses['Bo'], losses['fo']), title=filename, log=False) pl.show()