def build_flow(options): # Working directory (default is the name of the script with '.py' removed and "run_" replaced by "flow_") workdir = options.workdir if not options.workdir: workdir = os.path.basename(__file__).replace(".py", "").replace( "run_", "flow_") # Initialize structure and pseudos. structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # Initialize the flow. flow = flowtk.Flow(workdir=workdir, manager=options.manager, remove=options.remove) # Use ebands_input factory function to build inputs. multi = abilab.ebands_input(structure, pseudos, kppa=40, nscf_nband=6, ndivsm=10, ecut=6) work = flowtk.BandStructureWork(scf_input=multi[0], nscf_input=multi[1]) flow.register_work(work) return flow
def build_flow(options): # Working directory (default is the name of the script with '.py' removed and "run_" replaced by "flow_") if not options.workdir: if os.getenv("READTHEDOCS", False): __file__ = os.path.join(os.getcwd(), "run_ht_si_ebands.py") options.workdir = os.path.basename(__file__).replace( ".py", "").replace("run_", "flow_") # Initialize structure and pseudos. structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # Initialize the flow. flow = flowtk.Flow(workdir=options.workdir, manager=options.manager) # Use the ebands_input factory function to build a MultiDataset. # keyword args are optional (default values are given or computed automatically, see docs). multi = abilab.ebands_input(structure, pseudos, kppa=40, dos_kppa=80, nscf_nband=6, ndivsm=10, ecut=6, spin_mode="unpolarized") work = flowtk.BandStructureWork(scf_input=multi[0], nscf_input=multi[1], dos_inputs=multi[2]) flow.register_work(work) return flow
def itest_htc_bandstructure(fwp, tvars): """Test band-structure calculations done with the HTC interface.""" structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # Initialize the flow. flow = abilab.Flow(workdir=fwp.workdir, manager=fwp.manager) # Use ebands_input factory function to build inputs. multi = abilab.ebands_input(structure, pseudos, kppa=20, nscf_nband=6, ndivsm=5, ecut=2, dos_kppa=40, spin_mode="unpolarized") work = flowtk.BandStructureWork(scf_input=multi[0], nscf_input=multi[1], dos_inputs=multi[2:]) multi.set_vars(paral_kgb=tvars.paral_kgb) flow.register_work(work) flow.allocate() flow.build_and_pickle_dump(abivalidate=True) fwp.scheduler.add_flow(flow) assert fwp.scheduler.start() == 0 assert not fwp.scheduler.exceptions assert fwp.scheduler.nlaunch == 3 flow.show_status() if not flow.all_ok: flow.debug() raise RuntimeError() assert all(work.finalized for work in flow) # Test if GSR files are produced and are readable. for i, task in enumerate(work): with task.open_gsr() as gsr: assert gsr.nsppol == 1 #assert gsr.structure == structure if i == 0: gsr.to_string(verbose=2) if i == 1: # Bandstructure case assert gsr.ebands.has_bzpath assert not gsr.ebands.has_bzmesh with pytest.raises(ValueError): gsr.ebands.get_edos() if i == 2: # DOS case assert gsr.ebands.has_bzmesh assert not gsr.ebands.has_bzpath gsr.ebands.get_edos()
def itest_htc_bandstructure(fwp, tvars): """Test band-structure calculations done with the HTC interface.""" structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # TODO: Add this options because I don't like the kppa approach # I had to use it because it was the approach used in VaspIO #dos_ngkpt = [4,4,4] #dos_shiftk = [0.1, 0.2, 0.3] # Initialize the flow. flow = abilab.Flow(workdir=fwp.workdir, manager=fwp.manager) # Use ebands_input factory function to build inputs. multi = abilab.ebands_input(structure, pseudos, kppa=20, nscf_nband=6, ndivsm=5, ecut=2, dos_kppa=40, spin_mode="unpolarized") work = abilab.BandStructureWork(scf_input=multi[0], nscf_input=multi[1], dos_inputs=multi[2:]) multi.set_vars(paral_kgb=tvars.paral_kgb) flow.register_work(work) flow.allocate() flow.build_and_pickle_dump() fwp.scheduler.add_flow(flow) assert fwp.scheduler.start() == 0 assert not fwp.scheduler.exceptions assert fwp.scheduler.nlaunch == 3 flow.show_status() assert flow.all_ok assert all(work.finalized for work in flow) # Test if GSR files are produced and are readable. for i, task in enumerate(work): with task.open_gsr() as gsr: print(gsr) assert gsr.nsppol == 1 #assert gsr.structure == structure ebands = gsr.ebands # TODO: This does not work yet because GSR files do not contain # enough info to understand if we have a path or a mesh. #if i == 2: # Bandstructure case #assert ebands.has_bzpath #with pytest.raises(ebands.Error): # ebands.get_edos() if i == 3: # DOS case assert ebands.has_bzmesh gsr.bands.get_edos()
def itest_htc_bandstructure(fwp, tvars): """Test band-structure calculations done with the HTC interface.""" structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # Initialize the flow. flow = abilab.Flow(workdir=fwp.workdir, manager=fwp.manager) # Use ebands_input factory function to build inputs. multi = abilab.ebands_input(structure, pseudos, kppa=20, nscf_nband=6, ndivsm=5, ecut=2, dos_kppa=40, spin_mode="unpolarized") work = flowtk.BandStructureWork(scf_input=multi[0], nscf_input=multi[1], dos_inputs=multi[2:]) multi.set_vars(paral_kgb=tvars.paral_kgb) flow.register_work(work) flow.allocate() flow.build_and_pickle_dump(abivalidate=True) fwp.scheduler.add_flow(flow) assert fwp.scheduler.start() == 0 assert not fwp.scheduler.exceptions assert fwp.scheduler.nlaunch == 3 flow.show_status() assert flow.all_ok assert all(work.finalized for work in flow) # Test if GSR files are produced and are readable. for i, task in enumerate(work): with task.open_gsr() as gsr: assert gsr.nsppol == 1 #assert gsr.structure == structure if i == 0: gsr.to_string(verbose=2) if i == 1: # Bandstructure case assert gsr.ebands.has_bzpath assert not gsr.ebands.has_bzmesh with pytest.raises(ValueError): gsr.ebands.get_edos() if i == 2: # DOS case assert gsr.ebands.has_bzmesh assert not gsr.ebands.has_bzpath gsr.ebands.get_edos()
def build_flow(options): # Working directory (default is the name of the script with '.py' removed and "run_" replaced by "flow_") workdir = options.workdir if not options.workdir: workdir = os.path.basename(__file__).replace(".py", "").replace("run_","flow_") # Initialize structure and pseudos. structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # Initialize the flow. flow = abilab.Flow(workdir=workdir, manager=options.manager, remove=options.remove) # Use ebands_input factory function to build inputs. multi = abilab.ebands_input(structure, pseudos, kppa=40, nscf_nband=6, ndivsm=10, ecut=6) work = abilab.BandStructureWork(scf_input=multi[0], nscf_input=multi[1]) flow.register_work(work) return flow
def build_flow(options): # Working directory (default is the name of the script with '.py' removed and "run_" replaced by "flow_") if not options.workdir: options.workdir = os.path.basename(__file__).replace(".py", "").replace("run_", "flow_") # Initialize structure and pseudos. structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # Initialize the flow. flow = flowtk.Flow(workdir=options.workdir, manager=options.manager) # Use the ebands_input factory function to build a MultiDataset. # keyword args are optional (default values are given or computed automatically, see docs). multi = abilab.ebands_input(structure, pseudos, kppa=40, dos_kppa=80, nscf_nband=6, ndivsm=10, ecut=6, spin_mode="unpolarized") work = flowtk.BandStructureWork(scf_input=multi[0], nscf_input=multi[1], dos_inputs=multi[2]) flow.register_work(work) return flow
def itest_htc_bandstructure(fwp, tvars): """Test band-structure calculations done with the HTC interface.""" structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # TODO: Add this options because I don't like the kppa approach # I had to use it because it was the approach used in VaspIO #dos_ngkpt = [4,4,4] #dos_shiftk = [0.1, 0.2, 0.3] # Initialize the flow. flow = abilab.Flow(workdir=fwp.workdir, manager=fwp.manager) # Use ebands_input factory function to build inputs. multi = abilab.ebands_input(structure, pseudos, kppa=20, nscf_nband=6, ndivsm=5, ecut=2, dos_kppa=40, spin_mode="unpolarized") work = flowtk.BandStructureWork(scf_input=multi[0], nscf_input=multi[1], dos_inputs=multi[2:]) multi.set_vars(paral_kgb=tvars.paral_kgb) flow.register_work(work) flow.allocate() flow.build_and_pickle_dump(abivalidate=True) fwp.scheduler.add_flow(flow) assert fwp.scheduler.start() == 0 assert not fwp.scheduler.exceptions assert fwp.scheduler.nlaunch == 3 flow.show_status() assert flow.all_ok assert all(work.finalized for work in flow) # Test if GSR files are produced and are readable. for i, task in enumerate(work): with task.open_gsr() as gsr: print(gsr) assert gsr.nsppol == 1 #assert gsr.structure == structure ebands = gsr.ebands # TODO: This does not work yet because GSR files do not contain # enough info to understand if we have a path or a mesh. #if i == 2: # Bandstructure case #assert ebands.has_bzpath #with pytest.raises(ebands.Error): # ebands.get_edos() if i == 3: # DOS case assert ebands.has_bzmesh gsr.bands.get_edos()