@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,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MLSettingsContextProvider = void 0;
7
+ var _ContextProvider = _interopRequireDefault(require("@exabyte-io/ade.js/dist/js/context/ContextProvider"));
8
+ var _ApplicationContextMixin = require("../mixins/ApplicationContextMixin");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class MLSettingsContextProvider extends _ContextProvider.default {
11
+ constructor(config) {
12
+ super(config);
13
+ this.initApplicationContextMixin();
14
+ }
15
+
16
+ // eslint-disable-next-line class-methods-use-this
17
+ get uiSchema() {
18
+ return {
19
+ target_column_name: {},
20
+ problem_category: {}
21
+ };
22
+ }
23
+
24
+ // eslint-disable-next-line class-methods-use-this
25
+ get defaultData() {
26
+ return {
27
+ target_column_name: "target",
28
+ problem_category: "regression"
29
+ };
30
+ }
31
+ get jsonSchema() {
32
+ return {
33
+ $schema: "http://json-schema.org/draft-07/schema#",
34
+ title: " ",
35
+ description: "Settings important to machine learning runs.",
36
+ type: "object",
37
+ properties: {
38
+ target_column_name: {
39
+ type: "string",
40
+ default: this.defaultData.target_column_name
41
+ },
42
+ problem_category: {
43
+ type: "string",
44
+ default: this.defaultData.problem_category,
45
+ enum: ["regression", "classification", "clustering"]
46
+ }
47
+ }
48
+ };
49
+ }
50
+ }
51
+ exports.MLSettingsContextProvider = MLSettingsContextProvider;
52
+ (0, _ApplicationContextMixin.applicationContextMixin)(MLSettingsContextProvider.prototype);
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MLTrainTestSplitContextProvider = void 0;
7
+ var _ContextProvider = _interopRequireDefault(require("@exabyte-io/ade.js/dist/js/context/ContextProvider"));
8
+ var _ApplicationContextMixin = require("../mixins/ApplicationContextMixin");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ class MLTrainTestSplitContextProvider extends _ContextProvider.default {
11
+ constructor(config) {
12
+ super(config);
13
+ this.initApplicationContextMixin();
14
+ }
15
+
16
+ // eslint-disable-next-line class-methods-use-this
17
+ get uiSchema() {
18
+ return {
19
+ target_column_name: {},
20
+ problem_category: {}
21
+ };
22
+ }
23
+
24
+ // eslint-disable-next-line class-methods-use-this
25
+ get defaultData() {
26
+ return {
27
+ fraction_held_as_test_set: 0.2
28
+ };
29
+ }
30
+ get jsonSchema() {
31
+ return {
32
+ $schema: "http://json-schema.org/draft-07/schema#",
33
+ title: " ",
34
+ description: "Fraction held as the test set. For example, a value of 0.2 corresponds to an 80/20 train/test split.",
35
+ type: "object",
36
+ properties: {
37
+ fraction_held_as_test_set: {
38
+ type: "number",
39
+ default: this.defaultData.fraction_held_as_test_set,
40
+ minimum: 0,
41
+ maximum: 1
42
+ }
43
+ }
44
+ };
45
+ }
46
+ }
47
+ exports.MLTrainTestSplitContextProvider = MLTrainTestSplitContextProvider;
48
+ (0, _ApplicationContextMixin.applicationContextMixin)(MLTrainTestSplitContextProvider.prototype);
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NEBFormDataProvider = void 0;
7
+ var _JSONSchemaFormDataProvider = _interopRequireDefault(require("@exabyte-io/ade.js/dist/js/context/JSONSchemaFormDataProvider"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ class NEBFormDataProvider extends _JSONSchemaFormDataProvider.default {
10
+ // eslint-disable-next-line class-methods-use-this
11
+ get defaultData() {
12
+ return {
13
+ nImages: 1
14
+ };
15
+ }
16
+
17
+ // eslint-disable-next-line class-methods-use-this
18
+ get uiSchema() {
19
+ return {
20
+ nImages: {}
21
+ };
22
+ }
23
+ get jsonSchema() {
24
+ return {
25
+ $schema: "http://json-schema.org/draft-07/schema#",
26
+ title: " ",
27
+ description: "Number of intermediate NEB images.",
28
+ type: "object",
29
+ properties: {
30
+ nImages: {
31
+ type: "number",
32
+ default: this.defaultData.nImages
33
+ }
34
+ }
35
+ };
36
+ }
37
+ }
38
+ exports.NEBFormDataProvider = NEBFormDataProvider;
@@ -0,0 +1,253 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NonCollinearMagnetizationContextProvider = void 0;
7
+ var _JSONSchemaFormDataProvider = _interopRequireDefault(require("@exabyte-io/ade.js/dist/js/context/JSONSchemaFormDataProvider"));
8
+ var _lodash = _interopRequireDefault(require("lodash"));
9
+ var _MaterialContextMixin = require("../mixins/MaterialContextMixin");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ class NonCollinearMagnetizationContextProvider extends _JSONSchemaFormDataProvider.default {
12
+ constructor(config) {
13
+ super(config);
14
+ this.initMaterialContextMixin();
15
+ this.isStartingMagnetization = _lodash.default.get(this.data, "isStartingMagnetization", true);
16
+ this.isConstrainedMagnetization = _lodash.default.get(this.data, "isConstrainedMagnetization", false);
17
+ this.isExistingChargeDensity = _lodash.default.get(this.data, "isExistingChargeDensity", false);
18
+ this.isArbitrarySpinDirection = _lodash.default.get(this.data, "isArbitrarySpinDirection", false);
19
+ this.isFixedMagnetization = _lodash.default.get(this.data, "isFixedMagnetization", false);
20
+ this.constrainedMagnetization = _lodash.default.get(this.data, "constrainedMagnetization", {});
21
+ }
22
+ get uniqueElementsWithLabels() {
23
+ const elementsWithLabelsArray = this.material?.Basis?.elementsWithLabelsArray || [];
24
+ return [...new Set(elementsWithLabelsArray)];
25
+ }
26
+ get defaultData() {
27
+ const startingMagnetization = this.uniqueElementsWithLabels.map((element, index) => {
28
+ return {
29
+ index: index + 1,
30
+ atomicSpecies: element,
31
+ value: 0.0
32
+ };
33
+ });
34
+ const spinAngles = this.uniqueElementsWithLabels.map((element, index) => {
35
+ return {
36
+ index: index + 1,
37
+ atomicSpecies: element,
38
+ angle1: 0.0,
39
+ angle2: 0.0
40
+ };
41
+ });
42
+ return {
43
+ isExistingChargeDensity: false,
44
+ isStartingMagnetization: true,
45
+ isConstrainedMagnetization: false,
46
+ isArbitrarySpinAngle: false,
47
+ isFixedMagnetization: false,
48
+ lforcet: true,
49
+ spinAngles,
50
+ startingMagnetization,
51
+ constrainedMagnetization: {
52
+ lambda: 0.0,
53
+ constrainType: "atomic direction"
54
+ },
55
+ fixedMagnetization: {
56
+ x: 0.0,
57
+ y: 0.0,
58
+ z: 0.0
59
+ }
60
+ };
61
+ }
62
+ get uiSchemaStyled() {
63
+ return {
64
+ isExistingChargeDensity: {},
65
+ lforcet: {
66
+ "ui:readonly": !this.isExistingChargeDensity,
67
+ "ui:widget": "radio",
68
+ "ui:options": {
69
+ inline: true
70
+ }
71
+ },
72
+ isArbitrarySpinDirection: {},
73
+ spinAngles: {
74
+ items: {
75
+ atomicSpecies: {
76
+ ...this.defaultFieldStyles,
77
+ "ui:readonly": true
78
+ },
79
+ angle1: this.defaultFieldStyles,
80
+ angle2: this.defaultFieldStyles
81
+ },
82
+ "ui:readonly": !this.isArbitrarySpinDirection,
83
+ "ui:options": {
84
+ addable: false,
85
+ orderable: false,
86
+ removable: false
87
+ }
88
+ },
89
+ isStartingMagnetization: {},
90
+ startingMagnetization: {
91
+ items: {
92
+ atomicSpecies: {
93
+ ...this.defaultFieldStyles,
94
+ "ui:readonly": true
95
+ },
96
+ value: {
97
+ "ui:classNames": "col-xs-6"
98
+ }
99
+ },
100
+ "ui:readonly": !this.isStartingMagnetization,
101
+ "ui:options": {
102
+ addable: false,
103
+ orderable: false,
104
+ removable: false
105
+ }
106
+ },
107
+ isConstrainedMagnetization: {},
108
+ constrainedMagnetization: {
109
+ constrainType: this.defaultFieldStyles,
110
+ lambda: this.defaultFieldStyles,
111
+ "ui:readonly": !this.isConstrainedMagnetization
112
+ },
113
+ isFixedMagnetization: {
114
+ "ui:readonly": !(this.isConstrainedMagnetization && this.constrainedMagnetization?.constrainType === "total")
115
+ },
116
+ fixedMagnetization: {
117
+ x: this.defaultFieldStyles,
118
+ y: this.defaultFieldStyles,
119
+ z: this.defaultFieldStyles,
120
+ "ui:readonly": !(this.isFixedMagnetization && this.isConstrainedMagnetization && this.constrainedMagnetization?.constrainType === "total")
121
+ }
122
+ };
123
+ }
124
+ get jsonSchema() {
125
+ return {
126
+ $schema: "http://json-schema.org/draft-07/schema#",
127
+ title: "",
128
+ description: "Set initial parameters for non-collinear spin magnetic (SOC) calculation.",
129
+ type: "object",
130
+ properties: {
131
+ isStartingMagnetization: {
132
+ type: "boolean",
133
+ title: "Set starting magnetization",
134
+ default: true
135
+ },
136
+ startingMagnetization: {
137
+ type: "array",
138
+ minItems: this.uniqueElementsWithLabels.length,
139
+ maxItems: this.uniqueElementsWithLabels.length,
140
+ items: {
141
+ type: "object",
142
+ properties: {
143
+ atomicSpecies: {
144
+ type: "string",
145
+ title: "Atomic species"
146
+ },
147
+ value: {
148
+ type: "number",
149
+ title: "Starting magnetization",
150
+ default: 0.0,
151
+ minimum: -1.0,
152
+ maximum: 1.0
153
+ }
154
+ }
155
+ }
156
+ },
157
+ isExistingChargeDensity: {
158
+ type: "boolean",
159
+ title: "Start calculation from existing charge density",
160
+ default: false
161
+ },
162
+ lforcet: {
163
+ title: "Set lforcet to",
164
+ type: "boolean",
165
+ oneOf: [{
166
+ const: true,
167
+ title: "True"
168
+ }, {
169
+ const: false,
170
+ title: "False"
171
+ }]
172
+ },
173
+ isArbitrarySpinDirection: {
174
+ type: "boolean",
175
+ title: "Set spin directions",
176
+ default: false
177
+ },
178
+ spinAngles: {
179
+ type: "array",
180
+ minItems: this.uniqueElementsWithLabels.length,
181
+ maxItems: this.uniqueElementsWithLabels.length,
182
+ items: {
183
+ type: "object",
184
+ properties: {
185
+ atomicSpecies: {
186
+ type: "string",
187
+ title: "Atomic species"
188
+ },
189
+ angle1: {
190
+ type: "number",
191
+ title: "Angle1 (deg)",
192
+ default: 0.0
193
+ },
194
+ angle2: {
195
+ type: "number",
196
+ title: "Angle2 (deg)",
197
+ default: 0.0
198
+ }
199
+ }
200
+ }
201
+ },
202
+ isConstrainedMagnetization: {
203
+ type: "boolean",
204
+ title: "Set constrained magnetization",
205
+ default: false
206
+ },
207
+ constrainedMagnetization: {
208
+ type: "object",
209
+ properties: {
210
+ constrainType: {
211
+ type: "string",
212
+ title: "Constrain type",
213
+ enum: ["none", "total", "atomic", "total direction", "atomic direction"],
214
+ default: "atomic direction"
215
+ },
216
+ lambda: {
217
+ type: "number",
218
+ title: "lambda",
219
+ default: 0.0
220
+ }
221
+ }
222
+ },
223
+ isFixedMagnetization: {
224
+ type: "boolean",
225
+ title: "Set Fixed magnetization (only applicable to constrained magnetization of 'total' type)",
226
+ default: true
227
+ },
228
+ fixedMagnetization: {
229
+ type: "object",
230
+ properties: {
231
+ x: {
232
+ type: "number",
233
+ title: "X-component",
234
+ default: 0.0
235
+ },
236
+ y: {
237
+ type: "number",
238
+ title: "Y-component",
239
+ default: 0.0
240
+ },
241
+ z: {
242
+ type: "number",
243
+ title: "Z-component",
244
+ default: 0.0
245
+ }
246
+ }
247
+ }
248
+ }
249
+ };
250
+ }
251
+ }
252
+ exports.NonCollinearMagnetizationContextProvider = NonCollinearMagnetizationContextProvider;
253
+ (0, _MaterialContextMixin.materialContextMixin)(NonCollinearMagnetizationContextProvider.prototype);
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PlanewaveCutoffsContextProvider = void 0;
7
+ var _ContextProvider = _interopRequireDefault(require("@exabyte-io/ade.js/dist/js/context/ContextProvider"));
8
+ var _ApplicationContextMixin = require("../mixins/ApplicationContextMixin");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const cutoffConfig = {
11
+ vasp: {},
12
+ // assuming default cutoffs for VASP
13
+ espresso: {
14
+ // assuming the default GBRV set of pseudopotentials is used
15
+ wavefunction: 40,
16
+ density: 200
17
+ }
18
+ };
19
+ class PlanewaveCutoffsContextProvider extends _ContextProvider.default {
20
+ constructor(config) {
21
+ super(config);
22
+ this.initApplicationContextMixin();
23
+ }
24
+
25
+ // eslint-disable-next-line class-methods-use-this
26
+ get uiSchema() {
27
+ return {
28
+ wavefunction: {},
29
+ density: {}
30
+ };
31
+ }
32
+ get defaultData() {
33
+ return {
34
+ wavefunction: this.defaultECUTWFC,
35
+ density: this.defaultECUTRHO
36
+ };
37
+ }
38
+ get _cutoffConfigPerApplication() {
39
+ return cutoffConfig[this.application.name];
40
+ }
41
+ get defaultECUTWFC() {
42
+ return this._cutoffConfigPerApplication.wavefunction || null;
43
+ }
44
+ get defaultECUTRHO() {
45
+ return this._cutoffConfigPerApplication.density || null;
46
+ }
47
+ get jsonSchema() {
48
+ return {
49
+ $schema: "http://json-schema.org/draft-07/schema#",
50
+ title: " ",
51
+ description: "Planewave cutoff parameters for electronic wavefunctions and density. Units are specific to simulation engine.",
52
+ type: "object",
53
+ properties: {
54
+ wavefunction: {
55
+ type: "number",
56
+ default: this.defaultECUTWFC
57
+ },
58
+ density: {
59
+ type: "number",
60
+ default: this.defaultECUTRHO
61
+ }
62
+ }
63
+ };
64
+ }
65
+ }
66
+ exports.PlanewaveCutoffsContextProvider = PlanewaveCutoffsContextProvider;
67
+ (0, _ApplicationContextMixin.applicationContextMixin)(PlanewaveCutoffsContextProvider.prototype);