def build_flow(options): # Init structure and pseudos. structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") # 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 the flow. flow = flowtk.Flow(options.workdir, manager=options.manager) scf_kppa = 120 nscf_nband = 40 ecut, ecuteps, ecutsigx = 6, 2, 4 #scr_nband = 50 #sigma_nband = 50 multi = abilab.g0w0_with_ppmodel_inputs( structure, pseudos, scf_kppa, nscf_nband, ecuteps, ecutsigx, ecut=ecut, shifts=(0, 0, 0), # By default the k-mesh is shifted! TODO: Change default? accuracy="normal", spin_mode="unpolarized", smearing=None, #ppmodel="godby", charge=0.0, scf_algorithm=None, inclvkb=2, scr_nband=None, #sigma_nband=None, gw_qprange=1): ) #multi.set_vars(paral_kgb=1) scf_input, nscf_input, scr_input, sigma_input = multi.split_datasets() work = flowtk.G0W0Work(scf_input, nscf_input, scr_input, sigma_input) flow.register_work(work) return flow
def itest_htc_g0w0(fwp, tvars): """Testing G0W0Work.""" structure = abilab.Structure.from_file(abidata.cif_file("si.cif")) pseudos = abidata.pseudos("14si.pspnc") flow = flowtk.Flow(fwp.workdir, manager=fwp.manager) scf_kppa = 10 nscf_nband = 10 #nscf_ngkpt = [4,4,4] #nscf_shiftk = [0.0, 0.0, 0.0] ecut, ecuteps, ecutsigx = 4, 2, 3 #scr_nband = 50 #sigma_nband = 50 extra_abivars = dict( ecut=ecut, istwfk="*1", paral_kgb=tvars.paral_kgb, ) multi = abilab.g0w0_with_ppmodel_inputs( structure, pseudos, scf_kppa, nscf_nband, ecuteps, ecutsigx, ecut=ecut, pawecutdg=None, accuracy="normal", spin_mode="unpolarized", smearing=None, #ppmodel="godby", charge=0.0, scf_algorithm=None, inclvkb=2, scr_nband=None, #sigma_nband=None, gw_qprange=1): ) multi.set_vars(paral_kgb=tvars.paral_kgb) scf_input, nscf_input, scr_input, sigma_input = multi.split_datasets() work = flowtk.G0W0Work(scf_input, nscf_input, scr_input, sigma_input) flow.register_work(work) flow.allocate() flow.connect_signals() #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 == 4 # The sigma task should produce a SCR file. assert len(work[2].outdir.list_filepaths(wildcard="*SCR")) == 1 flow.show_status() assert flow.all_ok assert all(work.finalized for work in flow)