From e3fd2fc6239261d8a286c82795c208fa653a78c3 Mon Sep 17 00:00:00 2001 From: Alon Grinberg Dana Date: Fri, 2 Aug 2024 00:03:48 +0300 Subject: [PATCH] Allow users to set a specific MRCI procedure e.g.: MP2_RS3_MRCI-F12 --- arc/job/adapters/molpro.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/arc/job/adapters/molpro.py b/arc/job/adapters/molpro.py index 23f5707301..6681122316 100644 --- a/arc/job/adapters/molpro.py +++ b/arc/job/adapters/molpro.py @@ -46,8 +46,8 @@ ${cabs} int; {hf;${shift} -maxit,1000; -wf,spin=${spin},charge=${charge};} + maxit,1000; + wf,spin=${spin},charge=${charge};} ${restricted}${method}; @@ -252,13 +252,23 @@ def write_input_file(self) -> None: if 'mrci' in self.level.method: input_dict['orbitals'] = '\ngprint,orbitals;\n' input_dict['restricted'] = '' - input_dict['method'] = f"""{{casscf; + if '_' in self.level.method: + methods = self.level.method.split('_') + input_dict['method'] = '' + for method in methods: + input_dict['method'] += f"""{{{method.lower()}; + maxit,999; + wf,spin={input_dict['spin']},charge={input_dict['charge']};}} +""" + else: + input_dict['method'] = f"""{{casscf; maxit,999; wf,spin={input_dict['spin']},charge={input_dict['charge']};}} {{mrci{"-f12" if "f12" in self.level.method.lower() else ""}; maxit,999; wf,spin={input_dict['spin']},charge={input_dict['charge']};}}""" + input_dict['block'] += '\n\nE_mrci=energy;\nE_mrci_Davidson=energd;\n\ntable,E_mrci,E_mrci_Davidson;' input_dict = update_input_dict_with_args(args=self.args, input_dict=input_dict)