Example #1
0
    def runStructures(self, structures, path, calcStates=True):
        '''Run simulations for all structures in the given structure list with
        the base path "path". This method dispatches all processes and returns
        the user has to wait for processes to finish before accessing results.

        Stores started processes in self.processes
        '''

        local = Local()
        for ss in structures:
            spath = Path.joinpath(path, str(ss.dirname))
            su.mkdir(spath)
            if calcStates:
                self.initdir(ss, spath)
                #proc = su.dispatch(self.progWS, "",spath)
                proc = self.pltfm.submitjob(self.progWS, [], spath, 1, "00:10")
                self.processes.append(proc)
        if calcStates:
            dbg.debug("Starting calcWS program.....\n",
                      dbg.verb_modes["verbose"], self)
            dbg.flush()
        # TODO do not wait for all processes-start each strucrure when ready!
        self.waitforproc(1)
        dbg.debug("Starting lqcl.....\n", dbg.verb_modes["verbose"], self)
        dbg.flush()
        #del processes
        #processes = []
        for ss in structures:
            spath = Path.joinpath(path, str(ss.dirname))

            proc = self.pltfm.submitjob(self.proglqcl, [],
                                        Path.joinpath(spath, self.datpath))

            self.processes.append(proc)
        return self.processes
Example #2
0
    def __init__(self, binpath="", pltfm=Local(), wellmaterial=GaAs()):
        '''
        Constructor. Subclass specific parameters:
        binpath: Path to the calcWS program executable
        wellmaterial: Material of the well of the structure (used for
        dielectric and phonon properties).
        '''

        # Input to calcWS program
        negf_numpar = {
            "Npint": 5,
            "cshift": 0,
            "Lbound": 1.E-3,
            "Ubound": 1.E-4,
            "Blochtol": 1.E-6,
            "Nh": 0,
            "Igauge": 1,
            "Eminsub": 0,
            "Emaxadd": 0,
            "gen": 1.E-4,
            "Iconv": 2,
            "Bei": 0.8,
            "Nhist": 40,
            "boolPrinc": False,
            "boolEins": False
        }

        # Parameters for lqcl:
        lqcl_numpar = {
            "neighbours_imp": 1,
            "neighbours_ifr": 2,
            "neighbours_imp": 1,
            "neighbours_z": 1,
            "neighbours_LO": 1,
            "use_drive_field": False,
            "use_wannier_dir": False,
            "keep_wsdir": True,
            "qmin": 1e-10,
            "qmax": 3.,
            "qzmin": -3.,
            "qzmax": 3.,
            "prntq": False,
            "zshift": 0.
        }

        super(Ilqcl, self).__init__(binpath, pltfm)
        self.numpar.update(negf_numpar)
        self.numpar.update(lqcl_numpar)
        self.progWS = Path.joinpath(binpath, "calcWS.out")

        self.wellmat = wellmaterial
        self.processes = []
        self.datpath = "data"
        self.wannierpath = "wannier"
        self.numparfile = "numpar_lqcl.json"
Example #3
0
    def __init__(self, binpath="", pltfm=Local()):
        '''Constructor.
        binpath : path to model binary files
        pltfm : Platf object
        
        '''

        # Energies in meV, temperatures in K
        self.numpar = {
            "efield0": 0,
            "defield": 0.001,
            "Nefield": 1,
            "omega0": 0.001,
            "domega": 0.001,
            "Nomega": 1,
            "efac0": 0,
            "defac": 0.010,
            "Nefac": 1,
            "Tlattice": 77,
            "Te": 125,
            "Nstates": 5,
            "Nper": 1,
            "maxits": 50,
            "NE": 1000,
            "Emax": 1.0,
            "Nk": 800,
            "Ekmax": 1.0,
            "Nz": 400,
            "Nq": 400,
            "use-ifr": True,
            "use-alloy": True,
            "use-acc": True,
            "use-LO": True,
            "use-TO": True,
            "use-imp": True,
            "use-e-e": False,
            "use-poisson": True,
            "use-poisson": True
        }

        self.binpath = binpath
        self.pltfm = pltfm
        self.merit = self.merits.get("max gain")
Example #4
0
from aftershoq.materials import GaAs, AlGaAs
from aftershoq.numerics.runplatf import Local
from aftershoq.qcls import EV2416
import aftershoq.utils.systemutil as su
import aftershoq.utils.debug as dbg

pathwd = "../demo/NextNano"
su.mkdir(pathwd)

dbg.open(dbg.verb_modes["chatty"], outfile=pathwd + "/debug.log")

nnroot = "C:/Users/Martin Franckie/Documents/nextnanoQCL_2018_03_29/nextnano/2018_03_29/nextnano.QCL/"

lic = nnroot + "../License/License_nnQCL.lic"

model = Inextnano(nnroot, Local(), GaAs(), lic)

s = EV2416()

for l in s.layers:
    if l.material.name == "AlGaAs":
        l.material.name = "Al(x)Ga(1-x)As"
print(s)

model.numpar["efield0"] = 0.050
model.numpar["defield"] = 0.005
model.numpar["Nefield"] = 5
model.numpar["NE"] = 400
model.numpar["Nk"] = 400
model.numpar["Nz"] = 100
# Override default (automatic calculation)
Example #5
0
        exit()

    # set numerical parameters:

    # the binaries (change to your bin folder):
    binpath = "/Users/martin/git/Sewself_JF/bin/"
    pathnegf = "/Users/martin/git/NEGFT8/bin/"

    print('Creating directory tree in: ' + path + '.\n')
    print('Please change variable "binpath" to match your binaries!\n')

    # make the directory:
    su.mkdir(path)

    # Define the platform, local or cluster (e. g. Euler cluster at ETH Zuerich)
    pltfm = Local()
    #pltfm = Euler(1,"1:00")

    # sewself interface:
    material_list = [gaas, alas]
    commands = ['e', 'd', 'a210', 'a310', 'a320']

    model = Isewself(binpath, pltfm, material_list, commands=commands)
    #model = Inegf(pathnegf,pltfm,gaas)

    #model.writeWannier(s, path)

    E1 = 0.162
    E2 = 0.1536
    gamma = 0.01