Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 15 additions & 6 deletions arc/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -1161,14 +1161,18 @@ def run_ts_conformer_jobs(self, label: str):
successful_tsgs = [tsg for tsg in self.species_dict[label].ts_guesses if tsg.success]
if len(successful_tsgs) > 1:
self.job_dict[label]['conf_opt'] = dict()
for i, tsg in enumerate(successful_tsgs):
for tsg in successful_tsgs:
if tsg.index is None:
existing_indices = [guess.index for guess in self.species_dict[label].ts_guesses
if guess.index is not None]
tsg.index = max(existing_indices or [-1]) + 1
self.run_job(label=label,
xyz=tsg.initial_xyz,
level_of_theory=self.ts_guess_level,
job_type='conf_opt',
conformer=i,
conformer=tsg.index,
)
tsg.conformer_index = i # Store the conformer index in the TSGuess object to match them later.
tsg.conformer_index = tsg.index # Use a stable identifier for mapping back to TSGuess.
elif len(successful_tsgs) == 1:
if 'opt' not in self.job_dict[label].keys() and 'composite' not in self.job_dict[label].keys():
# proceed only if opt (/composite) not already spawned
Expand Down Expand Up @@ -1980,9 +1984,14 @@ def parse_conformer(self,
xyz = parser.parse_geometry(log_file_path=job.local_path_to_output_file)
energy = parser.parse_e_elect(log_file_path=job.local_path_to_output_file)
if self.species_dict[label].is_ts:
self.species_dict[label].ts_guesses[i].energy = energy
self.species_dict[label].ts_guesses[i].opt_xyz = xyz
self.species_dict[label].ts_guesses[i].index = i
tsg = next((guess for guess in self.species_dict[label].ts_guesses
if guess.conformer_index == i), None)
if tsg is None:
logger.warning(f'Could not find TSGuess for conformer {i} of {label} '
f'(expected a matching conformer_index); skipping.')
return False
tsg.energy = energy
tsg.opt_xyz = xyz
if energy is not None:
logger.debug(f'Energy for TSGuess {i} of {label} is {energy:.2f}')
else:
Expand Down
Loading