Skip to content

Commit

Permalink
Added CASPT2 (RS2C) multireference support for Molpro
Browse files Browse the repository at this point in the history
  • Loading branch information
alongd committed Sep 3, 2024
1 parent dea293c commit 92fdfdb
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
6 changes: 3 additions & 3 deletions arc/job/adapters/molpro.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def write_input_file(self) -> None:
if 'IGNORE_ERROR in the ORBITAL directive' in self.args['trsh'].keys():
keywords.append('ORBITAL,IGNORE_ERROR')

if 'mrci' in self.level.method:
if 'mrci' in self.level.method or 'rs2' in self.level.method:
input_dict['orbitals'] = '\ngprint,orbitals;\n'
input_dict['restricted'] = ''
if '_' in self.level.method:
Expand All @@ -268,8 +268,8 @@ def write_input_file(self) -> None:
{{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;'
if 'mrci' in self.level.method:
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)

Expand Down
7 changes: 4 additions & 3 deletions arc/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -1294,14 +1294,14 @@ def run_sp_job(self,
self.job_dict[label]['sp'] = dict()
if self.composite_method:
raise SchedulerError(f'run_sp_job() was called for {label} which has a composite method level of theory')
if 'mrci' in level.method:
if 'mrci' in level.method or 'rs2' in level.method:
if self.job_dict[label]['sp']:
if self.species_dict[label].active is None:
self.species_dict[label].active = parser.parse_active_space(
sp_path=self.output[label]['paths']['sp'],
species=self.species_dict[label])
else:
logger.info(f'Running a CCSD/cc-pVDZ job for {label} before the MRCI job')
logger.info(f'Running a CCSD/cc-pVDZ job for {label} before the multireference job')
self.run_job(label=label,
xyz=self.species_dict[label].get_xyz(generate=False),
level_of_theory='ccsd/cc-pvdz',
Expand Down Expand Up @@ -2623,7 +2623,8 @@ def check_sp_job(self,
label (str): The species label.
job (JobAdapter): The single point job object.
"""
if 'mrci' in self.sp_level.method and job.level is not None and 'mrci' not in job.level.method:
if ('mrci' in self.sp_level.method or 'rs2' in self.sp_level.method) and job.level is not None \
and 'mrci' not in job.level.method and 'rs2' not in job.level.method:
self.output[label]['paths']['sp'] = job.local_path_to_output_file
self.run_sp_job(label)
elif job.job_status[1]['status'] == 'done':
Expand Down

0 comments on commit 92fdfdb

Please sign in to comment.