@mat3ra/esse 2025.5.17-2 → 2025.6.5-0

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.
Files changed (179) hide show
  1. package/dist/js/example/apse/materials/builders/slab/pymatgen/parameters.json +1 -1
  2. package/dist/js/example/materials_category/pristine_structures/two_dimensional/slab.json +160 -0
  3. package/dist/js/example/{material/reusable/supercell → materials_category_components/entities/auxiliary/three_dimensional}/supercell_matrix_3d.json +2 -2
  4. package/dist/js/example/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.json +7 -0
  5. package/dist/js/example/materials_category_components/entities/core/three_dimensional/crystal.json +128 -0
  6. package/dist/js/example/materials_category_components/entities/core/three_dimensional/void.json +20 -0
  7. package/dist/js/example/materials_category_components/entities/core/two_dimensional/vacuum.json +4 -0
  8. package/dist/js/example/materials_category_components/entities/core/zero_dimensional/atom.json +3 -0
  9. package/dist/js/example/materials_category_components/entities/reusable/repetitions.json +5 -0
  10. package/dist/js/example/{material/reusable/slab_configuration_with_termination.json → materials_category_components/operations/core/combinations/merge.json} +8 -27
  11. package/dist/js/example/materials_category_components/operations/core/combinations/stack.json +137 -0
  12. package/dist/js/example/materials_category_components/operations/core/combinations/stack_component.json +128 -0
  13. package/dist/js/example/materials_category_components/operations/core/modifications/repeat.json +19 -0
  14. package/dist/js/example/materials_category_components/operations/core/modifications/strain.json +19 -0
  15. package/dist/js/schema/apse/materials/builders/slab/pymatgen/parameters.json +3 -3
  16. package/dist/js/schema/core/primitive/array_of_3_integers.json +11 -0
  17. package/dist/js/schema/{materials_category/defects/two_dimensional/island/condition.json.json → core/reusable/coordinate_conditions.json} +4 -2
  18. package/dist/js/schema/materials_category/pristine_structures/three_dimensional/ideal_crystal.json +757 -0
  19. package/dist/js/schema/materials_category/{multi_material/interfaces/configuration.json → pristine_structures/two_dimensional/slab.json} +231 -230
  20. package/dist/js/schema/{material/reusable/supercell → materials_category_components/entities/auxiliary/three_dimensional}/supercell_matrix_3d.json +3 -1
  21. package/dist/js/schema/{material/reusable/slab → materials_category_components/entities/auxiliary/two_dimensional}/miller_indices.json +5 -5
  22. package/dist/js/schema/{material/reusable/supercell → materials_category_components/entities/auxiliary/two_dimensional}/supercell_matrix_2d.json +1 -1
  23. package/dist/js/schema/{material/reusable/slab → materials_category_components/entities/auxiliary/two_dimensional}/termination.json +1 -1
  24. package/dist/js/schema/materials_category_components/entities/auxiliary/zero_dimensional/crystal_site.json +22 -0
  25. package/dist/js/schema/materials_category_components/entities/core/three_dimensional/crystal.json +757 -0
  26. package/dist/js/schema/materials_category_components/entities/core/three_dimensional/void.json +76 -0
  27. package/dist/js/schema/materials_category_components/entities/core/two_dimensional/vacuum.json +30 -0
  28. package/dist/js/schema/materials_category_components/entities/core/zero_dimensional/atom.json +134 -0
  29. package/dist/js/schema/{material → materials_category_components/entities}/reusable/repetitions.json +1 -1
  30. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/strained_non_uniform.json +786 -0
  31. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/strained_uniform.json +773 -0
  32. package/dist/js/schema/materials_category_components/entities/reusable/three_dimensional/supercell.json +786 -0
  33. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/atomic_layers.json +947 -0
  34. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique.json +947 -0
  35. package/dist/js/schema/materials_category_components/entities/reusable/two_dimensional/atomic_layers_unique_repeated.json +948 -0
  36. package/dist/js/schema/{materials_category/single_material/two_dimensional/slab/configuration.json → materials_category_components/entities/reusable/two_dimensional/crystal_lattice_planes.json} +16 -59
  37. package/dist/js/schema/{material/reusable/stack/stack_of_slabs.json → materials_category_components/entities/reusable/two_dimensional/slab_unit_cell.json} +207 -230
  38. package/dist/js/schema/materials_category_components/operations/core/combinations/merge.json +884 -0
  39. package/dist/js/schema/materials_category_components/operations/core/combinations/stack.json +818 -0
  40. package/dist/js/schema/materials_category_components/operations/core/combinations/stack_component.json +793 -0
  41. package/dist/js/schema/materials_category_components/operations/core/modifications/repeat.json +42 -0
  42. package/dist/js/schema/materials_category_components/operations/core/modifications/strain.json +24 -0
  43. package/dist/js/schemas.json +1 -1
  44. package/dist/js/types.d.ts +3464 -6059
  45. package/example/apse/materials/builders/slab/pymatgen/parameters.json +1 -1
  46. package/example/materials_category/pristine_structures/two-dimensional/slab.json +35 -0
  47. package/example/materials_category_components/entities/auxiliary/three-dimensional/supercell_matrix_3d.json +5 -0
  48. package/example/materials_category_components/entities/auxiliary/two-dimensional/miller_indices.json +1 -0
  49. package/example/materials_category_components/entities/auxiliary/two-dimensional/supercell_matrix_2d.json +4 -0
  50. package/example/{material/reusable/slab → materials_category_components/entities/auxiliary/two-dimensional}/termination.json +1 -1
  51. package/example/materials_category_components/entities/auxiliary/zero-dimensional/crystal_site.json +3 -0
  52. package/example/materials_category_components/entities/core/three-dimensional/crystal.json +3 -0
  53. package/example/materials_category_components/entities/core/three-dimensional/void.json +8 -0
  54. package/example/materials_category_components/entities/core/two-dimensional/vacuum.json +4 -0
  55. package/example/materials_category_components/entities/core/zero-dimensional/atom.json +3 -0
  56. package/example/materials_category_components/entities/reusable/repetitions.json +1 -0
  57. package/example/materials_category_components/operations/core/combinations/merge.json +11 -0
  58. package/example/materials_category_components/operations/core/combinations/stack.json +11 -0
  59. package/example/materials_category_components/operations/core/combinations/stack_component.json +3 -0
  60. package/example/materials_category_components/operations/core/modifications/repeat.json +13 -0
  61. package/example/materials_category_components/operations/core/modifications/strain.json +7 -0
  62. package/package.json +1 -1
  63. package/schema/apse/materials/builders/slab/pymatgen/parameters.json +3 -3
  64. package/schema/core/primitive/array_of_3_integers.json +11 -0
  65. package/schema/core/reusable/coordinate_conditions/index.json +11 -0
  66. package/schema/materials_category/manifest.yaml +268 -0
  67. package/schema/materials_category/pristine_structures/three-dimensional/ideal_crystal.json +11 -0
  68. package/schema/materials_category/pristine_structures/two-dimensional/slab.json +17 -0
  69. package/schema/{material/reusable/supercell → materials_category_components/entities/auxiliary/three-dimensional}/supercell_matrix_3d.json +2 -7
  70. package/schema/materials_category_components/entities/auxiliary/two-dimensional/miller_indices.json +16 -0
  71. package/schema/{material/reusable/supercell → materials_category_components/entities/auxiliary/two-dimensional}/supercell_matrix_2d.json +1 -1
  72. package/schema/{material/reusable/slab → materials_category_components/entities/auxiliary/two-dimensional}/termination.json +2 -2
  73. package/schema/materials_category_components/entities/auxiliary/zero-dimensional/crystal_site.json +15 -0
  74. package/schema/materials_category_components/entities/core/three-dimensional/crystal.json +11 -0
  75. package/schema/materials_category_components/entities/core/three-dimensional/void.json +19 -0
  76. package/schema/materials_category_components/entities/core/two-dimensional/vacuum.json +22 -0
  77. package/schema/materials_category_components/entities/core/zero-dimensional/atom.json +15 -0
  78. package/schema/{material → materials_category_components/entities}/reusable/repetitions.json +1 -1
  79. package/schema/materials_category_components/entities/reusable/three-dimensional/strained_non_uniform.json +20 -0
  80. package/schema/materials_category_components/entities/reusable/three-dimensional/strained_uniform.json +20 -0
  81. package/schema/materials_category_components/entities/reusable/three-dimensional/supercell.json +20 -0
  82. package/schema/materials_category_components/entities/reusable/two-dimensional/atomic_layers.json +12 -0
  83. package/schema/materials_category_components/entities/reusable/two-dimensional/atomic_layers_unique.json +25 -0
  84. package/schema/materials_category_components/entities/reusable/two-dimensional/atomic_layers_unique_repeated.json +27 -0
  85. package/schema/materials_category_components/entities/reusable/two-dimensional/crystal_lattice_planes.json +25 -0
  86. package/schema/materials_category_components/entities/reusable/two-dimensional/slab_unit_cell.json +33 -0
  87. package/schema/materials_category_components/operations/core/combinations/merge.json +33 -0
  88. package/schema/materials_category_components/operations/core/combinations/stack.json +21 -0
  89. package/schema/materials_category_components/operations/core/combinations/stack_component.json +14 -0
  90. package/schema/materials_category_components/operations/core/modifications/repeat.json +10 -0
  91. package/schema/materials_category_components/operations/core/modifications/strain.json +10 -0
  92. package/dist/js/example/material/builders/base/selector_parameters.json +0 -3
  93. package/dist/js/example/material/builders/single_material/two_dimensional/slab/selector_parameters.json +0 -6
  94. package/dist/js/example/material/reusable/repetitions.json +0 -5
  95. package/dist/js/example/material/reusable/slab/number_of_layers.json +0 -1
  96. package/dist/js/example/material/reusable/slab/vacuum.json +0 -1
  97. package/dist/js/example/materials_category/defects/by_host/two_dimensional/adatom/configuration.json +0 -138
  98. package/dist/js/example/materials_category/defects/by_host/two_dimensional/point/configuration.json +0 -135
  99. package/dist/js/example/materials_category/defects/configuration.json +0 -130
  100. package/dist/js/example/materials_category/defects/one_dimensional/terrace/configuration.json +0 -144
  101. package/dist/js/example/materials_category/defects/two_dimensional/grain_boundary_plane/configuration.json +0 -475
  102. package/dist/js/example/materials_category/defects/zero_dimensional/complex/pair/configuration.json +0 -406
  103. package/dist/js/example/materials_category/defects/zero_dimensional/point/configuration.json +0 -138
  104. package/dist/js/example/materials_category/defects/zero_dimensional/point/interstitial/configuration.json +0 -139
  105. package/dist/js/example/materials_category/defects/zero_dimensional/point/substitution/configuration.json +0 -138
  106. package/dist/js/example/materials_category/defects/zero_dimensional/point/vacancy/configuration.json +0 -137
  107. package/dist/js/example/materials_category/single_material/two_dimensional/slab/configuration.json +0 -150
  108. package/dist/js/schema/material/builders/base/selector_parameters.json +0 -15
  109. package/dist/js/schema/material/builders/single_material/two_dimensional/slab/builder_parameters.json +0 -33
  110. package/dist/js/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json +0 -159
  111. package/dist/js/schema/material/reusable/slab/enums/exposed_face.json +0 -11
  112. package/dist/js/schema/material/reusable/slab/number_of_layers.json +0 -9
  113. package/dist/js/schema/material/reusable/slab/vacuum.json +0 -9
  114. package/dist/js/schema/material/reusable/slab_configuration_with_termination.json +0 -996
  115. package/dist/js/schema/material/reusable/stack/slab_in_stack.json +0 -1005
  116. package/dist/js/schema/material/reusable/stack/stack_of_two_slabs.json +0 -1033
  117. package/dist/js/schema/materials_category/defects/by_host/two_dimensional/adatom/configuration.json +0 -926
  118. package/dist/js/schema/materials_category/defects/by_host/two_dimensional/layered/configuration.json +0 -794
  119. package/dist/js/schema/materials_category/defects/by_host/two_dimensional/point/configuration.json +0 -803
  120. package/dist/js/schema/materials_category/defects/configuration.json +0 -786
  121. package/dist/js/schema/materials_category/defects/enums/point_defect_type.json +0 -11
  122. package/dist/js/schema/materials_category/defects/one_dimensional/terrace/configuration.json +0 -831
  123. package/dist/js/schema/materials_category/defects/two_dimensional/grain_boundary_plane/configuration.json +0 -2019
  124. package/dist/js/schema/materials_category/defects/two_dimensional/island/configuration.json +0 -845
  125. package/dist/js/schema/materials_category/defects/zero_dimensional/complex/pair/configuration.json +0 -2634
  126. package/dist/js/schema/materials_category/defects/zero_dimensional/point/configuration.json +0 -925
  127. package/dist/js/schema/materials_category/defects/zero_dimensional/point/interstitial/configuration.json +0 -926
  128. package/dist/js/schema/materials_category/defects/zero_dimensional/point/substitution/configuration.json +0 -926
  129. package/dist/js/schema/materials_category/defects/zero_dimensional/point/vacancy/configuration.json +0 -926
  130. package/example/material/builders/base/selector_parameters.json +0 -3
  131. package/example/material/builders/single_material/two_dimensional/slab/selector_parameters.json +0 -6
  132. package/example/material/reusable/repetitions.json +0 -1
  133. package/example/material/reusable/slab/miller_indices.json +0 -5
  134. package/example/material/reusable/slab/number_of_layers.json +0 -1
  135. package/example/material/reusable/slab/vacuum.json +0 -1
  136. package/example/material/reusable/slab_configuration_with_termination.json +0 -8
  137. package/example/material/reusable/supercell/supercell_matrix_2d.json +0 -10
  138. package/example/material/reusable/supercell/supercell_matrix_3d.json +0 -11
  139. package/example/materials_category/defects/by_host/two-dimensional/adatom/configuration.json +0 -11
  140. package/example/materials_category/defects/by_host/two-dimensional/point/configuration.json +0 -8
  141. package/example/materials_category/defects/configuration.json +0 -5
  142. package/example/materials_category/defects/one-dimensional/terrace/configuration.json +0 -19
  143. package/example/materials_category/defects/two-dimensional/grain_boundary_plane/configuration.json +0 -21
  144. package/example/materials_category/defects/zero-dimensional/complex/pair/configuration.json +0 -9
  145. package/example/materials_category/defects/zero-dimensional/point/configuration.json +0 -11
  146. package/example/materials_category/defects/zero-dimensional/point/interstitial/configuration.json +0 -14
  147. package/example/materials_category/defects/zero-dimensional/point/substitution/configuration.json +0 -13
  148. package/example/materials_category/defects/zero-dimensional/point/vacancy/configuration.json +0 -12
  149. package/example/materials_category/single_material/two_dimensional/slab/configuration.json +0 -25
  150. package/schema/material/builders/base/selector_parameters.json +0 -15
  151. package/schema/material/builders/single_material/two_dimensional/slab/builder_parameters.json +0 -12
  152. package/schema/material/builders/single_material/two_dimensional/slab/selector_parameters.json +0 -12
  153. package/schema/material/reusable/slab/enums/exposed_face.json +0 -11
  154. package/schema/material/reusable/slab/miller_indices.json +0 -17
  155. package/schema/material/reusable/slab/number_of_layers.json +0 -9
  156. package/schema/material/reusable/slab/vacuum.json +0 -9
  157. package/schema/material/reusable/slab_configuration_with_termination.json +0 -19
  158. package/schema/material/reusable/stack/slab_in_stack.json +0 -26
  159. package/schema/material/reusable/stack/stack_of_slabs.json +0 -31
  160. package/schema/material/reusable/stack/stack_of_two_slabs.json +0 -17
  161. package/schema/materials_category/defects/by_host/two-dimensional/adatom/configuration.json +0 -16
  162. package/schema/materials_category/defects/by_host/two-dimensional/layered/configuration.json +0 -16
  163. package/schema/materials_category/defects/by_host/two-dimensional/point/configuration.json +0 -26
  164. package/schema/materials_category/defects/configuration.json +0 -34
  165. package/schema/materials_category/defects/one-dimensional/terrace/configuration.json +0 -44
  166. package/schema/materials_category/defects/two-dimensional/grain_boundary_plane/configuration.json +0 -20
  167. package/schema/materials_category/defects/two-dimensional/island/condition.json +0 -9
  168. package/schema/materials_category/defects/two-dimensional/island/configuration.json +0 -18
  169. package/schema/materials_category/defects/zero-dimensional/complex/pair/configuration.json +0 -20
  170. package/schema/materials_category/defects/zero-dimensional/point/configuration.json +0 -34
  171. package/schema/materials_category/defects/zero-dimensional/point/enums/type.json +0 -11
  172. package/schema/materials_category/defects/zero-dimensional/point/interstitial/configuration.json +0 -16
  173. package/schema/materials_category/defects/zero-dimensional/point/substitution/configuration.json +0 -16
  174. package/schema/materials_category/defects/zero-dimensional/point/vacancy/configuration.json +0 -16
  175. package/schema/materials_category/multi-material/interfaces/configuration.json +0 -12
  176. package/schema/materials_category/single_material/two_dimensional/slab/configuration.json +0 -36
  177. /package/dist/js/example/{material/reusable/slab → materials_category_components/entities/auxiliary/two_dimensional}/miller_indices.json +0 -0
  178. /package/dist/js/example/{material/reusable/supercell → materials_category_components/entities/auxiliary/two_dimensional}/supercell_matrix_2d.json +0 -0
  179. /package/dist/js/example/{material/reusable/slab → materials_category_components/entities/auxiliary/two_dimensional}/termination.json +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "min_vacuum_size": 1,
2
+ "min_vacuum_size": 0,
3
3
  "in_unit_planes": true,
4
4
  "reorient_lattice": true,
5
5
  "symmetrize": false
@@ -0,0 +1,35 @@
1
+ {
2
+ "stack_components": [
3
+ {
4
+ "crystal": {
5
+ "...": "include(../../../material.json)"
6
+ },
7
+ "miller_indices": [
8
+ 0,
9
+ 0,
10
+ 1
11
+ ],
12
+ "use_conventional_cell": true,
13
+ "termination_top": {
14
+ "chemical_elements": "Si",
15
+ "space_group_symmetry_label": "P4/mmm_2"
16
+ },
17
+ "number_of_repetitions": 5
18
+ },
19
+ {
20
+ "direction": "z",
21
+ "size": 10
22
+ }
23
+ ],
24
+ "direction": "z",
25
+ "xy_supercell_matrix": [
26
+ [
27
+ 2,
28
+ 0
29
+ ],
30
+ [
31
+ 0,
32
+ 2
33
+ ]
34
+ ]
35
+ }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "chemical_elements": "Si",
3
3
  "space_group_symmetry_label": "P4/mmm_2"
4
- }
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "...": "include(../../../../material.json)"
3
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "center_coordinate": [ 0.5,
3
+ 0.5,
4
+ 0.5 ],
5
+ "shape": {
6
+ "...": "include(../../../../core/reusable/coordinate_conditions/box.json)"
7
+ }
8
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "direction": "z",
3
+ "size": 10
4
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "merge_components": [
3
+ {
4
+ "...": "include(../../../entities/core/three-dimensional/crystal.json)"
5
+ },
6
+ {
7
+ "...": "include(../../../entities/core/two-dimensional/vacuum.json)"
8
+ }
9
+ ],
10
+ "method": "add"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "stack_components": [
3
+ {
4
+ "...": "include(../../../entities/core/three-dimensional/crystal.json)"
5
+ },
6
+ {
7
+ "...": "include(../../../entities/core/two-dimensional/vacuum.json)"
8
+ }
9
+ ],
10
+ "direction": "z"
11
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "...": "include(../../../entities/core/three-dimensional/crystal.json)"
3
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "matrix": [
3
+ [ 2,
4
+ 0,
5
+ 0 ],
6
+ [ 0,
7
+ 2,
8
+ 0 ],
9
+ [ 0,
10
+ 0,
11
+ 2 ]
12
+ ]
13
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "matrix": [
3
+ [1.02, 0.0, 0.0],
4
+ [0.0, 1.02, 0.0],
5
+ [0.0, 0.0, 0.98]
6
+ ]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mat3ra/esse",
3
- "version": "2025.5.17-2",
3
+ "version": "2025.6.5-0",
4
4
  "description": "Mat3ra's Excellent Source of Schemas and Examples (ESSE) for Digital Materials R&D",
5
5
  "scripts": {
6
6
  "transpile": "tsc -p tsconfig-transpile.json",
@@ -12,15 +12,15 @@
12
12
  "number"
13
13
  ],
14
14
  "minimum": 0,
15
- "default": 1
15
+ "default": 0
16
16
  },
17
17
  "in_unit_planes": {
18
- "description": "Whether to cleave in unit planes",
18
+ "description": "Whether to use unit planes for the vacuum and slab size",
19
19
  "type": "boolean",
20
20
  "default": true
21
21
  },
22
22
  "reorient_lattice": {
23
- "description": "Whether to reorient the lattice",
23
+ "description": "Whether to reorient the lattice to have c vector along the z-axis",
24
24
  "type": "boolean",
25
25
  "default": true
26
26
  },
@@ -0,0 +1,11 @@
1
+ {
2
+ "$id": "core/primitive/array-of-3-integers",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "array of 3 integer elements schema",
5
+ "type": "array",
6
+ "items": {
7
+ "type": "integer"
8
+ },
9
+ "minItems": 3,
10
+ "maxItems": 3
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$id": "core/reusable/coordinate-conditions",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Coordinate Conditions Schema",
5
+ "description": "Combined schema for all coordinate condition types",
6
+ "oneOf": [
7
+ {
8
+ "$ref": "box.json"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,268 @@
1
+ # This is a temporary manifest file to describe the folder structure of materials-related content.
2
+ # The following notation is used:
3
+ #
4
+ # `<filename>:` - any key can be a schema file or a directory
5
+ # ` - key` - array components represent the keys inside a schema file content
6
+ # ` - key?` - optional file content key
7
+ # ` - key = ` - file content assignment to types of values
8
+ # `[value1, value2]` - list of values "value1 or value2"
9
+ # `[value, ...]` - list of multiple values "value"
10
+ # `( x | y | z ){1,2}` - a set of values "1 or 2 of any of the three"
11
+ #
12
+
13
+ materials_category_components:
14
+ entities:
15
+ core:
16
+ three-dimensional:
17
+ crystal:
18
+ void:
19
+ # can be placed into a crystal centered around specified crystal_site, all atoms inside are removed
20
+ - center_coordinate
21
+ - shape
22
+ two-dimensional:
23
+ vacuum:
24
+ # is applied along the specified direction, adds vacuum "slab", breaks periodicity in that direction, lowers dimensionality
25
+ - direction
26
+ - size
27
+ termination:
28
+ - stoichiometry
29
+ - symmetry
30
+ miller_indices: [ h, k, l ]
31
+ one-dimensional:
32
+ zero-dimensional:
33
+ crystal_site:
34
+ # created by reference to some crystal, can be populated with atom, vacancy, void, can be merged with a crystal of the same lattice
35
+ - coordinate
36
+ - id? # site id in the host crystal
37
+ atom:
38
+ - chemical_element
39
+ auxiliary: # auxiliary entities, not used in the main material creation
40
+ three-dimensional:
41
+ supercell_matrix_3d:
42
+ two-dimensional:
43
+ miller_indices: [ h, k ] # 2D Miller indices
44
+ one-dimensional:
45
+ edge_direction: [ u, v ] # 2D Miller indices for 1D structures
46
+ zero-dimensional:
47
+ shape_function: f(x, y, z) # function that defines the shape of the object
48
+ reusable:
49
+ three-dimensional:
50
+ supercell:
51
+ # created from a crystal, can be used to create a supercell of any size
52
+ - crystal = material
53
+ - matrix = integer_matrix # matrix of integers, defines the size of the supercell
54
+ strained_uniform:
55
+ - crystal = ref:/primitive/base/crystal
56
+ - strain_percentage
57
+ strained_non-uniform:
58
+ - crystal = ref:/primitive/base/crystal
59
+ - strain_matrix
60
+
61
+ two-dimensional:
62
+ crystal_lattice_planes:
63
+ - crystal = material
64
+ - miller_indices = ref:/primitive/two-dimensional/miller_indices
65
+ - use_conventional_cell = bool # if true, the conventional cell is used to generate the planes
66
+ atomic_layers_unique:
67
+ # Generated from the crystal_lattice_planes, together would form a full periodic structure
68
+ - crystal = material
69
+ - miller_indices = ref:/primitive/two-dimensional/miller_indices
70
+ - terminations = [ termination, ... ] # all possible terminations for that orientation
71
+ atomic_layers_unique_repeated:
72
+ # atomic_layers_unique with an integer number of repetitions, form a full periodic structure with top layer specified by the termination
73
+ - crystal = material
74
+ - miller_indices = ref:/primitive/two-dimensional/miller_indices
75
+ - termination_top = termination
76
+ - number_of_repetitions = int # number of repetitions of the unique atomic layers, they are shifted according to the termination
77
+ atomic_layers:
78
+ # Created from atomic_layers_unique in any order defined by terminations
79
+ - crystal = material
80
+ - miller_indices = ref:/primitive/two-dimensional/miller_indices
81
+ - terminations = [ termination, ... ] # any number of any terminations in the order for the layers to occur
82
+ atomic_layer:
83
+ # Created from atomic_layers_unique with a single termination
84
+ - crystal = material
85
+ - miller_indices = ref:/primitive/two-dimensional/miller_indices
86
+ - termination = termination
87
+ slab_unit_cell:
88
+ - stack_components = [ atomic_layers, vacuum ]
89
+ - direction = "z"
90
+ one-dimensional:
91
+ ribbon_section:
92
+ - monolayer = ref:/.../monolayer
93
+ - edge_direction = [ u, v ] # 2D MI, works for ANY 2‑D lattice (unlike zigzag and armchair)
94
+ - width = int # number of unit cells
95
+ ribbon_section_hex:
96
+ - monolayer = ref:/.../monolayer
97
+ - edge_type = ("zigzag" | "armchair"){1}
98
+ - width = int | float # number of unit cells, can be in 0.5 increments
99
+ - length = int | float # number of unit cells
100
+ wire_section:
101
+ # we created a supercell, cut the shape
102
+ - shape = function(x, y, z) # in angstroms, supercell inferred to fit
103
+ - orientation = [h, k, l]
104
+ zero-dimensional:
105
+ nanoparticle:
106
+ # we created a supercell, cut the shape and added vacuum on all sides
107
+ - supercell = ref:/.../supercell
108
+ - shape = function(x, y, z)
109
+ - orientation = [h, k, l] # to align specific plane perpendicular the z-axis
110
+
111
+ operations:
112
+ core:
113
+ modifications:
114
+ strain:
115
+ # can be applied to a crystal, modifies the lattice parameters and preserves basis in crystal coordinates
116
+ - matrix
117
+ repeat:
118
+ - integer_matrix
119
+ perturb:
120
+ # changes coordinates of atoms by applying the function, intended for local displacements
121
+ - function = ∂r -> f(x,y,z)
122
+ - is_isometric = bool # distance preservation -- isometric transformation -- only makes sense in 2D and 1D thin structures
123
+ fold:
124
+ # maps 2D flat plane to a curved surface in 3D space
125
+ - function = f(x, y) -> f(x, y, z)
126
+ - is_isometric = bool
127
+ combinations:
128
+ stack_component: (material | vacuum)
129
+ stack:
130
+ - stack_components = [ stack_component, ... ] # vacuum is added between to add a gap/distance between components
131
+ - direction = ("x" | "y" | "z")|("-x" | "-y" | "-z"){1} # sign indicates the order of the stacking
132
+ merge_component: ( material | vacuum | crystal_site )
133
+ merge:
134
+ - merge_structures = [ material ]
135
+ - method = ("add" | "replace" | "yield" | "smart"){1}
136
+
137
+ material_categories:
138
+ pristine_structures:
139
+ three-dimensional:
140
+ ideal_crystal: ref:/primitive/base/crystal
141
+
142
+ two-dimensional:
143
+ monolayer:
144
+ - stack_components = [ (atomic_layer | atomic_layers), vacuum ]
145
+ - direction = "z"
146
+ slab:
147
+ - stack_components = [ atomic_layers, vacuum ]
148
+ - direction = "z"
149
+ - supercell_xy?
150
+ slab_with_reconstruction:
151
+ - slab = ref:/pristine_structures/two-dimensional/slab
152
+ - has_reconstruction = bool
153
+ - reconstruction_type? # Enum that applies an algorithm
154
+ - reconstruction_function? # Function that changes coordinates of atoms
155
+
156
+ one-dimensional:
157
+ nanotape:
158
+ # we created a supercell from monolayer, cut the shape and added vacuum on one side
159
+ - stack_components = [ ribbon_section, vacuum ]
160
+ - direction = (x | y){1}
161
+ nanowire:
162
+ # we created a supercell, cut the shape and added vacuum on two sides
163
+ - stack_components = [ wire_section, vacuum ]
164
+ - direction = (x | y | z){2} # 2 sides
165
+
166
+ zero-dimensional:
167
+ nanoparticle_with_vacuum:
168
+ - stack_components = [ nanoparticle, vacuum ]
169
+ - direction = (x | y | z){3} # all sides vacuum
170
+ nanoribbon:
171
+ # we created a monolayer supercell, cut the shape and added vacuum on all sides
172
+ - stack_components = [ ribbon_section, vacuum ]
173
+ - direction = (x | y | z){2} # 2 sides
174
+ nanoribbon_hex:
175
+ - stack_components = [ ribbon_section_hex, vacuum ]
176
+ - direction = (x | y | z){2} # 2 sides
177
+
178
+ compound_pristine_structures:
179
+ two-dimensional:
180
+ multi-layer:
181
+ - crystal = ref:/primitive/base/crystal
182
+ # In the code properties below can be supplied externally or generated based on the above with a wizard
183
+ - stacking_order? = ("natural" | "AB" | "ABC" | ...){1} # Natural by default, can be described as a ABC... configurations based on the symmetry
184
+ heterostack:
185
+ - stack_components = [ slab, vacuum, ... ]
186
+ - direction = (x | y | z){1}
187
+ interfaces:
188
+ with_no_vacuum:
189
+ - stack_components = [ (slab | monolayer), (slab | monolayer)]
190
+ - direction = "z"
191
+ with_vacuum:
192
+ - stack_components = [ (slab | monolayer), (slab | monolayer), vacuum ]
193
+ - direction = "z"
194
+ with_gap_and_vacuum:
195
+ - stack_components = [ (slab | monolayer), (slab | monolayer), vacuum ]
196
+ - direction = "z"
197
+ - gap = float # use precise distance between top and bottom layers of the slabs
198
+ commensurate_slabs:
199
+ - stack_components = [ slab, slab, vacuum ]
200
+ - direction = "z"
201
+ commensurate_monolayers_along_x:
202
+ - stack_components = [ monolayer, monolayer, vacuum ]
203
+ - direction = "x"
204
+ twisted_nanoribbons:
205
+ - stack_components = [ nanoribbon, nanoribbon, vacuum ]
206
+ - direction = "z"
207
+ - twist_angle = float
208
+
209
+ defective_structures:
210
+ three-dimensional:
211
+ amorphous:
212
+ - crystal = ref:/primitive/base/crystal
213
+ - function = f(x, y, z) # annealing function
214
+ two-dimensional:
215
+ adatom:
216
+ - merged_structures = [ slab, crystal_site(atom) ]
217
+ island:
218
+ - merged_structures = [ slab, nanoparticle ]
219
+ terrace:
220
+ - added_layers
221
+ - cut (plane + pivot_point)
222
+ - merged_structures = [ slab, nanotape ]
223
+ - is_symmetric = bool
224
+ - is_periodic = bool
225
+ grain_boundary_planar:
226
+ - stack_components = [ slab, slab ]
227
+ - direction = (x | y | z){1}
228
+ grain_boundary_planar_with_vacuum:
229
+ # inherits grain_boundary_planar and slab
230
+ - stack_components = [ slab, slab, vacuum ]
231
+ - direction = "z"
232
+ - number_of_layers
233
+ - terminations = [ termination, termination ]
234
+ one-dimensional:
235
+ grain_boundary_line:
236
+ # A GB between two slabs or monolayers, vacuum in z should be already present
237
+ - stack_components = [ (slab | monolayer), (slab | monolayer) ]
238
+ - direction = (x | y | z){1}
239
+ - angle = float # angle between the two phases
240
+ zero-dimensional:
241
+ vacancy:
242
+ - merged_structures = [ crystal, crystal_site(vacancy) ]
243
+ - method = "replace"
244
+ substitution:
245
+ - merged_structures = [ crystal, crystal_site(atom) ]
246
+ - method = "replace"
247
+ interstitial:
248
+ - merged_structures = [ crystal, crystal_site(atom) ]
249
+ - method = "add"
250
+ defect_pair:
251
+ - merged_structures = [ (vacancy | substitution | interstitial), (vacancy | substitution | interstitial) ]
252
+ - method = "replace
253
+
254
+ processed_structures:
255
+ two-dimensional:
256
+ passivated_surface_2d:
257
+ # we should configure the condition for exposed atoms and then the bond vector for passivation
258
+ - merged_structures = [ slab, crystal_site(atom|particle) ]
259
+ - bond_length = float # can be a map of bond lengths for different elements
260
+ one-dimensional:
261
+ passivated_edge_1d:
262
+ - merged_structures = [ nanotape, crystal_site(atom|particle) ]
263
+ - bond_length = float # can be a map of bond lengths for different elements
264
+ zero-dimensional:
265
+ passivated_edge_0d:
266
+ # Passivation of a particle or a nanoribbon
267
+ - merged_structures = [ nanoparticle, crystal_site(atom|particle) ]
268
+ - bond_length = float
@@ -0,0 +1,11 @@
1
+ {
2
+ "$id": "materials-category/pristine-structures/three-dimensional/ideal-crystal",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Ideal Crystal Schema",
5
+ "description": "An ideal, perfect crystal structure",
6
+ "allOf": [
7
+ {
8
+ "$ref": "../../../materials_category_components/entities/core/three-dimensional/crystal.json"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$id": "materials-category/pristine-structures/two-dimensional/slab",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Slab Configuration Schema",
5
+ "description": "A slab structure configuration that can optionally include a supercell transformation in the xy plane",
6
+ "allOf": [
7
+ {
8
+ "$ref": "../../../materials_category_components/entities/reusable/two-dimensional/slab_unit_cell.json"
9
+ }
10
+ ],
11
+ "properties": {
12
+ "xy_supercell_matrix": {
13
+ "$ref": "../../../materials_category_components/entities/auxiliary/two-dimensional/supercell_matrix_2d.json",
14
+ "description": "Optional 2x2 transformation matrix for creating a supercell in the xy plane"
15
+ }
16
+ }
17
+ }
@@ -1,16 +1,11 @@
1
1
  {
2
- "$id": "material/reusable/supercell/supercell-matrix-3d",
2
+ "$id": "materials-category-components/entities/auxiliary/three-dimensional/supercell-matrix-3d",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "title": "Supercell Matrix 3D Schema",
5
5
  "description": "3x3 matrix of integers for transforming a unit cell into a supercell",
6
6
  "type": "array",
7
7
  "items": {
8
- "type": "array",
9
- "items": {
10
- "type": "integer"
11
- },
12
- "minItems": 3,
13
- "maxItems": 3
8
+ "$ref": "../../../../core/primitive/array_of_3_integers.json"
14
9
  },
15
10
  "minItems": 3,
16
11
  "maxItems": 3,
@@ -0,0 +1,16 @@
1
+ {
2
+ "$id": "materials-category-components/entities/auxiliary/two-dimensional/miller-indices",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Miller Indices Schema",
5
+ "description": "Miller indices [h, k, l] defining crystallographic planes",
6
+ "allOf": [
7
+ {
8
+ "$ref": "../../../../core/primitive/array_of_3_integers.json"
9
+ }
10
+ ],
11
+ "default": [
12
+ 0,
13
+ 0,
14
+ 1
15
+ ]
16
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "material/reusable/supercell/supercell-matrix-2d",
2
+ "$id": "materials-category-components/entities/auxiliary/two-dimensional/supercell-matrix-2d",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "title": "Supercell Matrix 2D Schema",
5
5
  "description": "Supercell matrix for xy plane transformations",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$id": "material/reusable/slab/termination",
2
+ "$id": "materials-category-components/entities/auxiliary/two-dimensional/termination",
3
3
  "$schema": "http://json-schema.org/draft-07/schema#",
4
4
  "title": "Termination Schema",
5
5
  "description": "Defines a specific termination of a slab",
@@ -15,7 +15,7 @@
15
15
  "type": "string",
16
16
  "anyOf": [
17
17
  {
18
- "$ref": "../../../definitions/chemical_elements.json#/periodic_table"
18
+ "$ref": "../../../../definitions/chemical_elements.json#/periodic_table"
19
19
  },
20
20
  {
21
21
  "type": "string",
@@ -0,0 +1,15 @@
1
+ {
2
+ "$id": "materials-category-components/entities/auxiliary/zero-dimensional/crystal-site",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Crystal Site Schema",
5
+ "description": "A site in a crystal that can be populated with an atom, vacancy, or void. Should be place in a target basis.",
6
+ "type": "object",
7
+ "properties": {
8
+ "coordinate": {
9
+ "$ref": "../../../../core/abstract/coordinate_3d.json"
10
+ }
11
+ },
12
+ "required": [
13
+ "coordinate"
14
+ ]
15
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$id": "materials-category-components/entities/core/three-dimensional/crystal",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Crystal Schema",
5
+ "description": "A crystal structure, referencing the base material schema",
6
+ "allOf": [
7
+ {
8
+ "$ref": "../../../../material.json"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$id": "materials-category-components/entities/core/three-dimensional/void",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Void Schema",
5
+ "description": "A void that can be placed into a crystal, removing all atoms inside",
6
+ "type": "object",
7
+ "properties": {
8
+ "center_coordinate": {
9
+ "$ref": "../../../../core/abstract/coordinate_3d.json"
10
+ },
11
+ "shape": {
12
+ "$ref": "../../../../core/reusable/coordinate_conditions/index.json"
13
+ }
14
+ },
15
+ "required": [
16
+ "center_coordinate",
17
+ "shape"
18
+ ]
19
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$id": "materials-category-components/entities/core/two-dimensional/vacuum",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Vacuum Configuration Schema",
5
+ "description": "A vacuum slab that breaks periodicity in a specified direction",
6
+ "type": "object",
7
+ "properties": {
8
+ "direction": {
9
+ "$ref": "../../../../core/primitive/axis_3d_names_enum.json"
10
+ },
11
+ "size": {
12
+ "type": "number",
13
+ "description": "Size of the vacuum slab in angstroms",
14
+ "minimum": 0,
15
+ "default": 10
16
+ }
17
+ },
18
+ "required": [
19
+ "direction",
20
+ "size"
21
+ ]
22
+ }