def __init__(self, structure: Union[Structure, Molecule], max_drift: float = 3e-3, max_force: float = 4.5e-3, max_iter: int = 200, project_name: str = "Relax", optimizer: str = "BFGS", override_default_params: Dict = {}, **kwargs): """ Args: structure: max_drift: Convergence criterion for the maximum geometry change between the current and the last optimizer iteration. This keyword cannot be repeated and it expects precisely one real. Default value: 3.00000000E-003 Default unit: [bohr] max_force (float): Convergence criterion for the maximum force component of the current configuration. This keyword cannot be repeated and it expects precisely one real. Default value: 4.50000000E-004 Default unit: [bohr^-1*hartree] max_iter (int): Specifies the maximum number of geometry optimization steps. One step might imply several force evaluations for the CG and LBFGS optimizers. This keyword cannot be repeated and it expects precisely one integer. Default value: 200 optimizer (str): Specify which method to use to perform a geometry optimization. This keyword cannot be repeated and it expects precisely one keyword. BFGS is a quasi-newtonian method, and will best for "small" systems near the minimum. LBFGS is a limited memory version that can be used for "large" (>1000 atom) systems when efficiency outweights robustness. CG is more robust, especially when you are far from the minimum, but it slower. Default value: BFGS """ super().__init__(structure, **kwargs) self.structure = structure self.max_drift = max_drift self.max_force = max_force self.max_iter = max_iter self.project_name = project_name self.optimizer = optimizer self.override_default_params = override_default_params self.kwargs = kwargs global_section = Global(project_name=project_name, run_type="GEO_OPT") geo_opt_params = { "TYPE": Keyword("TYPE", "MINIMIZATION"), "MAX_DR": Keyword("MAX_DR", max_drift), "MAX_FORCE": Keyword("MAX_FORCE", max_force), "RMS_DR": Keyword("RMS_DR", 1.5e-3), "MAX_ITER": Keyword("MAX_ITER", max_iter), "OPTIMIZER": Keyword("OPTIMIZER", optimizer), } geo_opt = Section("GEO_OPT", subsections={}, keywords=geo_opt_params) if not self.check("MOTION"): self.insert(Section("MOTION", subsections={})) self["MOTION"].insert(geo_opt) self.insert(global_section) self.modify_dft_print_iters(max_iter + 1, add_last="numeric") self.update(override_default_params)
def __init__( self, structure: Union[Structure, Molecule], project_name: str = "CellOpt", override_default_params: Dict = {}, **kwargs, ): """ Args: structure: Pymatgen structure object max_drift: Convergence criterion for the maximum geometry change between the current and the last optimizer iteration. This keyword cannot be repeated and it expects precisely one real. Default value: 3.00000000E-003 Default unit: [bohr] max_force (float): Convergence criterion for the maximum force component of the current configuration. This keyword cannot be repeated and it expects precisely one real. Default value: 4.50000000E-004 Default unit: [bohr^-1*hartree] max_iter (int): Specifies the maximum number of geometry optimization steps. One step might imply several force evaluations for the CG and LBFGS optimizers. This keyword cannot be repeated and it expects precisely one integer. Default value: 200 optimizer (str): Specify which method to use to perform a geometry optimization. This keyword cannot be repeated and it expects precisely one keyword. BFGS is a quasi-newtonian method, and will best for "small" systems near the minimum. LBFGS is a limited memory version that can be used for "large" (>1000 atom) systems when efficiency outweights robustness. CG is more robust, especially when you are far from the minimum, but it slower. Default value: BFGS """ super().__init__(structure, **kwargs) self.structure = structure self.project_name = project_name self.override_default_params = override_default_params self.kwargs = kwargs global_section = Global(project_name=project_name, run_type="CELL_OPT") self.insert(global_section) self.modify_dft_print_iters(self.get("max_iter", 200) + 1, add_last="numeric") self.update(override_default_params)
def __init__(self, structure: Union[Structure, Molecule], project_name: str = "Static", run_type: str = "ENERGY_FORCE", override_default_params: Dict = {}, **kwargs): """ Args: structure: Pymatgen structure object project_name (str): What to name this cp2k project (controls naming of files printed out) run_type (str): Run type. As a static set it should be one of the static aliases, like 'ENERGY_FORCE' """ super().__init__(structure, **kwargs) global_section = Global(project_name=project_name, run_type=run_type) self.structure = structure self.project_name = project_name self.run_type = run_type self.override_default_params = override_default_params self.insert(global_section) self.update(override_default_params) self.kwargs = kwargs