mat3ra-esse 2025.7.15.post0__py3-none-any.whl → 2025.8.6.post0__py3-none-any.whl

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 mat3ra-esse might be problematic. Click here for more details.

Files changed (85) hide show
  1. mat3ra/esse/data/examples.py +1 -1
  2. mat3ra/esse/data/schemas.py +1 -1
  3. mat3ra/esse/models/apse/file/applications/espresso/7.2/pw_x.py +6 -6
  4. mat3ra/esse/models/core/abstract/vector_2d.py +13 -0
  5. mat3ra/esse/models/core/primitive/array_of_2_numbers.py +13 -0
  6. mat3ra/esse/models/core/reusable/energy.py +2 -2
  7. mat3ra/esse/models/element.py +6 -6
  8. mat3ra/esse/models/material/__init__.py +14 -14
  9. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/__init__.py +3 -0
  10. mat3ra/esse/models/materials_category/compound_pristine_structures/two_dimensional/interface/configuration.py +4269 -0
  11. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/__init__.py +3 -0
  12. mat3ra/esse/models/materials_category/defective_structures/one_dimensional/grain_boundary_linear/configuration.py +4273 -0
  13. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/__init__.py +3 -0
  14. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/__init__.py +3 -0
  15. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/adatom/configuration.py +2132 -0
  16. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/base_configuration.py +1561 -0
  17. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/__init__.py +3 -0
  18. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/grain_boundary_planar/configuration.py +4269 -0
  19. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/__init__.py +3 -0
  20. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/island/configuration.py +2908 -0
  21. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/__init__.py +3 -0
  22. mat3ra/esse/models/materials_category/defective_structures/two_dimensional/terrace/configuration.py +2912 -0
  23. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/__init__.py +3 -0
  24. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/base_configuration.py +544 -0
  25. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/interstitial.py +1099 -0
  26. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/substitutional.py +1099 -0
  27. mat3ra/esse/models/materials_category/defective_structures/zero_dimensional/point_defect/vacancy.py +556 -0
  28. mat3ra/esse/models/materials_category/pristine_structures/three_dimensional/ideal_crystal.py +14 -14
  29. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanoribbon.py +1598 -0
  30. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/nanotape.py +1160 -0
  31. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab.py +88 -92
  32. mat3ra/esse/models/materials_category/pristine_structures/two_dimensional/slab_strained_supercell.py +1159 -0
  33. mat3ra/esse/models/materials_category/processed_structures/two_dimensional/passivation/__init__.py +3 -0
  34. mat3ra/esse/models/materials_category/processed_structures/two_dimensional/passivation/configuration.py +1232 -0
  35. mat3ra/esse/models/materials_category_components/entities/auxiliary/one_dimensional/__init__.py +3 -0
  36. mat3ra/esse/models/materials_category_components/entities/auxiliary/one_dimensional/miller_indices_2d.py +16 -0
  37. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.py +527 -2
  38. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/point_defect_site.py +676 -0
  39. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_region.py +555 -0
  40. mat3ra/esse/models/materials_category_components/entities/auxiliary/zero_dimensional/void_site.py +1576 -0
  41. mat3ra/esse/models/materials_category_components/entities/core/three_dimensional/crystal.py +14 -14
  42. mat3ra/esse/models/materials_category_components/entities/core/two_dimensional/vacuum.py +14 -14
  43. mat3ra/esse/models/materials_category_components/entities/core/zero_dimensional/vacancy.py +22 -0
  44. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/__init__.py +3 -0
  45. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_base.py +541 -0
  46. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines.py +545 -0
  47. mat3ra/esse/models/materials_category_components/entities/reusable/one_dimensional/crystal_lattice_lines_unique_repeated.py +708 -0
  48. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/crystal_lattice_base.py +541 -0
  49. mat3ra/esse/models/materials_category_components/entities/reusable/{repetitions.py → three_dimensional/repetitions.py} +1 -1
  50. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_non_uniform.py +14 -14
  51. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/strained_uniform.py +14 -14
  52. mat3ra/esse/models/materials_category_components/entities/reusable/three_dimensional/supercell.py +14 -14
  53. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers.py +4 -4
  54. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique.py +4 -4
  55. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated.py +4 -4
  56. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/crystal_lattice_planes.py +18 -18
  57. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_stack_configuration.py +1577 -0
  58. mat3ra/esse/models/materials_category_components/entities/reusable/two_dimensional/slab_unit_cell.py +74 -77
  59. mat3ra/esse/models/materials_category_components/operations/core/combinations/enums.py +13 -0
  60. mat3ra/esse/models/materials_category_components/operations/core/combinations/merge.py +9 -981
  61. mat3ra/esse/models/materials_category_components/operations/core/combinations/stack.py +8 -940
  62. mat3ra/esse/models/materials_category_components/operations/core/modifications/perturb.py +538 -0
  63. mat3ra/esse/models/properties_directory/derived_properties.py +11 -11
  64. mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
  65. mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
  66. mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
  67. mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
  68. mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
  69. mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
  70. mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
  71. mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
  72. mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
  73. mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
  74. mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
  75. mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
  76. mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
  77. mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
  78. mat3ra/esse/models/properties_directory/structural/basis/__init__.py +2 -2
  79. mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +4 -4
  80. mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
  81. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.8.6.post0.dist-info}/METADATA +1 -1
  82. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.8.6.post0.dist-info}/RECORD +85 -45
  83. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.8.6.post0.dist-info}/WHEEL +0 -0
  84. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.8.6.post0.dist-info}/licenses/LICENSE.md +0 -0
  85. {mat3ra_esse-2025.7.15.post0.dist-info → mat3ra_esse-2025.8.6.post0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,2912 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: materials_category/defective_structures/two_dimensional/terrace/configuration.json
3
+ # version: 0.28.5
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import Any, Dict, List, Literal, Optional, Union
9
+
10
+ from pydantic import BaseModel, Field, RootModel, confloat, conint, constr
11
+
12
+
13
+ class ChemicalElements(Enum):
14
+ H = "H"
15
+ He = "He"
16
+ Li = "Li"
17
+ Be = "Be"
18
+ B = "B"
19
+ C = "C"
20
+ N = "N"
21
+ O = "O"
22
+ F = "F"
23
+ Ne = "Ne"
24
+ Na = "Na"
25
+ Mg = "Mg"
26
+ Al = "Al"
27
+ Si = "Si"
28
+ P = "P"
29
+ S = "S"
30
+ Cl = "Cl"
31
+ Ar = "Ar"
32
+ K = "K"
33
+ Ca = "Ca"
34
+ Sc = "Sc"
35
+ Ti = "Ti"
36
+ V = "V"
37
+ Cr = "Cr"
38
+ Mn = "Mn"
39
+ Fe = "Fe"
40
+ Co = "Co"
41
+ Ni = "Ni"
42
+ Cu = "Cu"
43
+ Zn = "Zn"
44
+ Ga = "Ga"
45
+ Ge = "Ge"
46
+ As = "As"
47
+ Se = "Se"
48
+ Br = "Br"
49
+ Kr = "Kr"
50
+ Rb = "Rb"
51
+ Sr = "Sr"
52
+ Y = "Y"
53
+ Zr = "Zr"
54
+ Nb = "Nb"
55
+ Mo = "Mo"
56
+ Tc = "Tc"
57
+ Ru = "Ru"
58
+ Rh = "Rh"
59
+ Pd = "Pd"
60
+ Ag = "Ag"
61
+ Cd = "Cd"
62
+ In = "In"
63
+ Sn = "Sn"
64
+ Sb = "Sb"
65
+ Te = "Te"
66
+ I = "I"
67
+ Xe = "Xe"
68
+ Cs = "Cs"
69
+ Ba = "Ba"
70
+ La = "La"
71
+ Ce = "Ce"
72
+ Pr = "Pr"
73
+ Nd = "Nd"
74
+ Pm = "Pm"
75
+ Sm = "Sm"
76
+ Eu = "Eu"
77
+ Gd = "Gd"
78
+ Tb = "Tb"
79
+ Dy = "Dy"
80
+ Ho = "Ho"
81
+ Er = "Er"
82
+ Tm = "Tm"
83
+ Yb = "Yb"
84
+ Lu = "Lu"
85
+ Hf = "Hf"
86
+ Ta = "Ta"
87
+ W = "W"
88
+ Re = "Re"
89
+ Os = "Os"
90
+ Ir = "Ir"
91
+ Pt = "Pt"
92
+ Au = "Au"
93
+ Hg = "Hg"
94
+ Tl = "Tl"
95
+ Pb = "Pb"
96
+ Bi = "Bi"
97
+ Po = "Po"
98
+ At = "At"
99
+ Rn = "Rn"
100
+ Fr = "Fr"
101
+ Ra = "Ra"
102
+ Ac = "Ac"
103
+ Th = "Th"
104
+ Pa = "Pa"
105
+ U = "U"
106
+ Np = "Np"
107
+ Pu = "Pu"
108
+ Am = "Am"
109
+ Cm = "Cm"
110
+ Bk = "Bk"
111
+ Cf = "Cf"
112
+ Es = "Es"
113
+ Fm = "Fm"
114
+ Md = "Md"
115
+ No = "No"
116
+ Lr = "Lr"
117
+ Rf = "Rf"
118
+ Db = "Db"
119
+ Sg = "Sg"
120
+ Bh = "Bh"
121
+ Hs = "Hs"
122
+ Mt = "Mt"
123
+ Ds = "Ds"
124
+ Rg = "Rg"
125
+ Cn = "Cn"
126
+ Nh = "Nh"
127
+ Fl = "Fl"
128
+ Mc = "Mc"
129
+ Lv = "Lv"
130
+ Ts = "Ts"
131
+ Og = "Og"
132
+
133
+
134
+ class TerminationSchema(BaseModel):
135
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
136
+ ..., title="Chemical Elements"
137
+ )
138
+ """
139
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
140
+ """
141
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
142
+ """
143
+ Space group symmetry designation for the termination
144
+ """
145
+
146
+
147
+ class Value(Enum):
148
+ H = "H"
149
+ He = "He"
150
+ Li = "Li"
151
+ Be = "Be"
152
+ B = "B"
153
+ C = "C"
154
+ N = "N"
155
+ O = "O"
156
+ F = "F"
157
+ Ne = "Ne"
158
+ Na = "Na"
159
+ Mg = "Mg"
160
+ Al = "Al"
161
+ Si = "Si"
162
+ P = "P"
163
+ S = "S"
164
+ Cl = "Cl"
165
+ Ar = "Ar"
166
+ K = "K"
167
+ Ca = "Ca"
168
+ Sc = "Sc"
169
+ Ti = "Ti"
170
+ V = "V"
171
+ Cr = "Cr"
172
+ Mn = "Mn"
173
+ Fe = "Fe"
174
+ Co = "Co"
175
+ Ni = "Ni"
176
+ Cu = "Cu"
177
+ Zn = "Zn"
178
+ Ga = "Ga"
179
+ Ge = "Ge"
180
+ As = "As"
181
+ Se = "Se"
182
+ Br = "Br"
183
+ Kr = "Kr"
184
+ Rb = "Rb"
185
+ Sr = "Sr"
186
+ Y = "Y"
187
+ Zr = "Zr"
188
+ Nb = "Nb"
189
+ Mo = "Mo"
190
+ Tc = "Tc"
191
+ Ru = "Ru"
192
+ Rh = "Rh"
193
+ Pd = "Pd"
194
+ Ag = "Ag"
195
+ Cd = "Cd"
196
+ In = "In"
197
+ Sn = "Sn"
198
+ Sb = "Sb"
199
+ Te = "Te"
200
+ I = "I"
201
+ Xe = "Xe"
202
+ Cs = "Cs"
203
+ Ba = "Ba"
204
+ La = "La"
205
+ Ce = "Ce"
206
+ Pr = "Pr"
207
+ Nd = "Nd"
208
+ Pm = "Pm"
209
+ Sm = "Sm"
210
+ Eu = "Eu"
211
+ Gd = "Gd"
212
+ Tb = "Tb"
213
+ Dy = "Dy"
214
+ Ho = "Ho"
215
+ Er = "Er"
216
+ Tm = "Tm"
217
+ Yb = "Yb"
218
+ Lu = "Lu"
219
+ Hf = "Hf"
220
+ Ta = "Ta"
221
+ W = "W"
222
+ Re = "Re"
223
+ Os = "Os"
224
+ Ir = "Ir"
225
+ Pt = "Pt"
226
+ Au = "Au"
227
+ Hg = "Hg"
228
+ Tl = "Tl"
229
+ Pb = "Pb"
230
+ Bi = "Bi"
231
+ Po = "Po"
232
+ At = "At"
233
+ Rn = "Rn"
234
+ Fr = "Fr"
235
+ Ra = "Ra"
236
+ Ac = "Ac"
237
+ Th = "Th"
238
+ Pa = "Pa"
239
+ U = "U"
240
+ Np = "Np"
241
+ Pu = "Pu"
242
+ Am = "Am"
243
+ Cm = "Cm"
244
+ Bk = "Bk"
245
+ Cf = "Cf"
246
+ Es = "Es"
247
+ Fm = "Fm"
248
+ Md = "Md"
249
+ No = "No"
250
+ Lr = "Lr"
251
+ Rf = "Rf"
252
+ Db = "Db"
253
+ Sg = "Sg"
254
+ Bh = "Bh"
255
+ Hs = "Hs"
256
+ Mt = "Mt"
257
+ Ds = "Ds"
258
+ Rg = "Rg"
259
+ Cn = "Cn"
260
+ Nh = "Nh"
261
+ Fl = "Fl"
262
+ Mc = "Mc"
263
+ Lv = "Lv"
264
+ Ts = "Ts"
265
+ Og = "Og"
266
+
267
+
268
+ class Value35(Enum):
269
+ X = "X"
270
+ Vac = "Vac"
271
+
272
+
273
+ class AtomicElementSchema(BaseModel):
274
+ value: Union[Value, Value35]
275
+ """
276
+ All elements, including extra elements
277
+ """
278
+ id: int
279
+ """
280
+ integer id of this entry
281
+ """
282
+
283
+
284
+ class AtomicCoordinateSchema(BaseModel):
285
+ value: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
286
+ """
287
+ value of this entry
288
+ """
289
+ id: int
290
+ """
291
+ integer id of this entry
292
+ """
293
+
294
+
295
+ class BasisUnitsEnum(Enum):
296
+ crystal = "crystal"
297
+ cartesian = "cartesian"
298
+
299
+
300
+ class AtomicLabelSchema(BaseModel):
301
+ value: Union[Union[int, str, float], conint(ge=1, le=9)]
302
+ """
303
+ value of this entry
304
+ """
305
+ id: int
306
+ """
307
+ integer id of this entry
308
+ """
309
+
310
+
311
+ class BasisSchema(BaseModel):
312
+ elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
313
+ """
314
+ atomic elements schema
315
+ """
316
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
317
+ """
318
+ atomic coordinates schema
319
+ """
320
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
321
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
322
+ """
323
+ atomic labels schema
324
+ """
325
+
326
+
327
+ class LatticeVectorsUnitsEnum(Enum):
328
+ angstrom = "angstrom"
329
+ bohr = "bohr"
330
+
331
+
332
+ class LatticeVectorsSchema(BaseModel):
333
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
334
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
335
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
336
+ alat: Optional[float] = 1
337
+ """
338
+ lattice parameter for fractional coordinates
339
+ """
340
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
341
+
342
+
343
+ class LatticeTypeEnum(Enum):
344
+ CUB = "CUB"
345
+ BCC = "BCC"
346
+ FCC = "FCC"
347
+ TET = "TET"
348
+ MCL = "MCL"
349
+ ORC = "ORC"
350
+ ORCC = "ORCC"
351
+ ORCF = "ORCF"
352
+ ORCI = "ORCI"
353
+ HEX = "HEX"
354
+ BCT = "BCT"
355
+ TRI = "TRI"
356
+ MCLC = "MCLC"
357
+ RHL = "RHL"
358
+
359
+
360
+ class LatticeUnitsLengthEnum(Enum):
361
+ angstrom = "angstrom"
362
+ bohr = "bohr"
363
+
364
+
365
+ class LatticeUnitsAngleEnum(Enum):
366
+ degree = "degree"
367
+ radian = "radian"
368
+
369
+
370
+ class LatticeUnitsSchema(BaseModel):
371
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
372
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
373
+
374
+
375
+ class LatticeSchema(BaseModel):
376
+ a: float
377
+ """
378
+ length of the first lattice vector
379
+ """
380
+ b: float
381
+ """
382
+ length of the second lattice vector
383
+ """
384
+ c: float
385
+ """
386
+ length of the third lattice vector
387
+ """
388
+ alpha: float
389
+ """
390
+ angle between first and second lattice vector
391
+ """
392
+ beta: float
393
+ """
394
+ angle between second and third lattice vector
395
+ """
396
+ gamma: float
397
+ """
398
+ angle between first and third lattice vector
399
+ """
400
+ vectors: Optional[LatticeVectorsSchema] = Field(None, title="lattice vectors schema")
401
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
402
+ units: Optional[LatticeUnitsSchema] = Field(
403
+ default_factory=lambda: LatticeUnitsSchema.model_validate({"length": "angstrom", "angle": "degree"}),
404
+ title="Lattice units schema",
405
+ )
406
+
407
+
408
+ class Name(Enum):
409
+ volume = "volume"
410
+
411
+
412
+ class Units(Enum):
413
+ angstrom_3 = "angstrom^3"
414
+
415
+
416
+ class VolumeSchema(BaseModel):
417
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
418
+ units: Optional[Units] = None
419
+ value: float
420
+
421
+
422
+ class Name112(Enum):
423
+ density = "density"
424
+
425
+
426
+ class Units49(Enum):
427
+ g_cm_3 = "g/cm^3"
428
+
429
+
430
+ class DensitySchema(BaseModel):
431
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
432
+ units: Optional[Units49] = None
433
+ value: float
434
+
435
+
436
+ class Units50(Enum):
437
+ angstrom = "angstrom"
438
+
439
+
440
+ class ScalarSchema(BaseModel):
441
+ units: Optional[Units50] = None
442
+ value: float
443
+
444
+
445
+ class Name113(Enum):
446
+ symmetry = "symmetry"
447
+
448
+
449
+ class SymmetrySchema(BaseModel):
450
+ pointGroupSymbol: Optional[str] = None
451
+ """
452
+ point group symbol in Schoenflies notation
453
+ """
454
+ spaceGroupSymbol: Optional[str] = None
455
+ """
456
+ space group symbol in Hermann–Mauguin notation
457
+ """
458
+ tolerance: Optional[ScalarSchema] = Field(None, title="scalar schema")
459
+ """
460
+ tolerance used for symmetry calculation
461
+ """
462
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
463
+
464
+
465
+ class Name114(Enum):
466
+ elemental_ratio = "elemental_ratio"
467
+
468
+
469
+ class ElementalRatio(BaseModel):
470
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
471
+ value: confloat(ge=0.0, le=1.0)
472
+ element: Optional[str] = None
473
+ """
474
+ the element this ratio is for
475
+ """
476
+
477
+
478
+ class Name115(Enum):
479
+ p_norm = "p-norm"
480
+
481
+
482
+ class PNorm(BaseModel):
483
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
484
+ degree: Optional[int] = None
485
+ """
486
+ degree of the dimensionality of the norm
487
+ """
488
+ value: float
489
+
490
+
491
+ class Name116(Enum):
492
+ inchi = "inchi"
493
+
494
+
495
+ class InChIRepresentationSchema(BaseModel):
496
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
497
+ value: str
498
+
499
+
500
+ class Name117(Enum):
501
+ inchi_key = "inchi_key"
502
+
503
+
504
+ class InChIKeyRepresentationSchema(BaseModel):
505
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
506
+ value: str
507
+
508
+
509
+ class DerivedPropertiesSchema(
510
+ RootModel[
511
+ Union[
512
+ VolumeSchema,
513
+ DensitySchema,
514
+ SymmetrySchema,
515
+ ElementalRatio,
516
+ PNorm,
517
+ InChIRepresentationSchema,
518
+ InChIKeyRepresentationSchema,
519
+ ]
520
+ ]
521
+ ):
522
+ root: Union[
523
+ VolumeSchema,
524
+ DensitySchema,
525
+ SymmetrySchema,
526
+ ElementalRatio,
527
+ PNorm,
528
+ InChIRepresentationSchema,
529
+ InChIKeyRepresentationSchema,
530
+ ] = Field(..., discriminator="name")
531
+
532
+
533
+ class DatabaseSourceSchema(BaseModel):
534
+ id: Union[str, float]
535
+ """
536
+ ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32
537
+ """
538
+ source: str
539
+ """
540
+ Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.
541
+ """
542
+ origin: bool
543
+ """
544
+ Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).
545
+ """
546
+ data: Optional[Dict[str, Any]] = None
547
+ """
548
+ Original response from external source.
549
+ """
550
+ doi: Optional[str] = None
551
+ """
552
+ Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506
553
+ """
554
+ url: Optional[str] = None
555
+ """
556
+ The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers
557
+ """
558
+
559
+
560
+ class FileSourceSchema(BaseModel):
561
+ extension: Optional[str] = None
562
+ """
563
+ file extension
564
+ """
565
+ filename: str
566
+ """
567
+ file name without extension
568
+ """
569
+ text: str
570
+ """
571
+ file content as raw text
572
+ """
573
+ hash: str
574
+ """
575
+ MD5 hash based on file content
576
+ """
577
+
578
+
579
+ class Name118(Enum):
580
+ default = "default"
581
+ atomsTooClose = "atomsTooClose"
582
+ atomsOverlap = "atomsOverlap"
583
+
584
+
585
+ class Severity(Enum):
586
+ info = "info"
587
+ warning = "warning"
588
+ error = "error"
589
+
590
+
591
+ class MaterialConsistencyCheckSchema(BaseModel):
592
+ name: Name118
593
+ """
594
+ Name of the consistency check that is performed, which is listed in an enum.
595
+ """
596
+ key: str
597
+ """
598
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
599
+ """
600
+ severity: Severity
601
+ """
602
+ Severity level of the problem, which is used in UI to differentiate.
603
+ """
604
+ message: str
605
+ """
606
+ Message generated by the consistency check describing the problem.
607
+ """
608
+
609
+
610
+ class CrystalSchema(BaseModel):
611
+ formula: Optional[str] = None
612
+ """
613
+ reduced chemical formula
614
+ """
615
+ unitCellFormula: Optional[str] = None
616
+ """
617
+ chemical formula based on the number of atoms of each element in the supercell
618
+ """
619
+ basis: BasisSchema = Field(..., title="basis schema")
620
+ lattice: LatticeSchema = Field(..., title="lattice schema")
621
+ derivedProperties: Optional[List[DerivedPropertiesSchema]] = Field(None, title="derived properties schema")
622
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
623
+ """
624
+ information about a database source
625
+ """
626
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
627
+ """
628
+ file source with the information inside
629
+ """
630
+ scaledHash: Optional[str] = None
631
+ """
632
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
633
+ """
634
+ icsdId: Optional[int] = None
635
+ """
636
+ Corresponding ICSD id of the material
637
+ """
638
+ isNonPeriodic: Optional[bool] = None
639
+ """
640
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
641
+ """
642
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema]] = None
643
+ field_id: Optional[str] = Field(None, alias="_id")
644
+ """
645
+ entity identity
646
+ """
647
+ slug: Optional[str] = None
648
+ """
649
+ entity slug
650
+ """
651
+ systemName: Optional[str] = None
652
+ schemaVersion: Optional[str] = "2022.8.16"
653
+ """
654
+ entity's schema version. Used to distinct between different schemas.
655
+ """
656
+ name: Optional[str] = None
657
+ """
658
+ entity name
659
+ """
660
+ isDefault: Optional[bool] = False
661
+ """
662
+ Identifies that entity is defaultable
663
+ """
664
+ metadata: Optional[Dict[str, Any]] = None
665
+
666
+
667
+ class AtomicLayersUniqueRepeatedSchema(BaseModel):
668
+ termination_top: TerminationSchema = Field(..., title="Termination Schema")
669
+ """
670
+ Defines a specific termination of a slab
671
+ """
672
+ number_of_repetitions: conint(ge=1)
673
+ """
674
+ Number of repetitions of the unique atomic layers
675
+ """
676
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
677
+ """
678
+ Miller indices [h, k, l] defining crystallographic planes
679
+ """
680
+ crystal: CrystalSchema = Field(..., title="Crystal Schema")
681
+ """
682
+ A crystal structure, referencing the base material schema
683
+ """
684
+ use_conventional_cell: Optional[bool] = True
685
+ """
686
+ Use the conventional cell for the crystal structure
687
+ """
688
+
689
+
690
+ class AxisEnum(Enum):
691
+ x = "x"
692
+ y = "y"
693
+ z = "z"
694
+
695
+
696
+ class Value36(Enum):
697
+ H = "H"
698
+ He = "He"
699
+ Li = "Li"
700
+ Be = "Be"
701
+ B = "B"
702
+ C = "C"
703
+ N = "N"
704
+ O = "O"
705
+ F = "F"
706
+ Ne = "Ne"
707
+ Na = "Na"
708
+ Mg = "Mg"
709
+ Al = "Al"
710
+ Si = "Si"
711
+ P = "P"
712
+ S = "S"
713
+ Cl = "Cl"
714
+ Ar = "Ar"
715
+ K = "K"
716
+ Ca = "Ca"
717
+ Sc = "Sc"
718
+ Ti = "Ti"
719
+ V = "V"
720
+ Cr = "Cr"
721
+ Mn = "Mn"
722
+ Fe = "Fe"
723
+ Co = "Co"
724
+ Ni = "Ni"
725
+ Cu = "Cu"
726
+ Zn = "Zn"
727
+ Ga = "Ga"
728
+ Ge = "Ge"
729
+ As = "As"
730
+ Se = "Se"
731
+ Br = "Br"
732
+ Kr = "Kr"
733
+ Rb = "Rb"
734
+ Sr = "Sr"
735
+ Y = "Y"
736
+ Zr = "Zr"
737
+ Nb = "Nb"
738
+ Mo = "Mo"
739
+ Tc = "Tc"
740
+ Ru = "Ru"
741
+ Rh = "Rh"
742
+ Pd = "Pd"
743
+ Ag = "Ag"
744
+ Cd = "Cd"
745
+ In = "In"
746
+ Sn = "Sn"
747
+ Sb = "Sb"
748
+ Te = "Te"
749
+ I = "I"
750
+ Xe = "Xe"
751
+ Cs = "Cs"
752
+ Ba = "Ba"
753
+ La = "La"
754
+ Ce = "Ce"
755
+ Pr = "Pr"
756
+ Nd = "Nd"
757
+ Pm = "Pm"
758
+ Sm = "Sm"
759
+ Eu = "Eu"
760
+ Gd = "Gd"
761
+ Tb = "Tb"
762
+ Dy = "Dy"
763
+ Ho = "Ho"
764
+ Er = "Er"
765
+ Tm = "Tm"
766
+ Yb = "Yb"
767
+ Lu = "Lu"
768
+ Hf = "Hf"
769
+ Ta = "Ta"
770
+ W = "W"
771
+ Re = "Re"
772
+ Os = "Os"
773
+ Ir = "Ir"
774
+ Pt = "Pt"
775
+ Au = "Au"
776
+ Hg = "Hg"
777
+ Tl = "Tl"
778
+ Pb = "Pb"
779
+ Bi = "Bi"
780
+ Po = "Po"
781
+ At = "At"
782
+ Rn = "Rn"
783
+ Fr = "Fr"
784
+ Ra = "Ra"
785
+ Ac = "Ac"
786
+ Th = "Th"
787
+ Pa = "Pa"
788
+ U = "U"
789
+ Np = "Np"
790
+ Pu = "Pu"
791
+ Am = "Am"
792
+ Cm = "Cm"
793
+ Bk = "Bk"
794
+ Cf = "Cf"
795
+ Es = "Es"
796
+ Fm = "Fm"
797
+ Md = "Md"
798
+ No = "No"
799
+ Lr = "Lr"
800
+ Rf = "Rf"
801
+ Db = "Db"
802
+ Sg = "Sg"
803
+ Bh = "Bh"
804
+ Hs = "Hs"
805
+ Mt = "Mt"
806
+ Ds = "Ds"
807
+ Rg = "Rg"
808
+ Cn = "Cn"
809
+ Nh = "Nh"
810
+ Fl = "Fl"
811
+ Mc = "Mc"
812
+ Lv = "Lv"
813
+ Ts = "Ts"
814
+ Og = "Og"
815
+
816
+
817
+ class Value37(Enum):
818
+ X = "X"
819
+ Vac = "Vac"
820
+
821
+
822
+ class AtomicElementSchema17(BaseModel):
823
+ value: Union[Value36, Value37]
824
+ """
825
+ All elements, including extra elements
826
+ """
827
+ id: int
828
+ """
829
+ integer id of this entry
830
+ """
831
+
832
+
833
+ class BasisSchema15(BaseModel):
834
+ elements: List[AtomicElementSchema17] = Field(..., title="atomic elements schema")
835
+ """
836
+ atomic elements schema
837
+ """
838
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
839
+ """
840
+ atomic coordinates schema
841
+ """
842
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
843
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
844
+ """
845
+ atomic labels schema
846
+ """
847
+
848
+
849
+ class LatticeVectorsSchema14(BaseModel):
850
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
851
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
852
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
853
+ alat: Optional[float] = 1
854
+ """
855
+ lattice parameter for fractional coordinates
856
+ """
857
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
858
+
859
+
860
+ class LatticeUnitsSchema14(BaseModel):
861
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
862
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
863
+
864
+
865
+ class LatticeSchema14(BaseModel):
866
+ a: float
867
+ """
868
+ length of the first lattice vector
869
+ """
870
+ b: float
871
+ """
872
+ length of the second lattice vector
873
+ """
874
+ c: float
875
+ """
876
+ length of the third lattice vector
877
+ """
878
+ alpha: float
879
+ """
880
+ angle between first and second lattice vector
881
+ """
882
+ beta: float
883
+ """
884
+ angle between second and third lattice vector
885
+ """
886
+ gamma: float
887
+ """
888
+ angle between first and third lattice vector
889
+ """
890
+ vectors: Optional[LatticeVectorsSchema14] = Field(None, title="lattice vectors schema")
891
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
892
+ units: Optional[LatticeUnitsSchema14] = Field(
893
+ default_factory=lambda: LatticeUnitsSchema14.model_validate({"length": "angstrom", "angle": "degree"}),
894
+ title="Lattice units schema",
895
+ )
896
+
897
+
898
+ class Name119(Enum):
899
+ volume = "volume"
900
+
901
+
902
+ class Units51(Enum):
903
+ angstrom_3 = "angstrom^3"
904
+
905
+
906
+ class VolumeSchema14(BaseModel):
907
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
908
+ units: Optional[Units51] = None
909
+ value: float
910
+
911
+
912
+ class Name120(Enum):
913
+ density = "density"
914
+
915
+
916
+ class Units52(Enum):
917
+ g_cm_3 = "g/cm^3"
918
+
919
+
920
+ class DensitySchema14(BaseModel):
921
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
922
+ units: Optional[Units52] = None
923
+ value: float
924
+
925
+
926
+ class Units53(Enum):
927
+ angstrom = "angstrom"
928
+
929
+
930
+ class ScalarSchema15(BaseModel):
931
+ units: Optional[Units53] = None
932
+ value: float
933
+
934
+
935
+ class Name121(Enum):
936
+ symmetry = "symmetry"
937
+
938
+
939
+ class SymmetrySchema14(BaseModel):
940
+ pointGroupSymbol: Optional[str] = None
941
+ """
942
+ point group symbol in Schoenflies notation
943
+ """
944
+ spaceGroupSymbol: Optional[str] = None
945
+ """
946
+ space group symbol in Hermann–Mauguin notation
947
+ """
948
+ tolerance: Optional[ScalarSchema15] = Field(None, title="scalar schema")
949
+ """
950
+ tolerance used for symmetry calculation
951
+ """
952
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
953
+
954
+
955
+ class Name122(Enum):
956
+ elemental_ratio = "elemental_ratio"
957
+
958
+
959
+ class ElementalRatio14(BaseModel):
960
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
961
+ value: confloat(ge=0.0, le=1.0)
962
+ element: Optional[str] = None
963
+ """
964
+ the element this ratio is for
965
+ """
966
+
967
+
968
+ class Name123(Enum):
969
+ p_norm = "p-norm"
970
+
971
+
972
+ class PNorm14(BaseModel):
973
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
974
+ degree: Optional[int] = None
975
+ """
976
+ degree of the dimensionality of the norm
977
+ """
978
+ value: float
979
+
980
+
981
+ class Name124(Enum):
982
+ inchi = "inchi"
983
+
984
+
985
+ class InChIRepresentationSchema14(BaseModel):
986
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
987
+ value: str
988
+
989
+
990
+ class Name125(Enum):
991
+ inchi_key = "inchi_key"
992
+
993
+
994
+ class InChIKeyRepresentationSchema14(BaseModel):
995
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
996
+ value: str
997
+
998
+
999
+ class DerivedPropertiesSchema14(
1000
+ RootModel[
1001
+ Union[
1002
+ VolumeSchema14,
1003
+ DensitySchema14,
1004
+ SymmetrySchema14,
1005
+ ElementalRatio14,
1006
+ PNorm14,
1007
+ InChIRepresentationSchema14,
1008
+ InChIKeyRepresentationSchema14,
1009
+ ]
1010
+ ]
1011
+ ):
1012
+ root: Union[
1013
+ VolumeSchema14,
1014
+ DensitySchema14,
1015
+ SymmetrySchema14,
1016
+ ElementalRatio14,
1017
+ PNorm14,
1018
+ InChIRepresentationSchema14,
1019
+ InChIKeyRepresentationSchema14,
1020
+ ] = Field(..., discriminator="name")
1021
+
1022
+
1023
+ class Name126(Enum):
1024
+ default = "default"
1025
+ atomsTooClose = "atomsTooClose"
1026
+ atomsOverlap = "atomsOverlap"
1027
+
1028
+
1029
+ class MaterialConsistencyCheckSchema14(BaseModel):
1030
+ name: Name126
1031
+ """
1032
+ Name of the consistency check that is performed, which is listed in an enum.
1033
+ """
1034
+ key: str
1035
+ """
1036
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1037
+ """
1038
+ severity: Severity
1039
+ """
1040
+ Severity level of the problem, which is used in UI to differentiate.
1041
+ """
1042
+ message: str
1043
+ """
1044
+ Message generated by the consistency check describing the problem.
1045
+ """
1046
+
1047
+
1048
+ class CrystalSchema14(BaseModel):
1049
+ formula: Optional[str] = None
1050
+ """
1051
+ reduced chemical formula
1052
+ """
1053
+ unitCellFormula: Optional[str] = None
1054
+ """
1055
+ chemical formula based on the number of atoms of each element in the supercell
1056
+ """
1057
+ basis: BasisSchema15 = Field(..., title="basis schema")
1058
+ lattice: LatticeSchema14 = Field(..., title="lattice schema")
1059
+ derivedProperties: Optional[List[DerivedPropertiesSchema14]] = Field(None, title="derived properties schema")
1060
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1061
+ """
1062
+ information about a database source
1063
+ """
1064
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1065
+ """
1066
+ file source with the information inside
1067
+ """
1068
+ scaledHash: Optional[str] = None
1069
+ """
1070
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1071
+ """
1072
+ icsdId: Optional[int] = None
1073
+ """
1074
+ Corresponding ICSD id of the material
1075
+ """
1076
+ isNonPeriodic: Optional[bool] = None
1077
+ """
1078
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1079
+ """
1080
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema14]] = None
1081
+ field_id: Optional[str] = Field(None, alias="_id")
1082
+ """
1083
+ entity identity
1084
+ """
1085
+ slug: Optional[str] = None
1086
+ """
1087
+ entity slug
1088
+ """
1089
+ systemName: Optional[str] = None
1090
+ schemaVersion: Optional[str] = "2022.8.16"
1091
+ """
1092
+ entity's schema version. Used to distinct between different schemas.
1093
+ """
1094
+ name: Optional[str] = None
1095
+ """
1096
+ entity name
1097
+ """
1098
+ isDefault: Optional[bool] = False
1099
+ """
1100
+ Identifies that entity is defaultable
1101
+ """
1102
+ metadata: Optional[Dict[str, Any]] = None
1103
+
1104
+
1105
+ class VacuumConfigurationSchema(BaseModel):
1106
+ direction: AxisEnum = Field(..., title="Axis Enum")
1107
+ """
1108
+ Enum for axis types
1109
+ """
1110
+ size: Optional[confloat(ge=0.0)] = 10
1111
+ """
1112
+ Size of the vacuum slab in angstroms
1113
+ """
1114
+ crystal: CrystalSchema14 = Field(..., title="Crystal Schema")
1115
+ """
1116
+ A crystal structure, referencing the base material schema
1117
+ """
1118
+
1119
+
1120
+ class ObjectWithId(BaseModel):
1121
+ value: Optional[confloat(ge=0.0)] = None
1122
+ id: int
1123
+ """
1124
+ integer id of this entry
1125
+ """
1126
+
1127
+
1128
+ class SlabConfigurationSchema(BaseModel):
1129
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema, VacuumConfigurationSchema]] = Field(
1130
+ ..., max_length=2, min_length=2
1131
+ )
1132
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
1133
+ """
1134
+ Enum for axis types
1135
+ """
1136
+ gaps: Optional[List[ObjectWithId]] = None
1137
+ """
1138
+ Gap distances between stack components as an array of objects with id and value
1139
+ """
1140
+
1141
+
1142
+ class TerminationSchema8(BaseModel):
1143
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
1144
+ ..., title="Chemical Elements"
1145
+ )
1146
+ """
1147
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
1148
+ """
1149
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
1150
+ """
1151
+ Space group symmetry designation for the termination
1152
+ """
1153
+
1154
+
1155
+ class Value38(Enum):
1156
+ H = "H"
1157
+ He = "He"
1158
+ Li = "Li"
1159
+ Be = "Be"
1160
+ B = "B"
1161
+ C = "C"
1162
+ N = "N"
1163
+ O = "O"
1164
+ F = "F"
1165
+ Ne = "Ne"
1166
+ Na = "Na"
1167
+ Mg = "Mg"
1168
+ Al = "Al"
1169
+ Si = "Si"
1170
+ P = "P"
1171
+ S = "S"
1172
+ Cl = "Cl"
1173
+ Ar = "Ar"
1174
+ K = "K"
1175
+ Ca = "Ca"
1176
+ Sc = "Sc"
1177
+ Ti = "Ti"
1178
+ V = "V"
1179
+ Cr = "Cr"
1180
+ Mn = "Mn"
1181
+ Fe = "Fe"
1182
+ Co = "Co"
1183
+ Ni = "Ni"
1184
+ Cu = "Cu"
1185
+ Zn = "Zn"
1186
+ Ga = "Ga"
1187
+ Ge = "Ge"
1188
+ As = "As"
1189
+ Se = "Se"
1190
+ Br = "Br"
1191
+ Kr = "Kr"
1192
+ Rb = "Rb"
1193
+ Sr = "Sr"
1194
+ Y = "Y"
1195
+ Zr = "Zr"
1196
+ Nb = "Nb"
1197
+ Mo = "Mo"
1198
+ Tc = "Tc"
1199
+ Ru = "Ru"
1200
+ Rh = "Rh"
1201
+ Pd = "Pd"
1202
+ Ag = "Ag"
1203
+ Cd = "Cd"
1204
+ In = "In"
1205
+ Sn = "Sn"
1206
+ Sb = "Sb"
1207
+ Te = "Te"
1208
+ I = "I"
1209
+ Xe = "Xe"
1210
+ Cs = "Cs"
1211
+ Ba = "Ba"
1212
+ La = "La"
1213
+ Ce = "Ce"
1214
+ Pr = "Pr"
1215
+ Nd = "Nd"
1216
+ Pm = "Pm"
1217
+ Sm = "Sm"
1218
+ Eu = "Eu"
1219
+ Gd = "Gd"
1220
+ Tb = "Tb"
1221
+ Dy = "Dy"
1222
+ Ho = "Ho"
1223
+ Er = "Er"
1224
+ Tm = "Tm"
1225
+ Yb = "Yb"
1226
+ Lu = "Lu"
1227
+ Hf = "Hf"
1228
+ Ta = "Ta"
1229
+ W = "W"
1230
+ Re = "Re"
1231
+ Os = "Os"
1232
+ Ir = "Ir"
1233
+ Pt = "Pt"
1234
+ Au = "Au"
1235
+ Hg = "Hg"
1236
+ Tl = "Tl"
1237
+ Pb = "Pb"
1238
+ Bi = "Bi"
1239
+ Po = "Po"
1240
+ At = "At"
1241
+ Rn = "Rn"
1242
+ Fr = "Fr"
1243
+ Ra = "Ra"
1244
+ Ac = "Ac"
1245
+ Th = "Th"
1246
+ Pa = "Pa"
1247
+ U = "U"
1248
+ Np = "Np"
1249
+ Pu = "Pu"
1250
+ Am = "Am"
1251
+ Cm = "Cm"
1252
+ Bk = "Bk"
1253
+ Cf = "Cf"
1254
+ Es = "Es"
1255
+ Fm = "Fm"
1256
+ Md = "Md"
1257
+ No = "No"
1258
+ Lr = "Lr"
1259
+ Rf = "Rf"
1260
+ Db = "Db"
1261
+ Sg = "Sg"
1262
+ Bh = "Bh"
1263
+ Hs = "Hs"
1264
+ Mt = "Mt"
1265
+ Ds = "Ds"
1266
+ Rg = "Rg"
1267
+ Cn = "Cn"
1268
+ Nh = "Nh"
1269
+ Fl = "Fl"
1270
+ Mc = "Mc"
1271
+ Lv = "Lv"
1272
+ Ts = "Ts"
1273
+ Og = "Og"
1274
+
1275
+
1276
+ class Value39(Enum):
1277
+ X = "X"
1278
+ Vac = "Vac"
1279
+
1280
+
1281
+ class AtomicElementSchema18(BaseModel):
1282
+ value: Union[Value38, Value39]
1283
+ """
1284
+ All elements, including extra elements
1285
+ """
1286
+ id: int
1287
+ """
1288
+ integer id of this entry
1289
+ """
1290
+
1291
+
1292
+ class BasisSchema16(BaseModel):
1293
+ elements: List[AtomicElementSchema18] = Field(..., title="atomic elements schema")
1294
+ """
1295
+ atomic elements schema
1296
+ """
1297
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1298
+ """
1299
+ atomic coordinates schema
1300
+ """
1301
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1302
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1303
+ """
1304
+ atomic labels schema
1305
+ """
1306
+
1307
+
1308
+ class LatticeVectorsSchema15(BaseModel):
1309
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1310
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1311
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1312
+ alat: Optional[float] = 1
1313
+ """
1314
+ lattice parameter for fractional coordinates
1315
+ """
1316
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1317
+
1318
+
1319
+ class LatticeUnitsSchema15(BaseModel):
1320
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1321
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1322
+
1323
+
1324
+ class LatticeSchema15(BaseModel):
1325
+ a: float
1326
+ """
1327
+ length of the first lattice vector
1328
+ """
1329
+ b: float
1330
+ """
1331
+ length of the second lattice vector
1332
+ """
1333
+ c: float
1334
+ """
1335
+ length of the third lattice vector
1336
+ """
1337
+ alpha: float
1338
+ """
1339
+ angle between first and second lattice vector
1340
+ """
1341
+ beta: float
1342
+ """
1343
+ angle between second and third lattice vector
1344
+ """
1345
+ gamma: float
1346
+ """
1347
+ angle between first and third lattice vector
1348
+ """
1349
+ vectors: Optional[LatticeVectorsSchema15] = Field(None, title="lattice vectors schema")
1350
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1351
+ units: Optional[LatticeUnitsSchema15] = Field(
1352
+ default_factory=lambda: LatticeUnitsSchema15.model_validate({"length": "angstrom", "angle": "degree"}),
1353
+ title="Lattice units schema",
1354
+ )
1355
+
1356
+
1357
+ class Name127(Enum):
1358
+ volume = "volume"
1359
+
1360
+
1361
+ class Units54(Enum):
1362
+ angstrom_3 = "angstrom^3"
1363
+
1364
+
1365
+ class VolumeSchema15(BaseModel):
1366
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1367
+ units: Optional[Units54] = None
1368
+ value: float
1369
+
1370
+
1371
+ class Name128(Enum):
1372
+ density = "density"
1373
+
1374
+
1375
+ class Units55(Enum):
1376
+ g_cm_3 = "g/cm^3"
1377
+
1378
+
1379
+ class DensitySchema15(BaseModel):
1380
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1381
+ units: Optional[Units55] = None
1382
+ value: float
1383
+
1384
+
1385
+ class Units56(Enum):
1386
+ angstrom = "angstrom"
1387
+
1388
+
1389
+ class ScalarSchema16(BaseModel):
1390
+ units: Optional[Units56] = None
1391
+ value: float
1392
+
1393
+
1394
+ class Name129(Enum):
1395
+ symmetry = "symmetry"
1396
+
1397
+
1398
+ class SymmetrySchema15(BaseModel):
1399
+ pointGroupSymbol: Optional[str] = None
1400
+ """
1401
+ point group symbol in Schoenflies notation
1402
+ """
1403
+ spaceGroupSymbol: Optional[str] = None
1404
+ """
1405
+ space group symbol in Hermann–Mauguin notation
1406
+ """
1407
+ tolerance: Optional[ScalarSchema16] = Field(None, title="scalar schema")
1408
+ """
1409
+ tolerance used for symmetry calculation
1410
+ """
1411
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1412
+
1413
+
1414
+ class Name130(Enum):
1415
+ elemental_ratio = "elemental_ratio"
1416
+
1417
+
1418
+ class ElementalRatio15(BaseModel):
1419
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1420
+ value: confloat(ge=0.0, le=1.0)
1421
+ element: Optional[str] = None
1422
+ """
1423
+ the element this ratio is for
1424
+ """
1425
+
1426
+
1427
+ class Name131(Enum):
1428
+ p_norm = "p-norm"
1429
+
1430
+
1431
+ class PNorm15(BaseModel):
1432
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1433
+ degree: Optional[int] = None
1434
+ """
1435
+ degree of the dimensionality of the norm
1436
+ """
1437
+ value: float
1438
+
1439
+
1440
+ class Name132(Enum):
1441
+ inchi = "inchi"
1442
+
1443
+
1444
+ class InChIRepresentationSchema15(BaseModel):
1445
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1446
+ value: str
1447
+
1448
+
1449
+ class Name133(Enum):
1450
+ inchi_key = "inchi_key"
1451
+
1452
+
1453
+ class InChIKeyRepresentationSchema15(BaseModel):
1454
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1455
+ value: str
1456
+
1457
+
1458
+ class DerivedPropertiesSchema15(
1459
+ RootModel[
1460
+ Union[
1461
+ VolumeSchema15,
1462
+ DensitySchema15,
1463
+ SymmetrySchema15,
1464
+ ElementalRatio15,
1465
+ PNorm15,
1466
+ InChIRepresentationSchema15,
1467
+ InChIKeyRepresentationSchema15,
1468
+ ]
1469
+ ]
1470
+ ):
1471
+ root: Union[
1472
+ VolumeSchema15,
1473
+ DensitySchema15,
1474
+ SymmetrySchema15,
1475
+ ElementalRatio15,
1476
+ PNorm15,
1477
+ InChIRepresentationSchema15,
1478
+ InChIKeyRepresentationSchema15,
1479
+ ] = Field(..., discriminator="name")
1480
+
1481
+
1482
+ class Name134(Enum):
1483
+ default = "default"
1484
+ atomsTooClose = "atomsTooClose"
1485
+ atomsOverlap = "atomsOverlap"
1486
+
1487
+
1488
+ class MaterialConsistencyCheckSchema15(BaseModel):
1489
+ name: Name134
1490
+ """
1491
+ Name of the consistency check that is performed, which is listed in an enum.
1492
+ """
1493
+ key: str
1494
+ """
1495
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1496
+ """
1497
+ severity: Severity
1498
+ """
1499
+ Severity level of the problem, which is used in UI to differentiate.
1500
+ """
1501
+ message: str
1502
+ """
1503
+ Message generated by the consistency check describing the problem.
1504
+ """
1505
+
1506
+
1507
+ class CrystalSchema15(BaseModel):
1508
+ formula: Optional[str] = None
1509
+ """
1510
+ reduced chemical formula
1511
+ """
1512
+ unitCellFormula: Optional[str] = None
1513
+ """
1514
+ chemical formula based on the number of atoms of each element in the supercell
1515
+ """
1516
+ basis: BasisSchema16 = Field(..., title="basis schema")
1517
+ lattice: LatticeSchema15 = Field(..., title="lattice schema")
1518
+ derivedProperties: Optional[List[DerivedPropertiesSchema15]] = Field(None, title="derived properties schema")
1519
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1520
+ """
1521
+ information about a database source
1522
+ """
1523
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1524
+ """
1525
+ file source with the information inside
1526
+ """
1527
+ scaledHash: Optional[str] = None
1528
+ """
1529
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1530
+ """
1531
+ icsdId: Optional[int] = None
1532
+ """
1533
+ Corresponding ICSD id of the material
1534
+ """
1535
+ isNonPeriodic: Optional[bool] = None
1536
+ """
1537
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1538
+ """
1539
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema15]] = None
1540
+ field_id: Optional[str] = Field(None, alias="_id")
1541
+ """
1542
+ entity identity
1543
+ """
1544
+ slug: Optional[str] = None
1545
+ """
1546
+ entity slug
1547
+ """
1548
+ systemName: Optional[str] = None
1549
+ schemaVersion: Optional[str] = "2022.8.16"
1550
+ """
1551
+ entity's schema version. Used to distinct between different schemas.
1552
+ """
1553
+ name: Optional[str] = None
1554
+ """
1555
+ entity name
1556
+ """
1557
+ isDefault: Optional[bool] = False
1558
+ """
1559
+ Identifies that entity is defaultable
1560
+ """
1561
+ metadata: Optional[Dict[str, Any]] = None
1562
+
1563
+
1564
+ class AtomicLayersUniqueRepeatedSchema6(BaseModel):
1565
+ termination_top: TerminationSchema8 = Field(..., title="Termination Schema")
1566
+ """
1567
+ Defines a specific termination of a slab
1568
+ """
1569
+ number_of_repetitions: conint(ge=1)
1570
+ """
1571
+ Number of repetitions of the unique atomic layers
1572
+ """
1573
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
1574
+ """
1575
+ Miller indices [h, k, l] defining crystallographic planes
1576
+ """
1577
+ crystal: CrystalSchema15 = Field(..., title="Crystal Schema")
1578
+ """
1579
+ A crystal structure, referencing the base material schema
1580
+ """
1581
+ use_conventional_cell: Optional[bool] = True
1582
+ """
1583
+ Use the conventional cell for the crystal structure
1584
+ """
1585
+
1586
+
1587
+ class Value40(Enum):
1588
+ H = "H"
1589
+ He = "He"
1590
+ Li = "Li"
1591
+ Be = "Be"
1592
+ B = "B"
1593
+ C = "C"
1594
+ N = "N"
1595
+ O = "O"
1596
+ F = "F"
1597
+ Ne = "Ne"
1598
+ Na = "Na"
1599
+ Mg = "Mg"
1600
+ Al = "Al"
1601
+ Si = "Si"
1602
+ P = "P"
1603
+ S = "S"
1604
+ Cl = "Cl"
1605
+ Ar = "Ar"
1606
+ K = "K"
1607
+ Ca = "Ca"
1608
+ Sc = "Sc"
1609
+ Ti = "Ti"
1610
+ V = "V"
1611
+ Cr = "Cr"
1612
+ Mn = "Mn"
1613
+ Fe = "Fe"
1614
+ Co = "Co"
1615
+ Ni = "Ni"
1616
+ Cu = "Cu"
1617
+ Zn = "Zn"
1618
+ Ga = "Ga"
1619
+ Ge = "Ge"
1620
+ As = "As"
1621
+ Se = "Se"
1622
+ Br = "Br"
1623
+ Kr = "Kr"
1624
+ Rb = "Rb"
1625
+ Sr = "Sr"
1626
+ Y = "Y"
1627
+ Zr = "Zr"
1628
+ Nb = "Nb"
1629
+ Mo = "Mo"
1630
+ Tc = "Tc"
1631
+ Ru = "Ru"
1632
+ Rh = "Rh"
1633
+ Pd = "Pd"
1634
+ Ag = "Ag"
1635
+ Cd = "Cd"
1636
+ In = "In"
1637
+ Sn = "Sn"
1638
+ Sb = "Sb"
1639
+ Te = "Te"
1640
+ I = "I"
1641
+ Xe = "Xe"
1642
+ Cs = "Cs"
1643
+ Ba = "Ba"
1644
+ La = "La"
1645
+ Ce = "Ce"
1646
+ Pr = "Pr"
1647
+ Nd = "Nd"
1648
+ Pm = "Pm"
1649
+ Sm = "Sm"
1650
+ Eu = "Eu"
1651
+ Gd = "Gd"
1652
+ Tb = "Tb"
1653
+ Dy = "Dy"
1654
+ Ho = "Ho"
1655
+ Er = "Er"
1656
+ Tm = "Tm"
1657
+ Yb = "Yb"
1658
+ Lu = "Lu"
1659
+ Hf = "Hf"
1660
+ Ta = "Ta"
1661
+ W = "W"
1662
+ Re = "Re"
1663
+ Os = "Os"
1664
+ Ir = "Ir"
1665
+ Pt = "Pt"
1666
+ Au = "Au"
1667
+ Hg = "Hg"
1668
+ Tl = "Tl"
1669
+ Pb = "Pb"
1670
+ Bi = "Bi"
1671
+ Po = "Po"
1672
+ At = "At"
1673
+ Rn = "Rn"
1674
+ Fr = "Fr"
1675
+ Ra = "Ra"
1676
+ Ac = "Ac"
1677
+ Th = "Th"
1678
+ Pa = "Pa"
1679
+ U = "U"
1680
+ Np = "Np"
1681
+ Pu = "Pu"
1682
+ Am = "Am"
1683
+ Cm = "Cm"
1684
+ Bk = "Bk"
1685
+ Cf = "Cf"
1686
+ Es = "Es"
1687
+ Fm = "Fm"
1688
+ Md = "Md"
1689
+ No = "No"
1690
+ Lr = "Lr"
1691
+ Rf = "Rf"
1692
+ Db = "Db"
1693
+ Sg = "Sg"
1694
+ Bh = "Bh"
1695
+ Hs = "Hs"
1696
+ Mt = "Mt"
1697
+ Ds = "Ds"
1698
+ Rg = "Rg"
1699
+ Cn = "Cn"
1700
+ Nh = "Nh"
1701
+ Fl = "Fl"
1702
+ Mc = "Mc"
1703
+ Lv = "Lv"
1704
+ Ts = "Ts"
1705
+ Og = "Og"
1706
+
1707
+
1708
+ class Value41(Enum):
1709
+ X = "X"
1710
+ Vac = "Vac"
1711
+
1712
+
1713
+ class AtomicElementSchema19(BaseModel):
1714
+ value: Union[Value40, Value41]
1715
+ """
1716
+ All elements, including extra elements
1717
+ """
1718
+ id: int
1719
+ """
1720
+ integer id of this entry
1721
+ """
1722
+
1723
+
1724
+ class BasisSchema17(BaseModel):
1725
+ elements: List[AtomicElementSchema19] = Field(..., title="atomic elements schema")
1726
+ """
1727
+ atomic elements schema
1728
+ """
1729
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1730
+ """
1731
+ atomic coordinates schema
1732
+ """
1733
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1734
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1735
+ """
1736
+ atomic labels schema
1737
+ """
1738
+
1739
+
1740
+ class LatticeVectorsSchema16(BaseModel):
1741
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1742
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1743
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1744
+ alat: Optional[float] = 1
1745
+ """
1746
+ lattice parameter for fractional coordinates
1747
+ """
1748
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1749
+
1750
+
1751
+ class LatticeUnitsSchema16(BaseModel):
1752
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1753
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1754
+
1755
+
1756
+ class LatticeSchema16(BaseModel):
1757
+ a: float
1758
+ """
1759
+ length of the first lattice vector
1760
+ """
1761
+ b: float
1762
+ """
1763
+ length of the second lattice vector
1764
+ """
1765
+ c: float
1766
+ """
1767
+ length of the third lattice vector
1768
+ """
1769
+ alpha: float
1770
+ """
1771
+ angle between first and second lattice vector
1772
+ """
1773
+ beta: float
1774
+ """
1775
+ angle between second and third lattice vector
1776
+ """
1777
+ gamma: float
1778
+ """
1779
+ angle between first and third lattice vector
1780
+ """
1781
+ vectors: Optional[LatticeVectorsSchema16] = Field(None, title="lattice vectors schema")
1782
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1783
+ units: Optional[LatticeUnitsSchema16] = Field(
1784
+ default_factory=lambda: LatticeUnitsSchema16.model_validate({"length": "angstrom", "angle": "degree"}),
1785
+ title="Lattice units schema",
1786
+ )
1787
+
1788
+
1789
+ class Name135(Enum):
1790
+ volume = "volume"
1791
+
1792
+
1793
+ class Units57(Enum):
1794
+ angstrom_3 = "angstrom^3"
1795
+
1796
+
1797
+ class VolumeSchema16(BaseModel):
1798
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1799
+ units: Optional[Units57] = None
1800
+ value: float
1801
+
1802
+
1803
+ class Name136(Enum):
1804
+ density = "density"
1805
+
1806
+
1807
+ class Units58(Enum):
1808
+ g_cm_3 = "g/cm^3"
1809
+
1810
+
1811
+ class DensitySchema16(BaseModel):
1812
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1813
+ units: Optional[Units58] = None
1814
+ value: float
1815
+
1816
+
1817
+ class Units59(Enum):
1818
+ angstrom = "angstrom"
1819
+
1820
+
1821
+ class ScalarSchema17(BaseModel):
1822
+ units: Optional[Units59] = None
1823
+ value: float
1824
+
1825
+
1826
+ class Name137(Enum):
1827
+ symmetry = "symmetry"
1828
+
1829
+
1830
+ class SymmetrySchema16(BaseModel):
1831
+ pointGroupSymbol: Optional[str] = None
1832
+ """
1833
+ point group symbol in Schoenflies notation
1834
+ """
1835
+ spaceGroupSymbol: Optional[str] = None
1836
+ """
1837
+ space group symbol in Hermann–Mauguin notation
1838
+ """
1839
+ tolerance: Optional[ScalarSchema17] = Field(None, title="scalar schema")
1840
+ """
1841
+ tolerance used for symmetry calculation
1842
+ """
1843
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1844
+
1845
+
1846
+ class Name138(Enum):
1847
+ elemental_ratio = "elemental_ratio"
1848
+
1849
+
1850
+ class ElementalRatio16(BaseModel):
1851
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1852
+ value: confloat(ge=0.0, le=1.0)
1853
+ element: Optional[str] = None
1854
+ """
1855
+ the element this ratio is for
1856
+ """
1857
+
1858
+
1859
+ class Name139(Enum):
1860
+ p_norm = "p-norm"
1861
+
1862
+
1863
+ class PNorm16(BaseModel):
1864
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1865
+ degree: Optional[int] = None
1866
+ """
1867
+ degree of the dimensionality of the norm
1868
+ """
1869
+ value: float
1870
+
1871
+
1872
+ class Name140(Enum):
1873
+ inchi = "inchi"
1874
+
1875
+
1876
+ class InChIRepresentationSchema16(BaseModel):
1877
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1878
+ value: str
1879
+
1880
+
1881
+ class Name141(Enum):
1882
+ inchi_key = "inchi_key"
1883
+
1884
+
1885
+ class InChIKeyRepresentationSchema16(BaseModel):
1886
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1887
+ value: str
1888
+
1889
+
1890
+ class DerivedPropertiesSchema16(
1891
+ RootModel[
1892
+ Union[
1893
+ VolumeSchema16,
1894
+ DensitySchema16,
1895
+ SymmetrySchema16,
1896
+ ElementalRatio16,
1897
+ PNorm16,
1898
+ InChIRepresentationSchema16,
1899
+ InChIKeyRepresentationSchema16,
1900
+ ]
1901
+ ]
1902
+ ):
1903
+ root: Union[
1904
+ VolumeSchema16,
1905
+ DensitySchema16,
1906
+ SymmetrySchema16,
1907
+ ElementalRatio16,
1908
+ PNorm16,
1909
+ InChIRepresentationSchema16,
1910
+ InChIKeyRepresentationSchema16,
1911
+ ] = Field(..., discriminator="name")
1912
+
1913
+
1914
+ class Name142(Enum):
1915
+ default = "default"
1916
+ atomsTooClose = "atomsTooClose"
1917
+ atomsOverlap = "atomsOverlap"
1918
+
1919
+
1920
+ class MaterialConsistencyCheckSchema16(BaseModel):
1921
+ name: Name142
1922
+ """
1923
+ Name of the consistency check that is performed, which is listed in an enum.
1924
+ """
1925
+ key: str
1926
+ """
1927
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1928
+ """
1929
+ severity: Severity
1930
+ """
1931
+ Severity level of the problem, which is used in UI to differentiate.
1932
+ """
1933
+ message: str
1934
+ """
1935
+ Message generated by the consistency check describing the problem.
1936
+ """
1937
+
1938
+
1939
+ class CrystalSchema16(BaseModel):
1940
+ formula: Optional[str] = None
1941
+ """
1942
+ reduced chemical formula
1943
+ """
1944
+ unitCellFormula: Optional[str] = None
1945
+ """
1946
+ chemical formula based on the number of atoms of each element in the supercell
1947
+ """
1948
+ basis: BasisSchema17 = Field(..., title="basis schema")
1949
+ lattice: LatticeSchema16 = Field(..., title="lattice schema")
1950
+ derivedProperties: Optional[List[DerivedPropertiesSchema16]] = Field(None, title="derived properties schema")
1951
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1952
+ """
1953
+ information about a database source
1954
+ """
1955
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1956
+ """
1957
+ file source with the information inside
1958
+ """
1959
+ scaledHash: Optional[str] = None
1960
+ """
1961
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1962
+ """
1963
+ icsdId: Optional[int] = None
1964
+ """
1965
+ Corresponding ICSD id of the material
1966
+ """
1967
+ isNonPeriodic: Optional[bool] = None
1968
+ """
1969
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1970
+ """
1971
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema16]] = None
1972
+ field_id: Optional[str] = Field(None, alias="_id")
1973
+ """
1974
+ entity identity
1975
+ """
1976
+ slug: Optional[str] = None
1977
+ """
1978
+ entity slug
1979
+ """
1980
+ systemName: Optional[str] = None
1981
+ schemaVersion: Optional[str] = "2022.8.16"
1982
+ """
1983
+ entity's schema version. Used to distinct between different schemas.
1984
+ """
1985
+ name: Optional[str] = None
1986
+ """
1987
+ entity name
1988
+ """
1989
+ isDefault: Optional[bool] = False
1990
+ """
1991
+ Identifies that entity is defaultable
1992
+ """
1993
+ metadata: Optional[Dict[str, Any]] = None
1994
+
1995
+
1996
+ class VacuumConfigurationSchema6(BaseModel):
1997
+ direction: AxisEnum = Field(..., title="Axis Enum")
1998
+ """
1999
+ Enum for axis types
2000
+ """
2001
+ size: Optional[confloat(ge=0.0)] = 10
2002
+ """
2003
+ Size of the vacuum slab in angstroms
2004
+ """
2005
+ crystal: CrystalSchema16 = Field(..., title="Crystal Schema")
2006
+ """
2007
+ A crystal structure, referencing the base material schema
2008
+ """
2009
+
2010
+
2011
+ class SlabConfigurationSchema3(BaseModel):
2012
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema6, VacuumConfigurationSchema6]] = Field(
2013
+ ..., max_length=2, min_length=2
2014
+ )
2015
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2016
+ """
2017
+ Enum for axis types
2018
+ """
2019
+ gaps: Optional[List[ObjectWithId]] = None
2020
+ """
2021
+ Gap distances between stack components as an array of objects with id and value
2022
+ """
2023
+
2024
+
2025
+ class Value42(Enum):
2026
+ H = "H"
2027
+ He = "He"
2028
+ Li = "Li"
2029
+ Be = "Be"
2030
+ B = "B"
2031
+ C = "C"
2032
+ N = "N"
2033
+ O = "O"
2034
+ F = "F"
2035
+ Ne = "Ne"
2036
+ Na = "Na"
2037
+ Mg = "Mg"
2038
+ Al = "Al"
2039
+ Si = "Si"
2040
+ P = "P"
2041
+ S = "S"
2042
+ Cl = "Cl"
2043
+ Ar = "Ar"
2044
+ K = "K"
2045
+ Ca = "Ca"
2046
+ Sc = "Sc"
2047
+ Ti = "Ti"
2048
+ V = "V"
2049
+ Cr = "Cr"
2050
+ Mn = "Mn"
2051
+ Fe = "Fe"
2052
+ Co = "Co"
2053
+ Ni = "Ni"
2054
+ Cu = "Cu"
2055
+ Zn = "Zn"
2056
+ Ga = "Ga"
2057
+ Ge = "Ge"
2058
+ As = "As"
2059
+ Se = "Se"
2060
+ Br = "Br"
2061
+ Kr = "Kr"
2062
+ Rb = "Rb"
2063
+ Sr = "Sr"
2064
+ Y = "Y"
2065
+ Zr = "Zr"
2066
+ Nb = "Nb"
2067
+ Mo = "Mo"
2068
+ Tc = "Tc"
2069
+ Ru = "Ru"
2070
+ Rh = "Rh"
2071
+ Pd = "Pd"
2072
+ Ag = "Ag"
2073
+ Cd = "Cd"
2074
+ In = "In"
2075
+ Sn = "Sn"
2076
+ Sb = "Sb"
2077
+ Te = "Te"
2078
+ I = "I"
2079
+ Xe = "Xe"
2080
+ Cs = "Cs"
2081
+ Ba = "Ba"
2082
+ La = "La"
2083
+ Ce = "Ce"
2084
+ Pr = "Pr"
2085
+ Nd = "Nd"
2086
+ Pm = "Pm"
2087
+ Sm = "Sm"
2088
+ Eu = "Eu"
2089
+ Gd = "Gd"
2090
+ Tb = "Tb"
2091
+ Dy = "Dy"
2092
+ Ho = "Ho"
2093
+ Er = "Er"
2094
+ Tm = "Tm"
2095
+ Yb = "Yb"
2096
+ Lu = "Lu"
2097
+ Hf = "Hf"
2098
+ Ta = "Ta"
2099
+ W = "W"
2100
+ Re = "Re"
2101
+ Os = "Os"
2102
+ Ir = "Ir"
2103
+ Pt = "Pt"
2104
+ Au = "Au"
2105
+ Hg = "Hg"
2106
+ Tl = "Tl"
2107
+ Pb = "Pb"
2108
+ Bi = "Bi"
2109
+ Po = "Po"
2110
+ At = "At"
2111
+ Rn = "Rn"
2112
+ Fr = "Fr"
2113
+ Ra = "Ra"
2114
+ Ac = "Ac"
2115
+ Th = "Th"
2116
+ Pa = "Pa"
2117
+ U = "U"
2118
+ Np = "Np"
2119
+ Pu = "Pu"
2120
+ Am = "Am"
2121
+ Cm = "Cm"
2122
+ Bk = "Bk"
2123
+ Cf = "Cf"
2124
+ Es = "Es"
2125
+ Fm = "Fm"
2126
+ Md = "Md"
2127
+ No = "No"
2128
+ Lr = "Lr"
2129
+ Rf = "Rf"
2130
+ Db = "Db"
2131
+ Sg = "Sg"
2132
+ Bh = "Bh"
2133
+ Hs = "Hs"
2134
+ Mt = "Mt"
2135
+ Ds = "Ds"
2136
+ Rg = "Rg"
2137
+ Cn = "Cn"
2138
+ Nh = "Nh"
2139
+ Fl = "Fl"
2140
+ Mc = "Mc"
2141
+ Lv = "Lv"
2142
+ Ts = "Ts"
2143
+ Og = "Og"
2144
+
2145
+
2146
+ class Value43(Enum):
2147
+ X = "X"
2148
+ Vac = "Vac"
2149
+
2150
+
2151
+ class AtomicElementSchema20(BaseModel):
2152
+ value: Union[Value42, Value43]
2153
+ """
2154
+ All elements, including extra elements
2155
+ """
2156
+ id: int
2157
+ """
2158
+ integer id of this entry
2159
+ """
2160
+
2161
+
2162
+ class BasisSchema18(BaseModel):
2163
+ elements: List[AtomicElementSchema20] = Field(..., title="atomic elements schema")
2164
+ """
2165
+ atomic elements schema
2166
+ """
2167
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
2168
+ """
2169
+ atomic coordinates schema
2170
+ """
2171
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
2172
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
2173
+ """
2174
+ atomic labels schema
2175
+ """
2176
+
2177
+
2178
+ class LatticeVectorsSchema17(BaseModel):
2179
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2180
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2181
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2182
+ alat: Optional[float] = 1
2183
+ """
2184
+ lattice parameter for fractional coordinates
2185
+ """
2186
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
2187
+
2188
+
2189
+ class LatticeUnitsSchema17(BaseModel):
2190
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
2191
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
2192
+
2193
+
2194
+ class LatticeSchema17(BaseModel):
2195
+ a: float
2196
+ """
2197
+ length of the first lattice vector
2198
+ """
2199
+ b: float
2200
+ """
2201
+ length of the second lattice vector
2202
+ """
2203
+ c: float
2204
+ """
2205
+ length of the third lattice vector
2206
+ """
2207
+ alpha: float
2208
+ """
2209
+ angle between first and second lattice vector
2210
+ """
2211
+ beta: float
2212
+ """
2213
+ angle between second and third lattice vector
2214
+ """
2215
+ gamma: float
2216
+ """
2217
+ angle between first and third lattice vector
2218
+ """
2219
+ vectors: Optional[LatticeVectorsSchema17] = Field(None, title="lattice vectors schema")
2220
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2221
+ units: Optional[LatticeUnitsSchema17] = Field(
2222
+ default_factory=lambda: LatticeUnitsSchema17.model_validate({"length": "angstrom", "angle": "degree"}),
2223
+ title="Lattice units schema",
2224
+ )
2225
+
2226
+
2227
+ class Name143(Enum):
2228
+ volume = "volume"
2229
+
2230
+
2231
+ class Units60(Enum):
2232
+ angstrom_3 = "angstrom^3"
2233
+
2234
+
2235
+ class VolumeSchema17(BaseModel):
2236
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2237
+ units: Optional[Units60] = None
2238
+ value: float
2239
+
2240
+
2241
+ class Name144(Enum):
2242
+ density = "density"
2243
+
2244
+
2245
+ class Units61(Enum):
2246
+ g_cm_3 = "g/cm^3"
2247
+
2248
+
2249
+ class DensitySchema17(BaseModel):
2250
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2251
+ units: Optional[Units61] = None
2252
+ value: float
2253
+
2254
+
2255
+ class Units62(Enum):
2256
+ angstrom = "angstrom"
2257
+
2258
+
2259
+ class ScalarSchema18(BaseModel):
2260
+ units: Optional[Units62] = None
2261
+ value: float
2262
+
2263
+
2264
+ class Name145(Enum):
2265
+ symmetry = "symmetry"
2266
+
2267
+
2268
+ class SymmetrySchema17(BaseModel):
2269
+ pointGroupSymbol: Optional[str] = None
2270
+ """
2271
+ point group symbol in Schoenflies notation
2272
+ """
2273
+ spaceGroupSymbol: Optional[str] = None
2274
+ """
2275
+ space group symbol in Hermann–Mauguin notation
2276
+ """
2277
+ tolerance: Optional[ScalarSchema18] = Field(None, title="scalar schema")
2278
+ """
2279
+ tolerance used for symmetry calculation
2280
+ """
2281
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
2282
+
2283
+
2284
+ class Name146(Enum):
2285
+ elemental_ratio = "elemental_ratio"
2286
+
2287
+
2288
+ class ElementalRatio17(BaseModel):
2289
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
2290
+ value: confloat(ge=0.0, le=1.0)
2291
+ element: Optional[str] = None
2292
+ """
2293
+ the element this ratio is for
2294
+ """
2295
+
2296
+
2297
+ class Name147(Enum):
2298
+ p_norm = "p-norm"
2299
+
2300
+
2301
+ class PNorm17(BaseModel):
2302
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
2303
+ degree: Optional[int] = None
2304
+ """
2305
+ degree of the dimensionality of the norm
2306
+ """
2307
+ value: float
2308
+
2309
+
2310
+ class Name148(Enum):
2311
+ inchi = "inchi"
2312
+
2313
+
2314
+ class InChIRepresentationSchema17(BaseModel):
2315
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2316
+ value: str
2317
+
2318
+
2319
+ class Name149(Enum):
2320
+ inchi_key = "inchi_key"
2321
+
2322
+
2323
+ class InChIKeyRepresentationSchema17(BaseModel):
2324
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2325
+ value: str
2326
+
2327
+
2328
+ class DerivedPropertiesSchema17(
2329
+ RootModel[
2330
+ Union[
2331
+ VolumeSchema17,
2332
+ DensitySchema17,
2333
+ SymmetrySchema17,
2334
+ ElementalRatio17,
2335
+ PNorm17,
2336
+ InChIRepresentationSchema17,
2337
+ InChIKeyRepresentationSchema17,
2338
+ ]
2339
+ ]
2340
+ ):
2341
+ root: Union[
2342
+ VolumeSchema17,
2343
+ DensitySchema17,
2344
+ SymmetrySchema17,
2345
+ ElementalRatio17,
2346
+ PNorm17,
2347
+ InChIRepresentationSchema17,
2348
+ InChIKeyRepresentationSchema17,
2349
+ ] = Field(..., discriminator="name")
2350
+
2351
+
2352
+ class Name150(Enum):
2353
+ default = "default"
2354
+ atomsTooClose = "atomsTooClose"
2355
+ atomsOverlap = "atomsOverlap"
2356
+
2357
+
2358
+ class MaterialConsistencyCheckSchema17(BaseModel):
2359
+ name: Name150
2360
+ """
2361
+ Name of the consistency check that is performed, which is listed in an enum.
2362
+ """
2363
+ key: str
2364
+ """
2365
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
2366
+ """
2367
+ severity: Severity
2368
+ """
2369
+ Severity level of the problem, which is used in UI to differentiate.
2370
+ """
2371
+ message: str
2372
+ """
2373
+ Message generated by the consistency check describing the problem.
2374
+ """
2375
+
2376
+
2377
+ class CrystalSchema17(BaseModel):
2378
+ formula: Optional[str] = None
2379
+ """
2380
+ reduced chemical formula
2381
+ """
2382
+ unitCellFormula: Optional[str] = None
2383
+ """
2384
+ chemical formula based on the number of atoms of each element in the supercell
2385
+ """
2386
+ basis: BasisSchema18 = Field(..., title="basis schema")
2387
+ lattice: LatticeSchema17 = Field(..., title="lattice schema")
2388
+ derivedProperties: Optional[List[DerivedPropertiesSchema17]] = Field(None, title="derived properties schema")
2389
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
2390
+ """
2391
+ information about a database source
2392
+ """
2393
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
2394
+ """
2395
+ file source with the information inside
2396
+ """
2397
+ scaledHash: Optional[str] = None
2398
+ """
2399
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
2400
+ """
2401
+ icsdId: Optional[int] = None
2402
+ """
2403
+ Corresponding ICSD id of the material
2404
+ """
2405
+ isNonPeriodic: Optional[bool] = None
2406
+ """
2407
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
2408
+ """
2409
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema17]] = None
2410
+ field_id: Optional[str] = Field(None, alias="_id")
2411
+ """
2412
+ entity identity
2413
+ """
2414
+ slug: Optional[str] = None
2415
+ """
2416
+ entity slug
2417
+ """
2418
+ systemName: Optional[str] = None
2419
+ schemaVersion: Optional[str] = "2022.8.16"
2420
+ """
2421
+ entity's schema version. Used to distinct between different schemas.
2422
+ """
2423
+ name: Optional[str] = None
2424
+ """
2425
+ entity name
2426
+ """
2427
+ isDefault: Optional[bool] = False
2428
+ """
2429
+ Identifies that entity is defaultable
2430
+ """
2431
+ metadata: Optional[Dict[str, Any]] = None
2432
+
2433
+
2434
+ class CoordinateShapeEnum(Enum):
2435
+ cylinder = "cylinder"
2436
+ sphere = "sphere"
2437
+ box = "box"
2438
+ triangular_prism = "triangular_prism"
2439
+ plane = "plane"
2440
+
2441
+
2442
+ class BoxCoordinateConditionSchema(BaseModel):
2443
+ shape: Literal["box"] = Field(..., title="Coordinate Shape Enum")
2444
+ min_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2445
+ max_coordinate: List[float] = Field(..., max_length=3, min_length=3, title="coordinate 3d schema")
2446
+
2447
+
2448
+ class VoidRegionSchema(BaseModel):
2449
+ crystal: CrystalSchema17 = Field(..., title="Crystal Schema")
2450
+ """
2451
+ A crystal structure, referencing the base material schema
2452
+ """
2453
+ coordinate_condition: BoxCoordinateConditionSchema = Field(..., title="Coordinate Conditions Schema")
2454
+ """
2455
+ Combined schema for all coordinate condition types
2456
+ """
2457
+
2458
+
2459
+ class MergeMethodsEnum(Enum):
2460
+ ADD = "ADD"
2461
+ REPLACE = "REPLACE"
2462
+ YIELD = "YIELD"
2463
+
2464
+
2465
+ class MergeSchema(BaseModel):
2466
+ merge_components: List[Union[SlabConfigurationSchema3, VoidRegionSchema]] = Field(..., max_length=2, min_length=2)
2467
+ merge_method: Optional[MergeMethodsEnum] = Field("REPLACE", title="Merge Methods Enum")
2468
+ """
2469
+ Available methods for merging components
2470
+ """
2471
+
2472
+
2473
+ class Value44(Enum):
2474
+ H = "H"
2475
+ He = "He"
2476
+ Li = "Li"
2477
+ Be = "Be"
2478
+ B = "B"
2479
+ C = "C"
2480
+ N = "N"
2481
+ O = "O"
2482
+ F = "F"
2483
+ Ne = "Ne"
2484
+ Na = "Na"
2485
+ Mg = "Mg"
2486
+ Al = "Al"
2487
+ Si = "Si"
2488
+ P = "P"
2489
+ S = "S"
2490
+ Cl = "Cl"
2491
+ Ar = "Ar"
2492
+ K = "K"
2493
+ Ca = "Ca"
2494
+ Sc = "Sc"
2495
+ Ti = "Ti"
2496
+ V = "V"
2497
+ Cr = "Cr"
2498
+ Mn = "Mn"
2499
+ Fe = "Fe"
2500
+ Co = "Co"
2501
+ Ni = "Ni"
2502
+ Cu = "Cu"
2503
+ Zn = "Zn"
2504
+ Ga = "Ga"
2505
+ Ge = "Ge"
2506
+ As = "As"
2507
+ Se = "Se"
2508
+ Br = "Br"
2509
+ Kr = "Kr"
2510
+ Rb = "Rb"
2511
+ Sr = "Sr"
2512
+ Y = "Y"
2513
+ Zr = "Zr"
2514
+ Nb = "Nb"
2515
+ Mo = "Mo"
2516
+ Tc = "Tc"
2517
+ Ru = "Ru"
2518
+ Rh = "Rh"
2519
+ Pd = "Pd"
2520
+ Ag = "Ag"
2521
+ Cd = "Cd"
2522
+ In = "In"
2523
+ Sn = "Sn"
2524
+ Sb = "Sb"
2525
+ Te = "Te"
2526
+ I = "I"
2527
+ Xe = "Xe"
2528
+ Cs = "Cs"
2529
+ Ba = "Ba"
2530
+ La = "La"
2531
+ Ce = "Ce"
2532
+ Pr = "Pr"
2533
+ Nd = "Nd"
2534
+ Pm = "Pm"
2535
+ Sm = "Sm"
2536
+ Eu = "Eu"
2537
+ Gd = "Gd"
2538
+ Tb = "Tb"
2539
+ Dy = "Dy"
2540
+ Ho = "Ho"
2541
+ Er = "Er"
2542
+ Tm = "Tm"
2543
+ Yb = "Yb"
2544
+ Lu = "Lu"
2545
+ Hf = "Hf"
2546
+ Ta = "Ta"
2547
+ W = "W"
2548
+ Re = "Re"
2549
+ Os = "Os"
2550
+ Ir = "Ir"
2551
+ Pt = "Pt"
2552
+ Au = "Au"
2553
+ Hg = "Hg"
2554
+ Tl = "Tl"
2555
+ Pb = "Pb"
2556
+ Bi = "Bi"
2557
+ Po = "Po"
2558
+ At = "At"
2559
+ Rn = "Rn"
2560
+ Fr = "Fr"
2561
+ Ra = "Ra"
2562
+ Ac = "Ac"
2563
+ Th = "Th"
2564
+ Pa = "Pa"
2565
+ U = "U"
2566
+ Np = "Np"
2567
+ Pu = "Pu"
2568
+ Am = "Am"
2569
+ Cm = "Cm"
2570
+ Bk = "Bk"
2571
+ Cf = "Cf"
2572
+ Es = "Es"
2573
+ Fm = "Fm"
2574
+ Md = "Md"
2575
+ No = "No"
2576
+ Lr = "Lr"
2577
+ Rf = "Rf"
2578
+ Db = "Db"
2579
+ Sg = "Sg"
2580
+ Bh = "Bh"
2581
+ Hs = "Hs"
2582
+ Mt = "Mt"
2583
+ Ds = "Ds"
2584
+ Rg = "Rg"
2585
+ Cn = "Cn"
2586
+ Nh = "Nh"
2587
+ Fl = "Fl"
2588
+ Mc = "Mc"
2589
+ Lv = "Lv"
2590
+ Ts = "Ts"
2591
+ Og = "Og"
2592
+
2593
+
2594
+ class Value45(Enum):
2595
+ X = "X"
2596
+ Vac = "Vac"
2597
+
2598
+
2599
+ class AtomicElementSchema21(BaseModel):
2600
+ value: Union[Value44, Value45]
2601
+ """
2602
+ All elements, including extra elements
2603
+ """
2604
+ id: int
2605
+ """
2606
+ integer id of this entry
2607
+ """
2608
+
2609
+
2610
+ class BasisSchema19(BaseModel):
2611
+ elements: List[AtomicElementSchema21] = Field(..., title="atomic elements schema")
2612
+ """
2613
+ atomic elements schema
2614
+ """
2615
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
2616
+ """
2617
+ atomic coordinates schema
2618
+ """
2619
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
2620
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
2621
+ """
2622
+ atomic labels schema
2623
+ """
2624
+
2625
+
2626
+ class LatticeVectorsSchema18(BaseModel):
2627
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2628
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2629
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2630
+ alat: Optional[float] = 1
2631
+ """
2632
+ lattice parameter for fractional coordinates
2633
+ """
2634
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
2635
+
2636
+
2637
+ class LatticeUnitsSchema18(BaseModel):
2638
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
2639
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
2640
+
2641
+
2642
+ class LatticeSchema18(BaseModel):
2643
+ a: float
2644
+ """
2645
+ length of the first lattice vector
2646
+ """
2647
+ b: float
2648
+ """
2649
+ length of the second lattice vector
2650
+ """
2651
+ c: float
2652
+ """
2653
+ length of the third lattice vector
2654
+ """
2655
+ alpha: float
2656
+ """
2657
+ angle between first and second lattice vector
2658
+ """
2659
+ beta: float
2660
+ """
2661
+ angle between second and third lattice vector
2662
+ """
2663
+ gamma: float
2664
+ """
2665
+ angle between first and third lattice vector
2666
+ """
2667
+ vectors: Optional[LatticeVectorsSchema18] = Field(None, title="lattice vectors schema")
2668
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2669
+ units: Optional[LatticeUnitsSchema18] = Field(
2670
+ default_factory=lambda: LatticeUnitsSchema18.model_validate({"length": "angstrom", "angle": "degree"}),
2671
+ title="Lattice units schema",
2672
+ )
2673
+
2674
+
2675
+ class Name151(Enum):
2676
+ volume = "volume"
2677
+
2678
+
2679
+ class Units63(Enum):
2680
+ angstrom_3 = "angstrom^3"
2681
+
2682
+
2683
+ class VolumeSchema18(BaseModel):
2684
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2685
+ units: Optional[Units63] = None
2686
+ value: float
2687
+
2688
+
2689
+ class Name152(Enum):
2690
+ density = "density"
2691
+
2692
+
2693
+ class Units64(Enum):
2694
+ g_cm_3 = "g/cm^3"
2695
+
2696
+
2697
+ class DensitySchema18(BaseModel):
2698
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2699
+ units: Optional[Units64] = None
2700
+ value: float
2701
+
2702
+
2703
+ class Units65(Enum):
2704
+ angstrom = "angstrom"
2705
+
2706
+
2707
+ class ScalarSchema19(BaseModel):
2708
+ units: Optional[Units65] = None
2709
+ value: float
2710
+
2711
+
2712
+ class Name153(Enum):
2713
+ symmetry = "symmetry"
2714
+
2715
+
2716
+ class SymmetrySchema18(BaseModel):
2717
+ pointGroupSymbol: Optional[str] = None
2718
+ """
2719
+ point group symbol in Schoenflies notation
2720
+ """
2721
+ spaceGroupSymbol: Optional[str] = None
2722
+ """
2723
+ space group symbol in Hermann–Mauguin notation
2724
+ """
2725
+ tolerance: Optional[ScalarSchema19] = Field(None, title="scalar schema")
2726
+ """
2727
+ tolerance used for symmetry calculation
2728
+ """
2729
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
2730
+
2731
+
2732
+ class Name154(Enum):
2733
+ elemental_ratio = "elemental_ratio"
2734
+
2735
+
2736
+ class ElementalRatio18(BaseModel):
2737
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
2738
+ value: confloat(ge=0.0, le=1.0)
2739
+ element: Optional[str] = None
2740
+ """
2741
+ the element this ratio is for
2742
+ """
2743
+
2744
+
2745
+ class Name155(Enum):
2746
+ p_norm = "p-norm"
2747
+
2748
+
2749
+ class PNorm18(BaseModel):
2750
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
2751
+ degree: Optional[int] = None
2752
+ """
2753
+ degree of the dimensionality of the norm
2754
+ """
2755
+ value: float
2756
+
2757
+
2758
+ class Name156(Enum):
2759
+ inchi = "inchi"
2760
+
2761
+
2762
+ class InChIRepresentationSchema18(BaseModel):
2763
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2764
+ value: str
2765
+
2766
+
2767
+ class Name157(Enum):
2768
+ inchi_key = "inchi_key"
2769
+
2770
+
2771
+ class InChIKeyRepresentationSchema18(BaseModel):
2772
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2773
+ value: str
2774
+
2775
+
2776
+ class DerivedPropertiesSchema18(
2777
+ RootModel[
2778
+ Union[
2779
+ VolumeSchema18,
2780
+ DensitySchema18,
2781
+ SymmetrySchema18,
2782
+ ElementalRatio18,
2783
+ PNorm18,
2784
+ InChIRepresentationSchema18,
2785
+ InChIKeyRepresentationSchema18,
2786
+ ]
2787
+ ]
2788
+ ):
2789
+ root: Union[
2790
+ VolumeSchema18,
2791
+ DensitySchema18,
2792
+ SymmetrySchema18,
2793
+ ElementalRatio18,
2794
+ PNorm18,
2795
+ InChIRepresentationSchema18,
2796
+ InChIKeyRepresentationSchema18,
2797
+ ] = Field(..., discriminator="name")
2798
+
2799
+
2800
+ class Name158(Enum):
2801
+ default = "default"
2802
+ atomsTooClose = "atomsTooClose"
2803
+ atomsOverlap = "atomsOverlap"
2804
+
2805
+
2806
+ class MaterialConsistencyCheckSchema18(BaseModel):
2807
+ name: Name158
2808
+ """
2809
+ Name of the consistency check that is performed, which is listed in an enum.
2810
+ """
2811
+ key: str
2812
+ """
2813
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
2814
+ """
2815
+ severity: Severity
2816
+ """
2817
+ Severity level of the problem, which is used in UI to differentiate.
2818
+ """
2819
+ message: str
2820
+ """
2821
+ Message generated by the consistency check describing the problem.
2822
+ """
2823
+
2824
+
2825
+ class CrystalSchema18(BaseModel):
2826
+ formula: Optional[str] = None
2827
+ """
2828
+ reduced chemical formula
2829
+ """
2830
+ unitCellFormula: Optional[str] = None
2831
+ """
2832
+ chemical formula based on the number of atoms of each element in the supercell
2833
+ """
2834
+ basis: BasisSchema19 = Field(..., title="basis schema")
2835
+ lattice: LatticeSchema18 = Field(..., title="lattice schema")
2836
+ derivedProperties: Optional[List[DerivedPropertiesSchema18]] = Field(None, title="derived properties schema")
2837
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
2838
+ """
2839
+ information about a database source
2840
+ """
2841
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
2842
+ """
2843
+ file source with the information inside
2844
+ """
2845
+ scaledHash: Optional[str] = None
2846
+ """
2847
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
2848
+ """
2849
+ icsdId: Optional[int] = None
2850
+ """
2851
+ Corresponding ICSD id of the material
2852
+ """
2853
+ isNonPeriodic: Optional[bool] = None
2854
+ """
2855
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
2856
+ """
2857
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema18]] = None
2858
+ field_id: Optional[str] = Field(None, alias="_id")
2859
+ """
2860
+ entity identity
2861
+ """
2862
+ slug: Optional[str] = None
2863
+ """
2864
+ entity slug
2865
+ """
2866
+ systemName: Optional[str] = None
2867
+ schemaVersion: Optional[str] = "2022.8.16"
2868
+ """
2869
+ entity's schema version. Used to distinct between different schemas.
2870
+ """
2871
+ name: Optional[str] = None
2872
+ """
2873
+ entity name
2874
+ """
2875
+ isDefault: Optional[bool] = False
2876
+ """
2877
+ Identifies that entity is defaultable
2878
+ """
2879
+ metadata: Optional[Dict[str, Any]] = None
2880
+
2881
+
2882
+ class VacuumConfigurationSchema7(BaseModel):
2883
+ direction: AxisEnum = Field(..., title="Axis Enum")
2884
+ """
2885
+ Enum for axis types
2886
+ """
2887
+ size: Optional[confloat(ge=0.0)] = 10
2888
+ """
2889
+ Size of the vacuum slab in angstroms
2890
+ """
2891
+ crystal: CrystalSchema18 = Field(..., title="Crystal Schema")
2892
+ """
2893
+ A crystal structure, referencing the base material schema
2894
+ """
2895
+
2896
+
2897
+ class TerraceDefectConfigurationSchema(BaseModel):
2898
+ stack_components: List[Union[SlabConfigurationSchema, MergeSchema, VacuumConfigurationSchema7]] = Field(
2899
+ ..., max_length=3, min_length=3
2900
+ )
2901
+ cut_direction: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
2902
+ """
2903
+ Miller indices [h, k, l] defining crystallographic planes
2904
+ """
2905
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2906
+ """
2907
+ Enum for axis types
2908
+ """
2909
+ gaps: Optional[List[ObjectWithId]] = None
2910
+ """
2911
+ Gap distances between stack components as an array of objects with id and value
2912
+ """