@@ -40,9 +40,10 @@ class NebMethod(ValueEnum):
40
40
class HopFailureReason (ValueEnum ):
41
41
"""Define failure modes for ApproxNEB calculations."""
42
42
43
- ENDPOINT = "Endpoint structure relaxation failed"
43
+ ENDPOINT = "Endpoint structure relaxation failed. "
44
44
MIN_DIST = "Linear distance traversed by working ion is below threshold."
45
- MIN_IMAGE = "Too few image calculations succeeded"
45
+ MIN_IMAGE = "Too few image calculations succeeded."
46
+ IMAGE_FAILURE = "No image calculation output."
46
47
47
48
48
49
class BarrierAnalysis (BaseModel ):
@@ -177,6 +178,14 @@ class NebResult(BaseModel):
177
178
None , description = "Analysis of the reaction barrier."
178
179
)
179
180
181
+ failure_reasons : list [HopFailureReason ] | None = Field (
182
+ None , description = "Reasons why the barrier calculation failed."
183
+ )
184
+
185
+ tags : list [str ] | None = Field (
186
+ None , description = "List of string metadata about the calculation."
187
+ )
188
+
180
189
@model_validator (mode = "after" )
181
190
def set_barriers (self ) -> Self :
182
191
"""Perform analysis on barrier if needed."""
@@ -194,6 +203,12 @@ def set_barriers(self) -> Self:
194
203
)
195
204
return self
196
205
206
+ @property
207
+ def barrier_energy_range (self ) -> float | None :
208
+ """The maximum computed energy minus the minimum computed energy along the path."""
209
+ if self .energies :
210
+ return max (self .energies ) - min (self .energies )
211
+
197
212
198
213
class NebTaskDoc (NebResult ):
199
214
"""Define schema for VASP NEB tasks."""
0 commit comments