|
57 | 57 |
|
58 | 58 | from arkane.common import ArkaneSpecies, symbol_by_number, get_principal_moments_of_inertia |
59 | 59 | from arkane.encorr.corr import get_atom_correction, get_bac |
60 | | -from arkane.ess import ESSAdapter, ess_factory, _registered_ess_adapters, GaussianLog, QChemLog |
| 60 | +from arkane.ess import ESSAdapter, ess_factory, _registered_ess_adapters, GaussianLog, QChemLog, XTBLog |
61 | 61 | from arkane.encorr.isodesmic import ErrorCancelingSpecies, IsodesmicRingScheme |
62 | 62 | from arkane.modelchem import LevelOfTheory, CompositeLevelOfTheory, standardize_name |
63 | 63 | from arkane.output import prettify |
@@ -506,10 +506,22 @@ def create_log(log_path, check_for_errors=True): |
506 | 506 | self.species.label)) |
507 | 507 |
|
508 | 508 | logging.debug(' Reading molecular degrees of freedom...') |
509 | | - conformer, unscaled_frequencies = statmech_log.load_conformer(symmetry=external_symmetry, |
| 509 | + if isinstance(statmech_log, XTBLog): |
| 510 | + # XTB frequencies log does not contain geometry information, so read the geometry from the geometry log |
| 511 | + # frequencies from the frequencies log and combine them to create the conformer object |
| 512 | + conformer, unscaled_frequencies = geom_log.load_conformer(symmetry=external_symmetry, |
510 | 513 | spin_multiplicity=spin_multiplicity, |
511 | 514 | optical_isomers=optical_isomers, |
512 | 515 | label=self.species.label) |
| 516 | + unscaled_frequencies = statmech_log._load_frequencies() |
| 517 | + if unscaled_frequencies: |
| 518 | + conformer.modes.append(HarmonicOscillator(frequencies=(unscaled_frequencies, "cm^-1"))) |
| 519 | + else: |
| 520 | + |
| 521 | + conformer, unscaled_frequencies = statmech_log.load_conformer(symmetry=external_symmetry, |
| 522 | + spin_multiplicity=spin_multiplicity, |
| 523 | + optical_isomers=optical_isomers, |
| 524 | + label=self.species.label) |
513 | 525 |
|
514 | 526 | for mode in conformer.modes: |
515 | 527 | if isinstance(mode, (Translation, IdealGasTranslation)): |
@@ -695,7 +707,10 @@ def create_log(log_path, check_for_errors=True): |
695 | 707 |
|
696 | 708 | # save supporting information for calculation |
697 | 709 | self.supporting_info = [self.species.label] |
698 | | - optical_isomers_read, symmetry_read, point_group_read = statmech_log.get_symmetry_properties() |
| 710 | + if isinstance(statmech_log, XTBLog): |
| 711 | + optical_isomers_read, symmetry_read, point_group_read = geom_log.get_symmetry_properties() |
| 712 | + else: |
| 713 | + optical_isomers_read, symmetry_read, point_group_read = statmech_log.get_symmetry_properties() |
699 | 714 | self.supporting_info.append(external_symmetry if external_symmetry else symmetry_read) |
700 | 715 | self.supporting_info.append(optical_isomers if optical_isomers else optical_isomers_read) |
701 | 716 | self.supporting_info.append(point_group_read) |
|
0 commit comments