def define(cls, spec): super(SiestaBaseWorkChain, cls).define(spec) spec.input('code', valid_type=Code) spec.input('structure', valid_type=StructureData) spec.input_group('pseudos', required=False) spec.input('pseudo_family', valid_type=Str, required=False) spec.input('parent_folder', valid_type=RemoteData, required=False) spec.input('kpoints', valid_type=KpointsData) spec.input('bandskpoints', valid_type=KpointsData, required=False) spec.input('parameters', valid_type=ParameterData) spec.input('basis', valid_type=ParameterData) spec.input('settings', valid_type=ParameterData) spec.input('options', valid_type=ParameterData) spec.input('clean_workdir', valid_type=Bool, default=Bool(False)) spec.input('max_iterations', valid_type=Int, default=Int(10)) spec.outline( cls.setup, cls.validate_pseudo_potentials, while_(cls.should_run_siesta)( cls.run_siesta, cls.inspect_siesta, ), cls.run_results, ) spec.dynamic_output()
def define(cls, spec): super(fleur_convergence, cls).define(spec) spec.input("wf_parameters", valid_type=ParameterData, required=False, default=ParameterData( dict={ 'fleur_runmax': 4, 'density_criterion': 0.00002, 'energy_criterion': 0.002, 'converge_density': True, 'converge_energy': False, 'reuse': True })) spec.input("structure", valid_type=StructureData, required=False) spec.input("calc_parameters", valid_type=ParameterData, required=False) #spec.input("settings", valid_type=ParameterData, required=False) spec.input("fleurinp", valid_type=FleurInpData, required=False) spec.input("remote_data", valid_type=RemoteData, required=False) spec.input("inpgen", valid_type=Code, required=False) spec.input("fleur", valid_type=Code, required=True) spec.outline(cls.start, if_(cls.validate_input)(cls.run_fleurinpgen), cls.run_fleur, cls.get_res, while_(cls.condition)(cls.run_fleur, cls.get_res), cls.return_results)
def define(cls, spec): super(EquationOfState2, cls).define(spec) spec.input("structure", valid_type=StructureData) spec.input("code", valid_type=BaseType) spec.input("pseudo_family", valid_type=BaseType) spec.outline(cls.init, while_(cls.not_finished)(cls.run_pw, cls.print_result))
def define(cls, spec): super(RaspaConvergeWorkChain, cls).define(spec) spec.input('code', valid_type=Code) spec.input('structure', valid_type=CifData) spec.input("parameters", valid_type=ParameterData) spec.input('retrieved_parent_folder', valid_type=FolderData, default=None, required=False) spec.input('block_component_0', valid_type=SinglefileData, default=None, required=False) spec.input("_options", valid_type=dict, default=default_options) spec.outline( cls.setup, while_(cls.should_run_calculation)( cls.prepare_calculation, cls.run_calculation, cls.inspect_calculation, ), cls.return_results, ) spec.output('retrieved_parent_folder', valid_type=FolderData) spec.output('component_0', valid_type=ParameterData) spec.output('output_parameters', valid_type=ParameterData)
def define(cls, spec): super(PwBaseWorkChain, cls).define(spec) spec.input('code', valid_type=Code) spec.input('structure', valid_type=StructureData) spec.input('kpoints', valid_type=KpointsData) spec.input('parameters', valid_type=ParameterData) spec.input_group('pseudos', required=False) spec.input('pseudo_family', valid_type=Str, required=False) spec.input('parent_folder', valid_type=RemoteData, required=False) spec.input('vdw_table', valid_type=SinglefileData, required=False) spec.input('settings', valid_type=ParameterData, required=False) spec.input('options', valid_type=ParameterData, required=False) spec.input('automatic_parallelization', valid_type=ParameterData, required=False) spec.outline( cls.setup, cls.validate_inputs, if_(cls.should_run_init)( cls.validate_init_inputs, cls.run_init, cls.inspect_init, ), while_(cls.should_run_calculation)( cls.prepare_calculation, cls.run_calculation, cls.inspect_calculation, ), cls.results, ) spec.output('output_array', valid_type=ArrayData, required=False) spec.output('output_band', valid_type=BandsData, required=False) spec.output('output_structure', valid_type=StructureData, required=False) spec.output('output_parameters', valid_type=ParameterData) spec.output('remote_folder', valid_type=RemoteData) spec.output('retrieved', valid_type=FolderData)
def define(cls, spec): """Workflow input parameters and the spec definition This function has a list of inputs that this workflow accepts, as well as the high level workflow iteration logic Keyword arguments: precode -- the P2Y code (required) yambocode -- the yambp code (required) calculation_set -- scheduler settings (required) settings -- code settings (required) parent_folder -- parent NSCF/P2Y/YAMBO calculation (required) parameters -- yambo parameter (required) restart_options -- the P2Y code (optional) """ super(YamboRestartWf, cls).define(spec) spec.input("precode", valid_type=Str) spec.input("yambocode", valid_type=Str) spec.input("calculation_set", valid_type=ParameterData) spec.input("settings", valid_type=ParameterData) spec.input("parent_folder", valid_type=RemoteData) spec.input("parameters", valid_type=ParameterData) spec.input("restart_options", valid_type=ParameterData, required=False) spec.outline( cls.yambobegin, while_(cls.yambo_should_restart)( cls.yambo_restart, cls.interstep, ), cls.report_wf) spec.dynamic_output()
def define(cls, spec): super(HpBaseWorkChain, cls).define(spec) spec.input('code', valid_type=Code) spec.input('qpoints', valid_type=KpointsData) spec.input('parent_calculation', valid_type=PwCalculation, required=False) spec.input('parent_folder', valid_type=(FolderData, RemoteData), required=False) spec.input('parameters', valid_type=ParameterData, required=False) spec.input('settings', valid_type=ParameterData, required=False) spec.input('options', valid_type=ParameterData, required=False) spec.input('only_initialization', valid_type=Bool, default=Bool(False)) spec.outline( cls.setup, cls.validate_inputs, while_(cls.should_run_calculation)( cls.run_calculation, cls.inspect_calculation, ), cls.results, ) spec.output('output_parameters', valid_type=ParameterData) spec.output('retrieved', valid_type=FolderData) spec.output('matrices', valid_type=ArrayData, required=False) spec.output('hubbard', valid_type=ParameterData, required=False) spec.output('chi', valid_type=ArrayData, required=False)
def define(cls, spec): """ Defines the outline of the workflow. """ # Take input of the workflow or use defaults defined above super(kkr_startpot_wc, cls).define(spec) spec.input("wf_parameters", valid_type=ParameterData, required=False, default=ParameterData(dict=cls._wf_default)) spec.input("structure", valid_type=StructureData, required=True) spec.input("kkr", valid_type=Code, required=True) spec.input("voronoi", valid_type=Code, required=True) spec.input("calc_parameters", valid_type=ParameterData, required=False) # Here the structure of the workflow is defined spec.outline( # initialize workflow and check inputs cls.start, # check if another iteration is done (in case of either voro_ok, doscheck_ok is False) while_(cls.do_iteration_check)( # run voronoi calculation cls.run_voronoi, # check voronoi output (also sets ctx.voro_ok) if_(cls.check_voronoi)( # create starting DOS using dos sub-workflow cls.get_dos, # perform some checks and set ctx.doscheck_ok accordingly cls.check_dos)), # collect results and return cls.return_results)
def define(cls, spec): super(Cp2kCellOptWorkChain, cls).define(spec) # specify the inputs of the workchain spec.input('code', valid_type=Code) spec.input('structure', valid_type=StructureData) spec.input("parameters", valid_type=ParameterData, default=empty_pd) spec.input("_options", valid_type=dict, default=deepcopy(default_options)) spec.input('parent_folder', valid_type=RemoteData, default=None, required=False) # specify the chain of calculations spec.outline( cls.setup, cls.validate_inputs, while_(cls.should_run_calculation)( cls.prepare_calculation, cls.run_calculation, cls.inspect_calculation, ), cls.return_results, ) # specify the outputs of the workchain spec.output('input_parameters', valid_type=ParameterData) spec.output('output_structure', valid_type=StructureData) spec.output('output_parameters', valid_type=ParameterData) spec.output('remote_folder', valid_type=RemoteData)
def define(cls, spec): super(SelfConsistentHubbardWorkChain, cls).define(spec) spec.input('structure', valid_type=StructureData) spec.input('hubbard_u', valid_type=ParameterData) spec.input('tolerance', valid_type=Float, default=Float(0.1)) spec.input('max_iterations', valid_type=Int, default=Int(5)) spec.input('is_insulator', valid_type=Bool, required=False) spec.input('meta_convergence', valid_type=Bool, default=Bool(False)) spec.expose_inputs(PwBaseWorkChain, namespace='scf', exclude=('structure')) spec.expose_inputs(HpWorkChain, namespace='hp', exclude=('parent_calculation')) spec.outline( cls.setup, cls.validate_inputs, if_(cls.should_run_recon)( cls.run_recon, cls.inspect_recon, ), while_(cls.should_run_iteration)( if_(cls.should_run_relax)( cls.run_relax, cls.inspect_relax, ), if_(cls.is_metal)(cls.run_scf_smearing).elif_(cls.is_magnetic)( cls.run_scf_smearing, cls.run_scf_fixed_magnetic).else_(cls.run_scf_fixed), cls.run_hp, cls.inspect_hp, ), cls.run_results, )
def define(cls, spec): super(Cp2kDftBaseWorkChain, cls).define(spec) spec.input('code', valid_type=Code) spec.input('structure', valid_type=StructureData) spec.input("parameters", valid_type=ParameterData, default=ParameterData(dict={})) spec.input("options", valid_type=ParameterData, default=ParameterData(dict=default_options)) spec.input('parent_folder', valid_type=RemoteData, default=None, required=False) spec.input('_guess_multiplisity', valid_type=bool, default=False) spec.outline( cls.setup, while_(cls.should_run_calculation)( cls.prepare_calculation, cls.run_calculation, cls.inspect_calculation, ), cls.return_results, ) spec.output('output_structure', valid_type=StructureData, required=False) spec.output('output_parameters', valid_type=ParameterData) spec.output('remote_folder', valid_type=RemoteData)
def define(cls, spec): """Workfunction definition Provides a thin wrapper around the aiida_quantumespresso PwBaseWorkChain, so yambo workflows can be ignorant about the details of running a PW calculation. """ super(PwRestartWf, cls).define(spec) spec.input("codename", valid_type=BaseType) spec.input("restart_options", valid_type=ParameterData, required=False) spec.input("pseudo_family", valid_type=Str) spec.input("calculation_set", valid_type=ParameterData ) # custom_scheduler_commands, resources,... spec.input("calculation_set_nscf", valid_type=ParameterData, required=False) # custom_scheduler_commands, resources,... spec.input("settings", valid_type=ParameterData) spec.input("settings_nscf", valid_type=ParameterData, required=False) spec.input("structure", valid_type=StructureData) spec.input("kpoints", valid_type=KpointsData) spec.input("kpoints_nscf", valid_type=KpointsData, required=False) spec.input("gamma", valid_type=Bool, default=Bool(0), required=False) spec.input("parameters", valid_type=ParameterData) spec.input("parameters_nscf", valid_type=ParameterData, required=False) spec.input("parent_folder", valid_type=RemoteData, required=False) spec.outline(cls.pwbegin, while_(cls.pw_should_continue)(cls.pw_continue, ), cls.report_wf) spec.dynamic_output()
def define(cls, spec): super(GCMCMD2, cls).define(spec) # structure, adsorbant, pressures spec.input('structure', valid_type=CifData) spec.input("pressure", valid_type=Float, required=True) spec.input("number_runs", valid_type=Float, default=Float(1)) spec.input("number_cycles_lower", valid_type=Float, default=Float(1)) spec.input("number_cycles_upper", valid_type=Float, default=Float(100000)) # zeopp spec.input('zeopp_code', valid_type=Code) spec.input("_zeopp_options", valid_type=dict, default=None, required=False) spec.input("zeopp_probe_radius", valid_type=Float) spec.input("zeopp_atomic_radii", valid_type=SinglefileData, default=None, required=False) # raspa spec.input("raspa_code", valid_type=Code) spec.input("raspa_parameters_gcmc", valid_type=ParameterData) spec.input("raspa_parameters_md", valid_type=ParameterData) spec.input("raspa_parameters_gcmc_0", valid_type=ParameterData) spec.input("_raspa_options", valid_type=dict, default=None, required=False) # settings spec.input("_usecharges", valid_type=bool, default=True, required=False) # workflow spec.outline( cls.init, cls.run_zeopp, # computes volpo and block pockets cls.init_raspa_calc, # assign HeliumVoidFraction=POAV cls.run_first_gcmc, # first GCMC is longer and with intialization cls. parse_loading_raspa, # then move to loop in which one cycles between MD and MC while_(cls.should_run_loading_raspa)( cls.run_md, cls.parse_loading_raspa, cls. run_loading_raspa, # for each run, recover the last snapshot of the previous and run GCMC cls.parse_loading_raspa, ), cls.return_results, ) spec.dynamic_output()
def define(cls, spec): """ convergence_parameters = {'variable_to_converge':'bands' or 'W_cutoff' or 'kpoints' or 'FFT_cutoff', 'start_value': 10, 'step': 5, 'max_value':100, 'conv_tol': 0.1, 'conv_window': 3 (optional), 'loop_length': 4 (optional), } """ super(YamboConvergenceWorkflow, cls).define(spec) spec.input("precode", valid_type=BaseType) spec.input("pwcode", valid_type=BaseType, required=False) spec.input("yambocode", valid_type=BaseType) spec.input("pseudo", valid_type=BaseType, required=True) spec.input("calculation_set_pw", valid_type=ParameterData, required=False) spec.input("calculation_set_p2y", valid_type=ParameterData, required=False) spec.input("calculation_set", valid_type=ParameterData) spec.input("parent_scf_folder", valid_type=RemoteData, required=False) spec.input("settings_p2y", valid_type=ParameterData, required=False, default=p2y_default_settings()) spec.input("settings", valid_type=ParameterData, required=False, default=yambo_default_settings()) spec.input("structure", valid_type=StructureData, required=False) spec.input("parent_nscf_folder", valid_type=RemoteData, required=False) spec.input("parameters_p2y", valid_type=ParameterData, required=False, default=set_default_qp_param()) spec.input("parameters", valid_type=ParameterData, required=False) #spec.input("converge_parameters", valid_type=List) #spec.input("starting_points", valid_type=List,required=False,default=List() ) #spec.input("default_step_size", valid_type=ParameterData,required=False, # default=DataFactory('parameter')(dict=default_step_size)) spec.input("convergence_parameters", valid_type=ParameterData, required=True) #spec.input("threshold", valid_type=Float, required=False, default=Float(0.1)) spec.outline( cls.start, cls.iterate, while_(cls.is_not_converged)( cls.run_next_update, cls.iterate, ), cls.report_wf) spec.dynamic_output()
def define(cls, spec): super(OutlineWorkChain, cls).define(spec) spec.input('a', valid_type=Int) spec.outline( cls.setup, while_(cls.not_finished)(if_(cls.if_multiple_of_three_and_five)( cls.report_fizz_buzz).elif_(cls.if_multiple_of_five)( cls.report_buzz).elif_(cls.if_multiple_of_three)( cls.report_fizz).else_(cls.report_number), cls.decrement))
def define(cls, spec): super(TheWorkflow, cls).define(spec) spec.input("element", valid_type=Str) spec.outline( cls.init, cls.set_flow, while_(cls.not_finished)( cls.run_ape, cls.runEos, cls.res_on_variable, ), cls.return_res) spec.dynamic_output()
def define(cls, spec): super(Wf, cls).define(spec) spec.input("value") spec.input("n") spec.dynamic_output() spec.outline( cls.s1, if_(cls.isA)(cls.s2).elif_(cls.isB)(cls.s3).else_(cls.s4), cls.s5, while_(cls.ltN)(cls.s6), )
def create_outline(cls): outline = ( cls._initial_setup, cls._validate_pseudo_potentials, cls.should_setup, while_(cls.ready)( *cls.run_scf(cls.decrement) ), cls._scf_results ) return(outline)
def create_outline(cls): outline = ( cls._initial_setup, cls._validate_pseudo_potentials, cls._scf_reset, while_(cls._should_run_scf)( cls._run_scf_cycle, cls._inspect_scf_cycle, ), cls._scf_results, ) return (outline)
def define(cls, spec): super(Isotherm, cls).define(spec) # structure, adsorbant, pressures spec.input('structure', valid_type=CifData) spec.input("probe_radius", valid_type=Float) spec.input("pressures", valid_type=ArrayData) # zeopp spec.input('zeopp_code', valid_type=Code) spec.input("_zeopp_options", valid_type=dict, default=None, required=False) # raspa spec.input("raspa_code", valid_type=Code) spec.input("raspa_parameters", valid_type=ParameterData) spec.input("_raspa_options", valid_type=dict, default=None, required=False) # settings spec.input("_interactive", valid_type=bool, default=False, required=False) spec.input("_usecharges", valid_type=bool, default=False, required=False) # workflow spec.outline( cls. init, #read pressures, switch on cif charges if _usecharges=True cls. run_block_zeopp, #computes sa, vol, povol, res, e chan, block pockets cls.init_raspa_calc, #assign HeliumVoidFraction=POAV and UnitCells cls. run_henry_raspa, #NumberOfInitializationCycles=0, remove ExternalPressure, WidomProbability=1 while_(cls.should_run_loading_raspa)( cls. run_loading_raspa, #for each P, recover the last snapshoot of the previous and run GCMC cls.parse_loading_raspa, ), cls.return_results, ) # TODO: once the workflow is ready, explicitely specify the outputs spec.dynamic_output()
def define(cls, spec): """ Workfunction definition """ super(PressureConvergence, cls).define(spec) spec.input("structure", valid_type=StructureData) spec.input("volume_tolerance", valid_type=Float) #, default=Float(0.1)) spec.input("code", valid_type=Str) spec.input("pseudo_family", valid_type=Str) spec.outline(cls.setup, cls.put_step0_in_ctx, cls.move_next_step, while_(cls.not_converged)(cls.move_next_step, ), cls.finish)
def define(cls, spec): """ Workfunction definition """ spec.input("structure", valid_type=StructureData) spec.input("volume_tolerance", valid_type=NumericType) # , default=Float(0.1)) spec.input("code", valid_type=BaseType) spec.input("pseudo_family", valid_type=BaseType) spec.outline(cls.init, cls.put_step0_in_ctx, cls.move_next_step, while_(cls.not_converged)(cls.move_next_step, ), cls.report) spec.dynamic_output()
def define(cls, spec): super(FTGeoOptWorkChain, cls).define(spec) spec.input("cp2k_code", valid_type=Code) spec.input("structure", valid_type=StructureData) spec.input("num_machines", valid_type=Int, default=Int(1)) spec.input("wavefunction", valid_type=Str, default=Str('')) spec.input("fixed_atoms", valid_type=Str, default=Str('')) spec.outline( cls.run_geopt, while_(cls.not_converged)(cls.run_geopt_again), ) spec.dynamic_output()
def define(cls, spec): super(EnergyWorkChain, cls).define(spec) spec.input("cp2k_code", valid_type=Code) spec.input("structure", valid_type=StructureData) spec.input("num_machines", valid_type=Int, default=Int(1)) spec.input("wavefunction", valid_type=Str, default=Str('')) spec.input("gasphase", valid_type=Bool, default=Bool(False)) spec.outline( cls.run_ene, while_(cls.not_converged)(cls.run_ene_again), ) spec.dynamic_output()
def define(cls, spec): super(ResubmitGCMC, cls).define(spec) # structure, adsorbant, pressures spec.input('structure', valid_type=CifData) spec.input("zeopp_probe_radius", valid_type=Float) spec.input("pressure", valid_type=Float) spec.input("number_runs", valid_type=Float) # zeopp spec.input('zeopp_code', valid_type=Code) spec.input("_zeopp_options", valid_type=dict, default=None, required=False) spec.input("zeopp_atomic_radii", valid_type=SinglefileData, default=None, required=False) # raspa spec.input("raspa_code", valid_type=Code) spec.input("raspa_parameters_gcmc", valid_type=ParameterData) spec.input("raspa_parameters_gcmc_0", valid_type=ParameterData) spec.input("_raspa_options", valid_type=dict, default=None, required=False) # settings spec.input("_usecharges", valid_type=bool, default=True, required=False) # workflow spec.outline( cls.init, cls.run_zeopp, # computes volpo and block pockets cls.init_raspa_calc, # assign HeliumVoidFraction=POAV cls.run_first_gcmc, cls.parse_loading_raspa, while_(cls.should_run_loading_raspa)( cls. run_loading_raspa, # for each run, recover the last snapshot of the previous and run GCMC cls.parse_loading_raspa, ), cls.return_results, ) spec.dynamic_output()
def define(cls, spec): super(DFTGeoOptWorkChain, cls).define(spec) spec.input("cp2k_code", valid_type=Code) spec.input("structure", valid_type=StructureData) spec.input("max_force", valid_type=Float, default=Float(0.001)) spec.input("vdw_switch", valid_type=Bool, default=Bool(False)) spec.input("mgrid_cutoff", valid_type=Int, default=Int(600)) spec.input("fixed_atoms", valid_type=Str, default=Str('')) spec.outline( cls.run_geopt, while_(cls.not_converged)(cls.run_geopt_again), ) spec.dynamic_output()
def define(cls, spec): super(ReplicaWorkchain, cls).define(spec) spec.input("cp2k_code", valid_type=Code) spec.input("structure", valid_type=StructureData) spec.input("num_machines", valid_type=Int, default=Int(54)) spec.input("replica_name", valid_type=Str) spec.input("cell", valid_type=Str, default=Str('')) spec.input("fixed_atoms", valid_type=Str, default=Str('')) spec.input("colvar_targets", valid_type=Str) spec.input("target_unit", valid_type=Str) spec.input("spring", valid_type=Float, default=Float(75.0)) spec.input("spring_unit", valid_type=Str) spec.input("subsys_colvar", valid_type=ParameterData) spec.input("calc_type", valid_type=Str) spec.outline( cls.init, while_(cls.next_replica)(cls.generate_replica, while_(cls.not_converged)( cls.generate_replica), cls.store_replica)) spec.dynamic_output()
def define(cls, spec): super(VaspBaseWf, cls).define(spec) spec.input('code', valid_type=Code) spec.input('structure', valid_type=(get_data_class('structure'), get_data_class('cif'))) spec.input('kpoints', valid_type=get_data_class('array.kpoints')) spec.input('potcar_family', valid_type=get_data_class('str')) spec.input('potcar_mapping', valid_type=get_data_class('parameter')) spec.input('incar', valid_type=get_data_class('parameter')) spec.input('wavecar', valid_type=get_data_class('vasp.wavefun'), required=False) spec.input('chgcar', valid_type=get_data_class('vasp.chargedensity'), required=False) spec.input('settings', valid_type=get_data_class('parameter'), required=False) spec.input('options', valid_type=get_data_class('parameter')) spec.outline( cls.setup, cls.validate_inputs, while_(cls.should_run_calculation)( cls.prepare_calculation, cls.run_calculation, cls.inspect_calculation ), cls.results ) ## yapf: disable spec.output('output_parameters', valid_type=get_data_class('parameter')) spec.output('remote_folder', valid_type=get_data_class('remote')) spec.output('retrieved', valid_type=get_data_class('folder')) spec.output('output_band', valid_type=get_data_class('array.bands'), required=False) spec.output('output_structure', valid_type=get_data_class('structure'), required=False) spec.output('output_kpoints', valid_type=get_data_class('array.kpoints'), required=False)
def define(cls, spec): super(Q2rBaseWorkChain, cls).define(spec) spec.input('code', valid_type=Code) spec.input('parent_folder', valid_type=FolderData) spec.input('parameters', valid_type=ParameterData, required=False) spec.input('settings', valid_type=ParameterData, required=False) spec.input('options', valid_type=ParameterData, required=False) spec.outline( cls.setup, cls.validate_inputs, while_(cls.should_run_calculation)( cls.run_calculation, cls.inspect_calculation, ), cls.results, ) spec.output('force_constants', valid_type=ForceconstantsData) spec.output('remote_folder', valid_type=RemoteData)
def define(cls, spec): """ Workfunction definition """ super(YamboRestartWf, cls).define(spec) spec.input("precode", valid_type=Str) spec.input("yambocode", valid_type=Str) spec.input("calculation_set", valid_type=ParameterData) spec.input("settings", valid_type=ParameterData) spec.input("parent_folder", valid_type=RemoteData) spec.input("parameters", valid_type=ParameterData) spec.input("restart_options", valid_type=ParameterData, required=False) spec.outline( cls.yambobegin, while_(cls.yambo_should_restart)( cls.yambo_restart, cls.interstep, ), cls.report_wf) spec.dynamic_output()