def qclLoad(fname): qclayers = QCLayers() # print "Loading "+fname filehandle = open(fname, 'r') SaveLoad.qclLoad(filehandle, qclayers, None) qclayers.update_alloys() qclayers.update_strain() qclayers.populate_x() qclayers.populate_x_band() return qclayers
def test_solve_basis(self): with open("../example/PQLiu.json") as f: qcl = SaveLoad.qclLoad(f) qcl.layerSelected = 3 qcl.NonParabolic = False qcl.populate_x() qcl.solve_basis() # axes = plt.axes() # plot_band(axes, qcl) # plt.show() np.testing.assert_equal(qcl.eigenEs.shape, (18, ), 'solve_basis eigenEs calculation wrong') np.testing.assert_equal(qcl.psis.shape, (18, 1038), 'solve_basis psis calculation wrong')
#!/usr/bin/env python # -*- coding:utf-8 -*- """ need to install pycallgraph package and GraphViz """ from context import * import SaveLoad import numpy as np from pycallgraph import PyCallGraph from pycallgraph.output import GraphvizOutput if __name__ == "__main__": with PyCallGraph(output=GraphvizOutput()): with open("../example/16um.json") as f: qcl = SaveLoad.qclLoad(f) qcl.layerSelected = 3 qcl.NonParabolic = False qcl.populate_x() qcl.solve_whole() qcl.dipole(19, 15) qcl.calc_FoM(19, 15)
"Save file with filename as json" if not isinstance(qclayers, QCLayers): raise TypeError("qclSave: Nothing to save.." "QCLayers not valid type") # json.dump(qclayers, fhandle, cls=QCEncoder, indent=4) o = qclayers usedMaterial = int(np.max(o.layerMaterials)) materialList = (2 * (o.layerMaterials - 1) + o.layerBarriers) materialList = materialList.astype(int) layerWidth = o.layerWidth * o.xres parameters = [json.encoder.encode_basestring(o.description)] + [ json.dumps(s) for s in (o.substrate, o.EField, o.xres, o.vertRes, o.solver, o.Temperature, o.repeats, qcMaterial[o.substrate] * usedMaterial, o.moleFrac[:2 * usedMaterial], materialList[1:].tolist(), layerWidth[1:].tolist(), o.layerDopings[1:].tolist(), o.layerARs[1:].tolist()) ] fhandle.write(JSONTemplate % tuple(parameters)) if __name__ == "__main__": if len(sys.argv) == 3: qclayers = QCLayers() with open(sys.argv[1], 'rU') as fin, open(sys.argv[2], 'w') as fout: SaveLoad.qclLoad(fin, qclayers) qclSaveJSON(fout, qclayers) else: print "Call this converter by python %s <orignal> <new>" % __file__ # vim: ts=4 sw=4 sts=4 expandtab