mat3ra-esse 2025.5.17.post0__py3-none-any.whl → 2025.5.17.post2__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 (84) 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/coordinates_shape_enum.py +15 -0
  5. mat3ra/esse/models/core/reusable/axis_enum.py +13 -0
  6. mat3ra/esse/models/core/reusable/coordinate_conditions/base.py +21 -0
  7. mat3ra/esse/models/core/reusable/coordinate_conditions/box.py +24 -0
  8. mat3ra/esse/models/core/reusable/coordinate_conditions/cylinder.py +26 -0
  9. mat3ra/esse/models/core/reusable/coordinate_conditions/enum.py +15 -0
  10. mat3ra/esse/models/core/reusable/coordinate_conditions/plane.py +24 -0
  11. mat3ra/esse/models/core/reusable/coordinate_conditions/sphere.py +24 -0
  12. mat3ra/esse/models/core/reusable/coordinate_conditions/triangular_prism.py +27 -0
  13. mat3ra/esse/models/core/reusable/energy.py +2 -2
  14. mat3ra/esse/models/element.py +6 -6
  15. mat3ra/esse/models/material/__init__.py +14 -14
  16. mat3ra/esse/models/material/reusable/coordinate_conditions/base.py +21 -0
  17. mat3ra/esse/models/material/reusable/coordinate_conditions/box.py +24 -0
  18. mat3ra/esse/models/material/reusable/coordinate_conditions/cylinder.py +26 -0
  19. mat3ra/esse/models/material/reusable/coordinate_conditions/plane.py +24 -0
  20. mat3ra/esse/models/material/reusable/coordinate_conditions/sphere.py +24 -0
  21. mat3ra/esse/models/material/reusable/coordinate_conditions/triangular_prism.py +27 -0
  22. mat3ra/esse/models/{materials_category/defects/slab/configuration.py → material/reusable/slab/slab_configuration_with_termination.py} +195 -18
  23. mat3ra/esse/models/{materials_category/defects/zero_dimensional/adatom/configuration.py → material/reusable/slab/slab_with_termination.py} +198 -23
  24. mat3ra/esse/models/material/reusable/slab/two_slabs_stack.py +618 -0
  25. mat3ra/esse/models/{materials_category/defects/zero_dimensional/adatom/base_configuration.py → material/reusable/slab_configuration_with_termination.py} +318 -24
  26. mat3ra/esse/models/material/reusable/stack/slab_configuration_with_termination.py +593 -0
  27. mat3ra/esse/models/material/reusable/stack/slab_in_stack.py +720 -0
  28. mat3ra/esse/models/material/reusable/stack/stack_of_slabs.py +737 -0
  29. mat3ra/esse/models/material/reusable/stack/stack_of_two_slabs.py +737 -0
  30. mat3ra/esse/models/material/reusable/supercell/supercell_matrix_2d.py +25 -0
  31. mat3ra/esse/models/material/reusable/supercell/supercell_matrix_3d.py +27 -0
  32. mat3ra/esse/models/materials_category/defects/by_host/two_dimensional/adatom/configuration.py +14 -14
  33. mat3ra/esse/models/materials_category/defects/{zero_dimensional/slab → by_host/two_dimensional/layered}/configuration.py +149 -34
  34. mat3ra/esse/models/materials_category/defects/by_host/two_dimensional/{configuration.py → point/configuration.py} +19 -15
  35. mat3ra/esse/models/materials_category/defects/configuration.py +18 -14
  36. mat3ra/esse/models/materials_category/defects/one_dimensional/terrace/configuration.py +157 -19
  37. mat3ra/esse/models/materials_category/defects/two_dimensional/{slab_grain_boundary → grain_boundary_plane}/configuration.py +499 -404
  38. mat3ra/esse/models/materials_category/defects/two_dimensional/island/condition_json.py +28 -0
  39. mat3ra/esse/models/materials_category/defects/two_dimensional/island/configuration.py +163 -48
  40. mat3ra/esse/models/materials_category/defects/zero_dimensional/complex/pair/__init__.py +3 -0
  41. mat3ra/esse/models/materials_category/defects/zero_dimensional/complex/{pair.py → pair/configuration.py} +137 -133
  42. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/configuration.py +14 -14
  43. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/interstitial/configuration.py +14 -14
  44. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/substitution/configuration.py +14 -14
  45. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/vacancy/configuration.py +14 -14
  46. mat3ra/esse/models/materials_category/multi_material/interfaces/__init__.py +3 -0
  47. mat3ra/esse/models/materials_category/multi_material/interfaces/configuration.py +737 -0
  48. mat3ra/esse/models/materials_category/single_material/two_dimensional/slab/configuration.py +17 -21
  49. mat3ra/esse/models/properties_directory/derived_properties.py +11 -11
  50. mat3ra/esse/models/properties_directory/non_scalar/density_of_states.py +2 -2
  51. mat3ra/esse/models/properties_directory/non_scalar/phonon_dispersions.py +2 -2
  52. mat3ra/esse/models/properties_directory/non_scalar/phonon_dos.py +2 -2
  53. mat3ra/esse/models/properties_directory/non_scalar/total_energy_contributions.py +50 -50
  54. mat3ra/esse/models/properties_directory/non_scalar/vibrational_spectrum.py +2 -2
  55. mat3ra/esse/models/properties_directory/scalar/electron_affinity.py +2 -2
  56. mat3ra/esse/models/properties_directory/scalar/fermi_energy.py +2 -2
  57. mat3ra/esse/models/properties_directory/scalar/formation_energy.py +2 -2
  58. mat3ra/esse/models/properties_directory/scalar/ionization_potential.py +2 -2
  59. mat3ra/esse/models/properties_directory/scalar/reaction_energy_barrier.py +2 -2
  60. mat3ra/esse/models/properties_directory/scalar/surface_energy.py +2 -2
  61. mat3ra/esse/models/properties_directory/scalar/total_energy.py +2 -2
  62. mat3ra/esse/models/properties_directory/scalar/valence_band_offset.py +2 -2
  63. mat3ra/esse/models/properties_directory/scalar/zero_point_energy.py +2 -2
  64. mat3ra/esse/models/properties_directory/structural/molecular_pattern.py +4 -4
  65. mat3ra/esse/models/properties_directory/workflow/convergence/ionic.py +2 -2
  66. {mat3ra_esse-2025.5.17.post0.dist-info → mat3ra_esse-2025.5.17.post2.dist-info}/METADATA +1 -1
  67. {mat3ra_esse-2025.5.17.post0.dist-info → mat3ra_esse-2025.5.17.post2.dist-info}/RECORD +77 -58
  68. mat3ra/esse/models/materials_category/defects/enums/atom_placement_method.py +0 -22
  69. mat3ra/esse/models/materials_category/defects/enums/complex_defect_type.py +0 -18
  70. mat3ra/esse/models/materials_category/defects/enums/coordinates_shape.py +0 -21
  71. mat3ra/esse/models/materials_category/defects/enums/slab_defect_type.py +0 -19
  72. mat3ra/esse/models/materials_category/defects/enums.py +0 -13
  73. mat3ra/esse/models/materials_category/defects/zero_dimensional/defect_pair/configuration.py +0 -1026
  74. mat3ra/esse/models/materials_category/defects/zero_dimensional/point/base_configuration.py +0 -30
  75. /mat3ra/esse/models/{materials_category/defects/by_host/two_dimensional → core/reusable/coordinate_conditions}/__init__.py +0 -0
  76. /mat3ra/esse/models/{materials_category/defects/slab → material/reusable/coordinate_conditions}/__init__.py +0 -0
  77. /mat3ra/esse/models/{materials_category/defects/two_dimensional/slab_grain_boundary → material/reusable/stack}/__init__.py +0 -0
  78. /mat3ra/esse/models/{materials_category/defects/zero_dimensional/adatom → material/reusable/supercell}/__init__.py +0 -0
  79. /mat3ra/esse/models/materials_category/defects/{zero_dimensional/complex → by_host/two_dimensional/layered}/__init__.py +0 -0
  80. /mat3ra/esse/models/materials_category/defects/{zero_dimensional/defect_pair → by_host/two_dimensional/point}/__init__.py +0 -0
  81. /mat3ra/esse/models/materials_category/defects/{zero_dimensional/slab → two_dimensional/grain_boundary_plane}/__init__.py +0 -0
  82. {mat3ra_esse-2025.5.17.post0.dist-info → mat3ra_esse-2025.5.17.post2.dist-info}/WHEEL +0 -0
  83. {mat3ra_esse-2025.5.17.post0.dist-info → mat3ra_esse-2025.5.17.post2.dist-info}/licenses/LICENSE.md +0 -0
  84. {mat3ra_esse-2025.5.17.post0.dist-info → mat3ra_esse-2025.5.17.post2.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: materials_category/defects/two_dimensional/slab_grain_boundary/configuration.json
2
+ # filename: materials_category/defects/two_dimensional/grain_boundary_plane/configuration.json
3
3
  # version: 0.28.5
4
4
 
5
5
  from __future__ import annotations
@@ -7,13 +7,145 @@ from __future__ import annotations
7
7
  from enum import Enum
8
8
  from typing import Any, Dict, List, Literal, Optional, Union
9
9
 
10
- from pydantic import BaseModel, Field, RootModel, confloat, conint
10
+ from pydantic import BaseModel, Field, RootModel, confloat, conint, constr
11
+
12
+
13
+ class AxisEnum(Enum):
14
+ x = "x"
15
+ y = "y"
16
+ z = "z"
17
+
18
+
19
+ class Value(Enum):
20
+ H = "H"
21
+ He = "He"
22
+ Li = "Li"
23
+ Be = "Be"
24
+ B = "B"
25
+ C = "C"
26
+ N = "N"
27
+ O = "O"
28
+ F = "F"
29
+ Ne = "Ne"
30
+ Na = "Na"
31
+ Mg = "Mg"
32
+ Al = "Al"
33
+ Si = "Si"
34
+ P = "P"
35
+ S = "S"
36
+ Cl = "Cl"
37
+ Ar = "Ar"
38
+ K = "K"
39
+ Ca = "Ca"
40
+ Sc = "Sc"
41
+ Ti = "Ti"
42
+ V = "V"
43
+ Cr = "Cr"
44
+ Mn = "Mn"
45
+ Fe = "Fe"
46
+ Co = "Co"
47
+ Ni = "Ni"
48
+ Cu = "Cu"
49
+ Zn = "Zn"
50
+ Ga = "Ga"
51
+ Ge = "Ge"
52
+ As = "As"
53
+ Se = "Se"
54
+ Br = "Br"
55
+ Kr = "Kr"
56
+ Rb = "Rb"
57
+ Sr = "Sr"
58
+ Y = "Y"
59
+ Zr = "Zr"
60
+ Nb = "Nb"
61
+ Mo = "Mo"
62
+ Tc = "Tc"
63
+ Ru = "Ru"
64
+ Rh = "Rh"
65
+ Pd = "Pd"
66
+ Ag = "Ag"
67
+ Cd = "Cd"
68
+ In = "In"
69
+ Sn = "Sn"
70
+ Sb = "Sb"
71
+ Te = "Te"
72
+ I = "I"
73
+ Xe = "Xe"
74
+ Cs = "Cs"
75
+ Ba = "Ba"
76
+ La = "La"
77
+ Ce = "Ce"
78
+ Pr = "Pr"
79
+ Nd = "Nd"
80
+ Pm = "Pm"
81
+ Sm = "Sm"
82
+ Eu = "Eu"
83
+ Gd = "Gd"
84
+ Tb = "Tb"
85
+ Dy = "Dy"
86
+ Ho = "Ho"
87
+ Er = "Er"
88
+ Tm = "Tm"
89
+ Yb = "Yb"
90
+ Lu = "Lu"
91
+ Hf = "Hf"
92
+ Ta = "Ta"
93
+ W = "W"
94
+ Re = "Re"
95
+ Os = "Os"
96
+ Ir = "Ir"
97
+ Pt = "Pt"
98
+ Au = "Au"
99
+ Hg = "Hg"
100
+ Tl = "Tl"
101
+ Pb = "Pb"
102
+ Bi = "Bi"
103
+ Po = "Po"
104
+ At = "At"
105
+ Rn = "Rn"
106
+ Fr = "Fr"
107
+ Ra = "Ra"
108
+ Ac = "Ac"
109
+ Th = "Th"
110
+ Pa = "Pa"
111
+ U = "U"
112
+ Np = "Np"
113
+ Pu = "Pu"
114
+ Am = "Am"
115
+ Cm = "Cm"
116
+ Bk = "Bk"
117
+ Cf = "Cf"
118
+ Es = "Es"
119
+ Fm = "Fm"
120
+ Md = "Md"
121
+ No = "No"
122
+ Lr = "Lr"
123
+ Rf = "Rf"
124
+ Db = "Db"
125
+ Sg = "Sg"
126
+ Bh = "Bh"
127
+ Hs = "Hs"
128
+ Mt = "Mt"
129
+ Ds = "Ds"
130
+ Rg = "Rg"
131
+ Cn = "Cn"
132
+ Nh = "Nh"
133
+ Fl = "Fl"
134
+ Mc = "Mc"
135
+ Lv = "Lv"
136
+ Ts = "Ts"
137
+ Og = "Og"
138
+
139
+
140
+ class Value33(Enum):
141
+ X = "X"
142
+ Vac = "Vac"
11
143
 
12
144
 
13
145
  class AtomicElementSchema(BaseModel):
14
- value: str
146
+ value: Union[Value, Value33]
15
147
  """
16
- value of this entry
148
+ All elements, including extra elements
17
149
  """
18
150
  id: int
19
151
  """
@@ -159,30 +291,30 @@ class VolumeSchema(BaseModel):
159
291
  value: float
160
292
 
161
293
 
162
- class Name80(Enum):
294
+ class Name104(Enum):
163
295
  density = "density"
164
296
 
165
297
 
166
- class Units37(Enum):
298
+ class Units46(Enum):
167
299
  g_cm_3 = "g/cm^3"
168
300
 
169
301
 
170
302
  class DensitySchema(BaseModel):
171
303
  name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
172
- units: Optional[Units37] = None
304
+ units: Optional[Units46] = None
173
305
  value: float
174
306
 
175
307
 
176
- class Units38(Enum):
308
+ class Units47(Enum):
177
309
  angstrom = "angstrom"
178
310
 
179
311
 
180
312
  class ScalarSchema(BaseModel):
181
- units: Optional[Units38] = None
313
+ units: Optional[Units47] = None
182
314
  value: float
183
315
 
184
316
 
185
- class Name81(Enum):
317
+ class Name105(Enum):
186
318
  symmetry = "symmetry"
187
319
 
188
320
 
@@ -202,7 +334,7 @@ class SymmetrySchema(BaseModel):
202
334
  name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
203
335
 
204
336
 
205
- class Name82(Enum):
337
+ class Name106(Enum):
206
338
  elemental_ratio = "elemental_ratio"
207
339
 
208
340
 
@@ -215,7 +347,7 @@ class ElementalRatio(BaseModel):
215
347
  """
216
348
 
217
349
 
218
- class Name83(Enum):
350
+ class Name107(Enum):
219
351
  p_norm = "p-norm"
220
352
 
221
353
 
@@ -228,7 +360,7 @@ class PNorm(BaseModel):
228
360
  value: float
229
361
 
230
362
 
231
- class Name84(Enum):
363
+ class Name108(Enum):
232
364
  inchi = "inchi"
233
365
 
234
366
 
@@ -237,7 +369,7 @@ class InChIRepresentationSchema(BaseModel):
237
369
  value: str
238
370
 
239
371
 
240
- class Name85(Enum):
372
+ class Name109(Enum):
241
373
  inchi_key = "inchi_key"
242
374
 
243
375
 
@@ -316,7 +448,7 @@ class FileSourceSchema(BaseModel):
316
448
  """
317
449
 
318
450
 
319
- class Name86(Enum):
451
+ class Name110(Enum):
320
452
  default = "default"
321
453
  atomsTooClose = "atomsTooClose"
322
454
  atomsOverlap = "atomsOverlap"
@@ -329,7 +461,7 @@ class Severity(Enum):
329
461
 
330
462
 
331
463
  class MaterialConsistencyCheckSchema(BaseModel):
332
- name: Name86
464
+ name: Name110
333
465
  """
334
466
  Name of the consistency check that is performed, which is listed in an enum.
335
467
  """
@@ -433,20 +565,287 @@ class SlabConfigurationSchema(BaseModel):
433
565
  """
434
566
  use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell")
435
567
  """
436
- Whether to use conventional cell
568
+ Whether to use conventional cell when generating the slab.
569
+ """
570
+ use_orthogonal_z: Optional[bool] = Field(True, title="Use Orthogonal Z")
571
+ """
572
+ Whether to make vector c orthogonal to ab plane for the slab cell.
573
+ """
574
+
575
+
576
+ class ChemicalElements(Enum):
577
+ H = "H"
578
+ He = "He"
579
+ Li = "Li"
580
+ Be = "Be"
581
+ B = "B"
582
+ C = "C"
583
+ N = "N"
584
+ O = "O"
585
+ F = "F"
586
+ Ne = "Ne"
587
+ Na = "Na"
588
+ Mg = "Mg"
589
+ Al = "Al"
590
+ Si = "Si"
591
+ P = "P"
592
+ S = "S"
593
+ Cl = "Cl"
594
+ Ar = "Ar"
595
+ K = "K"
596
+ Ca = "Ca"
597
+ Sc = "Sc"
598
+ Ti = "Ti"
599
+ V = "V"
600
+ Cr = "Cr"
601
+ Mn = "Mn"
602
+ Fe = "Fe"
603
+ Co = "Co"
604
+ Ni = "Ni"
605
+ Cu = "Cu"
606
+ Zn = "Zn"
607
+ Ga = "Ga"
608
+ Ge = "Ge"
609
+ As = "As"
610
+ Se = "Se"
611
+ Br = "Br"
612
+ Kr = "Kr"
613
+ Rb = "Rb"
614
+ Sr = "Sr"
615
+ Y = "Y"
616
+ Zr = "Zr"
617
+ Nb = "Nb"
618
+ Mo = "Mo"
619
+ Tc = "Tc"
620
+ Ru = "Ru"
621
+ Rh = "Rh"
622
+ Pd = "Pd"
623
+ Ag = "Ag"
624
+ Cd = "Cd"
625
+ In = "In"
626
+ Sn = "Sn"
627
+ Sb = "Sb"
628
+ Te = "Te"
629
+ I = "I"
630
+ Xe = "Xe"
631
+ Cs = "Cs"
632
+ Ba = "Ba"
633
+ La = "La"
634
+ Ce = "Ce"
635
+ Pr = "Pr"
636
+ Nd = "Nd"
637
+ Pm = "Pm"
638
+ Sm = "Sm"
639
+ Eu = "Eu"
640
+ Gd = "Gd"
641
+ Tb = "Tb"
642
+ Dy = "Dy"
643
+ Ho = "Ho"
644
+ Er = "Er"
645
+ Tm = "Tm"
646
+ Yb = "Yb"
647
+ Lu = "Lu"
648
+ Hf = "Hf"
649
+ Ta = "Ta"
650
+ W = "W"
651
+ Re = "Re"
652
+ Os = "Os"
653
+ Ir = "Ir"
654
+ Pt = "Pt"
655
+ Au = "Au"
656
+ Hg = "Hg"
657
+ Tl = "Tl"
658
+ Pb = "Pb"
659
+ Bi = "Bi"
660
+ Po = "Po"
661
+ At = "At"
662
+ Rn = "Rn"
663
+ Fr = "Fr"
664
+ Ra = "Ra"
665
+ Ac = "Ac"
666
+ Th = "Th"
667
+ Pa = "Pa"
668
+ U = "U"
669
+ Np = "Np"
670
+ Pu = "Pu"
671
+ Am = "Am"
672
+ Cm = "Cm"
673
+ Bk = "Bk"
674
+ Cf = "Cf"
675
+ Es = "Es"
676
+ Fm = "Fm"
677
+ Md = "Md"
678
+ No = "No"
679
+ Lr = "Lr"
680
+ Rf = "Rf"
681
+ Db = "Db"
682
+ Sg = "Sg"
683
+ Bh = "Bh"
684
+ Hs = "Hs"
685
+ Mt = "Mt"
686
+ Ds = "Ds"
687
+ Rg = "Rg"
688
+ Cn = "Cn"
689
+ Nh = "Nh"
690
+ Fl = "Fl"
691
+ Mc = "Mc"
692
+ Lv = "Lv"
693
+ Ts = "Ts"
694
+ Og = "Og"
695
+
696
+
697
+ class TerminationSchema(BaseModel):
698
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^[A-Z][a-z]?([A-Z][a-z]?)*$")] = Field(
699
+ ..., title="Chemical Elements"
700
+ )
701
+ """
702
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
703
+ """
704
+ space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
437
705
  """
438
- use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z")
706
+ Space group symmetry designation for the termination
439
707
  """
440
- Whether to make z-axis orthogonal
708
+
709
+
710
+ class Value34(Enum):
711
+ H = "H"
712
+ He = "He"
713
+ Li = "Li"
714
+ Be = "Be"
715
+ B = "B"
716
+ C = "C"
717
+ N = "N"
718
+ O = "O"
719
+ F = "F"
720
+ Ne = "Ne"
721
+ Na = "Na"
722
+ Mg = "Mg"
723
+ Al = "Al"
724
+ Si = "Si"
725
+ P = "P"
726
+ S = "S"
727
+ Cl = "Cl"
728
+ Ar = "Ar"
729
+ K = "K"
730
+ Ca = "Ca"
731
+ Sc = "Sc"
732
+ Ti = "Ti"
733
+ V = "V"
734
+ Cr = "Cr"
735
+ Mn = "Mn"
736
+ Fe = "Fe"
737
+ Co = "Co"
738
+ Ni = "Ni"
739
+ Cu = "Cu"
740
+ Zn = "Zn"
741
+ Ga = "Ga"
742
+ Ge = "Ge"
743
+ As = "As"
744
+ Se = "Se"
745
+ Br = "Br"
746
+ Kr = "Kr"
747
+ Rb = "Rb"
748
+ Sr = "Sr"
749
+ Y = "Y"
750
+ Zr = "Zr"
751
+ Nb = "Nb"
752
+ Mo = "Mo"
753
+ Tc = "Tc"
754
+ Ru = "Ru"
755
+ Rh = "Rh"
756
+ Pd = "Pd"
757
+ Ag = "Ag"
758
+ Cd = "Cd"
759
+ In = "In"
760
+ Sn = "Sn"
761
+ Sb = "Sb"
762
+ Te = "Te"
763
+ I = "I"
764
+ Xe = "Xe"
765
+ Cs = "Cs"
766
+ Ba = "Ba"
767
+ La = "La"
768
+ Ce = "Ce"
769
+ Pr = "Pr"
770
+ Nd = "Nd"
771
+ Pm = "Pm"
772
+ Sm = "Sm"
773
+ Eu = "Eu"
774
+ Gd = "Gd"
775
+ Tb = "Tb"
776
+ Dy = "Dy"
777
+ Ho = "Ho"
778
+ Er = "Er"
779
+ Tm = "Tm"
780
+ Yb = "Yb"
781
+ Lu = "Lu"
782
+ Hf = "Hf"
783
+ Ta = "Ta"
784
+ W = "W"
785
+ Re = "Re"
786
+ Os = "Os"
787
+ Ir = "Ir"
788
+ Pt = "Pt"
789
+ Au = "Au"
790
+ Hg = "Hg"
791
+ Tl = "Tl"
792
+ Pb = "Pb"
793
+ Bi = "Bi"
794
+ Po = "Po"
795
+ At = "At"
796
+ Rn = "Rn"
797
+ Fr = "Fr"
798
+ Ra = "Ra"
799
+ Ac = "Ac"
800
+ Th = "Th"
801
+ Pa = "Pa"
802
+ U = "U"
803
+ Np = "Np"
804
+ Pu = "Pu"
805
+ Am = "Am"
806
+ Cm = "Cm"
807
+ Bk = "Bk"
808
+ Cf = "Cf"
809
+ Es = "Es"
810
+ Fm = "Fm"
811
+ Md = "Md"
812
+ No = "No"
813
+ Lr = "Lr"
814
+ Rf = "Rf"
815
+ Db = "Db"
816
+ Sg = "Sg"
817
+ Bh = "Bh"
818
+ Hs = "Hs"
819
+ Mt = "Mt"
820
+ Ds = "Ds"
821
+ Rg = "Rg"
822
+ Cn = "Cn"
823
+ Nh = "Nh"
824
+ Fl = "Fl"
825
+ Mc = "Mc"
826
+ Lv = "Lv"
827
+ Ts = "Ts"
828
+ Og = "Og"
829
+
830
+
831
+ class Value35(Enum):
832
+ X = "X"
833
+ Vac = "Vac"
834
+
835
+
836
+ class AtomicElementSchema16(BaseModel):
837
+ value: Union[Value34, Value35]
838
+ """
839
+ All elements, including extra elements
441
840
  """
442
- make_primitive: Optional[bool] = Field(False, title="Make Primitive")
841
+ id: int
443
842
  """
444
- Whether to make the slab primitive
843
+ integer id of this entry
445
844
  """
446
845
 
447
846
 
448
- class BasisSchema11(BaseModel):
449
- elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
847
+ class BasisSchema14(BaseModel):
848
+ elements: List[AtomicElementSchema16] = Field(..., title="atomic elements schema")
450
849
  """
451
850
  atomic elements schema
452
851
  """
@@ -461,7 +860,7 @@ class BasisSchema11(BaseModel):
461
860
  """
462
861
 
463
862
 
464
- class LatticeVectorsSchema10(BaseModel):
863
+ class LatticeVectorsSchema13(BaseModel):
465
864
  a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
466
865
  b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
467
866
  c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
@@ -472,12 +871,12 @@ class LatticeVectorsSchema10(BaseModel):
472
871
  units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
473
872
 
474
873
 
475
- class LatticeUnitsSchema10(BaseModel):
874
+ class LatticeUnitsSchema13(BaseModel):
476
875
  length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
477
876
  angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
478
877
 
479
878
 
480
- class LatticeSchema10(BaseModel):
879
+ class LatticeSchema13(BaseModel):
481
880
  a: float
482
881
  """
483
882
  length of the first lattice vector
@@ -502,56 +901,56 @@ class LatticeSchema10(BaseModel):
502
901
  """
503
902
  angle between first and third lattice vector
504
903
  """
505
- vectors: Optional[LatticeVectorsSchema10] = Field(None, title="lattice vectors schema")
904
+ vectors: Optional[LatticeVectorsSchema13] = Field(None, title="lattice vectors schema")
506
905
  type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
507
- units: Optional[LatticeUnitsSchema10] = Field(
508
- default_factory=lambda: LatticeUnitsSchema10.model_validate({"length": "angstrom", "angle": "degree"}),
906
+ units: Optional[LatticeUnitsSchema13] = Field(
907
+ default_factory=lambda: LatticeUnitsSchema13.model_validate({"length": "angstrom", "angle": "degree"}),
509
908
  title="Lattice units schema",
510
909
  )
511
910
 
512
911
 
513
- class Name87(Enum):
912
+ class Name111(Enum):
514
913
  volume = "volume"
515
914
 
516
915
 
517
- class Units39(Enum):
916
+ class Units48(Enum):
518
917
  angstrom_3 = "angstrom^3"
519
918
 
520
919
 
521
- class VolumeSchema10(BaseModel):
920
+ class VolumeSchema13(BaseModel):
522
921
  name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
523
- units: Optional[Units39] = None
922
+ units: Optional[Units48] = None
524
923
  value: float
525
924
 
526
925
 
527
- class Name88(Enum):
926
+ class Name112(Enum):
528
927
  density = "density"
529
928
 
530
929
 
531
- class Units40(Enum):
930
+ class Units49(Enum):
532
931
  g_cm_3 = "g/cm^3"
533
932
 
534
933
 
535
- class DensitySchema10(BaseModel):
934
+ class DensitySchema13(BaseModel):
536
935
  name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
537
- units: Optional[Units40] = None
936
+ units: Optional[Units49] = None
538
937
  value: float
539
938
 
540
939
 
541
- class Units41(Enum):
940
+ class Units50(Enum):
542
941
  angstrom = "angstrom"
543
942
 
544
943
 
545
- class ScalarSchema11(BaseModel):
546
- units: Optional[Units41] = None
944
+ class ScalarSchema14(BaseModel):
945
+ units: Optional[Units50] = None
547
946
  value: float
548
947
 
549
948
 
550
- class Name89(Enum):
949
+ class Name113(Enum):
551
950
  symmetry = "symmetry"
552
951
 
553
952
 
554
- class SymmetrySchema10(BaseModel):
953
+ class SymmetrySchema13(BaseModel):
555
954
  pointGroupSymbol: Optional[str] = None
556
955
  """
557
956
  point group symbol in Schoenflies notation
@@ -560,18 +959,18 @@ class SymmetrySchema10(BaseModel):
560
959
  """
561
960
  space group symbol in Hermann–Mauguin notation
562
961
  """
563
- tolerance: Optional[ScalarSchema11] = Field(None, title="scalar schema")
962
+ tolerance: Optional[ScalarSchema14] = Field(None, title="scalar schema")
564
963
  """
565
964
  tolerance used for symmetry calculation
566
965
  """
567
966
  name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
568
967
 
569
968
 
570
- class Name90(Enum):
969
+ class Name114(Enum):
571
970
  elemental_ratio = "elemental_ratio"
572
971
 
573
972
 
574
- class ElementalRatio10(BaseModel):
973
+ class ElementalRatio13(BaseModel):
575
974
  name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
576
975
  value: confloat(ge=0.0, le=1.0)
577
976
  element: Optional[str] = None
@@ -580,11 +979,11 @@ class ElementalRatio10(BaseModel):
580
979
  """
581
980
 
582
981
 
583
- class Name91(Enum):
982
+ class Name115(Enum):
584
983
  p_norm = "p-norm"
585
984
 
586
985
 
587
- class PNorm10(BaseModel):
986
+ class PNorm13(BaseModel):
588
987
  name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
589
988
  degree: Optional[int] = None
590
989
  """
@@ -593,56 +992,56 @@ class PNorm10(BaseModel):
593
992
  value: float
594
993
 
595
994
 
596
- class Name92(Enum):
995
+ class Name116(Enum):
597
996
  inchi = "inchi"
598
997
 
599
998
 
600
- class InChIRepresentationSchema10(BaseModel):
999
+ class InChIRepresentationSchema13(BaseModel):
601
1000
  name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
602
1001
  value: str
603
1002
 
604
1003
 
605
- class Name93(Enum):
1004
+ class Name117(Enum):
606
1005
  inchi_key = "inchi_key"
607
1006
 
608
1007
 
609
- class InChIKeyRepresentationSchema10(BaseModel):
1008
+ class InChIKeyRepresentationSchema13(BaseModel):
610
1009
  name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
611
1010
  value: str
612
1011
 
613
1012
 
614
- class DerivedPropertiesSchema10(
1013
+ class DerivedPropertiesSchema13(
615
1014
  RootModel[
616
1015
  Union[
617
- VolumeSchema10,
618
- DensitySchema10,
619
- SymmetrySchema10,
620
- ElementalRatio10,
621
- PNorm10,
622
- InChIRepresentationSchema10,
623
- InChIKeyRepresentationSchema10,
1016
+ VolumeSchema13,
1017
+ DensitySchema13,
1018
+ SymmetrySchema13,
1019
+ ElementalRatio13,
1020
+ PNorm13,
1021
+ InChIRepresentationSchema13,
1022
+ InChIKeyRepresentationSchema13,
624
1023
  ]
625
1024
  ]
626
1025
  ):
627
1026
  root: Union[
628
- VolumeSchema10,
629
- DensitySchema10,
630
- SymmetrySchema10,
631
- ElementalRatio10,
632
- PNorm10,
633
- InChIRepresentationSchema10,
634
- InChIKeyRepresentationSchema10,
1027
+ VolumeSchema13,
1028
+ DensitySchema13,
1029
+ SymmetrySchema13,
1030
+ ElementalRatio13,
1031
+ PNorm13,
1032
+ InChIRepresentationSchema13,
1033
+ InChIKeyRepresentationSchema13,
635
1034
  ] = Field(..., discriminator="name")
636
1035
 
637
1036
 
638
- class Name94(Enum):
1037
+ class Name118(Enum):
639
1038
  default = "default"
640
1039
  atomsTooClose = "atomsTooClose"
641
1040
  atomsOverlap = "atomsOverlap"
642
1041
 
643
1042
 
644
- class MaterialConsistencyCheckSchema10(BaseModel):
645
- name: Name94
1043
+ class MaterialConsistencyCheckSchema13(BaseModel):
1044
+ name: Name118
646
1045
  """
647
1046
  Name of the consistency check that is performed, which is listed in an enum.
648
1047
  """
@@ -660,7 +1059,7 @@ class MaterialConsistencyCheckSchema10(BaseModel):
660
1059
  """
661
1060
 
662
1061
 
663
- class MaterialSchema10(BaseModel):
1062
+ class MaterialSchema13(BaseModel):
664
1063
  formula: Optional[str] = None
665
1064
  """
666
1065
  reduced chemical formula
@@ -669,9 +1068,9 @@ class MaterialSchema10(BaseModel):
669
1068
  """
670
1069
  chemical formula based on the number of atoms of each element in the supercell
671
1070
  """
672
- basis: BasisSchema11 = Field(..., title="basis schema")
673
- lattice: LatticeSchema10 = Field(..., title="lattice schema")
674
- derivedProperties: Optional[List[DerivedPropertiesSchema10]] = Field(None, title="derived properties schema")
1071
+ basis: BasisSchema14 = Field(..., title="basis schema")
1072
+ lattice: LatticeSchema13 = Field(..., title="lattice schema")
1073
+ derivedProperties: Optional[List[DerivedPropertiesSchema13]] = Field(None, title="derived properties schema")
675
1074
  external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
676
1075
  """
677
1076
  information about a database source
@@ -692,7 +1091,7 @@ class MaterialSchema10(BaseModel):
692
1091
  """
693
1092
  Whether to work in the finite molecular picture (usually with atomic orbital basis)
694
1093
  """
695
- consistencyChecks: Optional[List[MaterialConsistencyCheckSchema10]] = None
1094
+ consistencyChecks: Optional[List[MaterialConsistencyCheckSchema13]] = None
696
1095
  field_id: Optional[str] = Field(None, alias="_id")
697
1096
  """
698
1097
  entity identity
@@ -717,8 +1116,8 @@ class MaterialSchema10(BaseModel):
717
1116
  metadata: Optional[Dict[str, Any]] = None
718
1117
 
719
1118
 
720
- class SlabConfigurationSchema1(BaseModel):
721
- bulk: Optional[MaterialSchema10] = Field(None, title="material schema")
1119
+ class SlabConfigurationSchema2(BaseModel):
1120
+ bulk: Optional[MaterialSchema13] = Field(None, title="material schema")
722
1121
  miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
723
1122
  """
724
1123
  Miller indices for crystallographic plane designation
@@ -742,22 +1141,20 @@ class SlabConfigurationSchema1(BaseModel):
742
1141
  """
743
1142
  use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell")
744
1143
  """
745
- Whether to use conventional cell
746
- """
747
- use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z")
748
- """
749
- Whether to make z-axis orthogonal
1144
+ Whether to use conventional cell when generating the slab.
750
1145
  """
751
- make_primitive: Optional[bool] = Field(False, title="Make Primitive")
1146
+ use_orthogonal_z: Optional[bool] = Field(True, title="Use Orthogonal Z")
752
1147
  """
753
- Whether to make the slab primitive
1148
+ Whether to make vector c orthogonal to ab plane for the slab cell.
754
1149
  """
755
1150
 
756
1151
 
757
- class TerminationSchema(BaseModel):
758
- chemical_elements: str = Field(..., title="Chemical Elements")
1152
+ class TerminationSchema2(BaseModel):
1153
+ chemical_elements: Union[ChemicalElements, constr(pattern=r"^[A-Z][a-z]?([A-Z][a-z]?)*$")] = Field(
1154
+ ..., title="Chemical Elements"
1155
+ )
759
1156
  """
760
- Chemical elements at the termination
1157
+ Chemical elements at the termination. Can be a single element (e.g. 'Si') or a compound (e.g. 'SiO')
761
1158
  """
762
1159
  space_group_symmetry_label: str = Field(..., title="Space Group Symmetry Label")
763
1160
  """
@@ -765,341 +1162,39 @@ class TerminationSchema(BaseModel):
765
1162
  """
766
1163
 
767
1164
 
768
- class BasisSchema12(BaseModel):
769
- elements: List[AtomicElementSchema] = Field(..., title="atomic elements schema")
770
- """
771
- atomic elements schema
772
- """
773
- coordinates: List[AtomicCoordinateSchema] = Field(..., title="atomic coordinates schema")
774
- """
775
- atomic coordinates schema
776
- """
777
- units: Optional[BasisUnitsEnum] = Field("crystal", title="basis units enum")
778
- labels: Optional[List[AtomicLabelSchema]] = Field(None, title="atomic labels schema")
779
- """
780
- atomic labels schema
781
- """
782
-
783
-
784
- class LatticeVectorsSchema11(BaseModel):
785
- a: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
786
- b: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
787
- c: List[float] = Field(..., max_length=3, min_length=3, title="vector 3d schema")
788
- alat: Optional[float] = 1
789
- """
790
- lattice parameter for fractional coordinates
791
- """
792
- units: Optional[LatticeVectorsUnitsEnum] = Field("angstrom", title="lattice vectors units enum")
793
-
794
-
795
- class LatticeUnitsSchema11(BaseModel):
796
- length: Optional[LatticeUnitsLengthEnum] = Field("angstrom", title="lattice units length enum")
797
- angle: Optional[LatticeUnitsAngleEnum] = Field("degree", title="lattice units angle enum")
798
-
799
-
800
- class LatticeSchema11(BaseModel):
801
- a: float
802
- """
803
- length of the first lattice vector
804
- """
805
- b: float
806
- """
807
- length of the second lattice vector
808
- """
809
- c: float
810
- """
811
- length of the third lattice vector
812
- """
813
- alpha: float
814
- """
815
- angle between first and second lattice vector
816
- """
817
- beta: float
818
- """
819
- angle between second and third lattice vector
820
- """
821
- gamma: float
822
- """
823
- angle between first and third lattice vector
824
- """
825
- vectors: Optional[LatticeVectorsSchema11] = Field(None, title="lattice vectors schema")
826
- type: Optional[LatticeTypeEnum] = Field("TRI", title="lattice type enum")
827
- units: Optional[LatticeUnitsSchema11] = Field(
828
- default_factory=lambda: LatticeUnitsSchema11.model_validate({"length": "angstrom", "angle": "degree"}),
829
- title="Lattice units schema",
830
- )
831
-
832
-
833
- class Name95(Enum):
834
- volume = "volume"
835
-
836
-
837
- class Units42(Enum):
838
- angstrom_3 = "angstrom^3"
839
-
840
-
841
- class VolumeSchema11(BaseModel):
842
- name: Literal["0#-datamodel-code-generator-#-object-#-special-#"]
843
- units: Optional[Units42] = None
844
- value: float
845
-
846
-
847
- class Name96(Enum):
848
- density = "density"
849
-
850
-
851
- class Units43(Enum):
852
- g_cm_3 = "g/cm^3"
853
-
854
-
855
- class DensitySchema11(BaseModel):
856
- name: Literal["1#-datamodel-code-generator-#-object-#-special-#"]
857
- units: Optional[Units43] = None
858
- value: float
859
-
860
-
861
- class Units44(Enum):
862
- angstrom = "angstrom"
863
-
864
-
865
- class ScalarSchema12(BaseModel):
866
- units: Optional[Units44] = None
867
- value: float
868
-
869
-
870
- class Name97(Enum):
871
- symmetry = "symmetry"
872
-
873
-
874
- class SymmetrySchema11(BaseModel):
875
- pointGroupSymbol: Optional[str] = None
876
- """
877
- point group symbol in Schoenflies notation
878
- """
879
- spaceGroupSymbol: Optional[str] = None
880
- """
881
- space group symbol in Hermann–Mauguin notation
882
- """
883
- tolerance: Optional[ScalarSchema12] = Field(None, title="scalar schema")
884
- """
885
- tolerance used for symmetry calculation
886
- """
887
- name: Literal["2#-datamodel-code-generator-#-object-#-special-#"]
888
-
889
-
890
- class Name98(Enum):
891
- elemental_ratio = "elemental_ratio"
892
-
893
-
894
- class ElementalRatio11(BaseModel):
895
- name: Literal["3#-datamodel-code-generator-#-object-#-special-#"]
896
- value: confloat(ge=0.0, le=1.0)
897
- element: Optional[str] = None
1165
+ class SlabInStackConfigurationSchema(BaseModel):
1166
+ stack_component: Optional[str] = None
898
1167
  """
899
- the element this ratio is for
1168
+ Component of the stack (e.g., slab1, slab2)
900
1169
  """
901
-
902
-
903
- class Name99(Enum):
904
- p_norm = "p-norm"
905
-
906
-
907
- class PNorm11(BaseModel):
908
- name: Literal["4#-datamodel-code-generator-#-object-#-special-#"]
909
- degree: Optional[int] = None
1170
+ distance_to_next_slab: Optional[float] = 3
910
1171
  """
911
- degree of the dimensionality of the norm
1172
+ Distance to the next slab in the stack, in Angstroms
912
1173
  """
913
- value: float
914
-
915
-
916
- class Name100(Enum):
917
- inchi = "inchi"
918
-
919
-
920
- class InChIRepresentationSchema11(BaseModel):
921
- name: Literal["5#-datamodel-code-generator-#-object-#-special-#"]
922
- value: str
923
-
924
-
925
- class Name101(Enum):
926
- inchi_key = "inchi_key"
927
-
928
-
929
- class InChIKeyRepresentationSchema11(BaseModel):
930
- name: Literal["6#-datamodel-code-generator-#-object-#-special-#"]
931
- value: str
932
-
933
-
934
- class DerivedPropertiesSchema11(
935
- RootModel[
936
- Union[
937
- VolumeSchema11,
938
- DensitySchema11,
939
- SymmetrySchema11,
940
- ElementalRatio11,
941
- PNorm11,
942
- InChIRepresentationSchema11,
943
- InChIKeyRepresentationSchema11,
944
- ]
945
- ]
946
- ):
947
- root: Union[
948
- VolumeSchema11,
949
- DensitySchema11,
950
- SymmetrySchema11,
951
- ElementalRatio11,
952
- PNorm11,
953
- InChIRepresentationSchema11,
954
- InChIKeyRepresentationSchema11,
955
- ] = Field(..., discriminator="name")
956
-
957
-
958
- class Name102(Enum):
959
- default = "default"
960
- atomsTooClose = "atomsTooClose"
961
- atomsOverlap = "atomsOverlap"
962
-
963
-
964
- class MaterialConsistencyCheckSchema11(BaseModel):
965
- name: Name102
966
- """
967
- Name of the consistency check that is performed, which is listed in an enum.
968
- """
969
- key: str
970
- """
971
- Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
972
- """
973
- severity: Severity
974
- """
975
- Severity level of the problem, which is used in UI to differentiate.
976
- """
977
- message: str
978
- """
979
- Message generated by the consistency check describing the problem.
980
- """
981
-
982
-
983
- class MaterialSchema11(BaseModel):
984
- formula: Optional[str] = None
985
- """
986
- reduced chemical formula
987
- """
988
- unitCellFormula: Optional[str] = None
989
- """
990
- chemical formula based on the number of atoms of each element in the supercell
991
- """
992
- basis: BasisSchema12 = Field(..., title="basis schema")
993
- lattice: LatticeSchema11 = Field(..., title="lattice schema")
994
- derivedProperties: Optional[List[DerivedPropertiesSchema11]] = Field(None, title="derived properties schema")
995
- external: Optional[DatabaseSourceSchema] = Field(None, title="database source schema")
996
- """
997
- information about a database source
998
- """
999
- src: Optional[FileSourceSchema] = Field(None, title="file source schema")
1000
- """
1001
- file source with the information inside
1002
- """
1003
- scaledHash: Optional[str] = None
1004
- """
1005
- Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
1006
- """
1007
- icsdId: Optional[int] = None
1008
- """
1009
- Corresponding ICSD id of the material
1010
- """
1011
- isNonPeriodic: Optional[bool] = None
1012
- """
1013
- Whether to work in the finite molecular picture (usually with atomic orbital basis)
1014
- """
1015
- consistencyChecks: Optional[List[MaterialConsistencyCheckSchema11]] = None
1016
- field_id: Optional[str] = Field(None, alias="_id")
1017
- """
1018
- entity identity
1019
- """
1020
- slug: Optional[str] = None
1021
- """
1022
- entity slug
1023
- """
1024
- systemName: Optional[str] = None
1025
- schemaVersion: Optional[str] = "2022.8.16"
1026
- """
1027
- entity's schema version. Used to distinct between different schemas.
1028
- """
1029
- name: Optional[str] = None
1030
- """
1031
- entity name
1032
- """
1033
- isDefault: Optional[bool] = False
1034
- """
1035
- Identifies that entity is defaultable
1036
- """
1037
- metadata: Optional[Dict[str, Any]] = None
1038
-
1039
-
1040
- class SlabConfigurationSchema2(BaseModel):
1041
- bulk: Optional[MaterialSchema11] = Field(None, title="material schema")
1042
- miller_indices: Optional[List[int]] = Field([0, 0, 1], max_length=3, min_length=3, title="Miller Indices Schema")
1043
- """
1044
- Miller indices for crystallographic plane designation
1045
- """
1046
- number_of_layers: Optional[conint(ge=1)] = Field(1, title="Number of Layers Schema")
1047
- """
1048
- Number of atomic layers in a structural component
1049
- """
1050
- vacuum: Optional[confloat(ge=0.0)] = Field(5, title="Vacuum Thickness Schema")
1051
- """
1052
- Vacuum thickness in Angstroms
1053
- """
1054
- xy_supercell_matrix: Optional[List[SupercellMatrix2DSchemaItem]] = Field(
1055
- default_factory=lambda: [SupercellMatrix2DSchemaItem.model_validate(v) for v in [[1, 0], [0, 1]]],
1056
- max_length=2,
1057
- min_length=2,
1058
- title="Supercell Matrix 2D Schema",
1059
- )
1060
- """
1061
- Supercell matrix for xy plane transformations
1062
- """
1063
- use_conventional_cell: Optional[bool] = Field(True, title="Use Conventional Cell")
1064
- """
1065
- Whether to use conventional cell
1066
- """
1067
- use_orthogonal_z: Optional[bool] = Field(False, title="Use Orthogonal Z")
1174
+ slab_configuration: SlabConfigurationSchema2 = Field(..., title="Slab Configuration Schema")
1068
1175
  """
1069
- Whether to make z-axis orthogonal
1176
+ Configuration for creating a slab from a bulk material
1070
1177
  """
1071
- make_primitive: Optional[bool] = Field(False, title="Make Primitive")
1178
+ termination: TerminationSchema2 = Field(..., title="Termination Schema")
1072
1179
  """
1073
- Whether to make the slab primitive
1180
+ Defines a specific termination of a slab
1074
1181
  """
1075
1182
 
1076
1183
 
1077
- class SlabGrainBoundaryConfigurationSchema(BaseModel):
1078
- phase_1_configuration: SlabConfigurationSchema = Field(..., title="Slab Configuration Schema")
1184
+ class GrainBoundaryPlaneConfigurationSchema(BaseModel):
1185
+ stacking_direction: Optional[AxisEnum] = Field("x", title="Axis Enum")
1079
1186
  """
1080
- Configuration for creating a slab from a bulk material
1187
+ The axis along which the slabs are stacked
1081
1188
  """
1082
- phase_2_configuration: SlabConfigurationSchema1 = Field(..., title="Slab Configuration Schema")
1189
+ slab_configuration: SlabConfigurationSchema = Field(..., title="Slab Configuration Schema")
1083
1190
  """
1084
1191
  Configuration for creating a slab from a bulk material
1085
1192
  """
1086
- phase_1_termination: TerminationSchema = Field(..., title="Termination Schema")
1193
+ termination: TerminationSchema = Field(..., title="Termination Schema")
1087
1194
  """
1088
1195
  Defines a specific termination of a slab
1089
1196
  """
1090
- phase_2_termination: TerminationSchema = Field(..., title="Termination Schema")
1091
- """
1092
- Defines a specific termination of a slab
1197
+ stack_slab_configurations: List[SlabInStackConfigurationSchema] = Field(..., max_length=2, min_length=2)
1093
1198
  """
1094
- gap: Optional[float] = 3
1095
- """
1096
- The gap between the two phases, in Angstroms
1097
- """
1098
- slab_configuration: SlabConfigurationSchema2 = Field(..., title="Slab Configuration Schema")
1099
- """
1100
- Configuration for creating a slab from a bulk material
1101
- """
1102
- slab_termination: Optional[TerminationSchema] = Field(None, title="Termination Schema")
1103
- """
1104
- Defines a specific termination of a slab
1199
+ List of slab configurations for the slabs in the stack
1105
1200
  """