Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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')
Ejemplo n.º 3
0
#!/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)
Ejemplo n.º 4
0
    "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