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,4273 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: materials_category/defective_structures/one_dimensional/grain_boundary_linear/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 Value67(Enum):
269
+ X = "X"
270
+ Vac = "Vac"
271
+
272
+
273
+ class AtomicElementSchema(BaseModel):
274
+ value: Union[Value, Value67]
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 Name240(Enum):
423
+ density = "density"
424
+
425
+
426
+ class Units97(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[Units97] = None
433
+ value: float
434
+
435
+
436
+ class Units98(Enum):
437
+ angstrom = "angstrom"
438
+
439
+
440
+ class ScalarSchema(BaseModel):
441
+ units: Optional[Units98] = None
442
+ value: float
443
+
444
+
445
+ class Name241(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 Name242(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 Name243(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 Name244(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 Name245(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 Name246(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: Name246
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 Value68(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 Value69(Enum):
818
+ X = "X"
819
+ Vac = "Vac"
820
+
821
+
822
+ class AtomicElementSchema33(BaseModel):
823
+ value: Union[Value68, Value69]
824
+ """
825
+ All elements, including extra elements
826
+ """
827
+ id: int
828
+ """
829
+ integer id of this entry
830
+ """
831
+
832
+
833
+ class BasisSchema31(BaseModel):
834
+ elements: List[AtomicElementSchema33] = 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 LatticeVectorsSchema30(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 LatticeUnitsSchema30(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 LatticeSchema30(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[LatticeVectorsSchema30] = Field(None, title="lattice vectors schema")
891
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
892
+ units: Optional[LatticeUnitsSchema30] = Field(
893
+ default_factory=lambda: LatticeUnitsSchema30.model_validate({"length": "angstrom", "angle": "degree"}),
894
+ title="Lattice units schema",
895
+ )
896
+
897
+
898
+ class Name247(Enum):
899
+ volume = "volume"
900
+
901
+
902
+ class Units99(Enum):
903
+ angstrom_3 = "angstrom^3"
904
+
905
+
906
+ class VolumeSchema30(BaseModel):
907
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
908
+ units: Optional[Units99] = None
909
+ value: float
910
+
911
+
912
+ class Name248(Enum):
913
+ density = "density"
914
+
915
+
916
+ class Units100(Enum):
917
+ g_cm_3 = "g/cm^3"
918
+
919
+
920
+ class DensitySchema30(BaseModel):
921
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
922
+ units: Optional[Units100] = None
923
+ value: float
924
+
925
+
926
+ class Units101(Enum):
927
+ angstrom = "angstrom"
928
+
929
+
930
+ class ScalarSchema31(BaseModel):
931
+ units: Optional[Units101] = None
932
+ value: float
933
+
934
+
935
+ class Name249(Enum):
936
+ symmetry = "symmetry"
937
+
938
+
939
+ class SymmetrySchema30(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[ScalarSchema31] = 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 Name250(Enum):
956
+ elemental_ratio = "elemental_ratio"
957
+
958
+
959
+ class ElementalRatio30(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 Name251(Enum):
969
+ p_norm = "p-norm"
970
+
971
+
972
+ class PNorm30(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 Name252(Enum):
982
+ inchi = "inchi"
983
+
984
+
985
+ class InChIRepresentationSchema30(BaseModel):
986
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
987
+ value: str
988
+
989
+
990
+ class Name253(Enum):
991
+ inchi_key = "inchi_key"
992
+
993
+
994
+ class InChIKeyRepresentationSchema30(BaseModel):
995
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
996
+ value: str
997
+
998
+
999
+ class DerivedPropertiesSchema30(
1000
+ RootModel[
1001
+ Union[
1002
+ VolumeSchema30,
1003
+ DensitySchema30,
1004
+ SymmetrySchema30,
1005
+ ElementalRatio30,
1006
+ PNorm30,
1007
+ InChIRepresentationSchema30,
1008
+ InChIKeyRepresentationSchema30,
1009
+ ]
1010
+ ]
1011
+ ):
1012
+ root: Union[
1013
+ VolumeSchema30,
1014
+ DensitySchema30,
1015
+ SymmetrySchema30,
1016
+ ElementalRatio30,
1017
+ PNorm30,
1018
+ InChIRepresentationSchema30,
1019
+ InChIKeyRepresentationSchema30,
1020
+ ] = Field(..., discriminator="name")
1021
+
1022
+
1023
+ class Name254(Enum):
1024
+ default = "default"
1025
+ atomsTooClose = "atomsTooClose"
1026
+ atomsOverlap = "atomsOverlap"
1027
+
1028
+
1029
+ class MaterialConsistencyCheckSchema30(BaseModel):
1030
+ name: Name254
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 CrystalSchema30(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: BasisSchema31 = Field(..., title="basis schema")
1058
+ lattice: LatticeSchema30 = Field(..., title="lattice schema")
1059
+ derivedProperties: Optional[List[DerivedPropertiesSchema30]] = 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[MaterialConsistencyCheckSchema30]] = 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: CrystalSchema30 = 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 SupercellMatrix2DSchemaItem(RootModel[List[int]]):
1143
+ root: List[int]
1144
+
1145
+
1146
+ class ArrayOf3NumberElementsSchema(RootModel[List[float]]):
1147
+ root: List[float] = Field(..., title="array of 3 number elements schema")
1148
+
1149
+
1150
+ class TerminationSchema13(BaseModel):
1151
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
1152
+ ..., title="Chemical Elements"
1153
+ )
1154
+ """
1155
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
1156
+ """
1157
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
1158
+ """
1159
+ Space group symmetry designation for the termination
1160
+ """
1161
+
1162
+
1163
+ class Value70(Enum):
1164
+ H = "H"
1165
+ He = "He"
1166
+ Li = "Li"
1167
+ Be = "Be"
1168
+ B = "B"
1169
+ C = "C"
1170
+ N = "N"
1171
+ O = "O"
1172
+ F = "F"
1173
+ Ne = "Ne"
1174
+ Na = "Na"
1175
+ Mg = "Mg"
1176
+ Al = "Al"
1177
+ Si = "Si"
1178
+ P = "P"
1179
+ S = "S"
1180
+ Cl = "Cl"
1181
+ Ar = "Ar"
1182
+ K = "K"
1183
+ Ca = "Ca"
1184
+ Sc = "Sc"
1185
+ Ti = "Ti"
1186
+ V = "V"
1187
+ Cr = "Cr"
1188
+ Mn = "Mn"
1189
+ Fe = "Fe"
1190
+ Co = "Co"
1191
+ Ni = "Ni"
1192
+ Cu = "Cu"
1193
+ Zn = "Zn"
1194
+ Ga = "Ga"
1195
+ Ge = "Ge"
1196
+ As = "As"
1197
+ Se = "Se"
1198
+ Br = "Br"
1199
+ Kr = "Kr"
1200
+ Rb = "Rb"
1201
+ Sr = "Sr"
1202
+ Y = "Y"
1203
+ Zr = "Zr"
1204
+ Nb = "Nb"
1205
+ Mo = "Mo"
1206
+ Tc = "Tc"
1207
+ Ru = "Ru"
1208
+ Rh = "Rh"
1209
+ Pd = "Pd"
1210
+ Ag = "Ag"
1211
+ Cd = "Cd"
1212
+ In = "In"
1213
+ Sn = "Sn"
1214
+ Sb = "Sb"
1215
+ Te = "Te"
1216
+ I = "I"
1217
+ Xe = "Xe"
1218
+ Cs = "Cs"
1219
+ Ba = "Ba"
1220
+ La = "La"
1221
+ Ce = "Ce"
1222
+ Pr = "Pr"
1223
+ Nd = "Nd"
1224
+ Pm = "Pm"
1225
+ Sm = "Sm"
1226
+ Eu = "Eu"
1227
+ Gd = "Gd"
1228
+ Tb = "Tb"
1229
+ Dy = "Dy"
1230
+ Ho = "Ho"
1231
+ Er = "Er"
1232
+ Tm = "Tm"
1233
+ Yb = "Yb"
1234
+ Lu = "Lu"
1235
+ Hf = "Hf"
1236
+ Ta = "Ta"
1237
+ W = "W"
1238
+ Re = "Re"
1239
+ Os = "Os"
1240
+ Ir = "Ir"
1241
+ Pt = "Pt"
1242
+ Au = "Au"
1243
+ Hg = "Hg"
1244
+ Tl = "Tl"
1245
+ Pb = "Pb"
1246
+ Bi = "Bi"
1247
+ Po = "Po"
1248
+ At = "At"
1249
+ Rn = "Rn"
1250
+ Fr = "Fr"
1251
+ Ra = "Ra"
1252
+ Ac = "Ac"
1253
+ Th = "Th"
1254
+ Pa = "Pa"
1255
+ U = "U"
1256
+ Np = "Np"
1257
+ Pu = "Pu"
1258
+ Am = "Am"
1259
+ Cm = "Cm"
1260
+ Bk = "Bk"
1261
+ Cf = "Cf"
1262
+ Es = "Es"
1263
+ Fm = "Fm"
1264
+ Md = "Md"
1265
+ No = "No"
1266
+ Lr = "Lr"
1267
+ Rf = "Rf"
1268
+ Db = "Db"
1269
+ Sg = "Sg"
1270
+ Bh = "Bh"
1271
+ Hs = "Hs"
1272
+ Mt = "Mt"
1273
+ Ds = "Ds"
1274
+ Rg = "Rg"
1275
+ Cn = "Cn"
1276
+ Nh = "Nh"
1277
+ Fl = "Fl"
1278
+ Mc = "Mc"
1279
+ Lv = "Lv"
1280
+ Ts = "Ts"
1281
+ Og = "Og"
1282
+
1283
+
1284
+ class Value71(Enum):
1285
+ X = "X"
1286
+ Vac = "Vac"
1287
+
1288
+
1289
+ class AtomicElementSchema34(BaseModel):
1290
+ value: Union[Value70, Value71]
1291
+ """
1292
+ All elements, including extra elements
1293
+ """
1294
+ id: int
1295
+ """
1296
+ integer id of this entry
1297
+ """
1298
+
1299
+
1300
+ class BasisSchema32(BaseModel):
1301
+ elements: List[AtomicElementSchema34] = Field(..., title="atomic elements schema")
1302
+ """
1303
+ atomic elements schema
1304
+ """
1305
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1306
+ """
1307
+ atomic coordinates schema
1308
+ """
1309
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1310
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1311
+ """
1312
+ atomic labels schema
1313
+ """
1314
+
1315
+
1316
+ class LatticeVectorsSchema31(BaseModel):
1317
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1318
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1319
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1320
+ alat: Optional[float] = 1
1321
+ """
1322
+ lattice parameter for fractional coordinates
1323
+ """
1324
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1325
+
1326
+
1327
+ class LatticeUnitsSchema31(BaseModel):
1328
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1329
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1330
+
1331
+
1332
+ class LatticeSchema31(BaseModel):
1333
+ a: float
1334
+ """
1335
+ length of the first lattice vector
1336
+ """
1337
+ b: float
1338
+ """
1339
+ length of the second lattice vector
1340
+ """
1341
+ c: float
1342
+ """
1343
+ length of the third lattice vector
1344
+ """
1345
+ alpha: float
1346
+ """
1347
+ angle between first and second lattice vector
1348
+ """
1349
+ beta: float
1350
+ """
1351
+ angle between second and third lattice vector
1352
+ """
1353
+ gamma: float
1354
+ """
1355
+ angle between first and third lattice vector
1356
+ """
1357
+ vectors: Optional[LatticeVectorsSchema31] = Field(None, title="lattice vectors schema")
1358
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1359
+ units: Optional[LatticeUnitsSchema31] = Field(
1360
+ default_factory=lambda: LatticeUnitsSchema31.model_validate({"length": "angstrom", "angle": "degree"}),
1361
+ title="Lattice units schema",
1362
+ )
1363
+
1364
+
1365
+ class Name255(Enum):
1366
+ volume = "volume"
1367
+
1368
+
1369
+ class Units102(Enum):
1370
+ angstrom_3 = "angstrom^3"
1371
+
1372
+
1373
+ class VolumeSchema31(BaseModel):
1374
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1375
+ units: Optional[Units102] = None
1376
+ value: float
1377
+
1378
+
1379
+ class Name256(Enum):
1380
+ density = "density"
1381
+
1382
+
1383
+ class Units103(Enum):
1384
+ g_cm_3 = "g/cm^3"
1385
+
1386
+
1387
+ class DensitySchema31(BaseModel):
1388
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1389
+ units: Optional[Units103] = None
1390
+ value: float
1391
+
1392
+
1393
+ class Units104(Enum):
1394
+ angstrom = "angstrom"
1395
+
1396
+
1397
+ class ScalarSchema32(BaseModel):
1398
+ units: Optional[Units104] = None
1399
+ value: float
1400
+
1401
+
1402
+ class Name257(Enum):
1403
+ symmetry = "symmetry"
1404
+
1405
+
1406
+ class SymmetrySchema31(BaseModel):
1407
+ pointGroupSymbol: Optional[str] = None
1408
+ """
1409
+ point group symbol in Schoenflies notation
1410
+ """
1411
+ spaceGroupSymbol: Optional[str] = None
1412
+ """
1413
+ space group symbol in Hermann–Mauguin notation
1414
+ """
1415
+ tolerance: Optional[ScalarSchema32] = Field(None, title="scalar schema")
1416
+ """
1417
+ tolerance used for symmetry calculation
1418
+ """
1419
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1420
+
1421
+
1422
+ class Name258(Enum):
1423
+ elemental_ratio = "elemental_ratio"
1424
+
1425
+
1426
+ class ElementalRatio31(BaseModel):
1427
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1428
+ value: confloat(ge=0.0, le=1.0)
1429
+ element: Optional[str] = None
1430
+ """
1431
+ the element this ratio is for
1432
+ """
1433
+
1434
+
1435
+ class Name259(Enum):
1436
+ p_norm = "p-norm"
1437
+
1438
+
1439
+ class PNorm31(BaseModel):
1440
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1441
+ degree: Optional[int] = None
1442
+ """
1443
+ degree of the dimensionality of the norm
1444
+ """
1445
+ value: float
1446
+
1447
+
1448
+ class Name260(Enum):
1449
+ inchi = "inchi"
1450
+
1451
+
1452
+ class InChIRepresentationSchema31(BaseModel):
1453
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1454
+ value: str
1455
+
1456
+
1457
+ class Name261(Enum):
1458
+ inchi_key = "inchi_key"
1459
+
1460
+
1461
+ class InChIKeyRepresentationSchema31(BaseModel):
1462
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1463
+ value: str
1464
+
1465
+
1466
+ class DerivedPropertiesSchema31(
1467
+ RootModel[
1468
+ Union[
1469
+ VolumeSchema31,
1470
+ DensitySchema31,
1471
+ SymmetrySchema31,
1472
+ ElementalRatio31,
1473
+ PNorm31,
1474
+ InChIRepresentationSchema31,
1475
+ InChIKeyRepresentationSchema31,
1476
+ ]
1477
+ ]
1478
+ ):
1479
+ root: Union[
1480
+ VolumeSchema31,
1481
+ DensitySchema31,
1482
+ SymmetrySchema31,
1483
+ ElementalRatio31,
1484
+ PNorm31,
1485
+ InChIRepresentationSchema31,
1486
+ InChIKeyRepresentationSchema31,
1487
+ ] = Field(..., discriminator="name")
1488
+
1489
+
1490
+ class Name262(Enum):
1491
+ default = "default"
1492
+ atomsTooClose = "atomsTooClose"
1493
+ atomsOverlap = "atomsOverlap"
1494
+
1495
+
1496
+ class MaterialConsistencyCheckSchema31(BaseModel):
1497
+ name: Name262
1498
+ """
1499
+ Name of the consistency check that is performed, which is listed in an enum.
1500
+ """
1501
+ key: str
1502
+ """
1503
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1504
+ """
1505
+ severity: Severity
1506
+ """
1507
+ Severity level of the problem, which is used in UI to differentiate.
1508
+ """
1509
+ message: str
1510
+ """
1511
+ Message generated by the consistency check describing the problem.
1512
+ """
1513
+
1514
+
1515
+ class CrystalSchema31(BaseModel):
1516
+ formula: Optional[str] = None
1517
+ """
1518
+ reduced chemical formula
1519
+ """
1520
+ unitCellFormula: Optional[str] = None
1521
+ """
1522
+ chemical formula based on the number of atoms of each element in the supercell
1523
+ """
1524
+ basis: BasisSchema32 = Field(..., title="basis schema")
1525
+ lattice: LatticeSchema31 = Field(..., title="lattice schema")
1526
+ derivedProperties: Optional[List[DerivedPropertiesSchema31]] = Field(None, title="derived properties schema")
1527
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1528
+ """
1529
+ information about a database source
1530
+ """
1531
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1532
+ """
1533
+ file source with the information inside
1534
+ """
1535
+ scaledHash: Optional[str] = None
1536
+ """
1537
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1538
+ """
1539
+ icsdId: Optional[int] = None
1540
+ """
1541
+ Corresponding ICSD id of the material
1542
+ """
1543
+ isNonPeriodic: Optional[bool] = None
1544
+ """
1545
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1546
+ """
1547
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema31]] = None
1548
+ field_id: Optional[str] = Field(None, alias="_id")
1549
+ """
1550
+ entity identity
1551
+ """
1552
+ slug: Optional[str] = None
1553
+ """
1554
+ entity slug
1555
+ """
1556
+ systemName: Optional[str] = None
1557
+ schemaVersion: Optional[str] = "2022.8.16"
1558
+ """
1559
+ entity's schema version. Used to distinct between different schemas.
1560
+ """
1561
+ name: Optional[str] = None
1562
+ """
1563
+ entity name
1564
+ """
1565
+ isDefault: Optional[bool] = False
1566
+ """
1567
+ Identifies that entity is defaultable
1568
+ """
1569
+ metadata: Optional[Dict[str, Any]] = None
1570
+
1571
+
1572
+ class AtomicLayersUniqueRepeatedSchema11(BaseModel):
1573
+ termination_top: TerminationSchema13 = Field(..., title="Termination Schema")
1574
+ """
1575
+ Defines a specific termination of a slab
1576
+ """
1577
+ number_of_repetitions: conint(ge=1)
1578
+ """
1579
+ Number of repetitions of the unique atomic layers
1580
+ """
1581
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
1582
+ """
1583
+ Miller indices [h, k, l] defining crystallographic planes
1584
+ """
1585
+ crystal: CrystalSchema31 = Field(..., title="Crystal Schema")
1586
+ """
1587
+ A crystal structure, referencing the base material schema
1588
+ """
1589
+ use_conventional_cell: Optional[bool] = True
1590
+ """
1591
+ Use the conventional cell for the crystal structure
1592
+ """
1593
+
1594
+
1595
+ class Value72(Enum):
1596
+ H = "H"
1597
+ He = "He"
1598
+ Li = "Li"
1599
+ Be = "Be"
1600
+ B = "B"
1601
+ C = "C"
1602
+ N = "N"
1603
+ O = "O"
1604
+ F = "F"
1605
+ Ne = "Ne"
1606
+ Na = "Na"
1607
+ Mg = "Mg"
1608
+ Al = "Al"
1609
+ Si = "Si"
1610
+ P = "P"
1611
+ S = "S"
1612
+ Cl = "Cl"
1613
+ Ar = "Ar"
1614
+ K = "K"
1615
+ Ca = "Ca"
1616
+ Sc = "Sc"
1617
+ Ti = "Ti"
1618
+ V = "V"
1619
+ Cr = "Cr"
1620
+ Mn = "Mn"
1621
+ Fe = "Fe"
1622
+ Co = "Co"
1623
+ Ni = "Ni"
1624
+ Cu = "Cu"
1625
+ Zn = "Zn"
1626
+ Ga = "Ga"
1627
+ Ge = "Ge"
1628
+ As = "As"
1629
+ Se = "Se"
1630
+ Br = "Br"
1631
+ Kr = "Kr"
1632
+ Rb = "Rb"
1633
+ Sr = "Sr"
1634
+ Y = "Y"
1635
+ Zr = "Zr"
1636
+ Nb = "Nb"
1637
+ Mo = "Mo"
1638
+ Tc = "Tc"
1639
+ Ru = "Ru"
1640
+ Rh = "Rh"
1641
+ Pd = "Pd"
1642
+ Ag = "Ag"
1643
+ Cd = "Cd"
1644
+ In = "In"
1645
+ Sn = "Sn"
1646
+ Sb = "Sb"
1647
+ Te = "Te"
1648
+ I = "I"
1649
+ Xe = "Xe"
1650
+ Cs = "Cs"
1651
+ Ba = "Ba"
1652
+ La = "La"
1653
+ Ce = "Ce"
1654
+ Pr = "Pr"
1655
+ Nd = "Nd"
1656
+ Pm = "Pm"
1657
+ Sm = "Sm"
1658
+ Eu = "Eu"
1659
+ Gd = "Gd"
1660
+ Tb = "Tb"
1661
+ Dy = "Dy"
1662
+ Ho = "Ho"
1663
+ Er = "Er"
1664
+ Tm = "Tm"
1665
+ Yb = "Yb"
1666
+ Lu = "Lu"
1667
+ Hf = "Hf"
1668
+ Ta = "Ta"
1669
+ W = "W"
1670
+ Re = "Re"
1671
+ Os = "Os"
1672
+ Ir = "Ir"
1673
+ Pt = "Pt"
1674
+ Au = "Au"
1675
+ Hg = "Hg"
1676
+ Tl = "Tl"
1677
+ Pb = "Pb"
1678
+ Bi = "Bi"
1679
+ Po = "Po"
1680
+ At = "At"
1681
+ Rn = "Rn"
1682
+ Fr = "Fr"
1683
+ Ra = "Ra"
1684
+ Ac = "Ac"
1685
+ Th = "Th"
1686
+ Pa = "Pa"
1687
+ U = "U"
1688
+ Np = "Np"
1689
+ Pu = "Pu"
1690
+ Am = "Am"
1691
+ Cm = "Cm"
1692
+ Bk = "Bk"
1693
+ Cf = "Cf"
1694
+ Es = "Es"
1695
+ Fm = "Fm"
1696
+ Md = "Md"
1697
+ No = "No"
1698
+ Lr = "Lr"
1699
+ Rf = "Rf"
1700
+ Db = "Db"
1701
+ Sg = "Sg"
1702
+ Bh = "Bh"
1703
+ Hs = "Hs"
1704
+ Mt = "Mt"
1705
+ Ds = "Ds"
1706
+ Rg = "Rg"
1707
+ Cn = "Cn"
1708
+ Nh = "Nh"
1709
+ Fl = "Fl"
1710
+ Mc = "Mc"
1711
+ Lv = "Lv"
1712
+ Ts = "Ts"
1713
+ Og = "Og"
1714
+
1715
+
1716
+ class Value73(Enum):
1717
+ X = "X"
1718
+ Vac = "Vac"
1719
+
1720
+
1721
+ class AtomicElementSchema35(BaseModel):
1722
+ value: Union[Value72, Value73]
1723
+ """
1724
+ All elements, including extra elements
1725
+ """
1726
+ id: int
1727
+ """
1728
+ integer id of this entry
1729
+ """
1730
+
1731
+
1732
+ class BasisSchema33(BaseModel):
1733
+ elements: List[AtomicElementSchema35] = Field(..., title="atomic elements schema")
1734
+ """
1735
+ atomic elements schema
1736
+ """
1737
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
1738
+ """
1739
+ atomic coordinates schema
1740
+ """
1741
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
1742
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
1743
+ """
1744
+ atomic labels schema
1745
+ """
1746
+
1747
+
1748
+ class LatticeVectorsSchema32(BaseModel):
1749
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1750
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1751
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
1752
+ alat: Optional[float] = 1
1753
+ """
1754
+ lattice parameter for fractional coordinates
1755
+ """
1756
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
1757
+
1758
+
1759
+ class LatticeUnitsSchema32(BaseModel):
1760
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
1761
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
1762
+
1763
+
1764
+ class LatticeSchema32(BaseModel):
1765
+ a: float
1766
+ """
1767
+ length of the first lattice vector
1768
+ """
1769
+ b: float
1770
+ """
1771
+ length of the second lattice vector
1772
+ """
1773
+ c: float
1774
+ """
1775
+ length of the third lattice vector
1776
+ """
1777
+ alpha: float
1778
+ """
1779
+ angle between first and second lattice vector
1780
+ """
1781
+ beta: float
1782
+ """
1783
+ angle between second and third lattice vector
1784
+ """
1785
+ gamma: float
1786
+ """
1787
+ angle between first and third lattice vector
1788
+ """
1789
+ vectors: Optional[LatticeVectorsSchema32] = Field(None, title="lattice vectors schema")
1790
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
1791
+ units: Optional[LatticeUnitsSchema32] = Field(
1792
+ default_factory=lambda: LatticeUnitsSchema32.model_validate({"length": "angstrom", "angle": "degree"}),
1793
+ title="Lattice units schema",
1794
+ )
1795
+
1796
+
1797
+ class Name263(Enum):
1798
+ volume = "volume"
1799
+
1800
+
1801
+ class Units105(Enum):
1802
+ angstrom_3 = "angstrom^3"
1803
+
1804
+
1805
+ class VolumeSchema32(BaseModel):
1806
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
1807
+ units: Optional[Units105] = None
1808
+ value: float
1809
+
1810
+
1811
+ class Name264(Enum):
1812
+ density = "density"
1813
+
1814
+
1815
+ class Units106(Enum):
1816
+ g_cm_3 = "g/cm^3"
1817
+
1818
+
1819
+ class DensitySchema32(BaseModel):
1820
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
1821
+ units: Optional[Units106] = None
1822
+ value: float
1823
+
1824
+
1825
+ class Units107(Enum):
1826
+ angstrom = "angstrom"
1827
+
1828
+
1829
+ class ScalarSchema33(BaseModel):
1830
+ units: Optional[Units107] = None
1831
+ value: float
1832
+
1833
+
1834
+ class Name265(Enum):
1835
+ symmetry = "symmetry"
1836
+
1837
+
1838
+ class SymmetrySchema32(BaseModel):
1839
+ pointGroupSymbol: Optional[str] = None
1840
+ """
1841
+ point group symbol in Schoenflies notation
1842
+ """
1843
+ spaceGroupSymbol: Optional[str] = None
1844
+ """
1845
+ space group symbol in Hermann–Mauguin notation
1846
+ """
1847
+ tolerance: Optional[ScalarSchema33] = Field(None, title="scalar schema")
1848
+ """
1849
+ tolerance used for symmetry calculation
1850
+ """
1851
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
1852
+
1853
+
1854
+ class Name266(Enum):
1855
+ elemental_ratio = "elemental_ratio"
1856
+
1857
+
1858
+ class ElementalRatio32(BaseModel):
1859
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
1860
+ value: confloat(ge=0.0, le=1.0)
1861
+ element: Optional[str] = None
1862
+ """
1863
+ the element this ratio is for
1864
+ """
1865
+
1866
+
1867
+ class Name267(Enum):
1868
+ p_norm = "p-norm"
1869
+
1870
+
1871
+ class PNorm32(BaseModel):
1872
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
1873
+ degree: Optional[int] = None
1874
+ """
1875
+ degree of the dimensionality of the norm
1876
+ """
1877
+ value: float
1878
+
1879
+
1880
+ class Name268(Enum):
1881
+ inchi = "inchi"
1882
+
1883
+
1884
+ class InChIRepresentationSchema32(BaseModel):
1885
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
1886
+ value: str
1887
+
1888
+
1889
+ class Name269(Enum):
1890
+ inchi_key = "inchi_key"
1891
+
1892
+
1893
+ class InChIKeyRepresentationSchema32(BaseModel):
1894
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
1895
+ value: str
1896
+
1897
+
1898
+ class DerivedPropertiesSchema32(
1899
+ RootModel[
1900
+ Union[
1901
+ VolumeSchema32,
1902
+ DensitySchema32,
1903
+ SymmetrySchema32,
1904
+ ElementalRatio32,
1905
+ PNorm32,
1906
+ InChIRepresentationSchema32,
1907
+ InChIKeyRepresentationSchema32,
1908
+ ]
1909
+ ]
1910
+ ):
1911
+ root: Union[
1912
+ VolumeSchema32,
1913
+ DensitySchema32,
1914
+ SymmetrySchema32,
1915
+ ElementalRatio32,
1916
+ PNorm32,
1917
+ InChIRepresentationSchema32,
1918
+ InChIKeyRepresentationSchema32,
1919
+ ] = Field(..., discriminator="name")
1920
+
1921
+
1922
+ class Name270(Enum):
1923
+ default = "default"
1924
+ atomsTooClose = "atomsTooClose"
1925
+ atomsOverlap = "atomsOverlap"
1926
+
1927
+
1928
+ class MaterialConsistencyCheckSchema32(BaseModel):
1929
+ name: Name270
1930
+ """
1931
+ Name of the consistency check that is performed, which is listed in an enum.
1932
+ """
1933
+ key: str
1934
+ """
1935
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
1936
+ """
1937
+ severity: Severity
1938
+ """
1939
+ Severity level of the problem, which is used in UI to differentiate.
1940
+ """
1941
+ message: str
1942
+ """
1943
+ Message generated by the consistency check describing the problem.
1944
+ """
1945
+
1946
+
1947
+ class CrystalSchema32(BaseModel):
1948
+ formula: Optional[str] = None
1949
+ """
1950
+ reduced chemical formula
1951
+ """
1952
+ unitCellFormula: Optional[str] = None
1953
+ """
1954
+ chemical formula based on the number of atoms of each element in the supercell
1955
+ """
1956
+ basis: BasisSchema33 = Field(..., title="basis schema")
1957
+ lattice: LatticeSchema32 = Field(..., title="lattice schema")
1958
+ derivedProperties: Optional[List[DerivedPropertiesSchema32]] = Field(None, title="derived properties schema")
1959
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
1960
+ """
1961
+ information about a database source
1962
+ """
1963
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1964
+ """
1965
+ file source with the information inside
1966
+ """
1967
+ scaledHash: Optional[str] = None
1968
+ """
1969
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1970
+ """
1971
+ icsdId: Optional[int] = None
1972
+ """
1973
+ Corresponding ICSD id of the material
1974
+ """
1975
+ isNonPeriodic: Optional[bool] = None
1976
+ """
1977
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
1978
+ """
1979
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema32]] = None
1980
+ field_id: Optional[str] = Field(None, alias="_id")
1981
+ """
1982
+ entity identity
1983
+ """
1984
+ slug: Optional[str] = None
1985
+ """
1986
+ entity slug
1987
+ """
1988
+ systemName: Optional[str] = None
1989
+ schemaVersion: Optional[str] = "2022.8.16"
1990
+ """
1991
+ entity's schema version. Used to distinct between different schemas.
1992
+ """
1993
+ name: Optional[str] = None
1994
+ """
1995
+ entity name
1996
+ """
1997
+ isDefault: Optional[bool] = False
1998
+ """
1999
+ Identifies that entity is defaultable
2000
+ """
2001
+ metadata: Optional[Dict[str, Any]] = None
2002
+
2003
+
2004
+ class VacuumConfigurationSchema14(BaseModel):
2005
+ direction: AxisEnum = Field(..., title="Axis Enum")
2006
+ """
2007
+ Enum for axis types
2008
+ """
2009
+ size: Optional[confloat(ge=0.0)] = 10
2010
+ """
2011
+ Size of the vacuum slab in angstroms
2012
+ """
2013
+ crystal: CrystalSchema32 = Field(..., title="Crystal Schema")
2014
+ """
2015
+ A crystal structure, referencing the base material schema
2016
+ """
2017
+
2018
+
2019
+ class SlabStrainedSupercellConfigurationSchema(BaseModel):
2020
+ xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field(
2021
+ default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]],
2022
+ max_length=2,
2023
+ min_length=2,
2024
+ title="Supercell Matrix 2D Schema",
2025
+ )
2026
+ """
2027
+ Supercell matrix for xy plane transformations
2028
+ """
2029
+ strain_matrix: List[ArrayOf3NumberElementsSchema] = Field(
2030
+ ..., max_length=3, min_length=3, title="matrix 3x3 schema"
2031
+ )
2032
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema11, VacuumConfigurationSchema14]] = Field(
2033
+ ..., max_length=2, min_length=2
2034
+ )
2035
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2036
+ """
2037
+ Enum for axis types
2038
+ """
2039
+ gaps: Optional[List[ObjectWithId]] = None
2040
+ """
2041
+ Gap distances between stack components as an array of objects with id and value
2042
+ """
2043
+
2044
+
2045
+ class TerminationSchema14(BaseModel):
2046
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
2047
+ ..., title="Chemical Elements"
2048
+ )
2049
+ """
2050
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
2051
+ """
2052
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
2053
+ """
2054
+ Space group symmetry designation for the termination
2055
+ """
2056
+
2057
+
2058
+ class Value74(Enum):
2059
+ H = "H"
2060
+ He = "He"
2061
+ Li = "Li"
2062
+ Be = "Be"
2063
+ B = "B"
2064
+ C = "C"
2065
+ N = "N"
2066
+ O = "O"
2067
+ F = "F"
2068
+ Ne = "Ne"
2069
+ Na = "Na"
2070
+ Mg = "Mg"
2071
+ Al = "Al"
2072
+ Si = "Si"
2073
+ P = "P"
2074
+ S = "S"
2075
+ Cl = "Cl"
2076
+ Ar = "Ar"
2077
+ K = "K"
2078
+ Ca = "Ca"
2079
+ Sc = "Sc"
2080
+ Ti = "Ti"
2081
+ V = "V"
2082
+ Cr = "Cr"
2083
+ Mn = "Mn"
2084
+ Fe = "Fe"
2085
+ Co = "Co"
2086
+ Ni = "Ni"
2087
+ Cu = "Cu"
2088
+ Zn = "Zn"
2089
+ Ga = "Ga"
2090
+ Ge = "Ge"
2091
+ As = "As"
2092
+ Se = "Se"
2093
+ Br = "Br"
2094
+ Kr = "Kr"
2095
+ Rb = "Rb"
2096
+ Sr = "Sr"
2097
+ Y = "Y"
2098
+ Zr = "Zr"
2099
+ Nb = "Nb"
2100
+ Mo = "Mo"
2101
+ Tc = "Tc"
2102
+ Ru = "Ru"
2103
+ Rh = "Rh"
2104
+ Pd = "Pd"
2105
+ Ag = "Ag"
2106
+ Cd = "Cd"
2107
+ In = "In"
2108
+ Sn = "Sn"
2109
+ Sb = "Sb"
2110
+ Te = "Te"
2111
+ I = "I"
2112
+ Xe = "Xe"
2113
+ Cs = "Cs"
2114
+ Ba = "Ba"
2115
+ La = "La"
2116
+ Ce = "Ce"
2117
+ Pr = "Pr"
2118
+ Nd = "Nd"
2119
+ Pm = "Pm"
2120
+ Sm = "Sm"
2121
+ Eu = "Eu"
2122
+ Gd = "Gd"
2123
+ Tb = "Tb"
2124
+ Dy = "Dy"
2125
+ Ho = "Ho"
2126
+ Er = "Er"
2127
+ Tm = "Tm"
2128
+ Yb = "Yb"
2129
+ Lu = "Lu"
2130
+ Hf = "Hf"
2131
+ Ta = "Ta"
2132
+ W = "W"
2133
+ Re = "Re"
2134
+ Os = "Os"
2135
+ Ir = "Ir"
2136
+ Pt = "Pt"
2137
+ Au = "Au"
2138
+ Hg = "Hg"
2139
+ Tl = "Tl"
2140
+ Pb = "Pb"
2141
+ Bi = "Bi"
2142
+ Po = "Po"
2143
+ At = "At"
2144
+ Rn = "Rn"
2145
+ Fr = "Fr"
2146
+ Ra = "Ra"
2147
+ Ac = "Ac"
2148
+ Th = "Th"
2149
+ Pa = "Pa"
2150
+ U = "U"
2151
+ Np = "Np"
2152
+ Pu = "Pu"
2153
+ Am = "Am"
2154
+ Cm = "Cm"
2155
+ Bk = "Bk"
2156
+ Cf = "Cf"
2157
+ Es = "Es"
2158
+ Fm = "Fm"
2159
+ Md = "Md"
2160
+ No = "No"
2161
+ Lr = "Lr"
2162
+ Rf = "Rf"
2163
+ Db = "Db"
2164
+ Sg = "Sg"
2165
+ Bh = "Bh"
2166
+ Hs = "Hs"
2167
+ Mt = "Mt"
2168
+ Ds = "Ds"
2169
+ Rg = "Rg"
2170
+ Cn = "Cn"
2171
+ Nh = "Nh"
2172
+ Fl = "Fl"
2173
+ Mc = "Mc"
2174
+ Lv = "Lv"
2175
+ Ts = "Ts"
2176
+ Og = "Og"
2177
+
2178
+
2179
+ class Value75(Enum):
2180
+ X = "X"
2181
+ Vac = "Vac"
2182
+
2183
+
2184
+ class AtomicElementSchema36(BaseModel):
2185
+ value: Union[Value74, Value75]
2186
+ """
2187
+ All elements, including extra elements
2188
+ """
2189
+ id: int
2190
+ """
2191
+ integer id of this entry
2192
+ """
2193
+
2194
+
2195
+ class BasisSchema34(BaseModel):
2196
+ elements: List[AtomicElementSchema36] = Field(..., title="atomic elements schema")
2197
+ """
2198
+ atomic elements schema
2199
+ """
2200
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
2201
+ """
2202
+ atomic coordinates schema
2203
+ """
2204
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
2205
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
2206
+ """
2207
+ atomic labels schema
2208
+ """
2209
+
2210
+
2211
+ class LatticeVectorsSchema33(BaseModel):
2212
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2213
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2214
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2215
+ alat: Optional[float] = 1
2216
+ """
2217
+ lattice parameter for fractional coordinates
2218
+ """
2219
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
2220
+
2221
+
2222
+ class LatticeUnitsSchema33(BaseModel):
2223
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
2224
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
2225
+
2226
+
2227
+ class LatticeSchema33(BaseModel):
2228
+ a: float
2229
+ """
2230
+ length of the first lattice vector
2231
+ """
2232
+ b: float
2233
+ """
2234
+ length of the second lattice vector
2235
+ """
2236
+ c: float
2237
+ """
2238
+ length of the third lattice vector
2239
+ """
2240
+ alpha: float
2241
+ """
2242
+ angle between first and second lattice vector
2243
+ """
2244
+ beta: float
2245
+ """
2246
+ angle between second and third lattice vector
2247
+ """
2248
+ gamma: float
2249
+ """
2250
+ angle between first and third lattice vector
2251
+ """
2252
+ vectors: Optional[LatticeVectorsSchema33] = Field(None, title="lattice vectors schema")
2253
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2254
+ units: Optional[LatticeUnitsSchema33] = Field(
2255
+ default_factory=lambda: LatticeUnitsSchema33.model_validate({"length": "angstrom", "angle": "degree"}),
2256
+ title="Lattice units schema",
2257
+ )
2258
+
2259
+
2260
+ class Name271(Enum):
2261
+ volume = "volume"
2262
+
2263
+
2264
+ class Units108(Enum):
2265
+ angstrom_3 = "angstrom^3"
2266
+
2267
+
2268
+ class VolumeSchema33(BaseModel):
2269
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2270
+ units: Optional[Units108] = None
2271
+ value: float
2272
+
2273
+
2274
+ class Name272(Enum):
2275
+ density = "density"
2276
+
2277
+
2278
+ class Units109(Enum):
2279
+ g_cm_3 = "g/cm^3"
2280
+
2281
+
2282
+ class DensitySchema33(BaseModel):
2283
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2284
+ units: Optional[Units109] = None
2285
+ value: float
2286
+
2287
+
2288
+ class Units110(Enum):
2289
+ angstrom = "angstrom"
2290
+
2291
+
2292
+ class ScalarSchema34(BaseModel):
2293
+ units: Optional[Units110] = None
2294
+ value: float
2295
+
2296
+
2297
+ class Name273(Enum):
2298
+ symmetry = "symmetry"
2299
+
2300
+
2301
+ class SymmetrySchema33(BaseModel):
2302
+ pointGroupSymbol: Optional[str] = None
2303
+ """
2304
+ point group symbol in Schoenflies notation
2305
+ """
2306
+ spaceGroupSymbol: Optional[str] = None
2307
+ """
2308
+ space group symbol in Hermann–Mauguin notation
2309
+ """
2310
+ tolerance: Optional[ScalarSchema34] = Field(None, title="scalar schema")
2311
+ """
2312
+ tolerance used for symmetry calculation
2313
+ """
2314
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
2315
+
2316
+
2317
+ class Name274(Enum):
2318
+ elemental_ratio = "elemental_ratio"
2319
+
2320
+
2321
+ class ElementalRatio33(BaseModel):
2322
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
2323
+ value: confloat(ge=0.0, le=1.0)
2324
+ element: Optional[str] = None
2325
+ """
2326
+ the element this ratio is for
2327
+ """
2328
+
2329
+
2330
+ class Name275(Enum):
2331
+ p_norm = "p-norm"
2332
+
2333
+
2334
+ class PNorm33(BaseModel):
2335
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
2336
+ degree: Optional[int] = None
2337
+ """
2338
+ degree of the dimensionality of the norm
2339
+ """
2340
+ value: float
2341
+
2342
+
2343
+ class Name276(Enum):
2344
+ inchi = "inchi"
2345
+
2346
+
2347
+ class InChIRepresentationSchema33(BaseModel):
2348
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2349
+ value: str
2350
+
2351
+
2352
+ class Name277(Enum):
2353
+ inchi_key = "inchi_key"
2354
+
2355
+
2356
+ class InChIKeyRepresentationSchema33(BaseModel):
2357
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2358
+ value: str
2359
+
2360
+
2361
+ class DerivedPropertiesSchema33(
2362
+ RootModel[
2363
+ Union[
2364
+ VolumeSchema33,
2365
+ DensitySchema33,
2366
+ SymmetrySchema33,
2367
+ ElementalRatio33,
2368
+ PNorm33,
2369
+ InChIRepresentationSchema33,
2370
+ InChIKeyRepresentationSchema33,
2371
+ ]
2372
+ ]
2373
+ ):
2374
+ root: Union[
2375
+ VolumeSchema33,
2376
+ DensitySchema33,
2377
+ SymmetrySchema33,
2378
+ ElementalRatio33,
2379
+ PNorm33,
2380
+ InChIRepresentationSchema33,
2381
+ InChIKeyRepresentationSchema33,
2382
+ ] = Field(..., discriminator="name")
2383
+
2384
+
2385
+ class Name278(Enum):
2386
+ default = "default"
2387
+ atomsTooClose = "atomsTooClose"
2388
+ atomsOverlap = "atomsOverlap"
2389
+
2390
+
2391
+ class MaterialConsistencyCheckSchema33(BaseModel):
2392
+ name: Name278
2393
+ """
2394
+ Name of the consistency check that is performed, which is listed in an enum.
2395
+ """
2396
+ key: str
2397
+ """
2398
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
2399
+ """
2400
+ severity: Severity
2401
+ """
2402
+ Severity level of the problem, which is used in UI to differentiate.
2403
+ """
2404
+ message: str
2405
+ """
2406
+ Message generated by the consistency check describing the problem.
2407
+ """
2408
+
2409
+
2410
+ class CrystalSchema33(BaseModel):
2411
+ formula: Optional[str] = None
2412
+ """
2413
+ reduced chemical formula
2414
+ """
2415
+ unitCellFormula: Optional[str] = None
2416
+ """
2417
+ chemical formula based on the number of atoms of each element in the supercell
2418
+ """
2419
+ basis: BasisSchema34 = Field(..., title="basis schema")
2420
+ lattice: LatticeSchema33 = Field(..., title="lattice schema")
2421
+ derivedProperties: Optional[List[DerivedPropertiesSchema33]] = Field(None, title="derived properties schema")
2422
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
2423
+ """
2424
+ information about a database source
2425
+ """
2426
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
2427
+ """
2428
+ file source with the information inside
2429
+ """
2430
+ scaledHash: Optional[str] = None
2431
+ """
2432
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
2433
+ """
2434
+ icsdId: Optional[int] = None
2435
+ """
2436
+ Corresponding ICSD id of the material
2437
+ """
2438
+ isNonPeriodic: Optional[bool] = None
2439
+ """
2440
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
2441
+ """
2442
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema33]] = None
2443
+ field_id: Optional[str] = Field(None, alias="_id")
2444
+ """
2445
+ entity identity
2446
+ """
2447
+ slug: Optional[str] = None
2448
+ """
2449
+ entity slug
2450
+ """
2451
+ systemName: Optional[str] = None
2452
+ schemaVersion: Optional[str] = "2022.8.16"
2453
+ """
2454
+ entity's schema version. Used to distinct between different schemas.
2455
+ """
2456
+ name: Optional[str] = None
2457
+ """
2458
+ entity name
2459
+ """
2460
+ isDefault: Optional[bool] = False
2461
+ """
2462
+ Identifies that entity is defaultable
2463
+ """
2464
+ metadata: Optional[Dict[str, Any]] = None
2465
+
2466
+
2467
+ class AtomicLayersUniqueRepeatedSchema12(BaseModel):
2468
+ termination_top: TerminationSchema14 = Field(..., title="Termination Schema")
2469
+ """
2470
+ Defines a specific termination of a slab
2471
+ """
2472
+ number_of_repetitions: conint(ge=1)
2473
+ """
2474
+ Number of repetitions of the unique atomic layers
2475
+ """
2476
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
2477
+ """
2478
+ Miller indices [h, k, l] defining crystallographic planes
2479
+ """
2480
+ crystal: CrystalSchema33 = Field(..., title="Crystal Schema")
2481
+ """
2482
+ A crystal structure, referencing the base material schema
2483
+ """
2484
+ use_conventional_cell: Optional[bool] = True
2485
+ """
2486
+ Use the conventional cell for the crystal structure
2487
+ """
2488
+
2489
+
2490
+ class Value76(Enum):
2491
+ H = "H"
2492
+ He = "He"
2493
+ Li = "Li"
2494
+ Be = "Be"
2495
+ B = "B"
2496
+ C = "C"
2497
+ N = "N"
2498
+ O = "O"
2499
+ F = "F"
2500
+ Ne = "Ne"
2501
+ Na = "Na"
2502
+ Mg = "Mg"
2503
+ Al = "Al"
2504
+ Si = "Si"
2505
+ P = "P"
2506
+ S = "S"
2507
+ Cl = "Cl"
2508
+ Ar = "Ar"
2509
+ K = "K"
2510
+ Ca = "Ca"
2511
+ Sc = "Sc"
2512
+ Ti = "Ti"
2513
+ V = "V"
2514
+ Cr = "Cr"
2515
+ Mn = "Mn"
2516
+ Fe = "Fe"
2517
+ Co = "Co"
2518
+ Ni = "Ni"
2519
+ Cu = "Cu"
2520
+ Zn = "Zn"
2521
+ Ga = "Ga"
2522
+ Ge = "Ge"
2523
+ As = "As"
2524
+ Se = "Se"
2525
+ Br = "Br"
2526
+ Kr = "Kr"
2527
+ Rb = "Rb"
2528
+ Sr = "Sr"
2529
+ Y = "Y"
2530
+ Zr = "Zr"
2531
+ Nb = "Nb"
2532
+ Mo = "Mo"
2533
+ Tc = "Tc"
2534
+ Ru = "Ru"
2535
+ Rh = "Rh"
2536
+ Pd = "Pd"
2537
+ Ag = "Ag"
2538
+ Cd = "Cd"
2539
+ In = "In"
2540
+ Sn = "Sn"
2541
+ Sb = "Sb"
2542
+ Te = "Te"
2543
+ I = "I"
2544
+ Xe = "Xe"
2545
+ Cs = "Cs"
2546
+ Ba = "Ba"
2547
+ La = "La"
2548
+ Ce = "Ce"
2549
+ Pr = "Pr"
2550
+ Nd = "Nd"
2551
+ Pm = "Pm"
2552
+ Sm = "Sm"
2553
+ Eu = "Eu"
2554
+ Gd = "Gd"
2555
+ Tb = "Tb"
2556
+ Dy = "Dy"
2557
+ Ho = "Ho"
2558
+ Er = "Er"
2559
+ Tm = "Tm"
2560
+ Yb = "Yb"
2561
+ Lu = "Lu"
2562
+ Hf = "Hf"
2563
+ Ta = "Ta"
2564
+ W = "W"
2565
+ Re = "Re"
2566
+ Os = "Os"
2567
+ Ir = "Ir"
2568
+ Pt = "Pt"
2569
+ Au = "Au"
2570
+ Hg = "Hg"
2571
+ Tl = "Tl"
2572
+ Pb = "Pb"
2573
+ Bi = "Bi"
2574
+ Po = "Po"
2575
+ At = "At"
2576
+ Rn = "Rn"
2577
+ Fr = "Fr"
2578
+ Ra = "Ra"
2579
+ Ac = "Ac"
2580
+ Th = "Th"
2581
+ Pa = "Pa"
2582
+ U = "U"
2583
+ Np = "Np"
2584
+ Pu = "Pu"
2585
+ Am = "Am"
2586
+ Cm = "Cm"
2587
+ Bk = "Bk"
2588
+ Cf = "Cf"
2589
+ Es = "Es"
2590
+ Fm = "Fm"
2591
+ Md = "Md"
2592
+ No = "No"
2593
+ Lr = "Lr"
2594
+ Rf = "Rf"
2595
+ Db = "Db"
2596
+ Sg = "Sg"
2597
+ Bh = "Bh"
2598
+ Hs = "Hs"
2599
+ Mt = "Mt"
2600
+ Ds = "Ds"
2601
+ Rg = "Rg"
2602
+ Cn = "Cn"
2603
+ Nh = "Nh"
2604
+ Fl = "Fl"
2605
+ Mc = "Mc"
2606
+ Lv = "Lv"
2607
+ Ts = "Ts"
2608
+ Og = "Og"
2609
+
2610
+
2611
+ class Value77(Enum):
2612
+ X = "X"
2613
+ Vac = "Vac"
2614
+
2615
+
2616
+ class AtomicElementSchema37(BaseModel):
2617
+ value: Union[Value76, Value77]
2618
+ """
2619
+ All elements, including extra elements
2620
+ """
2621
+ id: int
2622
+ """
2623
+ integer id of this entry
2624
+ """
2625
+
2626
+
2627
+ class BasisSchema35(BaseModel):
2628
+ elements: List[AtomicElementSchema37] = Field(..., title="atomic elements schema")
2629
+ """
2630
+ atomic elements schema
2631
+ """
2632
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
2633
+ """
2634
+ atomic coordinates schema
2635
+ """
2636
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
2637
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
2638
+ """
2639
+ atomic labels schema
2640
+ """
2641
+
2642
+
2643
+ class LatticeVectorsSchema34(BaseModel):
2644
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2645
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2646
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
2647
+ alat: Optional[float] = 1
2648
+ """
2649
+ lattice parameter for fractional coordinates
2650
+ """
2651
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
2652
+
2653
+
2654
+ class LatticeUnitsSchema34(BaseModel):
2655
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
2656
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
2657
+
2658
+
2659
+ class LatticeSchema34(BaseModel):
2660
+ a: float
2661
+ """
2662
+ length of the first lattice vector
2663
+ """
2664
+ b: float
2665
+ """
2666
+ length of the second lattice vector
2667
+ """
2668
+ c: float
2669
+ """
2670
+ length of the third lattice vector
2671
+ """
2672
+ alpha: float
2673
+ """
2674
+ angle between first and second lattice vector
2675
+ """
2676
+ beta: float
2677
+ """
2678
+ angle between second and third lattice vector
2679
+ """
2680
+ gamma: float
2681
+ """
2682
+ angle between first and third lattice vector
2683
+ """
2684
+ vectors: Optional[LatticeVectorsSchema34] = Field(None, title="lattice vectors schema")
2685
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
2686
+ units: Optional[LatticeUnitsSchema34] = Field(
2687
+ default_factory=lambda: LatticeUnitsSchema34.model_validate({"length": "angstrom", "angle": "degree"}),
2688
+ title="Lattice units schema",
2689
+ )
2690
+
2691
+
2692
+ class Name279(Enum):
2693
+ volume = "volume"
2694
+
2695
+
2696
+ class Units111(Enum):
2697
+ angstrom_3 = "angstrom^3"
2698
+
2699
+
2700
+ class VolumeSchema34(BaseModel):
2701
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
2702
+ units: Optional[Units111] = None
2703
+ value: float
2704
+
2705
+
2706
+ class Name280(Enum):
2707
+ density = "density"
2708
+
2709
+
2710
+ class Units112(Enum):
2711
+ g_cm_3 = "g/cm^3"
2712
+
2713
+
2714
+ class DensitySchema34(BaseModel):
2715
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
2716
+ units: Optional[Units112] = None
2717
+ value: float
2718
+
2719
+
2720
+ class Units113(Enum):
2721
+ angstrom = "angstrom"
2722
+
2723
+
2724
+ class ScalarSchema35(BaseModel):
2725
+ units: Optional[Units113] = None
2726
+ value: float
2727
+
2728
+
2729
+ class Name281(Enum):
2730
+ symmetry = "symmetry"
2731
+
2732
+
2733
+ class SymmetrySchema34(BaseModel):
2734
+ pointGroupSymbol: Optional[str] = None
2735
+ """
2736
+ point group symbol in Schoenflies notation
2737
+ """
2738
+ spaceGroupSymbol: Optional[str] = None
2739
+ """
2740
+ space group symbol in Hermann–Mauguin notation
2741
+ """
2742
+ tolerance: Optional[ScalarSchema35] = Field(None, title="scalar schema")
2743
+ """
2744
+ tolerance used for symmetry calculation
2745
+ """
2746
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
2747
+
2748
+
2749
+ class Name282(Enum):
2750
+ elemental_ratio = "elemental_ratio"
2751
+
2752
+
2753
+ class ElementalRatio34(BaseModel):
2754
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
2755
+ value: confloat(ge=0.0, le=1.0)
2756
+ element: Optional[str] = None
2757
+ """
2758
+ the element this ratio is for
2759
+ """
2760
+
2761
+
2762
+ class Name283(Enum):
2763
+ p_norm = "p-norm"
2764
+
2765
+
2766
+ class PNorm34(BaseModel):
2767
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
2768
+ degree: Optional[int] = None
2769
+ """
2770
+ degree of the dimensionality of the norm
2771
+ """
2772
+ value: float
2773
+
2774
+
2775
+ class Name284(Enum):
2776
+ inchi = "inchi"
2777
+
2778
+
2779
+ class InChIRepresentationSchema34(BaseModel):
2780
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
2781
+ value: str
2782
+
2783
+
2784
+ class Name285(Enum):
2785
+ inchi_key = "inchi_key"
2786
+
2787
+
2788
+ class InChIKeyRepresentationSchema34(BaseModel):
2789
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
2790
+ value: str
2791
+
2792
+
2793
+ class DerivedPropertiesSchema34(
2794
+ RootModel[
2795
+ Union[
2796
+ VolumeSchema34,
2797
+ DensitySchema34,
2798
+ SymmetrySchema34,
2799
+ ElementalRatio34,
2800
+ PNorm34,
2801
+ InChIRepresentationSchema34,
2802
+ InChIKeyRepresentationSchema34,
2803
+ ]
2804
+ ]
2805
+ ):
2806
+ root: Union[
2807
+ VolumeSchema34,
2808
+ DensitySchema34,
2809
+ SymmetrySchema34,
2810
+ ElementalRatio34,
2811
+ PNorm34,
2812
+ InChIRepresentationSchema34,
2813
+ InChIKeyRepresentationSchema34,
2814
+ ] = Field(..., discriminator="name")
2815
+
2816
+
2817
+ class Name286(Enum):
2818
+ default = "default"
2819
+ atomsTooClose = "atomsTooClose"
2820
+ atomsOverlap = "atomsOverlap"
2821
+
2822
+
2823
+ class MaterialConsistencyCheckSchema34(BaseModel):
2824
+ name: Name286
2825
+ """
2826
+ Name of the consistency check that is performed, which is listed in an enum.
2827
+ """
2828
+ key: str
2829
+ """
2830
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
2831
+ """
2832
+ severity: Severity
2833
+ """
2834
+ Severity level of the problem, which is used in UI to differentiate.
2835
+ """
2836
+ message: str
2837
+ """
2838
+ Message generated by the consistency check describing the problem.
2839
+ """
2840
+
2841
+
2842
+ class CrystalSchema34(BaseModel):
2843
+ formula: Optional[str] = None
2844
+ """
2845
+ reduced chemical formula
2846
+ """
2847
+ unitCellFormula: Optional[str] = None
2848
+ """
2849
+ chemical formula based on the number of atoms of each element in the supercell
2850
+ """
2851
+ basis: BasisSchema35 = Field(..., title="basis schema")
2852
+ lattice: LatticeSchema34 = Field(..., title="lattice schema")
2853
+ derivedProperties: Optional[List[DerivedPropertiesSchema34]] = Field(None, title="derived properties schema")
2854
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
2855
+ """
2856
+ information about a database source
2857
+ """
2858
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
2859
+ """
2860
+ file source with the information inside
2861
+ """
2862
+ scaledHash: Optional[str] = None
2863
+ """
2864
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
2865
+ """
2866
+ icsdId: Optional[int] = None
2867
+ """
2868
+ Corresponding ICSD id of the material
2869
+ """
2870
+ isNonPeriodic: Optional[bool] = None
2871
+ """
2872
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
2873
+ """
2874
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema34]] = None
2875
+ field_id: Optional[str] = Field(None, alias="_id")
2876
+ """
2877
+ entity identity
2878
+ """
2879
+ slug: Optional[str] = None
2880
+ """
2881
+ entity slug
2882
+ """
2883
+ systemName: Optional[str] = None
2884
+ schemaVersion: Optional[str] = "2022.8.16"
2885
+ """
2886
+ entity's schema version. Used to distinct between different schemas.
2887
+ """
2888
+ name: Optional[str] = None
2889
+ """
2890
+ entity name
2891
+ """
2892
+ isDefault: Optional[bool] = False
2893
+ """
2894
+ Identifies that entity is defaultable
2895
+ """
2896
+ metadata: Optional[Dict[str, Any]] = None
2897
+
2898
+
2899
+ class VacuumConfigurationSchema15(BaseModel):
2900
+ direction: AxisEnum = Field(..., title="Axis Enum")
2901
+ """
2902
+ Enum for axis types
2903
+ """
2904
+ size: Optional[confloat(ge=0.0)] = 10
2905
+ """
2906
+ Size of the vacuum slab in angstroms
2907
+ """
2908
+ crystal: CrystalSchema34 = Field(..., title="Crystal Schema")
2909
+ """
2910
+ A crystal structure, referencing the base material schema
2911
+ """
2912
+
2913
+
2914
+ class SlabConfigurationSchema8(BaseModel):
2915
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema12, VacuumConfigurationSchema15]] = Field(
2916
+ ..., max_length=2, min_length=2
2917
+ )
2918
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
2919
+ """
2920
+ Enum for axis types
2921
+ """
2922
+ gaps: Optional[List[ObjectWithId]] = None
2923
+ """
2924
+ Gap distances between stack components as an array of objects with id and value
2925
+ """
2926
+
2927
+
2928
+ class TerminationSchema15(BaseModel):
2929
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^([A-Z][a-z]?[0-9]*)+$")] = Field(
2930
+ ..., title="Chemical Elements"
2931
+ )
2932
+ """
2933
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
2934
+ """
2935
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
2936
+ """
2937
+ Space group symmetry designation for the termination
2938
+ """
2939
+
2940
+
2941
+ class Value78(Enum):
2942
+ H = "H"
2943
+ He = "He"
2944
+ Li = "Li"
2945
+ Be = "Be"
2946
+ B = "B"
2947
+ C = "C"
2948
+ N = "N"
2949
+ O = "O"
2950
+ F = "F"
2951
+ Ne = "Ne"
2952
+ Na = "Na"
2953
+ Mg = "Mg"
2954
+ Al = "Al"
2955
+ Si = "Si"
2956
+ P = "P"
2957
+ S = "S"
2958
+ Cl = "Cl"
2959
+ Ar = "Ar"
2960
+ K = "K"
2961
+ Ca = "Ca"
2962
+ Sc = "Sc"
2963
+ Ti = "Ti"
2964
+ V = "V"
2965
+ Cr = "Cr"
2966
+ Mn = "Mn"
2967
+ Fe = "Fe"
2968
+ Co = "Co"
2969
+ Ni = "Ni"
2970
+ Cu = "Cu"
2971
+ Zn = "Zn"
2972
+ Ga = "Ga"
2973
+ Ge = "Ge"
2974
+ As = "As"
2975
+ Se = "Se"
2976
+ Br = "Br"
2977
+ Kr = "Kr"
2978
+ Rb = "Rb"
2979
+ Sr = "Sr"
2980
+ Y = "Y"
2981
+ Zr = "Zr"
2982
+ Nb = "Nb"
2983
+ Mo = "Mo"
2984
+ Tc = "Tc"
2985
+ Ru = "Ru"
2986
+ Rh = "Rh"
2987
+ Pd = "Pd"
2988
+ Ag = "Ag"
2989
+ Cd = "Cd"
2990
+ In = "In"
2991
+ Sn = "Sn"
2992
+ Sb = "Sb"
2993
+ Te = "Te"
2994
+ I = "I"
2995
+ Xe = "Xe"
2996
+ Cs = "Cs"
2997
+ Ba = "Ba"
2998
+ La = "La"
2999
+ Ce = "Ce"
3000
+ Pr = "Pr"
3001
+ Nd = "Nd"
3002
+ Pm = "Pm"
3003
+ Sm = "Sm"
3004
+ Eu = "Eu"
3005
+ Gd = "Gd"
3006
+ Tb = "Tb"
3007
+ Dy = "Dy"
3008
+ Ho = "Ho"
3009
+ Er = "Er"
3010
+ Tm = "Tm"
3011
+ Yb = "Yb"
3012
+ Lu = "Lu"
3013
+ Hf = "Hf"
3014
+ Ta = "Ta"
3015
+ W = "W"
3016
+ Re = "Re"
3017
+ Os = "Os"
3018
+ Ir = "Ir"
3019
+ Pt = "Pt"
3020
+ Au = "Au"
3021
+ Hg = "Hg"
3022
+ Tl = "Tl"
3023
+ Pb = "Pb"
3024
+ Bi = "Bi"
3025
+ Po = "Po"
3026
+ At = "At"
3027
+ Rn = "Rn"
3028
+ Fr = "Fr"
3029
+ Ra = "Ra"
3030
+ Ac = "Ac"
3031
+ Th = "Th"
3032
+ Pa = "Pa"
3033
+ U = "U"
3034
+ Np = "Np"
3035
+ Pu = "Pu"
3036
+ Am = "Am"
3037
+ Cm = "Cm"
3038
+ Bk = "Bk"
3039
+ Cf = "Cf"
3040
+ Es = "Es"
3041
+ Fm = "Fm"
3042
+ Md = "Md"
3043
+ No = "No"
3044
+ Lr = "Lr"
3045
+ Rf = "Rf"
3046
+ Db = "Db"
3047
+ Sg = "Sg"
3048
+ Bh = "Bh"
3049
+ Hs = "Hs"
3050
+ Mt = "Mt"
3051
+ Ds = "Ds"
3052
+ Rg = "Rg"
3053
+ Cn = "Cn"
3054
+ Nh = "Nh"
3055
+ Fl = "Fl"
3056
+ Mc = "Mc"
3057
+ Lv = "Lv"
3058
+ Ts = "Ts"
3059
+ Og = "Og"
3060
+
3061
+
3062
+ class Value79(Enum):
3063
+ X = "X"
3064
+ Vac = "Vac"
3065
+
3066
+
3067
+ class AtomicElementSchema38(BaseModel):
3068
+ value: Union[Value78, Value79]
3069
+ """
3070
+ All elements, including extra elements
3071
+ """
3072
+ id: int
3073
+ """
3074
+ integer id of this entry
3075
+ """
3076
+
3077
+
3078
+ class BasisSchema36(BaseModel):
3079
+ elements: List[AtomicElementSchema38] = Field(..., title="atomic elements schema")
3080
+ """
3081
+ atomic elements schema
3082
+ """
3083
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
3084
+ """
3085
+ atomic coordinates schema
3086
+ """
3087
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
3088
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
3089
+ """
3090
+ atomic labels schema
3091
+ """
3092
+
3093
+
3094
+ class LatticeVectorsSchema35(BaseModel):
3095
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3096
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3097
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3098
+ alat: Optional[float] = 1
3099
+ """
3100
+ lattice parameter for fractional coordinates
3101
+ """
3102
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
3103
+
3104
+
3105
+ class LatticeUnitsSchema35(BaseModel):
3106
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
3107
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
3108
+
3109
+
3110
+ class LatticeSchema35(BaseModel):
3111
+ a: float
3112
+ """
3113
+ length of the first lattice vector
3114
+ """
3115
+ b: float
3116
+ """
3117
+ length of the second lattice vector
3118
+ """
3119
+ c: float
3120
+ """
3121
+ length of the third lattice vector
3122
+ """
3123
+ alpha: float
3124
+ """
3125
+ angle between first and second lattice vector
3126
+ """
3127
+ beta: float
3128
+ """
3129
+ angle between second and third lattice vector
3130
+ """
3131
+ gamma: float
3132
+ """
3133
+ angle between first and third lattice vector
3134
+ """
3135
+ vectors: Optional[LatticeVectorsSchema35] = Field(None, title="lattice vectors schema")
3136
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
3137
+ units: Optional[LatticeUnitsSchema35] = Field(
3138
+ default_factory=lambda: LatticeUnitsSchema35.model_validate({"length": "angstrom", "angle": "degree"}),
3139
+ title="Lattice units schema",
3140
+ )
3141
+
3142
+
3143
+ class Name287(Enum):
3144
+ volume = "volume"
3145
+
3146
+
3147
+ class Units114(Enum):
3148
+ angstrom_3 = "angstrom^3"
3149
+
3150
+
3151
+ class VolumeSchema35(BaseModel):
3152
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
3153
+ units: Optional[Units114] = None
3154
+ value: float
3155
+
3156
+
3157
+ class Name288(Enum):
3158
+ density = "density"
3159
+
3160
+
3161
+ class Units115(Enum):
3162
+ g_cm_3 = "g/cm^3"
3163
+
3164
+
3165
+ class DensitySchema35(BaseModel):
3166
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
3167
+ units: Optional[Units115] = None
3168
+ value: float
3169
+
3170
+
3171
+ class Units116(Enum):
3172
+ angstrom = "angstrom"
3173
+
3174
+
3175
+ class ScalarSchema36(BaseModel):
3176
+ units: Optional[Units116] = None
3177
+ value: float
3178
+
3179
+
3180
+ class Name289(Enum):
3181
+ symmetry = "symmetry"
3182
+
3183
+
3184
+ class SymmetrySchema35(BaseModel):
3185
+ pointGroupSymbol: Optional[str] = None
3186
+ """
3187
+ point group symbol in Schoenflies notation
3188
+ """
3189
+ spaceGroupSymbol: Optional[str] = None
3190
+ """
3191
+ space group symbol in Hermann–Mauguin notation
3192
+ """
3193
+ tolerance: Optional[ScalarSchema36] = Field(None, title="scalar schema")
3194
+ """
3195
+ tolerance used for symmetry calculation
3196
+ """
3197
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
3198
+
3199
+
3200
+ class Name290(Enum):
3201
+ elemental_ratio = "elemental_ratio"
3202
+
3203
+
3204
+ class ElementalRatio35(BaseModel):
3205
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
3206
+ value: confloat(ge=0.0, le=1.0)
3207
+ element: Optional[str] = None
3208
+ """
3209
+ the element this ratio is for
3210
+ """
3211
+
3212
+
3213
+ class Name291(Enum):
3214
+ p_norm = "p-norm"
3215
+
3216
+
3217
+ class PNorm35(BaseModel):
3218
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
3219
+ degree: Optional[int] = None
3220
+ """
3221
+ degree of the dimensionality of the norm
3222
+ """
3223
+ value: float
3224
+
3225
+
3226
+ class Name292(Enum):
3227
+ inchi = "inchi"
3228
+
3229
+
3230
+ class InChIRepresentationSchema35(BaseModel):
3231
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
3232
+ value: str
3233
+
3234
+
3235
+ class Name293(Enum):
3236
+ inchi_key = "inchi_key"
3237
+
3238
+
3239
+ class InChIKeyRepresentationSchema35(BaseModel):
3240
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
3241
+ value: str
3242
+
3243
+
3244
+ class DerivedPropertiesSchema35(
3245
+ RootModel[
3246
+ Union[
3247
+ VolumeSchema35,
3248
+ DensitySchema35,
3249
+ SymmetrySchema35,
3250
+ ElementalRatio35,
3251
+ PNorm35,
3252
+ InChIRepresentationSchema35,
3253
+ InChIKeyRepresentationSchema35,
3254
+ ]
3255
+ ]
3256
+ ):
3257
+ root: Union[
3258
+ VolumeSchema35,
3259
+ DensitySchema35,
3260
+ SymmetrySchema35,
3261
+ ElementalRatio35,
3262
+ PNorm35,
3263
+ InChIRepresentationSchema35,
3264
+ InChIKeyRepresentationSchema35,
3265
+ ] = Field(..., discriminator="name")
3266
+
3267
+
3268
+ class Name294(Enum):
3269
+ default = "default"
3270
+ atomsTooClose = "atomsTooClose"
3271
+ atomsOverlap = "atomsOverlap"
3272
+
3273
+
3274
+ class MaterialConsistencyCheckSchema35(BaseModel):
3275
+ name: Name294
3276
+ """
3277
+ Name of the consistency check that is performed, which is listed in an enum.
3278
+ """
3279
+ key: str
3280
+ """
3281
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
3282
+ """
3283
+ severity: Severity
3284
+ """
3285
+ Severity level of the problem, which is used in UI to differentiate.
3286
+ """
3287
+ message: str
3288
+ """
3289
+ Message generated by the consistency check describing the problem.
3290
+ """
3291
+
3292
+
3293
+ class CrystalSchema35(BaseModel):
3294
+ formula: Optional[str] = None
3295
+ """
3296
+ reduced chemical formula
3297
+ """
3298
+ unitCellFormula: Optional[str] = None
3299
+ """
3300
+ chemical formula based on the number of atoms of each element in the supercell
3301
+ """
3302
+ basis: BasisSchema36 = Field(..., title="basis schema")
3303
+ lattice: LatticeSchema35 = Field(..., title="lattice schema")
3304
+ derivedProperties: Optional[List[DerivedPropertiesSchema35]] = Field(None, title="derived properties schema")
3305
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
3306
+ """
3307
+ information about a database source
3308
+ """
3309
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
3310
+ """
3311
+ file source with the information inside
3312
+ """
3313
+ scaledHash: Optional[str] = None
3314
+ """
3315
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
3316
+ """
3317
+ icsdId: Optional[int] = None
3318
+ """
3319
+ Corresponding ICSD id of the material
3320
+ """
3321
+ isNonPeriodic: Optional[bool] = None
3322
+ """
3323
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
3324
+ """
3325
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema35]] = None
3326
+ field_id: Optional[str] = Field(None, alias="_id")
3327
+ """
3328
+ entity identity
3329
+ """
3330
+ slug: Optional[str] = None
3331
+ """
3332
+ entity slug
3333
+ """
3334
+ systemName: Optional[str] = None
3335
+ schemaVersion: Optional[str] = "2022.8.16"
3336
+ """
3337
+ entity's schema version. Used to distinct between different schemas.
3338
+ """
3339
+ name: Optional[str] = None
3340
+ """
3341
+ entity name
3342
+ """
3343
+ isDefault: Optional[bool] = False
3344
+ """
3345
+ Identifies that entity is defaultable
3346
+ """
3347
+ metadata: Optional[Dict[str, Any]] = None
3348
+
3349
+
3350
+ class AtomicLayersUniqueRepeatedSchema13(BaseModel):
3351
+ termination_top: TerminationSchema15 = Field(..., title="Termination Schema")
3352
+ """
3353
+ Defines a specific termination of a slab
3354
+ """
3355
+ number_of_repetitions: conint(ge=1)
3356
+ """
3357
+ Number of repetitions of the unique atomic layers
3358
+ """
3359
+ miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
3360
+ """
3361
+ Miller indices [h, k, l] defining crystallographic planes
3362
+ """
3363
+ crystal: CrystalSchema35 = Field(..., title="Crystal Schema")
3364
+ """
3365
+ A crystal structure, referencing the base material schema
3366
+ """
3367
+ use_conventional_cell: Optional[bool] = True
3368
+ """
3369
+ Use the conventional cell for the crystal structure
3370
+ """
3371
+
3372
+
3373
+ class Value80(Enum):
3374
+ H = "H"
3375
+ He = "He"
3376
+ Li = "Li"
3377
+ Be = "Be"
3378
+ B = "B"
3379
+ C = "C"
3380
+ N = "N"
3381
+ O = "O"
3382
+ F = "F"
3383
+ Ne = "Ne"
3384
+ Na = "Na"
3385
+ Mg = "Mg"
3386
+ Al = "Al"
3387
+ Si = "Si"
3388
+ P = "P"
3389
+ S = "S"
3390
+ Cl = "Cl"
3391
+ Ar = "Ar"
3392
+ K = "K"
3393
+ Ca = "Ca"
3394
+ Sc = "Sc"
3395
+ Ti = "Ti"
3396
+ V = "V"
3397
+ Cr = "Cr"
3398
+ Mn = "Mn"
3399
+ Fe = "Fe"
3400
+ Co = "Co"
3401
+ Ni = "Ni"
3402
+ Cu = "Cu"
3403
+ Zn = "Zn"
3404
+ Ga = "Ga"
3405
+ Ge = "Ge"
3406
+ As = "As"
3407
+ Se = "Se"
3408
+ Br = "Br"
3409
+ Kr = "Kr"
3410
+ Rb = "Rb"
3411
+ Sr = "Sr"
3412
+ Y = "Y"
3413
+ Zr = "Zr"
3414
+ Nb = "Nb"
3415
+ Mo = "Mo"
3416
+ Tc = "Tc"
3417
+ Ru = "Ru"
3418
+ Rh = "Rh"
3419
+ Pd = "Pd"
3420
+ Ag = "Ag"
3421
+ Cd = "Cd"
3422
+ In = "In"
3423
+ Sn = "Sn"
3424
+ Sb = "Sb"
3425
+ Te = "Te"
3426
+ I = "I"
3427
+ Xe = "Xe"
3428
+ Cs = "Cs"
3429
+ Ba = "Ba"
3430
+ La = "La"
3431
+ Ce = "Ce"
3432
+ Pr = "Pr"
3433
+ Nd = "Nd"
3434
+ Pm = "Pm"
3435
+ Sm = "Sm"
3436
+ Eu = "Eu"
3437
+ Gd = "Gd"
3438
+ Tb = "Tb"
3439
+ Dy = "Dy"
3440
+ Ho = "Ho"
3441
+ Er = "Er"
3442
+ Tm = "Tm"
3443
+ Yb = "Yb"
3444
+ Lu = "Lu"
3445
+ Hf = "Hf"
3446
+ Ta = "Ta"
3447
+ W = "W"
3448
+ Re = "Re"
3449
+ Os = "Os"
3450
+ Ir = "Ir"
3451
+ Pt = "Pt"
3452
+ Au = "Au"
3453
+ Hg = "Hg"
3454
+ Tl = "Tl"
3455
+ Pb = "Pb"
3456
+ Bi = "Bi"
3457
+ Po = "Po"
3458
+ At = "At"
3459
+ Rn = "Rn"
3460
+ Fr = "Fr"
3461
+ Ra = "Ra"
3462
+ Ac = "Ac"
3463
+ Th = "Th"
3464
+ Pa = "Pa"
3465
+ U = "U"
3466
+ Np = "Np"
3467
+ Pu = "Pu"
3468
+ Am = "Am"
3469
+ Cm = "Cm"
3470
+ Bk = "Bk"
3471
+ Cf = "Cf"
3472
+ Es = "Es"
3473
+ Fm = "Fm"
3474
+ Md = "Md"
3475
+ No = "No"
3476
+ Lr = "Lr"
3477
+ Rf = "Rf"
3478
+ Db = "Db"
3479
+ Sg = "Sg"
3480
+ Bh = "Bh"
3481
+ Hs = "Hs"
3482
+ Mt = "Mt"
3483
+ Ds = "Ds"
3484
+ Rg = "Rg"
3485
+ Cn = "Cn"
3486
+ Nh = "Nh"
3487
+ Fl = "Fl"
3488
+ Mc = "Mc"
3489
+ Lv = "Lv"
3490
+ Ts = "Ts"
3491
+ Og = "Og"
3492
+
3493
+
3494
+ class Value81(Enum):
3495
+ X = "X"
3496
+ Vac = "Vac"
3497
+
3498
+
3499
+ class AtomicElementSchema39(BaseModel):
3500
+ value: Union[Value80, Value81]
3501
+ """
3502
+ All elements, including extra elements
3503
+ """
3504
+ id: int
3505
+ """
3506
+ integer id of this entry
3507
+ """
3508
+
3509
+
3510
+ class BasisSchema37(BaseModel):
3511
+ elements: List[AtomicElementSchema39] = Field(..., title="atomic elements schema")
3512
+ """
3513
+ atomic elements schema
3514
+ """
3515
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
3516
+ """
3517
+ atomic coordinates schema
3518
+ """
3519
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
3520
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
3521
+ """
3522
+ atomic labels schema
3523
+ """
3524
+
3525
+
3526
+ class LatticeVectorsSchema36(BaseModel):
3527
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3528
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3529
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3530
+ alat: Optional[float] = 1
3531
+ """
3532
+ lattice parameter for fractional coordinates
3533
+ """
3534
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
3535
+
3536
+
3537
+ class LatticeUnitsSchema36(BaseModel):
3538
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
3539
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
3540
+
3541
+
3542
+ class LatticeSchema36(BaseModel):
3543
+ a: float
3544
+ """
3545
+ length of the first lattice vector
3546
+ """
3547
+ b: float
3548
+ """
3549
+ length of the second lattice vector
3550
+ """
3551
+ c: float
3552
+ """
3553
+ length of the third lattice vector
3554
+ """
3555
+ alpha: float
3556
+ """
3557
+ angle between first and second lattice vector
3558
+ """
3559
+ beta: float
3560
+ """
3561
+ angle between second and third lattice vector
3562
+ """
3563
+ gamma: float
3564
+ """
3565
+ angle between first and third lattice vector
3566
+ """
3567
+ vectors: Optional[LatticeVectorsSchema36] = Field(None, title="lattice vectors schema")
3568
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
3569
+ units: Optional[LatticeUnitsSchema36] = Field(
3570
+ default_factory=lambda: LatticeUnitsSchema36.model_validate({"length": "angstrom", "angle": "degree"}),
3571
+ title="Lattice units schema",
3572
+ )
3573
+
3574
+
3575
+ class Name295(Enum):
3576
+ volume = "volume"
3577
+
3578
+
3579
+ class Units117(Enum):
3580
+ angstrom_3 = "angstrom^3"
3581
+
3582
+
3583
+ class VolumeSchema36(BaseModel):
3584
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
3585
+ units: Optional[Units117] = None
3586
+ value: float
3587
+
3588
+
3589
+ class Name296(Enum):
3590
+ density = "density"
3591
+
3592
+
3593
+ class Units118(Enum):
3594
+ g_cm_3 = "g/cm^3"
3595
+
3596
+
3597
+ class DensitySchema36(BaseModel):
3598
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
3599
+ units: Optional[Units118] = None
3600
+ value: float
3601
+
3602
+
3603
+ class Units119(Enum):
3604
+ angstrom = "angstrom"
3605
+
3606
+
3607
+ class ScalarSchema37(BaseModel):
3608
+ units: Optional[Units119] = None
3609
+ value: float
3610
+
3611
+
3612
+ class Name297(Enum):
3613
+ symmetry = "symmetry"
3614
+
3615
+
3616
+ class SymmetrySchema36(BaseModel):
3617
+ pointGroupSymbol: Optional[str] = None
3618
+ """
3619
+ point group symbol in Schoenflies notation
3620
+ """
3621
+ spaceGroupSymbol: Optional[str] = None
3622
+ """
3623
+ space group symbol in Hermann–Mauguin notation
3624
+ """
3625
+ tolerance: Optional[ScalarSchema37] = Field(None, title="scalar schema")
3626
+ """
3627
+ tolerance used for symmetry calculation
3628
+ """
3629
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
3630
+
3631
+
3632
+ class Name298(Enum):
3633
+ elemental_ratio = "elemental_ratio"
3634
+
3635
+
3636
+ class ElementalRatio36(BaseModel):
3637
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
3638
+ value: confloat(ge=0.0, le=1.0)
3639
+ element: Optional[str] = None
3640
+ """
3641
+ the element this ratio is for
3642
+ """
3643
+
3644
+
3645
+ class Name299(Enum):
3646
+ p_norm = "p-norm"
3647
+
3648
+
3649
+ class PNorm36(BaseModel):
3650
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
3651
+ degree: Optional[int] = None
3652
+ """
3653
+ degree of the dimensionality of the norm
3654
+ """
3655
+ value: float
3656
+
3657
+
3658
+ class Name300(Enum):
3659
+ inchi = "inchi"
3660
+
3661
+
3662
+ class InChIRepresentationSchema36(BaseModel):
3663
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
3664
+ value: str
3665
+
3666
+
3667
+ class Name301(Enum):
3668
+ inchi_key = "inchi_key"
3669
+
3670
+
3671
+ class InChIKeyRepresentationSchema36(BaseModel):
3672
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
3673
+ value: str
3674
+
3675
+
3676
+ class DerivedPropertiesSchema36(
3677
+ RootModel[
3678
+ Union[
3679
+ VolumeSchema36,
3680
+ DensitySchema36,
3681
+ SymmetrySchema36,
3682
+ ElementalRatio36,
3683
+ PNorm36,
3684
+ InChIRepresentationSchema36,
3685
+ InChIKeyRepresentationSchema36,
3686
+ ]
3687
+ ]
3688
+ ):
3689
+ root: Union[
3690
+ VolumeSchema36,
3691
+ DensitySchema36,
3692
+ SymmetrySchema36,
3693
+ ElementalRatio36,
3694
+ PNorm36,
3695
+ InChIRepresentationSchema36,
3696
+ InChIKeyRepresentationSchema36,
3697
+ ] = Field(..., discriminator="name")
3698
+
3699
+
3700
+ class Name302(Enum):
3701
+ default = "default"
3702
+ atomsTooClose = "atomsTooClose"
3703
+ atomsOverlap = "atomsOverlap"
3704
+
3705
+
3706
+ class MaterialConsistencyCheckSchema36(BaseModel):
3707
+ name: Name302
3708
+ """
3709
+ Name of the consistency check that is performed, which is listed in an enum.
3710
+ """
3711
+ key: str
3712
+ """
3713
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
3714
+ """
3715
+ severity: Severity
3716
+ """
3717
+ Severity level of the problem, which is used in UI to differentiate.
3718
+ """
3719
+ message: str
3720
+ """
3721
+ Message generated by the consistency check describing the problem.
3722
+ """
3723
+
3724
+
3725
+ class CrystalSchema36(BaseModel):
3726
+ formula: Optional[str] = None
3727
+ """
3728
+ reduced chemical formula
3729
+ """
3730
+ unitCellFormula: Optional[str] = None
3731
+ """
3732
+ chemical formula based on the number of atoms of each element in the supercell
3733
+ """
3734
+ basis: BasisSchema37 = Field(..., title="basis schema")
3735
+ lattice: LatticeSchema36 = Field(..., title="lattice schema")
3736
+ derivedProperties: Optional[List[DerivedPropertiesSchema36]] = Field(None, title="derived properties schema")
3737
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
3738
+ """
3739
+ information about a database source
3740
+ """
3741
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
3742
+ """
3743
+ file source with the information inside
3744
+ """
3745
+ scaledHash: Optional[str] = None
3746
+ """
3747
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
3748
+ """
3749
+ icsdId: Optional[int] = None
3750
+ """
3751
+ Corresponding ICSD id of the material
3752
+ """
3753
+ isNonPeriodic: Optional[bool] = None
3754
+ """
3755
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
3756
+ """
3757
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema36]] = None
3758
+ field_id: Optional[str] = Field(None, alias="_id")
3759
+ """
3760
+ entity identity
3761
+ """
3762
+ slug: Optional[str] = None
3763
+ """
3764
+ entity slug
3765
+ """
3766
+ systemName: Optional[str] = None
3767
+ schemaVersion: Optional[str] = "2022.8.16"
3768
+ """
3769
+ entity's schema version. Used to distinct between different schemas.
3770
+ """
3771
+ name: Optional[str] = None
3772
+ """
3773
+ entity name
3774
+ """
3775
+ isDefault: Optional[bool] = False
3776
+ """
3777
+ Identifies that entity is defaultable
3778
+ """
3779
+ metadata: Optional[Dict[str, Any]] = None
3780
+
3781
+
3782
+ class VacuumConfigurationSchema16(BaseModel):
3783
+ direction: AxisEnum = Field(..., title="Axis Enum")
3784
+ """
3785
+ Enum for axis types
3786
+ """
3787
+ size: Optional[confloat(ge=0.0)] = 10
3788
+ """
3789
+ Size of the vacuum slab in angstroms
3790
+ """
3791
+ crystal: CrystalSchema36 = Field(..., title="Crystal Schema")
3792
+ """
3793
+ A crystal structure, referencing the base material schema
3794
+ """
3795
+
3796
+
3797
+ class SlabStrainedSupercellConfigurationSchema3(BaseModel):
3798
+ xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field(
3799
+ default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]],
3800
+ max_length=2,
3801
+ min_length=2,
3802
+ title="Supercell Matrix 2D Schema",
3803
+ )
3804
+ """
3805
+ Supercell matrix for xy plane transformations
3806
+ """
3807
+ strain_matrix: List[ArrayOf3NumberElementsSchema] = Field(
3808
+ ..., max_length=3, min_length=3, title="matrix 3x3 schema"
3809
+ )
3810
+ stack_components: List[Union[AtomicLayersUniqueRepeatedSchema13, VacuumConfigurationSchema16]] = Field(
3811
+ ..., max_length=2, min_length=2
3812
+ )
3813
+ direction: Optional[AxisEnum] = Field("z", title="Axis Enum")
3814
+ """
3815
+ Enum for axis types
3816
+ """
3817
+ gaps: Optional[List[ObjectWithId]] = None
3818
+ """
3819
+ Gap distances between stack components as an array of objects with id and value
3820
+ """
3821
+
3822
+
3823
+ class Value82(Enum):
3824
+ H = "H"
3825
+ He = "He"
3826
+ Li = "Li"
3827
+ Be = "Be"
3828
+ B = "B"
3829
+ C = "C"
3830
+ N = "N"
3831
+ O = "O"
3832
+ F = "F"
3833
+ Ne = "Ne"
3834
+ Na = "Na"
3835
+ Mg = "Mg"
3836
+ Al = "Al"
3837
+ Si = "Si"
3838
+ P = "P"
3839
+ S = "S"
3840
+ Cl = "Cl"
3841
+ Ar = "Ar"
3842
+ K = "K"
3843
+ Ca = "Ca"
3844
+ Sc = "Sc"
3845
+ Ti = "Ti"
3846
+ V = "V"
3847
+ Cr = "Cr"
3848
+ Mn = "Mn"
3849
+ Fe = "Fe"
3850
+ Co = "Co"
3851
+ Ni = "Ni"
3852
+ Cu = "Cu"
3853
+ Zn = "Zn"
3854
+ Ga = "Ga"
3855
+ Ge = "Ge"
3856
+ As = "As"
3857
+ Se = "Se"
3858
+ Br = "Br"
3859
+ Kr = "Kr"
3860
+ Rb = "Rb"
3861
+ Sr = "Sr"
3862
+ Y = "Y"
3863
+ Zr = "Zr"
3864
+ Nb = "Nb"
3865
+ Mo = "Mo"
3866
+ Tc = "Tc"
3867
+ Ru = "Ru"
3868
+ Rh = "Rh"
3869
+ Pd = "Pd"
3870
+ Ag = "Ag"
3871
+ Cd = "Cd"
3872
+ In = "In"
3873
+ Sn = "Sn"
3874
+ Sb = "Sb"
3875
+ Te = "Te"
3876
+ I = "I"
3877
+ Xe = "Xe"
3878
+ Cs = "Cs"
3879
+ Ba = "Ba"
3880
+ La = "La"
3881
+ Ce = "Ce"
3882
+ Pr = "Pr"
3883
+ Nd = "Nd"
3884
+ Pm = "Pm"
3885
+ Sm = "Sm"
3886
+ Eu = "Eu"
3887
+ Gd = "Gd"
3888
+ Tb = "Tb"
3889
+ Dy = "Dy"
3890
+ Ho = "Ho"
3891
+ Er = "Er"
3892
+ Tm = "Tm"
3893
+ Yb = "Yb"
3894
+ Lu = "Lu"
3895
+ Hf = "Hf"
3896
+ Ta = "Ta"
3897
+ W = "W"
3898
+ Re = "Re"
3899
+ Os = "Os"
3900
+ Ir = "Ir"
3901
+ Pt = "Pt"
3902
+ Au = "Au"
3903
+ Hg = "Hg"
3904
+ Tl = "Tl"
3905
+ Pb = "Pb"
3906
+ Bi = "Bi"
3907
+ Po = "Po"
3908
+ At = "At"
3909
+ Rn = "Rn"
3910
+ Fr = "Fr"
3911
+ Ra = "Ra"
3912
+ Ac = "Ac"
3913
+ Th = "Th"
3914
+ Pa = "Pa"
3915
+ U = "U"
3916
+ Np = "Np"
3917
+ Pu = "Pu"
3918
+ Am = "Am"
3919
+ Cm = "Cm"
3920
+ Bk = "Bk"
3921
+ Cf = "Cf"
3922
+ Es = "Es"
3923
+ Fm = "Fm"
3924
+ Md = "Md"
3925
+ No = "No"
3926
+ Lr = "Lr"
3927
+ Rf = "Rf"
3928
+ Db = "Db"
3929
+ Sg = "Sg"
3930
+ Bh = "Bh"
3931
+ Hs = "Hs"
3932
+ Mt = "Mt"
3933
+ Ds = "Ds"
3934
+ Rg = "Rg"
3935
+ Cn = "Cn"
3936
+ Nh = "Nh"
3937
+ Fl = "Fl"
3938
+ Mc = "Mc"
3939
+ Lv = "Lv"
3940
+ Ts = "Ts"
3941
+ Og = "Og"
3942
+
3943
+
3944
+ class Value83(Enum):
3945
+ X = "X"
3946
+ Vac = "Vac"
3947
+
3948
+
3949
+ class AtomicElementSchema40(BaseModel):
3950
+ value: Union[Value82, Value83]
3951
+ """
3952
+ All elements, including extra elements
3953
+ """
3954
+ id: int
3955
+ """
3956
+ integer id of this entry
3957
+ """
3958
+
3959
+
3960
+ class BasisSchema38(BaseModel):
3961
+ elements: List[AtomicElementSchema40] = Field(..., title="atomic elements schema")
3962
+ """
3963
+ atomic elements schema
3964
+ """
3965
+ coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
3966
+ """
3967
+ atomic coordinates schema
3968
+ """
3969
+ units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
3970
+ labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
3971
+ """
3972
+ atomic labels schema
3973
+ """
3974
+
3975
+
3976
+ class LatticeVectorsSchema37(BaseModel):
3977
+ a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3978
+ b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3979
+ c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
3980
+ alat: Optional[float] = 1
3981
+ """
3982
+ lattice parameter for fractional coordinates
3983
+ """
3984
+ units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
3985
+
3986
+
3987
+ class LatticeUnitsSchema37(BaseModel):
3988
+ length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
3989
+ angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
3990
+
3991
+
3992
+ class LatticeSchema37(BaseModel):
3993
+ a: float
3994
+ """
3995
+ length of the first lattice vector
3996
+ """
3997
+ b: float
3998
+ """
3999
+ length of the second lattice vector
4000
+ """
4001
+ c: float
4002
+ """
4003
+ length of the third lattice vector
4004
+ """
4005
+ alpha: float
4006
+ """
4007
+ angle between first and second lattice vector
4008
+ """
4009
+ beta: float
4010
+ """
4011
+ angle between second and third lattice vector
4012
+ """
4013
+ gamma: float
4014
+ """
4015
+ angle between first and third lattice vector
4016
+ """
4017
+ vectors: Optional[LatticeVectorsSchema37] = Field(None, title="lattice vectors schema")
4018
+ type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
4019
+ units: Optional[LatticeUnitsSchema37] = Field(
4020
+ default_factory=lambda: LatticeUnitsSchema37.model_validate({"length": "angstrom", "angle": "degree"}),
4021
+ title="Lattice units schema",
4022
+ )
4023
+
4024
+
4025
+ class Name303(Enum):
4026
+ volume = "volume"
4027
+
4028
+
4029
+ class Units120(Enum):
4030
+ angstrom_3 = "angstrom^3"
4031
+
4032
+
4033
+ class VolumeSchema37(BaseModel):
4034
+ name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
4035
+ units: Optional[Units120] = None
4036
+ value: float
4037
+
4038
+
4039
+ class Name304(Enum):
4040
+ density = "density"
4041
+
4042
+
4043
+ class Units121(Enum):
4044
+ g_cm_3 = "g/cm^3"
4045
+
4046
+
4047
+ class DensitySchema37(BaseModel):
4048
+ name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
4049
+ units: Optional[Units121] = None
4050
+ value: float
4051
+
4052
+
4053
+ class Units122(Enum):
4054
+ angstrom = "angstrom"
4055
+
4056
+
4057
+ class ScalarSchema38(BaseModel):
4058
+ units: Optional[Units122] = None
4059
+ value: float
4060
+
4061
+
4062
+ class Name305(Enum):
4063
+ symmetry = "symmetry"
4064
+
4065
+
4066
+ class SymmetrySchema37(BaseModel):
4067
+ pointGroupSymbol: Optional[str] = None
4068
+ """
4069
+ point group symbol in Schoenflies notation
4070
+ """
4071
+ spaceGroupSymbol: Optional[str] = None
4072
+ """
4073
+ space group symbol in Hermann–Mauguin notation
4074
+ """
4075
+ tolerance: Optional[ScalarSchema38] = Field(None, title="scalar schema")
4076
+ """
4077
+ tolerance used for symmetry calculation
4078
+ """
4079
+ name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
4080
+
4081
+
4082
+ class Name306(Enum):
4083
+ elemental_ratio = "elemental_ratio"
4084
+
4085
+
4086
+ class ElementalRatio37(BaseModel):
4087
+ name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
4088
+ value: confloat(ge=0.0, le=1.0)
4089
+ element: Optional[str] = None
4090
+ """
4091
+ the element this ratio is for
4092
+ """
4093
+
4094
+
4095
+ class Name307(Enum):
4096
+ p_norm = "p-norm"
4097
+
4098
+
4099
+ class PNorm37(BaseModel):
4100
+ name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
4101
+ degree: Optional[int] = None
4102
+ """
4103
+ degree of the dimensionality of the norm
4104
+ """
4105
+ value: float
4106
+
4107
+
4108
+ class Name308(Enum):
4109
+ inchi = "inchi"
4110
+
4111
+
4112
+ class InChIRepresentationSchema37(BaseModel):
4113
+ name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
4114
+ value: str
4115
+
4116
+
4117
+ class Name309(Enum):
4118
+ inchi_key = "inchi_key"
4119
+
4120
+
4121
+ class InChIKeyRepresentationSchema37(BaseModel):
4122
+ name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
4123
+ value: str
4124
+
4125
+
4126
+ class DerivedPropertiesSchema37(
4127
+ RootModel[
4128
+ Union[
4129
+ VolumeSchema37,
4130
+ DensitySchema37,
4131
+ SymmetrySchema37,
4132
+ ElementalRatio37,
4133
+ PNorm37,
4134
+ InChIRepresentationSchema37,
4135
+ InChIKeyRepresentationSchema37,
4136
+ ]
4137
+ ]
4138
+ ):
4139
+ root: Union[
4140
+ VolumeSchema37,
4141
+ DensitySchema37,
4142
+ SymmetrySchema37,
4143
+ ElementalRatio37,
4144
+ PNorm37,
4145
+ InChIRepresentationSchema37,
4146
+ InChIKeyRepresentationSchema37,
4147
+ ] = Field(..., discriminator="name")
4148
+
4149
+
4150
+ class Name310(Enum):
4151
+ default = "default"
4152
+ atomsTooClose = "atomsTooClose"
4153
+ atomsOverlap = "atomsOverlap"
4154
+
4155
+
4156
+ class MaterialConsistencyCheckSchema37(BaseModel):
4157
+ name: Name310
4158
+ """
4159
+ Name of the consistency check that is performed, which is listed in an enum.
4160
+ """
4161
+ key: str
4162
+ """
4163
+ Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
4164
+ """
4165
+ severity: Severity
4166
+ """
4167
+ Severity level of the problem, which is used in UI to differentiate.
4168
+ """
4169
+ message: str
4170
+ """
4171
+ Message generated by the consistency check describing the problem.
4172
+ """
4173
+
4174
+
4175
+ class CrystalSchema37(BaseModel):
4176
+ formula: Optional[str] = None
4177
+ """
4178
+ reduced chemical formula
4179
+ """
4180
+ unitCellFormula: Optional[str] = None
4181
+ """
4182
+ chemical formula based on the number of atoms of each element in the supercell
4183
+ """
4184
+ basis: BasisSchema38 = Field(..., title="basis schema")
4185
+ lattice: LatticeSchema37 = Field(..., title="lattice schema")
4186
+ derivedProperties: Optional[List[DerivedPropertiesSchema37]] = Field(None, title="derived properties schema")
4187
+ external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
4188
+ """
4189
+ information about a database source
4190
+ """
4191
+ src: Optional[FileSourceSchema] = Field(None, title="file source schema")
4192
+ """
4193
+ file source with the information inside
4194
+ """
4195
+ scaledHash: Optional[str] = None
4196
+ """
4197
+ Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
4198
+ """
4199
+ icsdId: Optional[int] = None
4200
+ """
4201
+ Corresponding ICSD id of the material
4202
+ """
4203
+ isNonPeriodic: Optional[bool] = None
4204
+ """
4205
+ Whether to work in the finite molecular picture (usually with atomic orbital basis)
4206
+ """
4207
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema37]] = None
4208
+ field_id: Optional[str] = Field(None, alias="_id")
4209
+ """
4210
+ entity identity
4211
+ """
4212
+ slug: Optional[str] = None
4213
+ """
4214
+ entity slug
4215
+ """
4216
+ systemName: Optional[str] = None
4217
+ schemaVersion: Optional[str] = "2022.8.16"
4218
+ """
4219
+ entity's schema version. Used to distinct between different schemas.
4220
+ """
4221
+ name: Optional[str] = None
4222
+ """
4223
+ entity name
4224
+ """
4225
+ isDefault: Optional[bool] = False
4226
+ """
4227
+ Identifies that entity is defaultable
4228
+ """
4229
+ metadata: Optional[Dict[str, Any]] = None
4230
+
4231
+
4232
+ class VacuumConfigurationSchema17(BaseModel):
4233
+ direction: AxisEnum = Field(..., title="Axis Enum")
4234
+ """
4235
+ Enum for axis types
4236
+ """
4237
+ size: Optional[confloat(ge=0.0)] = 10
4238
+ """
4239
+ Size of the vacuum slab in angstroms
4240
+ """
4241
+ crystal: CrystalSchema37 = Field(..., title="Crystal Schema")
4242
+ """
4243
+ A crystal structure, referencing the base material schema
4244
+ """
4245
+
4246
+
4247
+ class GrainBoundaryLinearConfigurationSchema(BaseModel):
4248
+ stack_components: List[
4249
+ Union[
4250
+ Union[SlabConfigurationSchema, SlabStrainedSupercellConfigurationSchema],
4251
+ Union[SlabConfigurationSchema8, SlabStrainedSupercellConfigurationSchema3],
4252
+ VacuumConfigurationSchema17,
4253
+ ]
4254
+ ] = Field(..., max_length=2, min_length=2)
4255
+ """
4256
+ Components of the interface: slab, slab and vacuum
4257
+ """
4258
+ direction: Optional[AxisEnum] = Field("x", title="Axis Enum")
4259
+ """
4260
+ Enum for axis types
4261
+ """
4262
+ actual_angle: Optional[confloat(ge=0.0, le=360.0)] = None
4263
+ """
4264
+ The actual angle between the two phases
4265
+ """
4266
+ xy_shift: Optional[List[float]] = Field([0, 0], max_length=2, min_length=2, title="vector 2d schema")
4267
+ """
4268
+ xy shift for the film as cartesian 2D vector on the xy plane.
4269
+ """
4270
+ gaps: Optional[List[ObjectWithId]] = None
4271
+ """
4272
+ Gap distances between stack components as an array of objects with id and value
4273
+ """