stjames 0.0.14__tar.gz → 0.0.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of stjames might be problematic. Click here for more details.
- {stjames-0.0.14/stjames.egg-info → stjames-0.0.17}/PKG-INFO +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/pyproject.toml +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames/__init__.py +1 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/diis_settings.py +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames/grid_settings.py +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames/int_settings.py +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames/methods.py +3 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/molecule.py +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames/opt_settings.py +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames/scf_settings.py +2 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/settings.py +9 -6
- stjames-0.0.17/stjames/solvent_settings.py +17 -0
- {stjames-0.0.14 → stjames-0.0.17/stjames.egg-info}/PKG-INFO +1 -1
- {stjames-0.0.14 → stjames-0.0.17}/stjames.egg-info/SOURCES.txt +1 -0
- {stjames-0.0.14 → stjames-0.0.17}/LICENSE +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/README.md +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/setup.cfg +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/base.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/basis_set.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/calculation.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/corrections.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/modes.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/status.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/tasks.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames/thermochem_settings.py +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames.egg-info/dependency_links.txt +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames.egg-info/requires.txt +0 -0
- {stjames-0.0.14 → stjames-0.0.17}/stjames.egg-info/top_level.txt +0 -0
|
@@ -15,7 +15,7 @@ class DIISStrategy(LowercaseStrEnum):
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class DIISSettings(Base):
|
|
18
|
-
strategy: DIISStrategy = DIISStrategy.
|
|
18
|
+
strategy: DIISStrategy = DIISStrategy.ADIIS_DIIS
|
|
19
19
|
subspace_size: pydantic.PositiveInt = 12
|
|
20
20
|
|
|
21
21
|
# if it's a hybrid strategy, where do we transition?
|
|
@@ -14,7 +14,7 @@ class GridSettings(Base):
|
|
|
14
14
|
radial_grid_type: RadialGridType = RadialGridType.LMG
|
|
15
15
|
angular_num_points: pydantic.PositiveInt = 434
|
|
16
16
|
|
|
17
|
-
weight_cutoff: pydantic.PositiveFloat = 1e-
|
|
17
|
+
weight_cutoff: pydantic.PositiveFloat = 1e-11
|
|
18
18
|
|
|
19
19
|
# for LMG
|
|
20
20
|
radial_precision: pydantic.PositiveFloat = 1e-11
|
|
@@ -84,7 +84,7 @@ class Molecule(Base):
|
|
|
84
84
|
if (num_electrons - num_unpaired_electrons) % 2 != 0:
|
|
85
85
|
raise ValueError(
|
|
86
86
|
f"The combination of {num_electrons} electrons, charge {self.charge}, and multiplicity {self.multiplicity} is impossible. "
|
|
87
|
-
"Double-check the charge and multiplicity values given and verify that
|
|
87
|
+
"Double-check the charge and multiplicity values given and verify that they are correct."
|
|
88
88
|
)
|
|
89
89
|
|
|
90
90
|
return self
|
|
@@ -5,6 +5,7 @@ from .base import Base, LowercaseStrEnum
|
|
|
5
5
|
from .int_settings import IntSettings
|
|
6
6
|
from .grid_settings import GridSettings
|
|
7
7
|
from .diis_settings import DIISSettings
|
|
8
|
+
from .solvent_settings import SolventSettings
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
class SCFInitMethod(LowercaseStrEnum):
|
|
@@ -28,6 +29,7 @@ class SCFSettings(Base):
|
|
|
28
29
|
int_settings: IntSettings = IntSettings()
|
|
29
30
|
grid_settings: GridSettings = GridSettings()
|
|
30
31
|
diis_settings: DIISSettings = DIISSettings()
|
|
32
|
+
solvent_settings: SolventSettings = SolventSettings()
|
|
31
33
|
|
|
32
34
|
#### orthonormalization
|
|
33
35
|
orthonormalization: OrthonormalizationMethod = OrthonormalizationMethod.CANONICAL
|
|
@@ -28,7 +28,7 @@ class Settings(Base):
|
|
|
28
28
|
@pydantic.computed_field
|
|
29
29
|
@property
|
|
30
30
|
def level_of_theory(self) -> str:
|
|
31
|
-
if self.method in [Method.HF3C, Method.B973C]:
|
|
31
|
+
if self.method in [Method.HF3C, Method.B973C, Method.AIMNET2_WB97MD3]:
|
|
32
32
|
return self.method.value
|
|
33
33
|
elif (len(self.corrections)) == 0 or (self.method in [Method.B97D3]):
|
|
34
34
|
return f"{self.method.value}/{self.basis_set.name.lower()}"
|
|
@@ -117,8 +117,8 @@ def _assign_settings_by_mode(settings: Settings) -> None:
|
|
|
117
117
|
scf_settings.rms_error_threshold = 1e-8
|
|
118
118
|
scf_settings.max_error_threshold = 1e-6
|
|
119
119
|
scf_settings.rebuild_frequency = 20
|
|
120
|
-
scf_settings.int_settings.eri_threshold = 1e-
|
|
121
|
-
scf_settings.int_settings.csam_multiplier =
|
|
120
|
+
scf_settings.int_settings.eri_threshold = 1e-9
|
|
121
|
+
scf_settings.int_settings.csam_multiplier = 1.0
|
|
122
122
|
scf_settings.int_settings.pair_overlap_threshold = 1e-9
|
|
123
123
|
elif mode == Mode.CAREFUL:
|
|
124
124
|
scf_settings.energy_threshold = 1e-6
|
|
@@ -149,17 +149,20 @@ def _assign_settings_by_mode(settings: Settings) -> None:
|
|
|
149
149
|
|
|
150
150
|
opt_settings = settings.opt_settings
|
|
151
151
|
|
|
152
|
+
# constrained optimizations warrant loosening the settings a bit
|
|
153
|
+
has_constraints = len(opt_settings.constraints) > 0
|
|
154
|
+
|
|
152
155
|
# cf. DLFIND manual, and https://www.cup.uni-muenchen.de/ch/compchem/geom/basic.html
|
|
153
156
|
# and the discussion at https://geometric.readthedocs.io/en/latest/how-it-works.html
|
|
154
157
|
if mode == Mode.RECKLESS:
|
|
155
158
|
opt_settings.energy_threshold = 1e-5
|
|
156
159
|
opt_settings.max_gradient_threshold = 4.5e-3
|
|
157
160
|
opt_settings.rms_gradient_threshold = 3e-3
|
|
158
|
-
elif mode == Mode.RAPID:
|
|
159
|
-
opt_settings.energy_threshold =
|
|
161
|
+
elif (mode == Mode.RAPID) or (mode == Mode.CAREFUL and has_constraints):
|
|
162
|
+
opt_settings.energy_threshold = 5e-5
|
|
160
163
|
opt_settings.max_gradient_threshold = 2.5e-3
|
|
161
164
|
opt_settings.rms_gradient_threshold = 1.7e-3
|
|
162
|
-
elif mode == Mode.CAREFUL:
|
|
165
|
+
elif mode == Mode.CAREFUL or (mode == mode.METICULOUS and has_constraints):
|
|
163
166
|
opt_settings.energy_threshold = 1e-6
|
|
164
167
|
opt_settings.max_gradient_threshold = 4.5e-4
|
|
165
168
|
opt_settings.rms_gradient_threshold = 3e-4
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
|
|
3
|
+
from .base import Base, LowercaseStrEnum
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ImplicitSolventModel(LowercaseStrEnum):
|
|
7
|
+
CPCM = "cpcm"
|
|
8
|
+
NONE = "none"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SolventSettings(Base):
|
|
12
|
+
model: ImplicitSolventModel = ImplicitSolventModel.NONE
|
|
13
|
+
epsilon: float = 78.36
|
|
14
|
+
|
|
15
|
+
grid_points_per_atom: pydantic.PositiveInt = 170
|
|
16
|
+
vdw_scale: pydantic.PositiveFloat = 1.2
|
|
17
|
+
weight_cutoff: pydantic.PositiveFloat = 1e-8
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|