Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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))
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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()
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
    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)
Ejemplo n.º 10
0
 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,
     )
Ejemplo n.º 11
0
    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)
Ejemplo n.º 12
0
    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()
Ejemplo n.º 13
0
    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()
Ejemplo n.º 14
0
    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()
Ejemplo n.º 15
0
 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))
Ejemplo n.º 16
0
 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()
Ejemplo n.º 17
0
 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),
     )
Ejemplo n.º 18
0
    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)
Ejemplo n.º 19
0
 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)
Ejemplo n.º 20
0
    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()
Ejemplo n.º 21
0
 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)
Ejemplo n.º 22
0
 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()
Ejemplo n.º 23
0
    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()
Ejemplo n.º 24
0
    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()
Ejemplo n.º 26
0
    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()
Ejemplo n.º 27
0
    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()
Ejemplo n.º 28
0
    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)
Ejemplo n.º 29
0
 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)
Ejemplo n.º 30
0
 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()