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
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"
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")
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)
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