@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,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _periodicTable = require("@exabyte-io/periodic-table.js");
8
+ var _lodash = _interopRequireDefault(require("lodash"));
9
+ var _underscore = _interopRequireDefault(require("underscore"));
10
+ var _underscore2 = _interopRequireDefault(require("underscore.string"));
11
+ var _JobContextMixin = require("../../../mixins/JobContextMixin");
12
+ var _MaterialContextMixin = require("../../../mixins/MaterialContextMixin");
13
+ var _MethodDataContextMixin = require("../../../mixins/MethodDataContextMixin");
14
+ var _WorkflowContextMixin = require("../../../mixins/WorkflowContextMixin");
15
+ var _ExecutableContextProvider = _interopRequireDefault(require("../ExecutableContextProvider"));
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
+ class NWChemTotalEnergyContextProvider extends _ExecutableContextProvider.default {
21
+ constructor(config) {
22
+ super(config);
23
+ _defineProperty(this, "_material", undefined);
24
+ this.initMethodDataContextMixin();
25
+ this.initWorkflowContextMixin();
26
+ this.initJobContextMixin();
27
+ this.initMaterialContextMixin();
28
+ }
29
+ get atomicPositionsWithoutConstraints() {
30
+ return this.material.Basis.atomicPositions;
31
+ }
32
+ get atomicPositions() {
33
+ const basis = this.material.Basis;
34
+ basis.toCartesian();
35
+ return basis.getAtomicPositionsWithConstraintsAsStrings();
36
+ }
37
+ get atomSymbols() {
38
+ return this.material.Basis.uniqueElements;
39
+ }
40
+ get cartesianAtomicPositions() {
41
+ return this.material.Basis.toCartesian !== undefined;
42
+ }
43
+ get ATOMIC_SPECIES() {
44
+ return _underscore.default.map(this.atomSymbols, symbol => {
45
+ return NWChemTotalEnergyContextProvider.symbolToAtomicSpecies(symbol);
46
+ }).join("\n");
47
+ }
48
+
49
+ /*
50
+ * @NOTE: Overriding getData makes this provider "stateless", ie. delivering data from scratch each time and not
51
+ * considering the content of `this.data`, and `this.isEdited` field(s).
52
+ */
53
+ getData() {
54
+ /*
55
+ TODO: Create ability for user to define CHARGE, MULT, BASIS and FUNCTIONAL parameters.
56
+ */
57
+ const CHARGE = 0;
58
+ const MULT = 1;
59
+ const BASIS = "6-31G";
60
+ const FUNCTIONAL = "B3LYP";
61
+ return {
62
+ CHARGE,
63
+ MULT,
64
+ BASIS,
65
+ NAT: this.atomicPositions.length,
66
+ NTYP: this.atomSymbols.length,
67
+ ATOMIC_POSITIONS: this.atomicPositions.join("\n"),
68
+ ATOMIC_POSITIONS_WITHOUT_CONSTRAINTS: this.atomicPositionsWithoutConstraints.join("\n"),
69
+ ATOMIC_SPECIES: this.ATOMIC_SPECIES,
70
+ FUNCTIONAL,
71
+ CARTESIAN: this.cartesianAtomicPositions
72
+ };
73
+ }
74
+ static symbolToAtomicSpecies(symbol, pseudo) {
75
+ const el = _periodicTable.PERIODIC_TABLE[symbol];
76
+ const filename = pseudo ? _lodash.default.get(pseudo, "filename", _underscore2.default.strRightBack(pseudo.path || "", "/")) : "";
77
+ return el ? _underscore2.default.sprintf("%s %f %s", symbol, el.atomic_mass, filename) : undefined;
78
+ }
79
+ }
80
+ exports.default = NWChemTotalEnergyContextProvider;
81
+ (0, _MaterialContextMixin.materialContextMixin)(NWChemTotalEnergyContextProvider.prototype);
82
+ (0, _MethodDataContextMixin.methodDataContextMixin)(NWChemTotalEnergyContextProvider.prototype);
83
+ (0, _WorkflowContextMixin.workflowContextMixin)(NWChemTotalEnergyContextProvider.prototype);
84
+ (0, _JobContextMixin.jobContextMixin)(NWChemTotalEnergyContextProvider.prototype);
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _JobContextMixin = require("../../../mixins/JobContextMixin");
8
+ var _MaterialContextMixin = require("../../../mixins/MaterialContextMixin");
9
+ var _MaterialsContextMixin = require("../../../mixins/MaterialsContextMixin");
10
+ var _MethodDataContextMixin = require("../../../mixins/MethodDataContextMixin");
11
+ var _WorkflowContextMixin = require("../../../mixins/WorkflowContextMixin");
12
+ var _ExecutableContextProvider = _interopRequireDefault(require("../ExecutableContextProvider"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
17
+ class VASPContextProvider extends _ExecutableContextProvider.default {
18
+ constructor(config) {
19
+ super(config);
20
+ _defineProperty(this, "_material", undefined);
21
+ _defineProperty(this, "_materials", []);
22
+ this.initJobContextMixin();
23
+ this.initMaterialsContextMixin();
24
+ this.initMethodDataContextMixin();
25
+ this.initWorkflowContextMixin();
26
+ this.initMaterialContextMixin();
27
+ }
28
+
29
+ // eslint-disable-next-line class-methods-use-this
30
+ buildVASPContext(material) {
31
+ return {
32
+ // TODO: figure out whether we need two separate POSCARS, maybe one is enough
33
+ POSCAR: material.getAsPOSCAR(true, true),
34
+ POSCAR_WITH_CONSTRAINTS: material.getAsPOSCAR(true)
35
+ };
36
+ }
37
+ getDataPerMaterial() {
38
+ if (!this.materials || this.materials.length <= 1) return {};
39
+ return {
40
+ perMaterial: this.materials.map(material => this.buildVASPContext(material))
41
+ };
42
+ }
43
+
44
+ /*
45
+ * @NOTE: Overriding getData makes this provider "stateless", ie. delivering data from scratch each time and not
46
+ * considering the content of `this.data`, and `this.isEdited` field(s).
47
+ */
48
+ getData() {
49
+ // consider adjusting so that below values are read from PlanewaveDataManager
50
+ // ECUTWFC;
51
+ // ECUTRHO;
52
+
53
+ return {
54
+ ...this.buildVASPContext(this.material),
55
+ ...this.getDataPerMaterial()
56
+ };
57
+ }
58
+ }
59
+ exports.default = VASPContextProvider;
60
+ (0, _MaterialContextMixin.materialContextMixin)(VASPContextProvider.prototype);
61
+ (0, _MaterialsContextMixin.materialsContextMixin)(VASPContextProvider.prototype);
62
+ (0, _MethodDataContextMixin.methodDataContextMixin)(VASPContextProvider.prototype);
63
+ (0, _WorkflowContextMixin.workflowContextMixin)(VASPContextProvider.prototype);
64
+ (0, _JobContextMixin.jobContextMixin)(VASPContextProvider.prototype);
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _JobContextMixin = require("../../../mixins/JobContextMixin");
8
+ var _MaterialContextMixin = require("../../../mixins/MaterialContextMixin");
9
+ var _MaterialsContextMixin = require("../../../mixins/MaterialsContextMixin");
10
+ var _MaterialsSetContextMixin = require("../../../mixins/MaterialsSetContextMixin");
11
+ var _MethodDataContextMixin = require("../../../mixins/MethodDataContextMixin");
12
+ var _WorkflowContextMixin = require("../../../mixins/WorkflowContextMixin");
13
+ var _ExecutableContextProvider = _interopRequireDefault(require("../ExecutableContextProvider"));
14
+ var _VASPContextProvider = _interopRequireDefault(require("./VASPContextProvider"));
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
+ class VASPNEBContextProvider extends _ExecutableContextProvider.default {
20
+ constructor(config) {
21
+ super(config);
22
+ _defineProperty(this, "_materials", []);
23
+ this.initMaterialContextMixin();
24
+ this.initMaterialsContextMixin();
25
+ this.initMaterialsSetContextMixin();
26
+ this.initMethodDataContextMixin();
27
+ this.initWorkflowContextMixin();
28
+ this.initJobContextMixin();
29
+ }
30
+ getData() {
31
+ const sortedMaterials = this.sortMaterialsByIndexInSet(this.materials);
32
+ const VASPContexts = sortedMaterials.map(material => {
33
+ const context = {
34
+ ...this.config.context,
35
+ material
36
+ };
37
+ const config = {
38
+ ...this.config,
39
+ context
40
+ };
41
+ return new _VASPContextProvider.default(config).getData();
42
+ });
43
+ return {
44
+ FIRST_IMAGE: VASPContexts[0].POSCAR_WITH_CONSTRAINTS,
45
+ LAST_IMAGE: VASPContexts[VASPContexts.length - 1].POSCAR_WITH_CONSTRAINTS,
46
+ INTERMEDIATE_IMAGES: VASPContexts.slice(1, VASPContexts.length - 1).map(data => data.POSCAR_WITH_CONSTRAINTS)
47
+ };
48
+ }
49
+ }
50
+ exports.default = VASPNEBContextProvider;
51
+ (0, _MaterialContextMixin.materialContextMixin)(VASPNEBContextProvider.prototype);
52
+ (0, _MaterialsContextMixin.materialsContextMixin)(VASPNEBContextProvider.prototype);
53
+ (0, _MaterialsSetContextMixin.materialsSetContextMixin)(VASPNEBContextProvider.prototype);
54
+ (0, _MethodDataContextMixin.methodDataContextMixin)(VASPNEBContextProvider.prototype);
55
+ (0, _WorkflowContextMixin.workflowContextMixin)(VASPNEBContextProvider.prototype);
56
+ (0, _JobContextMixin.jobContextMixin)(VASPNEBContextProvider.prototype);
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.globalSettings = void 0;
7
+ var _ade = require("@exabyte-io/ade.js");
8
+ var _made = require("@mat3ra/made");
9
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
10
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
11
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
12
+ class GlobalSettings {
13
+ constructor() {
14
+ _defineProperty(this, "PointsGridFormDataProvider.defaultKPPRA", 5);
15
+ _defineProperty(this, "Material", _made.Made.Material);
16
+ _defineProperty(this, "Application", _ade.Application);
17
+ this.resetDefaults();
18
+ }
19
+ get defaultKPPRA() {
20
+ return this["PointsGridFormDataProvider.defaultKPPRA"];
21
+ }
22
+ setApplication(application) {
23
+ this.Application = application;
24
+ }
25
+ setMaterial(material) {
26
+ this.Material = material;
27
+ }
28
+ setDefaultKPPRA(kppra) {
29
+ this["PointsGridFormDataProvider.defaultKPPRA"] = kppra;
30
+ }
31
+ resetDefaults() {
32
+ this.Material = _made.Made.Material;
33
+ this.Application = _ade.Application;
34
+ this["PointsGridFormDataProvider.defaultKPPRA"] = 5;
35
+ }
36
+ }
37
+ const globalSettings = exports.globalSettings = new GlobalSettings();
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.wodeProviders = void 0;
7
+ var _context = _interopRequireDefault(require("./context"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ const {
10
+ BoundaryConditionsFormDataProvider,
11
+ MLSettingsContextProvider,
12
+ MLTrainTestSplitContextProvider,
13
+ NEBFormDataProvider,
14
+ PlanewaveCutoffsContextProvider,
15
+ PointsGridFormDataProvider,
16
+ PointsPathFormDataProvider,
17
+ ExplicitPointsPathFormDataProvider,
18
+ ExplicitPointsPath2PIBAFormDataProvider,
19
+ HubbardJContextProvider,
20
+ HubbardUContextProvider,
21
+ HubbardVContextProvider,
22
+ HubbardContextProviderLegacy,
23
+ IonDynamicsContextProvider,
24
+ CollinearMagnetizationContextProvider,
25
+ NonCollinearMagnetizationContextProvider,
26
+ VASPContextProvider,
27
+ VASPNEBContextProvider,
28
+ QEPWXContextProvider,
29
+ QENEBContextProvider,
30
+ NWChemTotalEnergyContextProvider
31
+ } = _context.default;
32
+ const CONTEXT_DOMAINS = {
33
+ important: "important" // used to generate `ImportantSettings` form
34
+ };
35
+ const _makeImportant = config => Object.assign(config, {
36
+ domain: CONTEXT_DOMAINS.important
37
+ });
38
+
39
+ /** ********************************
40
+ * Method-based context providers *
41
+ ********************************* */
42
+
43
+ const wodeProviders = exports.wodeProviders = {
44
+ // NOTE: subworkflow-level data manager. Will override the unit-level data with the same name via subworkflow context.
45
+ PlanewaveCutoffDataManager: {
46
+ providerCls: PlanewaveCutoffsContextProvider,
47
+ config: _makeImportant({
48
+ name: "cutoffs",
49
+ entityName: "subworkflow"
50
+ })
51
+ },
52
+ KGridFormDataManager: {
53
+ providerCls: PointsGridFormDataProvider,
54
+ config: _makeImportant({
55
+ name: "kgrid"
56
+ })
57
+ },
58
+ QGridFormDataManager: {
59
+ providerCls: PointsGridFormDataProvider,
60
+ config: _makeImportant({
61
+ name: "qgrid",
62
+ divisor: 5
63
+ }) // Using less points for Qgrid by default
64
+ },
65
+ IGridFormDataManager: {
66
+ providerCls: PointsGridFormDataProvider,
67
+ config: _makeImportant({
68
+ name: "igrid",
69
+ divisor: 0.2
70
+ }) // Using more points for interpolated grid by default
71
+ },
72
+ QPathFormDataManager: {
73
+ providerCls: PointsPathFormDataProvider,
74
+ config: _makeImportant({
75
+ name: "qpath"
76
+ })
77
+ },
78
+ IPathFormDataManager: {
79
+ providerCls: PointsPathFormDataProvider,
80
+ config: _makeImportant({
81
+ name: "ipath"
82
+ })
83
+ },
84
+ KPathFormDataManager: {
85
+ providerCls: PointsPathFormDataProvider,
86
+ config: _makeImportant({
87
+ name: "kpath"
88
+ })
89
+ },
90
+ ExplicitKPathFormDataManager: {
91
+ providerCls: ExplicitPointsPathFormDataProvider,
92
+ config: _makeImportant({
93
+ name: "explicitKPath"
94
+ })
95
+ },
96
+ ExplicitKPath2PIBAFormDataManager: {
97
+ providerCls: ExplicitPointsPath2PIBAFormDataProvider,
98
+ config: _makeImportant({
99
+ name: "explicitKPath2PIBA"
100
+ })
101
+ },
102
+ HubbardJContextManager: {
103
+ providerCls: HubbardJContextProvider,
104
+ config: _makeImportant({
105
+ name: "hubbard_j"
106
+ })
107
+ },
108
+ HubbardUContextManager: {
109
+ providerCls: HubbardUContextProvider,
110
+ config: _makeImportant({
111
+ name: "hubbard_u"
112
+ })
113
+ },
114
+ HubbardVContextManager: {
115
+ providerCls: HubbardVContextProvider,
116
+ config: _makeImportant({
117
+ name: "hubbard_v"
118
+ })
119
+ },
120
+ HubbardContextManagerLegacy: {
121
+ providerCls: HubbardContextProviderLegacy,
122
+ config: _makeImportant({
123
+ name: "hubbard_legacy"
124
+ })
125
+ },
126
+ // NEBFormDataManager context is stored under the same key (`input`) as InputDataManager contexts.
127
+ NEBFormDataManager: {
128
+ providerCls: NEBFormDataProvider,
129
+ config: _makeImportant({
130
+ name: "neb"
131
+ })
132
+ },
133
+ BoundaryConditionsFormDataManager: {
134
+ providerCls: BoundaryConditionsFormDataProvider,
135
+ config: _makeImportant({
136
+ name: "boundaryConditions"
137
+ })
138
+ },
139
+ MLSettingsDataManager: {
140
+ providerCls: MLSettingsContextProvider,
141
+ config: _makeImportant({
142
+ name: "mlSettings"
143
+ })
144
+ },
145
+ MLTrainTestSplitDataManager: {
146
+ providerCls: MLTrainTestSplitContextProvider,
147
+ config: _makeImportant({
148
+ name: "mlTrainTestSplit"
149
+ })
150
+ },
151
+ IonDynamicsContextProvider: {
152
+ providerCls: IonDynamicsContextProvider,
153
+ config: _makeImportant({
154
+ name: "dynamics"
155
+ })
156
+ },
157
+ CollinearMagnetizationDataManager: {
158
+ providerCls: CollinearMagnetizationContextProvider,
159
+ config: _makeImportant({
160
+ name: "collinearMagnetization"
161
+ })
162
+ },
163
+ NonCollinearMagnetizationDataManager: {
164
+ providerCls: NonCollinearMagnetizationContextProvider,
165
+ config: _makeImportant({
166
+ name: "nonCollinearMagnetization"
167
+ })
168
+ },
169
+ QEPWXInputDataManager: {
170
+ providerCls: QEPWXContextProvider,
171
+ config: {
172
+ name: "input"
173
+ }
174
+ },
175
+ QENEBInputDataManager: {
176
+ providerCls: QENEBContextProvider,
177
+ config: {
178
+ name: "input"
179
+ }
180
+ },
181
+ VASPInputDataManager: {
182
+ providerCls: VASPContextProvider,
183
+ config: {
184
+ name: "input"
185
+ }
186
+ },
187
+ VASPNEBInputDataManager: {
188
+ providerCls: VASPNEBContextProvider,
189
+ config: {
190
+ name: "input"
191
+ }
192
+ },
193
+ NWChemInputDataManager: {
194
+ providerCls: NWChemTotalEnergyContextProvider,
195
+ config: {
196
+ name: "input"
197
+ }
198
+ }
199
+ };
package/dist/enums.js ADDED
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WORKFLOW_STATUSES = exports.UNIT_TYPES = exports.UNIT_TAGS = exports.UNIT_STATUSES = exports.UNIT_NAME_INVALID_CHARS = exports.TAB_NAVIGATION_CONFIG = exports.IO_ID_COLUMN = void 0;
7
+ /**
8
+ * THIS ENUMS ARE SHARED WITH TESTS.
9
+ * DO NOT IMPORT ANYTHINGS IN THIS MODULE.
10
+ */
11
+
12
+ const IO_ID_COLUMN = exports.IO_ID_COLUMN = "exabyteId";
13
+ const UNIT_TYPES = exports.UNIT_TYPES = {
14
+ // not currently used
15
+ convergence: "convergence",
16
+ exit: "exit",
17
+ // actively used
18
+ execution: "execution",
19
+ map: "map",
20
+ reduce: "reduce",
21
+ assignment: "assignment",
22
+ condition: "condition",
23
+ subworkflow: "subworkflow",
24
+ processing: "processing",
25
+ io: "io",
26
+ assertion: "assertion"
27
+ };
28
+ const UNIT_STATUSES = exports.UNIT_STATUSES = {
29
+ idle: "idle",
30
+ active: "active",
31
+ finished: "finished",
32
+ error: "error",
33
+ warning: "warning"
34
+ };
35
+ const UNIT_TAGS = exports.UNIT_TAGS = {
36
+ hasConvergenceParam: "hasConvergenceParam",
37
+ hasConvergenceResult: "hasConvergenceResult"
38
+ };
39
+ const WORKFLOW_STATUSES = exports.WORKFLOW_STATUSES = {
40
+ "up-to-date": "up-to-date",
41
+ outdated: "outdated"
42
+ };
43
+ const TAB_NAVIGATION_CONFIG = exports.TAB_NAVIGATION_CONFIG = {
44
+ overview: {
45
+ itemName: "Overview",
46
+ className: "",
47
+ href: "sw-overview"
48
+ },
49
+ importantSettings: {
50
+ itemName: "Important settings",
51
+ className: "",
52
+ href: "sw-important-settings"
53
+ },
54
+ detailedView: {
55
+ itemName: "Detailed view",
56
+ className: "",
57
+ href: "sw-detailed-view"
58
+ },
59
+ compute: {
60
+ itemName: "Compute",
61
+ className: "",
62
+ href: "sw-compute"
63
+ }
64
+ };
65
+ const UNIT_NAME_INVALID_CHARS = exports.UNIT_NAME_INVALID_CHARS = "/";
package/dist/index.js ADDED
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Subworkflow", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _subworkflows.Subworkflow;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "UNIT_STATUSES", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _enums.UNIT_STATUSES;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "UNIT_TYPES", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _enums.UNIT_TYPES;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "UnitFactory", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _factory.UnitFactory;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "Workflow", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _workflows.Workflow;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "builders", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _builders.builders;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "createSubworkflowByName", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _subworkflows.createSubworkflowByName;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "createWorkflowConfigs", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _workflows.createWorkflowConfigs;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "createWorkflows", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _workflows.createWorkflows;
58
+ }
59
+ });
60
+ var _enums = require("./enums");
61
+ var _subworkflows = require("./subworkflows");
62
+ var _builders = require("./units/builders");
63
+ var _factory = require("./units/factory");
64
+ var _workflows = require("./workflows");
package/dist/patch.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Template", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _ade.Template;
10
+ }
11
+ });
12
+ var _ade = require("@exabyte-io/ade.js");
13
+ var _providers = require("./context/providers");
14
+ // We patch the static providerRegistry here so that
15
+ // Template has all context providers available
16
+ // to it when creating workflows. It is then re-exported
17
+ // from WoDe for use downstream.
18
+
19
+ _ade.Template.setContextProvidersConfig(_providers.wodeProviders);
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createConvergenceParameter = createConvergenceParameter;
7
+ var _non_uniform_kgrid = require("./non_uniform_kgrid");
8
+ var _parameter = require("./parameter");
9
+ var _uniform_kgrid = require("./uniform_kgrid");
10
+ function createConvergenceParameter({
11
+ name,
12
+ initialValue,
13
+ increment
14
+ }) {
15
+ switch (name) {
16
+ case "N_k":
17
+ return new _uniform_kgrid.UniformKGridConvergence({
18
+ name,
19
+ initialValue,
20
+ increment
21
+ });
22
+ case "N_k_nonuniform":
23
+ return new _non_uniform_kgrid.NonUniformKGridConvergence({
24
+ name,
25
+ initialValue,
26
+ increment
27
+ });
28
+ default:
29
+ return new _parameter.ConvergenceParameter({
30
+ name,
31
+ initialValue,
32
+ increment
33
+ });
34
+ }
35
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NonUniformKGridConvergence = void 0;
7
+ var _parameter = require("./parameter");
8
+ class NonUniformKGridConvergence extends _parameter.ConvergenceParameter {
9
+ get increment() {
10
+ return `[${this.initialValue}[i] + math.floor(iteration * ${this._increment} * float(context['kgrid']['reciprocalVectorRatios'][i])) for i in range(3)]`;
11
+ }
12
+ get unitContext() {
13
+ return {
14
+ kgrid: {
15
+ dimensions: [`{{${this.name}[0]}}`, `{{${this.name}[1]}}`, `{{${this.name}[2]}}`],
16
+ shifts: [0, 0, 0]
17
+ },
18
+ isKgridEdited: true,
19
+ isUsingJinjaVariables: true
20
+ };
21
+ }
22
+
23
+ // eslint-disable-next-line class-methods-use-this
24
+ useVariablesFromUnitContext(flowchartId) {
25
+ return [{
26
+ scope: flowchartId,
27
+ name: "context"
28
+ }];
29
+ }
30
+ }
31
+ exports.NonUniformKGridConvergence = NonUniformKGridConvergence;