def launch_fleur(fleurinp, fleur, parent_folder, settings, daemon, max_num_machines, max_wallclock_seconds, num_mpiprocs_per_machine, option_node, with_mpi, launch_base): """ Launch a base_fleur workchain. If launch_base is False launch a single fleur calcjob instead. """ process_class = CalculationFactory('fleur.fleur') workchain_class = WorkflowFactory('fleur.base') inputs = { 'code': fleur, 'fleurinpdata': fleurinp, 'parent_folder': parent_folder, 'settings': settings, 'metadata': { 'options': { 'withmpi': with_mpi, 'max_wallclock_seconds': max_wallclock_seconds, 'resources': { 'num_machines': max_num_machines, 'num_mpiprocs_per_machine': num_mpiprocs_per_machine, } } } } if not launch_base: inputs = clean_nones(inputs) builder = process_class.get_builder() builder.update(inputs) else: if option_node is None: option_node = Dict( dict={ 'withmpi': with_mpi, 'max_wallclock_seconds': max_wallclock_seconds, 'resources': { 'num_machines': max_num_machines, 'num_mpiprocs_per_machine': num_mpiprocs_per_machine } }) inputs_base = { 'code': fleur, 'fleurinpdata': fleurinp, 'parent_folder': parent_folder, 'settings': settings, 'options': option_node } inputs_base = clean_nones(inputs_base) builder = workchain_class.get_builder() builder.update(**inputs_base) launch_process(builder, daemon)
def launch_mae(structure, inpgen, calc_parameters, fleurinp, fleur, wf_parameters, scf_parameters, parent_folder, daemon, settings, option_node): """ Launch a mae workchain """ workchain_class = WorkflowFactory('fleur.mae') inputs = { 'scf': { 'wf_parameters': scf_parameters, 'structure': structure, 'calc_parameters': calc_parameters, 'settings': settings, 'inpgen': inpgen, 'fleur': fleur }, 'wf_parameters': wf_parameters, 'fleurinp': fleurinp, 'remote': parent_folder, 'fleur': fleur, 'options': option_node } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def launch_inpgen(structure, inpgen, calc_parameters, settings, daemon): """ Launch an inpgen calcjob on given input If no code is given it queries the DB for inpgen codes and uses the one with the newest creation time. Either structure or anysource_structure can be specified. Default structure is Si bulk. """ process_class = CalculationFactory('fleur.inpgen') inputs = { 'code': inpgen, 'structure': structure, 'parameters': calc_parameters, 'settings': settings, 'metadata': { 'options': { 'withmpi': False, 'max_wallclock_seconds': 6000, 'resources': { 'num_machines': 1, 'num_mpiprocs_per_machine': 1, } } } } inputs = clean_nones(inputs) builder = process_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def test_clean_nones(): from aiida_fleur.tools.dict_util import clean_nones test_dict = {1: None, 2: 3, 4: {1: None}} expected = {2: 3, 4: {}} out_dict = clean_nones(test_dict) assert out_dict == expected
def launch_banddos(fleurinp, fleur, wf_parameters, parent_folder, daemon, settings, option_node): """ Launch a banddos workchain """ workchain_class = WorkflowFactory('fleur.banddos') inputs = { 'wf_parameters': wf_parameters, 'fleur': fleur, 'remote': parent_folder, 'fleurinp': fleurinp, 'options': option_node } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def launch_corehole(structure, inpgen, calc_parameters, fleurinp, fleur, wf_parameters, daemon, settings, option_node): """ Launch a corehole workchain """ workchain_class = WorkflowFactory('fleur.corehole') inputs = { 'calc_parameters': calc_parameters, 'options': option_node, 'inpgen': inpgen, 'fleur': fleur, 'wf_parameters': wf_parameters, 'structure': structure } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def launch_ssdisp(structure, inpgen, calc_parameters, fleur, wf_parameters, scf_parameters, daemon, option_node): """ Launch a ssdisp workchain """ workchain_class = WorkflowFactory('fleur.ssdisp') inputs = { 'scf': { 'wf_parameters': scf_parameters, 'structure': structure, 'calc_parameters': calc_parameters, 'options': option_node, 'inpgen': inpgen, 'fleur': fleur }, 'wf_parameters': wf_parameters, 'fleur': fleur, 'options': option_node } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def launch_relax(structure, inpgen, calc_parameters, fleur, wf_parameters, scf_parameters, daemon, settings, option_node): """ Launch a base relax workchain # TODO final scf input """ workchain_class = WorkflowFactory('fleur.base_relax') inputs = { 'scf': { 'wf_parameters': scf_parameters, 'structure': structure, 'calc_parameters': calc_parameters, 'options': option_node, 'inpgen': inpgen, 'fleur': fleur }, 'wf_parameters': wf_parameters } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def launch_dmi(structure, inpgen, calc_parameters, fleur, wf_parameters, scf_parameters, daemon, option_node): """ Launch a dmi workchain """ click.echo('Not implemented yet, sorry. Please implement me!') workchain_class = WorkflowFactory('fleur.dmi') inputs = { 'scf': { 'wf_parameters': scf_parameters, 'structure': structure, 'calc_parameters': calc_parameters, 'options': option_node, 'inpgen': inpgen, 'fleur': fleur }, 'wf_parameters': wf_parameters, 'fleur': fleur, 'options': option_node } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)
def launch_create_magnetic(inpgen, calc_parameters, fleur, wf_parameters, eos_parameters, scf_parameters, relax_parameters, daemon, option_node): """ Launch a create_magnetic workchain """ workchain_class = WorkflowFactory('fleur.create_magnetic') inputs = { 'eos': { 'scf': { 'wf_parameters': scf_parameters, 'calc_parameters': calc_parameters, 'options': option_node, 'inpgen': inpgen, 'fleur': fleur }, 'wf_parameters': eos_parameters }, 'relax': { 'scf': { 'wf_parameters': scf_parameters, 'calc_parameters': calc_parameters, 'options': option_node, 'inpgen': inpgen, 'fleur': fleur }, 'wf_parameters': relax_parameters, 'label': 'relaxation', }, 'wf_parameters': wf_parameters } inputs = clean_nones(inputs) builder = workchain_class.get_builder() builder.update(inputs) launch_process(builder, daemon)