nexus: add QE postproc support in qmcpack_workflows

This commit is contained in:
Jaron Krogel 2017-11-06 13:05:39 -05:00
parent 2df2c6d9dc
commit edb0733130
1 changed files with 52 additions and 2 deletions

View File

@ -10,7 +10,7 @@ from bundle import bundle as bundle_function
from machines import job,Job
from vasp import generate_vasp
from pwscf import generate_pwscf
from pwscf_postprocessors import generate_projwfc
from pwscf_postprocessors import generate_projwfc,generate_pp
from qmcpack_converters import generate_pw2qmcpack
from qmcpack_input import generate_jastrow,loop,linear,cslinear,vmc,dmc
from qmcpack import generate_qmcpack
@ -715,6 +715,25 @@ pwf_input_defaults = obj(
),
)
pp_workflow_keys = [
'src',
]
fixed_defaults = obj(
src = None,
)
pp_input_defaults = obj(
minimal = obj(
identifier = 'pp',
**fixed_defaults
),
v1 = obj(
identifier = 'pp',
**fixed_defaults
),
)
opt_workflow_keys = [
'J2_run','J3_run','J_defaults',
'struct_src','orb_src','J2_src','J3_src',
@ -917,6 +936,8 @@ def resolve_path(name,ch,loc='resolve_path'):
index = wf.orb_src
elif task.name=='pwf':
index = wf.src
elif task.name=='pp':
index = wf.src
#end if
#end if
if isinstance(index,Simulation):
@ -1458,6 +1479,11 @@ def process_pwf_inputs(inputs,shared,task,loc):
#end def process_pwf_inputs
def process_pp_inputs(inputs,shared,task,loc):
return inputs
#end def process_pp_inputs
def process_opt_inputs(inputs,shared,task,loc):
inputs.set(
system = shared.system,
@ -1532,6 +1558,7 @@ sim_input_defaults = obj(
nscf = nscf_input_defaults,
p2q = p2q_input_defaults,
pwf = pwf_input_defaults,
pp = pp_input_defaults,
opt = opt_input_defaults,
vmc = vmc_input_defaults,
dmc = dmc_input_defaults,
@ -1543,6 +1570,7 @@ sim_workflow_keys = obj(
nscf = nscf_workflow_keys,
p2q = p2q_workflow_keys,
pwf = pwf_workflow_keys,
pp = pp_workflow_keys,
opt = opt_workflow_keys,
vmc = vmc_workflow_keys,
dmc = dmc_workflow_keys,
@ -1554,6 +1582,7 @@ process_sim_inp = obj(
nscf = process_nscf_inputs,
p2q = process_p2q_inputs,
pwf = process_pwf_inputs,
pp = process_pp_inputs,
opt = process_opt_inputs,
vmc = process_vmc_inputs,
dmc = process_dmc_inputs,
@ -1570,7 +1599,7 @@ def process_sim_inputs(name,inputs_in,defaults,shared,task,loc):
#end def process_sim_inputs
qmcpack_chain_sim_names = ['system','vasp','scf','nscf','p2q','pwf','opt','vmc','dmc']
qmcpack_chain_sim_names = ['system','vasp','scf','nscf','p2q','pwf','pp','opt','vmc','dmc']
def capture_qmcpack_chain_inputs(kwargs):
kw_deep = obj()
kw_shallow = obj()
@ -1900,6 +1929,23 @@ def gen_pwf_chain(ch,loc):
#end def gen_pwf_chain
def gen_pp_chain(ch,loc):
kw = ch.kw
task = ch.task
wf = task.workflow
run = kw.run
source = 'scf'
path = resolve_path(source,ch,loc)
deps = resolve_deps('pp',[(source,'other')],ch,loc)
pp = generate_pp(
path = path,
dependencies = deps,
**task.inputs
)
return pp
#end def gen_pp_chain
def gen_opt_chain(ch,loc):
kw = ch.kw
task = ch.task
@ -2122,6 +2168,7 @@ gen_sim_ch = obj(
nscf = gen_nscf_chain,
p2q = gen_p2q_chain,
pwf = gen_pwf_chain,
pp = gen_pp_chain,
opt = gen_opt_chain,
vmc = gen_vmc_chain,
dmc = gen_dmc_chain,
@ -2196,6 +2243,9 @@ def qmcpack_chain(**kwargs):
if run.pwf:
gen_sim_chain('pwf',ch,loc)
#end if
if run.pp:
gen_sim_chain('pp',ch,loc)
#end if
#end if
if run.opt: