@mat3ra/wode 2025.10.1-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 (252) hide show
  1. package/.babelrc +17 -0
  2. package/LICENSE.md +15 -0
  3. package/README.md +164 -0
  4. package/assets/subworkflows/deepmd/deepmd.yml +31 -0
  5. package/assets/subworkflows/deepmd/espresso_cp_md.yml +16 -0
  6. package/assets/subworkflows/espresso/average_electrostatic_potential_find_minima.yml +27 -0
  7. package/assets/subworkflows/espresso/average_electrostatic_potential_via_band_structure.yml +67 -0
  8. package/assets/subworkflows/espresso/band_gap.yml +21 -0
  9. package/assets/subworkflows/espresso/band_gap_hse_dos.yml +30 -0
  10. package/assets/subworkflows/espresso/band_structure.yml +26 -0
  11. package/assets/subworkflows/espresso/band_structure_dos.yml +34 -0
  12. package/assets/subworkflows/espresso/band_structure_hse.yml +30 -0
  13. package/assets/subworkflows/espresso/band_structure_magn.yml +31 -0
  14. package/assets/subworkflows/espresso/band_structure_soc.yml +30 -0
  15. package/assets/subworkflows/espresso/dielectric_tensor.yml +35 -0
  16. package/assets/subworkflows/espresso/dos.yml +24 -0
  17. package/assets/subworkflows/espresso/electronic_density_mesh.yml +19 -0
  18. package/assets/subworkflows/espresso/esm.yml +14 -0
  19. package/assets/subworkflows/espresso/esm_relax.yml +14 -0
  20. package/assets/subworkflows/espresso/espresso_extract_kpoints.yml +16 -0
  21. package/assets/subworkflows/espresso/espresso_xml_get_qpt_irr.yml +12 -0
  22. package/assets/subworkflows/espresso/fixed_cell_relaxation.yml +16 -0
  23. package/assets/subworkflows/espresso/gw_band_structure_band_gap_full_frequency.yml +22 -0
  24. package/assets/subworkflows/espresso/gw_band_structure_band_gap_plasmon_pole.yml +22 -0
  25. package/assets/subworkflows/espresso/hubbard_u_hp.yml +21 -0
  26. package/assets/subworkflows/espresso/kpoint_convergence.yml +86 -0
  27. package/assets/subworkflows/espresso/neb.yml +16 -0
  28. package/assets/subworkflows/espresso/ph_init_qpoints.yml +14 -0
  29. package/assets/subworkflows/espresso/ph_single_irr_qpt.yml +14 -0
  30. package/assets/subworkflows/espresso/phonon_dispersions.yml +29 -0
  31. package/assets/subworkflows/espresso/phonon_dos.yml +29 -0
  32. package/assets/subworkflows/espresso/phonon_dos_dispersion.yml +34 -0
  33. package/assets/subworkflows/espresso/phonon_reduce.yml +29 -0
  34. package/assets/subworkflows/espresso/post_processor.yml +14 -0
  35. package/assets/subworkflows/espresso/pre_processor.yml +14 -0
  36. package/assets/subworkflows/espresso/pw_scf.yml +16 -0
  37. package/assets/subworkflows/espresso/recalculate_bands.yml +19 -0
  38. package/assets/subworkflows/espresso/surface_energy.yml +16 -0
  39. package/assets/subworkflows/espresso/total_energy.yml +16 -0
  40. package/assets/subworkflows/espresso/valence_band_offset_calc_from_previous_esp_vbm.yml +35 -0
  41. package/assets/subworkflows/espresso/variable_cell_relaxation.yml +18 -0
  42. package/assets/subworkflows/espresso/zero_point_energy.yml +19 -0
  43. package/assets/subworkflows/jupyterLab/jupyter_notebook.yml +17 -0
  44. package/assets/subworkflows/nwchem/total_energy.yml +16 -0
  45. package/assets/subworkflows/python/ml/classification_tail.yml +56 -0
  46. package/assets/subworkflows/python/ml/clustering_tail.yml +62 -0
  47. package/assets/subworkflows/python/ml/regression_tail.yml +56 -0
  48. package/assets/subworkflows/python/ml/train_head.yml +61 -0
  49. package/assets/subworkflows/python/python_script.yml +14 -0
  50. package/assets/subworkflows/shell/batch_espresso_pwscf.yml +14 -0
  51. package/assets/subworkflows/shell/hello_world.yml +14 -0
  52. package/assets/subworkflows/vasp/band_gap.yml +21 -0
  53. package/assets/subworkflows/vasp/band_structure.yml +21 -0
  54. package/assets/subworkflows/vasp/band_structure_dos.yml +23 -0
  55. package/assets/subworkflows/vasp/dos.yml +18 -0
  56. package/assets/subworkflows/vasp/fixed_cell_relaxation.yml +16 -0
  57. package/assets/subworkflows/vasp/initial_final_total_energies.yml +25 -0
  58. package/assets/subworkflows/vasp/kpoint_convergence.yml +89 -0
  59. package/assets/subworkflows/vasp/neb_subworkflow.yml +16 -0
  60. package/assets/subworkflows/vasp/prepare_images.yml +16 -0
  61. package/assets/subworkflows/vasp/recalculate_bands.yml +16 -0
  62. package/assets/subworkflows/vasp/surface_energy.yml +18 -0
  63. package/assets/subworkflows/vasp/total_energy.yml +16 -0
  64. package/assets/subworkflows/vasp/variable_cell_relaxation.yml +18 -0
  65. package/assets/subworkflows/vasp/zero_point_energy.yml +16 -0
  66. package/assets/workflows/deepmd/deepmd_md.yml +6 -0
  67. package/assets/workflows/espresso/band_gap.yml +4 -0
  68. package/assets/workflows/espresso/band_gap_dos_hse.yml +4 -0
  69. package/assets/workflows/espresso/band_structure.yml +4 -0
  70. package/assets/workflows/espresso/band_structure_dos.yml +4 -0
  71. package/assets/workflows/espresso/band_structure_hse.yml +14 -0
  72. package/assets/workflows/espresso/band_structure_magn.yml +7 -0
  73. package/assets/workflows/espresso/band_structure_soc.yml +7 -0
  74. package/assets/workflows/espresso/dielectric_tensor.yml +4 -0
  75. package/assets/workflows/espresso/dos.yml +4 -0
  76. package/assets/workflows/espresso/electronic_density_mesh.yml +4 -0
  77. package/assets/workflows/espresso/esm.yml +4 -0
  78. package/assets/workflows/espresso/esm_relax.yml +4 -0
  79. package/assets/workflows/espresso/fixed_cell_relaxation.yml +4 -0
  80. package/assets/workflows/espresso/gw_band_structure_band_gap_full_frequency.yml +4 -0
  81. package/assets/workflows/espresso/gw_band_structure_band_gap_plasmon_pole.yml +4 -0
  82. package/assets/workflows/espresso/hubbard_u_hp.yml +7 -0
  83. package/assets/workflows/espresso/kpoint_convergence.yml +4 -0
  84. package/assets/workflows/espresso/neb.yml +4 -0
  85. package/assets/workflows/espresso/phonon_dispersions.yml +4 -0
  86. package/assets/workflows/espresso/phonon_dos.yml +4 -0
  87. package/assets/workflows/espresso/phonon_dos_dispersion.yml +4 -0
  88. package/assets/workflows/espresso/phonon_map.yml +28 -0
  89. package/assets/workflows/espresso/recalculate_bands.yml +4 -0
  90. package/assets/workflows/espresso/surface_energy.yml +4 -0
  91. package/assets/workflows/espresso/total_energy.yml +4 -0
  92. package/assets/workflows/espresso/valence_band_offset.yml +171 -0
  93. package/assets/workflows/espresso/variable_cell_relaxation.yml +4 -0
  94. package/assets/workflows/espresso/zero_point_energy.yml +4 -0
  95. package/assets/workflows/jupyterLab/jupyter_notebook.yml +4 -0
  96. package/assets/workflows/nwchem/total_energy.yml +4 -0
  97. package/assets/workflows/python/ml/classification_workflow.yml +9 -0
  98. package/assets/workflows/python/ml/clustering_workflow.yml +9 -0
  99. package/assets/workflows/python/ml/regression_workflow.yml +9 -0
  100. package/assets/workflows/python/python_script.yml +4 -0
  101. package/assets/workflows/shell/batch_espresso_pwscf.yml +4 -0
  102. package/assets/workflows/shell/hello_world.yml +4 -0
  103. package/assets/workflows/vasp/band_gap.yml +4 -0
  104. package/assets/workflows/vasp/band_structure.yml +4 -0
  105. package/assets/workflows/vasp/band_structure_dos.yml +4 -0
  106. package/assets/workflows/vasp/dos.yml +4 -0
  107. package/assets/workflows/vasp/fixed_cell_relaxation.yml +4 -0
  108. package/assets/workflows/vasp/kpoint_convergence.yml +4 -0
  109. package/assets/workflows/vasp/neb.yml +8 -0
  110. package/assets/workflows/vasp/recalculate_bands.yml +4 -0
  111. package/assets/workflows/vasp/surface_energy.yml +4 -0
  112. package/assets/workflows/vasp/total_energy.yml +4 -0
  113. package/assets/workflows/vasp/variable_cell_relaxation.yml +4 -0
  114. package/assets/workflows/vasp/zero_point_energy.yml +4 -0
  115. package/build_workflows.js +65 -0
  116. package/dist/context/context.js +49 -0
  117. package/dist/context/mixins/ApplicationContextMixin.js +19 -0
  118. package/dist/context/mixins/JobContextMixin.js +39 -0
  119. package/dist/context/mixins/MaterialContextMixin.js +40 -0
  120. package/dist/context/mixins/MaterialsContextMixin.js +19 -0
  121. package/dist/context/mixins/MaterialsSetContextMixin.js +25 -0
  122. package/dist/context/mixins/MethodDataContextMixin.js +48 -0
  123. package/dist/context/mixins/WorkflowContextMixin.js +28 -0
  124. package/dist/context/providers/BoundaryConditionsFormDataProvider.js +86 -0
  125. package/dist/context/providers/CollinearMagnetizationContextProvider.js +113 -0
  126. package/dist/context/providers/HubbardContextProviderLegacy.js +81 -0
  127. package/dist/context/providers/HubbardJContextProvider.js +74 -0
  128. package/dist/context/providers/HubbardUContextProvider.js +77 -0
  129. package/dist/context/providers/HubbardVContextProvider.js +104 -0
  130. package/dist/context/providers/IonDynamicsContextProvider.js +62 -0
  131. package/dist/context/providers/MLSettingsContextProvider.js +52 -0
  132. package/dist/context/providers/MLTrainTestSplitContextProvider.js +48 -0
  133. package/dist/context/providers/NEBFormDataProvider.js +38 -0
  134. package/dist/context/providers/NonCollinearMagnetizationContextProvider.js +253 -0
  135. package/dist/context/providers/PlanewaveCutoffsContextProvider.js +67 -0
  136. package/dist/context/providers/PointsGridFormDataProvider.js +272 -0
  137. package/dist/context/providers/PointsPathFormDataProvider.js +155 -0
  138. package/dist/context/providers/by_application/ExecutableContextProvider.js +17 -0
  139. package/dist/context/providers/by_application/espresso/QENEBContextProvider.js +60 -0
  140. package/dist/context/providers/by_application/espresso/QEPWXContextProvider.js +149 -0
  141. package/dist/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +84 -0
  142. package/dist/context/providers/by_application/vasp/VASPContextProvider.js +64 -0
  143. package/dist/context/providers/by_application/vasp/VASPNEBContextProvider.js +56 -0
  144. package/dist/context/providers/settings.js +37 -0
  145. package/dist/context/providers.js +199 -0
  146. package/dist/enums.js +65 -0
  147. package/dist/index.js +64 -0
  148. package/dist/patch.js +19 -0
  149. package/dist/subworkflows/convergence/factory.js +35 -0
  150. package/dist/subworkflows/convergence/non_uniform_kgrid.js +31 -0
  151. package/dist/subworkflows/convergence/parameter.js +70 -0
  152. package/dist/subworkflows/convergence/uniform_kgrid.js +26 -0
  153. package/dist/subworkflows/convergence.js +189 -0
  154. package/dist/subworkflows/create.js +285 -0
  155. package/dist/subworkflows/dynamic/espresso/getQpointIrrep.js +34 -0
  156. package/dist/subworkflows/dynamic/index.js +19 -0
  157. package/dist/subworkflows/dynamic/surfaceEnergy.js +67 -0
  158. package/dist/subworkflows/index.js +19 -0
  159. package/dist/subworkflows/subworkflow.js +279 -0
  160. package/dist/units/assertion.js +37 -0
  161. package/dist/units/assignment.js +42 -0
  162. package/dist/units/base.js +91 -0
  163. package/dist/units/builders/AssertionUnitConfigBuilder.js +34 -0
  164. package/dist/units/builders/AssignmentUnitConfigBuilder.js +41 -0
  165. package/dist/units/builders/ExecutionUnitConfigBuilder.js +67 -0
  166. package/dist/units/builders/IOUnitConfigBuilder.js +54 -0
  167. package/dist/units/builders/UnitConfigBuilder.js +79 -0
  168. package/dist/units/builders/index.js +18 -0
  169. package/dist/units/condition.js +52 -0
  170. package/dist/units/execution.js +222 -0
  171. package/dist/units/factory.js +53 -0
  172. package/dist/units/index.js +82 -0
  173. package/dist/units/io.js +148 -0
  174. package/dist/units/map.js +38 -0
  175. package/dist/units/processing.js +41 -0
  176. package/dist/units/reduce.js +24 -0
  177. package/dist/units/subworkflow.js +23 -0
  178. package/dist/utils.js +92 -0
  179. package/dist/workflows/create.js +312 -0
  180. package/dist/workflows/default.js +41 -0
  181. package/dist/workflows/index.js +108 -0
  182. package/dist/workflows/relaxation.js +37 -0
  183. package/dist/workflows/workflow.js +303 -0
  184. package/package.json +94 -0
  185. package/src/context/context.js +47 -0
  186. package/src/context/mixins/ApplicationContextMixin.js +19 -0
  187. package/src/context/mixins/JobContextMixin.js +36 -0
  188. package/src/context/mixins/MaterialContextMixin.js +41 -0
  189. package/src/context/mixins/MaterialsContextMixin.js +18 -0
  190. package/src/context/mixins/MaterialsSetContextMixin.js +24 -0
  191. package/src/context/mixins/MethodDataContextMixin.js +48 -0
  192. package/src/context/mixins/WorkflowContextMixin.js +25 -0
  193. package/src/context/providers/BoundaryConditionsFormDataProvider.js +80 -0
  194. package/src/context/providers/CollinearMagnetizationContextProvider.js +117 -0
  195. package/src/context/providers/HubbardContextProviderLegacy.js +75 -0
  196. package/src/context/providers/HubbardJContextProvider.js +73 -0
  197. package/src/context/providers/HubbardUContextProvider.js +100 -0
  198. package/src/context/providers/HubbardVContextProvider.js +111 -0
  199. package/src/context/providers/IonDynamicsContextProvider.js +56 -0
  200. package/src/context/providers/MLSettingsContextProvider.js +48 -0
  201. package/src/context/providers/MLTrainTestSplitContextProvider.js +45 -0
  202. package/src/context/providers/NEBFormDataProvider.js +32 -0
  203. package/src/context/providers/NonCollinearMagnetizationContextProvider.js +269 -0
  204. package/src/context/providers/PlanewaveCutoffsContextProvider.js +68 -0
  205. package/src/context/providers/PointsGridFormDataProvider.js +285 -0
  206. package/src/context/providers/PointsPathFormDataProvider.js +165 -0
  207. package/src/context/providers/by_application/ExecutableContextProvider.js +10 -0
  208. package/src/context/providers/by_application/espresso/QENEBContextProvider.js +56 -0
  209. package/src/context/providers/by_application/espresso/QEPWXContextProvider.js +166 -0
  210. package/src/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +86 -0
  211. package/src/context/providers/by_application/vasp/VASPContextProvider.js +56 -0
  212. package/src/context/providers/by_application/vasp/VASPNEBContextProvider.js +46 -0
  213. package/src/context/providers/settings.js +38 -0
  214. package/src/context/providers.js +140 -0
  215. package/src/enums.js +65 -0
  216. package/src/index.js +17 -0
  217. package/src/patch.js +12 -0
  218. package/src/subworkflows/convergence/factory.js +14 -0
  219. package/src/subworkflows/convergence/non_uniform_kgrid.js +28 -0
  220. package/src/subworkflows/convergence/parameter.js +58 -0
  221. package/src/subworkflows/convergence/uniform_kgrid.js +22 -0
  222. package/src/subworkflows/convergence.js +196 -0
  223. package/src/subworkflows/create.js +201 -0
  224. package/src/subworkflows/dynamic/espresso/getQpointIrrep.js +35 -0
  225. package/src/subworkflows/dynamic/index.js +8 -0
  226. package/src/subworkflows/dynamic/surfaceEnergy.js +124 -0
  227. package/src/subworkflows/index.js +2 -0
  228. package/src/subworkflows/subworkflow.js +329 -0
  229. package/src/units/assertion.js +29 -0
  230. package/src/units/assignment.js +34 -0
  231. package/src/units/base.js +97 -0
  232. package/src/units/builders/AssertionUnitConfigBuilder.js +28 -0
  233. package/src/units/builders/AssignmentUnitConfigBuilder.js +36 -0
  234. package/src/units/builders/ExecutionUnitConfigBuilder.js +59 -0
  235. package/src/units/builders/IOUnitConfigBuilder.js +53 -0
  236. package/src/units/builders/UnitConfigBuilder.js +86 -0
  237. package/src/units/builders/index.js +15 -0
  238. package/src/units/condition.js +47 -0
  239. package/src/units/execution.js +263 -0
  240. package/src/units/factory.js +53 -0
  241. package/src/units/index.js +25 -0
  242. package/src/units/io.js +163 -0
  243. package/src/units/map.js +33 -0
  244. package/src/units/processing.js +39 -0
  245. package/src/units/reduce.js +17 -0
  246. package/src/units/subworkflow.js +15 -0
  247. package/src/utils.js +73 -0
  248. package/src/workflows/create.js +222 -0
  249. package/src/workflows/default.js +39 -0
  250. package/src/workflows/index.js +99 -0
  251. package/src/workflows/relaxation.js +41 -0
  252. package/src/workflows/workflow.js +351 -0
@@ -0,0 +1,80 @@
1
+ import JSONSchemaFormDataProvider from "@exabyte-io/ade.js/dist/js/context/JSONSchemaFormDataProvider";
2
+ import { Made } from "@mat3ra/made";
3
+ import { Utils } from "@mat3ra/utils";
4
+
5
+ import { materialContextMixin } from "../mixins/MaterialContextMixin";
6
+
7
+ export class BoundaryConditionsFormDataProvider extends JSONSchemaFormDataProvider {
8
+ constructor(config) {
9
+ super(config);
10
+ this.initMaterialContextMixin();
11
+ }
12
+
13
+ get boundaryConditions() {
14
+ return this.material.metadata.boundaryConditions || {};
15
+ }
16
+
17
+ // eslint-disable-next-line class-methods-use-this
18
+ get defaultData() {
19
+ return {
20
+ type: this.boundaryConditions.type || "pbc",
21
+ offset: this.boundaryConditions.offset || 0,
22
+ electricField: 0,
23
+ targetFermiEnergy: 0,
24
+ };
25
+ }
26
+
27
+ // eslint-disable-next-line class-methods-use-this
28
+ get uiSchema() {
29
+ return {
30
+ type: { "ui:disabled": true },
31
+ offset: { "ui:disabled": true },
32
+ electricField: {},
33
+ targetFermiEnergy: {},
34
+ };
35
+ }
36
+
37
+ // eslint-disable-next-line class-methods-use-this
38
+ get humanName() {
39
+ return "Boundary Conditions";
40
+ }
41
+
42
+ yieldDataForRendering() {
43
+ const data = Utils.clone.deepClone(this.yieldData());
44
+ data.boundaryConditions.offset *= Made.coefficients.ANGSTROM_TO_BOHR;
45
+ data.boundaryConditions.targetFermiEnergy *= Made.coefficients.EV_TO_RY;
46
+ data.boundaryConditions.electricField *= Made.coefficients.EV_A_TO_RY_BOHR;
47
+ return data;
48
+ }
49
+
50
+ get jsonSchema() {
51
+ return {
52
+ $schema: "http://json-schema.org/draft-07/schema#",
53
+ type: "object",
54
+ properties: {
55
+ type: {
56
+ type: "string",
57
+ title: "Type",
58
+ default: this.defaultData.type,
59
+ },
60
+ offset: {
61
+ type: "number",
62
+ title: "Offset (A)",
63
+ default: this.defaultData.offset,
64
+ },
65
+ electricField: {
66
+ type: "number",
67
+ title: "Electric Field (eV/A)",
68
+ default: this.defaultData.electricField,
69
+ },
70
+ targetFermiEnergy: {
71
+ type: "number",
72
+ title: "Target Fermi Energy (eV)",
73
+ default: this.defaultData.targetFermiEnergy,
74
+ },
75
+ },
76
+ };
77
+ }
78
+ }
79
+
80
+ materialContextMixin(BoundaryConditionsFormDataProvider.prototype);
@@ -0,0 +1,117 @@
1
+ import JSONSchemaFormDataProvider from "@exabyte-io/ade.js/dist/js/context/JSONSchemaFormDataProvider";
2
+ import lodash from "lodash";
3
+
4
+ import { materialContextMixin } from "../mixins/MaterialContextMixin";
5
+
6
+ export class CollinearMagnetizationContextProvider extends JSONSchemaFormDataProvider {
7
+ constructor(config) {
8
+ super(config);
9
+
10
+ this.initMaterialContextMixin();
11
+
12
+ this.firstElement =
13
+ this.uniqueElementsWithLabels?.length > 0 ? this.uniqueElementsWithLabels[0] : "";
14
+ this.isTotalMagnetization = lodash.get(this.data, "isTotalMagnetization", false);
15
+ }
16
+
17
+ get uniqueElementsWithLabels() {
18
+ const elementsWithLabelsArray = this.material?.Basis?.elementsWithLabelsArray || [];
19
+ return [...new Set(elementsWithLabelsArray)];
20
+ }
21
+
22
+ indexOfElement = (element) => {
23
+ return this.uniqueElementsWithLabels.indexOf(element) + 1;
24
+ };
25
+
26
+ get defaultData() {
27
+ return {
28
+ startingMagnetization: [
29
+ {
30
+ index: 1,
31
+ atomicSpecies: this.firstElement,
32
+ value: 0.0,
33
+ },
34
+ ],
35
+ isTotalMagnetization: false,
36
+ totalMagnetization: 0.0,
37
+ };
38
+ }
39
+
40
+ transformData = (data) => {
41
+ const startingMagnetizationWithIndex = data.startingMagnetization.map((row) => ({
42
+ ...row,
43
+ index: this.indexOfElement(row.atomicSpecies),
44
+ }));
45
+
46
+ return {
47
+ ...data,
48
+ startingMagnetization: startingMagnetizationWithIndex,
49
+ };
50
+ };
51
+
52
+ get uiSchemaStyled() {
53
+ return {
54
+ startingMagnetization: {
55
+ items: {
56
+ atomicSpecies: {
57
+ "ui:classNames": "col-xs-3",
58
+ },
59
+ value: {
60
+ "ui:classNames": "col-xs-6",
61
+ },
62
+ },
63
+ "ui:readonly": this.isTotalMagnetization,
64
+ },
65
+ isTotalMagnetization: {},
66
+ totalMagnetization: {
67
+ "ui:classNames": "col-xs-6",
68
+ "ui:readonly": !this.isTotalMagnetization,
69
+ },
70
+ };
71
+ }
72
+
73
+ get jsonSchema() {
74
+ return {
75
+ $schema: "http://json-schema.org/draft-07/schema#",
76
+ title: "",
77
+ description: "Set starting magnetization, can have values in the range [-1, +1].",
78
+ type: "object",
79
+ properties: {
80
+ startingMagnetization: {
81
+ type: "array",
82
+ maxItems: this.uniqueElementsWithLabels.length,
83
+ items: {
84
+ type: "object",
85
+ properties: {
86
+ atomicSpecies: {
87
+ type: "string",
88
+ title: "Atomic species",
89
+ enum: this.uniqueElementsWithLabels,
90
+ default: this.firstElement,
91
+ },
92
+ value: {
93
+ type: "number",
94
+ title: "Starting magnetization",
95
+ default: 0.0,
96
+ minimum: -1.0,
97
+ maximum: 1.0,
98
+ },
99
+ },
100
+ },
101
+ },
102
+ isTotalMagnetization: {
103
+ type: "boolean",
104
+ title: "Set total magnetization instead",
105
+ default: false,
106
+ },
107
+ totalMagnetization: {
108
+ type: "number",
109
+ title: "Total magnetization",
110
+ default: 0.0,
111
+ },
112
+ },
113
+ };
114
+ }
115
+ }
116
+
117
+ materialContextMixin(CollinearMagnetizationContextProvider.prototype);
@@ -0,0 +1,75 @@
1
+ import { HubbardUContextProvider } from "./HubbardUContextProvider";
2
+
3
+ const defaultHubbardConfig = {
4
+ hubbardUValue: 1.0,
5
+ };
6
+
7
+ export class HubbardContextProviderLegacy extends HubbardUContextProvider {
8
+ get defaultData() {
9
+ return [
10
+ {
11
+ ...defaultHubbardConfig,
12
+ atomicSpecies: this.firstElement,
13
+ atomicSpeciesIndex: this.uniqueElementsWithLabels?.length > 0 ? 1 : null,
14
+ },
15
+ ];
16
+ }
17
+
18
+ speciesIndexFromSpecies = (species) => {
19
+ return this.uniqueElementsWithLabels?.length > 0
20
+ ? this.uniqueElementsWithLabels.indexOf(species) + 1
21
+ : null;
22
+ };
23
+
24
+ transformData = (data) => {
25
+ return data.map((row) => ({
26
+ ...row,
27
+ atomicSpeciesIndex: this.speciesIndexFromSpecies(row.atomicSpecies),
28
+ }));
29
+ };
30
+
31
+ get uiSchemaStyled() {
32
+ return {
33
+ "ui:options": {
34
+ addable: true,
35
+ orderable: false,
36
+ removable: true,
37
+ },
38
+ items: {
39
+ atomicSpecies: this.defaultFieldStyles,
40
+ atomicSpeciesIndex: { ...this.defaultFieldStyles, "ui:readonly": true },
41
+ hubbardUValue: this.defaultFieldStyles,
42
+ },
43
+ };
44
+ }
45
+
46
+ get jsonSchema() {
47
+ return {
48
+ $schema: "http://json-schema.org/draft-07/schema#",
49
+ title: "",
50
+ description: "Hubbard parameters for DFT+U calculation.",
51
+ type: "array",
52
+ uniqueItems: true,
53
+ minItems: 1,
54
+ items: {
55
+ type: "object",
56
+ properties: {
57
+ atomicSpecies: {
58
+ type: "string",
59
+ title: "Atomic species",
60
+ enum: this.uniqueElementsWithLabels,
61
+ },
62
+ atomicSpeciesIndex: {
63
+ type: "integer",
64
+ title: "Species index",
65
+ },
66
+ hubbardUValue: {
67
+ type: "number",
68
+ title: "Hubbard U (eV)",
69
+ default: defaultHubbardConfig.hubbardUValue,
70
+ },
71
+ },
72
+ },
73
+ };
74
+ }
75
+ }
@@ -0,0 +1,73 @@
1
+ import { HubbardUContextProvider } from "./HubbardUContextProvider";
2
+
3
+ const defaultHubbardConfig = {
4
+ paramType: "U",
5
+ atomicSpecies: "",
6
+ atomicOrbital: "2p",
7
+ value: 1.0,
8
+ };
9
+
10
+ export class HubbardJContextProvider extends HubbardUContextProvider {
11
+ get defaultData() {
12
+ return [
13
+ {
14
+ ...defaultHubbardConfig,
15
+ atomicSpecies: this.firstElement,
16
+ },
17
+ ];
18
+ }
19
+
20
+ get uiSchemaStyled() {
21
+ return {
22
+ "ui:options": {
23
+ addable: true,
24
+ orderable: true,
25
+ removable: true,
26
+ },
27
+ items: {
28
+ paramType: this.defaultFieldStyles,
29
+ atomicSpecies: this.defaultFieldStyles,
30
+ atomicOrbital: this.defaultFieldStyles,
31
+ value: this.defaultFieldStyles,
32
+ },
33
+ };
34
+ }
35
+
36
+ get jsonSchema() {
37
+ return {
38
+ $schema: "http://json-schema.org/draft-07/schema#",
39
+ title: "",
40
+ description: "Hubbard parameters for DFT+U+J calculation.",
41
+ type: "array",
42
+ items: {
43
+ type: "object",
44
+ properties: {
45
+ paramType: {
46
+ type: "string",
47
+ title: "Species",
48
+ enum: ["U", "J", "B", "E2", "E3"],
49
+ default: defaultHubbardConfig.paramType,
50
+ },
51
+ atomicSpecies: {
52
+ type: "string",
53
+ title: "Species",
54
+ enum: this.uniqueElementsWithLabels,
55
+ default: this.firstElement,
56
+ },
57
+ atomicOrbital: {
58
+ type: "string",
59
+ title: "Orbital",
60
+ enum: this.orbitalList,
61
+ default: defaultHubbardConfig.atomicOrbital,
62
+ },
63
+ value: {
64
+ type: "number",
65
+ title: "Value (eV)",
66
+ default: defaultHubbardConfig.value,
67
+ },
68
+ },
69
+ },
70
+ minItems: 1,
71
+ };
72
+ }
73
+ }
@@ -0,0 +1,100 @@
1
+ import JSONSchemaFormDataProvider from "@exabyte-io/ade.js/dist/js/context/JSONSchemaFormDataProvider";
2
+
3
+ import { materialContextMixin } from "../mixins/MaterialContextMixin";
4
+
5
+ const defaultHubbardConfig = {
6
+ atomicSpecies: "",
7
+ atomicOrbital: "2p",
8
+ hubbardUValue: 1.0,
9
+ };
10
+
11
+ export class HubbardUContextProvider extends JSONSchemaFormDataProvider {
12
+ constructor(config) {
13
+ super(config);
14
+
15
+ this.initMaterialContextMixin();
16
+
17
+ this.uniqueElements = this.material?.Basis?.uniqueElements || [];
18
+ this.orbitalList = [
19
+ "2p",
20
+ "3s",
21
+ "3p",
22
+ "3d",
23
+ "4s",
24
+ "4p",
25
+ "4d",
26
+ "4f",
27
+ "5s",
28
+ "5p",
29
+ "5d",
30
+ "5f",
31
+ "6s",
32
+ "6p",
33
+ "6d",
34
+ "7s",
35
+ "7p",
36
+ "7d",
37
+ ];
38
+ const _elementsWithLabels = this.material?.Basis?.elementsWithLabelsArray || [];
39
+ this.uniqueElementsWithLabels = [...new Set(_elementsWithLabels)];
40
+ this.firstElement =
41
+ this.uniqueElementsWithLabels?.length > 0 ? this.uniqueElementsWithLabels[0] : "";
42
+ }
43
+
44
+ get defaultData() {
45
+ return [
46
+ {
47
+ ...defaultHubbardConfig,
48
+ atomicSpecies: this.firstElement,
49
+ },
50
+ ];
51
+ }
52
+
53
+ get uiSchemaStyled() {
54
+ return {
55
+ "ui:options": {
56
+ addable: true,
57
+ orderable: false,
58
+ removable: true,
59
+ },
60
+ items: {
61
+ atomicSpecies: this.defaultFieldStyles,
62
+ atomicOrbital: this.defaultFieldStyles,
63
+ hubbardUValue: this.defaultFieldStyles,
64
+ },
65
+ };
66
+ }
67
+
68
+ get jsonSchema() {
69
+ return {
70
+ $schema: "http://json-schema.org/draft-07/schema#",
71
+ title: "",
72
+ description: "Hubbard U parameters for DFT+U or DFT+U+V calculation.",
73
+ type: "array",
74
+ items: {
75
+ type: "object",
76
+ properties: {
77
+ atomicSpecies: {
78
+ type: "string",
79
+ title: "Atomic species",
80
+ enum: this.uniqueElementsWithLabels,
81
+ default: this.firstElement,
82
+ },
83
+ atomicOrbital: {
84
+ type: "string",
85
+ title: "Atomic orbital",
86
+ enum: this.orbitalList,
87
+ default: defaultHubbardConfig.atomicOrbital,
88
+ },
89
+ hubbardUValue: {
90
+ type: "number",
91
+ title: "Hubbard U (eV)",
92
+ default: defaultHubbardConfig.hubbardUValue,
93
+ },
94
+ },
95
+ },
96
+ };
97
+ }
98
+ }
99
+
100
+ materialContextMixin(HubbardUContextProvider.prototype);
@@ -0,0 +1,111 @@
1
+ import { HubbardUContextProvider } from "./HubbardUContextProvider";
2
+
3
+ const defaultHubbardConfig = {
4
+ atomicSpecies: "",
5
+ atomicOrbital: "2p",
6
+ atomicSpecies2: "",
7
+ atomicOrbital2: "2p",
8
+ siteIndex: 1,
9
+ siteIndex2: 1,
10
+ hubbardVValue: 1.0,
11
+ };
12
+
13
+ export class HubbardVContextProvider extends HubbardUContextProvider {
14
+ get defaultData() {
15
+ return [
16
+ {
17
+ ...defaultHubbardConfig,
18
+ atomicSpecies: this.firstSpecies,
19
+ atomicSpecies2: this.secondSpecies,
20
+ siteIndex2:
21
+ this.uniqueElementsWithLabels?.length > 1 ? 2 : defaultHubbardConfig.siteIndex2,
22
+ },
23
+ ];
24
+ }
25
+
26
+ get firstSpecies() {
27
+ return this.firstElement;
28
+ }
29
+
30
+ get secondSpecies() {
31
+ return this.uniqueElementsWithLabels?.length > 1
32
+ ? this.uniqueElementsWithLabels[1]
33
+ : this.firstSpecies;
34
+ }
35
+
36
+ get uiSchemaStyled() {
37
+ return {
38
+ "ui:options": {
39
+ addable: true,
40
+ orderable: true,
41
+ removable: true,
42
+ },
43
+ items: {
44
+ atomicSpecies: this.defaultFieldStyles,
45
+ atomicOrbital: this.defaultFieldStyles,
46
+ atomicSpecies2: this.defaultFieldStyles,
47
+ atomicOrbital2: this.defaultFieldStyles,
48
+ siteIndex: this.defaultFieldStyles,
49
+ siteIndex2: this.defaultFieldStyles,
50
+ hubbardVValue: this.defaultFieldStyles,
51
+ },
52
+ };
53
+ }
54
+
55
+ get jsonSchema() {
56
+ return {
57
+ $schema: "http://json-schema.org/draft-07/schema#",
58
+ title: "",
59
+ description: "Hubbard V parameters for DFT+U+V calculation.",
60
+ type: "array",
61
+ items: {
62
+ type: "object",
63
+ properties: {
64
+ atomicSpecies: {
65
+ type: "string",
66
+ title: "Species 1",
67
+ enum: this.uniqueElementsWithLabels,
68
+ default: this.firstSpecies,
69
+ },
70
+ siteIndex: {
71
+ type: "integer",
72
+ title: "Site no 1",
73
+ default: defaultHubbardConfig.siteIndex,
74
+ },
75
+ atomicOrbital: {
76
+ type: "string",
77
+ title: "Orbital 1",
78
+ enum: this.orbitalList,
79
+ default: defaultHubbardConfig.atomicOrbital,
80
+ },
81
+ atomicSpecies2: {
82
+ type: "string",
83
+ title: "Species 2",
84
+ enum: this.uniqueElementsWithLabels,
85
+ default: this.secondSpecies,
86
+ },
87
+ siteIndex2: {
88
+ type: "integer",
89
+ title: "Site no 2",
90
+ default:
91
+ this.uniqueElementsWithLabels?.length > 1
92
+ ? 2
93
+ : defaultHubbardConfig.siteIndex2,
94
+ },
95
+ atomicOrbital2: {
96
+ type: "string",
97
+ title: "Orbital 2",
98
+ enum: this.orbitalList,
99
+ default: defaultHubbardConfig.atomicOrbital,
100
+ },
101
+ hubbardVValue: {
102
+ type: "number",
103
+ title: "V (eV)",
104
+ default: defaultHubbardConfig.hubbardVValue,
105
+ },
106
+ },
107
+ },
108
+ minItems: 1,
109
+ };
110
+ }
111
+ }
@@ -0,0 +1,56 @@
1
+ import JSONSchemaFormDataProvider from "@exabyte-io/ade.js/dist/js/context/JSONSchemaFormDataProvider";
2
+
3
+ const defaultMDConfig = {
4
+ numberOfSteps: 100,
5
+ timeStep: 5.0,
6
+ electronMass: 100.0,
7
+ temperature: 300.0,
8
+ };
9
+
10
+ export class IonDynamicsContextProvider extends JSONSchemaFormDataProvider {
11
+ // eslint-disable-next-line class-methods-use-this
12
+ get defaultData() {
13
+ return defaultMDConfig;
14
+ }
15
+
16
+ // eslint-disable-next-line class-methods-use-this
17
+ get uiSchema() {
18
+ return {
19
+ numberOfSteps: {},
20
+ timeStep: {},
21
+ electronMass: {},
22
+ temperature: {},
23
+ };
24
+ }
25
+
26
+ // eslint-disable-next-line class-methods-use-this
27
+ get jsonSchema() {
28
+ return {
29
+ $schema: "http://json-schema.org/draft-07/schema#",
30
+ type: "object",
31
+ description: "Important parameters for molecular dynamics calculation",
32
+ properties: {
33
+ numberOfSteps: {
34
+ type: "integer",
35
+ title: "numberOfSteps",
36
+ default: defaultMDConfig.numberOfSteps,
37
+ },
38
+ timeStep: {
39
+ type: "number",
40
+ title: "timeStep (Hartree a.u.)",
41
+ default: defaultMDConfig.timeStep,
42
+ },
43
+ electronMass: {
44
+ type: "number",
45
+ title: "Effective electron mass",
46
+ default: defaultMDConfig.electronMass,
47
+ },
48
+ temperature: {
49
+ type: "number",
50
+ title: "Ionic temperature (K)",
51
+ default: defaultMDConfig.temperature,
52
+ },
53
+ },
54
+ };
55
+ }
56
+ }
@@ -0,0 +1,48 @@
1
+ import ContextProvider from "@exabyte-io/ade.js/dist/js/context/ContextProvider";
2
+
3
+ import { applicationContextMixin } from "../mixins/ApplicationContextMixin";
4
+
5
+ export class MLSettingsContextProvider extends ContextProvider {
6
+ constructor(config) {
7
+ super(config);
8
+ this.initApplicationContextMixin();
9
+ }
10
+
11
+ // eslint-disable-next-line class-methods-use-this
12
+ get uiSchema() {
13
+ return {
14
+ target_column_name: {},
15
+ problem_category: {},
16
+ };
17
+ }
18
+
19
+ // eslint-disable-next-line class-methods-use-this
20
+ get defaultData() {
21
+ return {
22
+ target_column_name: "target",
23
+ problem_category: "regression",
24
+ };
25
+ }
26
+
27
+ get jsonSchema() {
28
+ return {
29
+ $schema: "http://json-schema.org/draft-07/schema#",
30
+ title: " ",
31
+ description: "Settings important to machine learning runs.",
32
+ type: "object",
33
+ properties: {
34
+ target_column_name: {
35
+ type: "string",
36
+ default: this.defaultData.target_column_name,
37
+ },
38
+ problem_category: {
39
+ type: "string",
40
+ default: this.defaultData.problem_category,
41
+ enum: ["regression", "classification", "clustering"],
42
+ },
43
+ },
44
+ };
45
+ }
46
+ }
47
+
48
+ applicationContextMixin(MLSettingsContextProvider.prototype);