@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,28 @@
1
+ name: Phonon Map
2
+ units:
3
+ - name: phononMap
4
+ type: workflow
5
+ units:
6
+ - name: pw_scf
7
+ type: subworkflow
8
+ - name: ph_init_qpoints
9
+ type: subworkflow
10
+ - name: espresso_xml_get_qpt_irr
11
+ type: subworkflow
12
+ - config:
13
+ functions:
14
+ setDefaultCompute: null
15
+ input:
16
+ name: Q_POINTS
17
+ mapUnit: true
18
+ name: phonon_map_workflow
19
+ type: workflow
20
+ units:
21
+ - name: pre_processor
22
+ type: subworkflow
23
+ - name: ph_single_irr_qpt
24
+ type: subworkflow
25
+ - name: post_processor
26
+ type: subworkflow
27
+ - name: phonon_reduce
28
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Recalculate Bands
2
+ units:
3
+ - name: recalculate_bands
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Surface Energy
2
+ units:
3
+ - name: surface_energy
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Total Energy
2
+ units:
3
+ - name: total_energy
4
+ type: subworkflow
@@ -0,0 +1,171 @@
1
+ # Valence band offset for an interface via the potential lineup method.
2
+ # Designed to work with a 2D heterostructure, e.g. MoS2 on WS2.
3
+ # The workflow assumes 3 structures being present:
4
+ # - Interface - e.g. MoS2/WS2 heterostructure
5
+ # - Interface Left - e.g. MoS2
6
+ # - Interface Right - e.g. WS2
7
+ # and repeats bandstructure + electrostatic potential calculation (subworkflow) for them.
8
+ # Then, calculates the band offset based on the data extracted.
9
+ #
10
+ # Relevant references:
11
+ # - http://dx.doi.org/10.1103/PhysRevLett.61.734
12
+ # - http://dx.doi.org/10.1103/physrevb.44.5572
13
+ # - http://dx.doi.org/10.1088/0953-8984/19/21/213203
14
+ #
15
+ # See also our tutorial:
16
+ # https://docs.mat3ra.com/tutorials/dft/electronic/valence-band-offset/
17
+
18
+ name: Valence Band Offset (2D)
19
+ units:
20
+ # interface-related subworkflows
21
+ - name: average_electrostatic_potential_via_band_structure
22
+ type: subworkflow
23
+ config:
24
+ attributes:
25
+ name: BS + Avg ESP (Interface)
26
+ unitConfigs:
27
+ - index: 0
28
+ type: assignment
29
+ config:
30
+ attributes:
31
+ name: Set Material Index (Interface)
32
+ value: "0"
33
+ - name: average_electrostatic_potential_find_minima
34
+ type: subworkflow
35
+ config:
36
+ attributes:
37
+ name: Find ESP Values (Interface)
38
+ unitConfigs:
39
+ - index: 1
40
+ type: assignment
41
+ config:
42
+ attributes:
43
+ operand: AVG_ESP_INTERFACE
44
+
45
+ # interface-left-related subworkflows
46
+ - name: average_electrostatic_potential_via_band_structure
47
+ type: subworkflow
48
+ config:
49
+ attributes:
50
+ name: BS + Avg ESP (interface left)
51
+ unitConfigs:
52
+ - index: 0
53
+ type: assignment
54
+ config:
55
+ attributes:
56
+ name: Set Material Index (Interface left)
57
+ value: "1"
58
+ - index: 2
59
+ type: executionBuilder
60
+ config:
61
+ attributes:
62
+ flowchartId: pw-bands-calculate-band-gap-left
63
+ - index: 3
64
+ type: assignment
65
+ config:
66
+ attributes:
67
+ input:
68
+ - name: band_gaps
69
+ scope: pw-bands-calculate-band-gap-left
70
+ - index: 4
71
+ type: assignment
72
+ config:
73
+ attributes:
74
+ operand: VBM_LEFT
75
+ - index: 7
76
+ type: executionBuilder
77
+ config:
78
+ attributes:
79
+ flowchartId: average-electrostatic-potential-left
80
+ - index: 8
81
+ type: assignment
82
+ config:
83
+ attributes:
84
+ input:
85
+ - name: average_potential_profile
86
+ scope: average-electrostatic-potential-left
87
+ - name: average_electrostatic_potential_find_minima
88
+ type: subworkflow
89
+ config:
90
+ attributes:
91
+ name: Find ESP Value (Interface left)
92
+ unitConfigs:
93
+ - index: 0
94
+ type: executionBuilder
95
+ config:
96
+ attributes:
97
+ flowchartId: python-find-extrema-left
98
+ - index: 1
99
+ type: assignment
100
+ config:
101
+ attributes:
102
+ operand: AVG_ESP_LEFT
103
+ input:
104
+ - name: STDOUT
105
+ scope: python-find-extrema-left
106
+
107
+ # interface-right-related subworkflows
108
+ - name: average_electrostatic_potential_via_band_structure
109
+ type: subworkflow
110
+ config:
111
+ attributes:
112
+ name: BS + Avg ESP (interface right)
113
+ unitConfigs:
114
+ - index: 0
115
+ type: assignment
116
+ config:
117
+ attributes:
118
+ name: Set Material Index (Interface right)
119
+ value: "2"
120
+ - index: 2
121
+ type: executionBuilder
122
+ config:
123
+ attributes:
124
+ flowchartId: pw-bands-calculate-band-gap-right
125
+ - index: 3
126
+ type: assignment
127
+ config:
128
+ attributes:
129
+ input:
130
+ - name: band_gaps
131
+ scope: pw-bands-calculate-band-gap-right
132
+ - index: 4
133
+ type: assignment
134
+ config:
135
+ attributes:
136
+ operand: VBM_RIGHT
137
+ - index: 7
138
+ type: executionBuilder
139
+ config:
140
+ attributes:
141
+ flowchartId: average-electrostatic-potential-right
142
+ - index: 8
143
+ type: assignment
144
+ config:
145
+ attributes:
146
+ input:
147
+ - name: average_potential_profile
148
+ scope: average-electrostatic-potential-right
149
+ - name: average_electrostatic_potential_find_minima
150
+ type: subworkflow
151
+ config:
152
+ attributes:
153
+ name: Find ESP Value (Interface right)
154
+ unitConfigs:
155
+ - index: 0
156
+ type: executionBuilder
157
+ config:
158
+ attributes:
159
+ flowchartId: python-find-extrema-right
160
+ - index: 1
161
+ type: assignment
162
+ config:
163
+ attributes:
164
+ operand: AVG_ESP_RIGHT
165
+ input:
166
+ - name: STDOUT
167
+ scope: python-find-extrema-right
168
+
169
+ # final subworkflow to calculate valence band offset
170
+ - name: valence_band_offset_calc_from_previous_esp_vbm
171
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Variable-cell Relaxation
2
+ units:
3
+ - name: variable_cell_relaxation
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Zero Point Energy
2
+ units:
3
+ - name: zero_point_energy
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Jupyter Notebook
2
+ units:
3
+ - name: jupyter_notebook
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Total Energy
2
+ units:
3
+ - name: total_energy
4
+ type: subworkflow
@@ -0,0 +1,9 @@
1
+ config:
2
+ attributes:
3
+ isUsingDataset: true
4
+ name: Python ML Train Classification
5
+ units:
6
+ - name: train_head
7
+ type: subworkflow
8
+ - name: classification_tail
9
+ type: subworkflow
@@ -0,0 +1,9 @@
1
+ config:
2
+ attributes:
3
+ isUsingDataset: true
4
+ name: Python ML Train Clustering
5
+ units:
6
+ - name: train_head
7
+ type: subworkflow
8
+ - name: classification_tail
9
+ type: subworkflow
@@ -0,0 +1,9 @@
1
+ config:
2
+ attributes:
3
+ isUsingDataset: true
4
+ name: Python ML Train Regression
5
+ units:
6
+ - name: train_head
7
+ type: subworkflow
8
+ - name: regression_tail
9
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Python Script
2
+ units:
3
+ - name: python_script
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Shell Batch Job (Espresso PWSCF)
2
+ units:
3
+ - name: batch_espresso_pwscf
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Shell Script
2
+ units:
3
+ - name: hello_world
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Band Gap
2
+ units:
3
+ - name: band_gap
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Band Structure
2
+ units:
3
+ - name: band_structure
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Band Structure + Density of States
2
+ units:
3
+ - name: band_structure_dos
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Density of States
2
+ units:
3
+ - name: dos
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Fixed-cell Relaxation
2
+ units:
3
+ - name: fixed_cell_relaxation
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: K-point Convergence
2
+ units:
3
+ - name: kpoint_convergence
4
+ type: subworkflow
@@ -0,0 +1,8 @@
1
+ name: Nudged Elastic Band (NEB)
2
+ units:
3
+ - name: initial_final_total_energies
4
+ type: subworkflow
5
+ - name: prepare_images
6
+ type: subworkflow
7
+ - name: neb_subworkflow
8
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Recalculate Bands
2
+ units:
3
+ - name: recalculate_bands
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Surface Energy
2
+ units:
3
+ - name: surface_energy
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Total Energy
2
+ units:
3
+ - name: total_energy
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Variable-cell Relaxation
2
+ units:
3
+ - name: variable_cell_relaxation
4
+ type: subworkflow
@@ -0,0 +1,4 @@
1
+ name: Zero Point Energy
2
+ units:
3
+ - name: zero_point_energy
4
+ type: subworkflow
@@ -0,0 +1,65 @@
1
+ const fs = require("fs");
2
+ const path = require("path");
3
+ const yaml = require("js-yaml");
4
+
5
+ const allApplications = [
6
+ "espresso",
7
+ "jupyterLab",
8
+ "nwchem",
9
+ "python",
10
+ "python/ml",
11
+ "shell",
12
+ "vasp",
13
+ "deepmd",
14
+ ];
15
+
16
+ const allWorkflows = { workflows: {}, subworkflows: {} };
17
+
18
+ const JSONstringifyOrder = (obj, space) => {
19
+ const allKeys = new Set();
20
+ // eslint-disable-next-line no-sequences
21
+ JSON.stringify(obj, (key, value) => (allKeys.add(key), value));
22
+ return JSON.stringify(obj, Array.from(allKeys).sort(), space);
23
+ };
24
+
25
+ const loadFile = (name, dir, file, type) => {
26
+ const entryPath = path.resolve(dir, file);
27
+ if (!fs.statSync(entryPath).isFile()) {
28
+ console.log(`Skipping ${entryPath} as it is not a file.`);
29
+ return;
30
+ }
31
+ const obj = fs.readFileSync(path.resolve(dir, file), "utf8");
32
+ const key = file.split(".")[0];
33
+ allWorkflows[type][name][key] = yaml.load(obj);
34
+ };
35
+
36
+ allApplications.forEach((name) => {
37
+ allWorkflows.workflows[name] = {};
38
+ allWorkflows.subworkflows[name] = {};
39
+ const wfDir = path.resolve(__dirname, "assets", "workflows", name);
40
+ const swDir = path.resolve(__dirname, "assets", "subworkflows", name);
41
+ try {
42
+ const wfFiles = fs.readdirSync(wfDir);
43
+ const swFiles = fs.readdirSync(swDir);
44
+ console.log(
45
+ `Building ${name}: ${wfFiles.length} workflow(s) and ${swFiles.length} subworkflow(s)`,
46
+ );
47
+ wfFiles.forEach((file) => loadFile(name, wfDir, file, "workflows"));
48
+ swFiles.forEach((file) => loadFile(name, swDir, file, "subworkflows"));
49
+ } catch (e) {
50
+ console.log(e);
51
+ }
52
+ });
53
+
54
+ const write_path = "workflows.js";
55
+ // write to src for unit test coverage simplicity
56
+ fs.writeFileSync(
57
+ `./src/workflows/${write_path}`,
58
+ "module.exports = {workflowData: " + JSONstringifyOrder(allWorkflows) + "}",
59
+ "utf8",
60
+ );
61
+ fs.writeFileSync(
62
+ `./dist/workflows/${write_path}`,
63
+ "module.exports = {workflowData: " + JSONstringifyOrder(allWorkflows) + "}",
64
+ "utf8",
65
+ );
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _BoundaryConditionsFormDataProvider = require("./providers/BoundaryConditionsFormDataProvider");
8
+ var _QENEBContextProvider = _interopRequireDefault(require("./providers/by_application/espresso/QENEBContextProvider"));
9
+ var _QEPWXContextProvider = _interopRequireDefault(require("./providers/by_application/espresso/QEPWXContextProvider"));
10
+ var _NWChemTotalEnergyContextProvider = _interopRequireDefault(require("./providers/by_application/nwchem/NWChemTotalEnergyContextProvider"));
11
+ var _VASPContextProvider = _interopRequireDefault(require("./providers/by_application/vasp/VASPContextProvider"));
12
+ var _VASPNEBContextProvider = _interopRequireDefault(require("./providers/by_application/vasp/VASPNEBContextProvider"));
13
+ var _CollinearMagnetizationContextProvider = require("./providers/CollinearMagnetizationContextProvider");
14
+ var _HubbardContextProviderLegacy = require("./providers/HubbardContextProviderLegacy");
15
+ var _HubbardJContextProvider = require("./providers/HubbardJContextProvider");
16
+ var _HubbardUContextProvider = require("./providers/HubbardUContextProvider");
17
+ var _HubbardVContextProvider = require("./providers/HubbardVContextProvider");
18
+ var _IonDynamicsContextProvider = require("./providers/IonDynamicsContextProvider");
19
+ var _MLSettingsContextProvider = require("./providers/MLSettingsContextProvider");
20
+ var _MLTrainTestSplitContextProvider = require("./providers/MLTrainTestSplitContextProvider");
21
+ var _NEBFormDataProvider = require("./providers/NEBFormDataProvider");
22
+ var _NonCollinearMagnetizationContextProvider = require("./providers/NonCollinearMagnetizationContextProvider");
23
+ var _PlanewaveCutoffsContextProvider = require("./providers/PlanewaveCutoffsContextProvider");
24
+ var _PointsGridFormDataProvider = require("./providers/PointsGridFormDataProvider");
25
+ var _PointsPathFormDataProvider = require("./providers/PointsPathFormDataProvider");
26
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
27
+ var _default = exports.default = {
28
+ BoundaryConditionsFormDataProvider: _BoundaryConditionsFormDataProvider.BoundaryConditionsFormDataProvider,
29
+ MLSettingsContextProvider: _MLSettingsContextProvider.MLSettingsContextProvider,
30
+ MLTrainTestSplitContextProvider: _MLTrainTestSplitContextProvider.MLTrainTestSplitContextProvider,
31
+ NEBFormDataProvider: _NEBFormDataProvider.NEBFormDataProvider,
32
+ PlanewaveCutoffsContextProvider: _PlanewaveCutoffsContextProvider.PlanewaveCutoffsContextProvider,
33
+ PointsGridFormDataProvider: _PointsGridFormDataProvider.PointsGridFormDataProvider,
34
+ PointsPathFormDataProvider: _PointsPathFormDataProvider.PointsPathFormDataProvider,
35
+ ExplicitPointsPathFormDataProvider: _PointsPathFormDataProvider.ExplicitPointsPathFormDataProvider,
36
+ ExplicitPointsPath2PIBAFormDataProvider: _PointsPathFormDataProvider.ExplicitPointsPath2PIBAFormDataProvider,
37
+ HubbardJContextProvider: _HubbardJContextProvider.HubbardJContextProvider,
38
+ HubbardUContextProvider: _HubbardUContextProvider.HubbardUContextProvider,
39
+ HubbardVContextProvider: _HubbardVContextProvider.HubbardVContextProvider,
40
+ HubbardContextProviderLegacy: _HubbardContextProviderLegacy.HubbardContextProviderLegacy,
41
+ IonDynamicsContextProvider: _IonDynamicsContextProvider.IonDynamicsContextProvider,
42
+ CollinearMagnetizationContextProvider: _CollinearMagnetizationContextProvider.CollinearMagnetizationContextProvider,
43
+ NonCollinearMagnetizationContextProvider: _NonCollinearMagnetizationContextProvider.NonCollinearMagnetizationContextProvider,
44
+ VASPContextProvider: _VASPContextProvider.default,
45
+ VASPNEBContextProvider: _VASPNEBContextProvider.default,
46
+ QEPWXContextProvider: _QEPWXContextProvider.default,
47
+ QENEBContextProvider: _QENEBContextProvider.default,
48
+ NWChemTotalEnergyContextProvider: _NWChemTotalEnergyContextProvider.default
49
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.applicationContextMixin = applicationContextMixin;
7
+ var _settings = require("../providers/settings");
8
+ function applicationContextMixin(item) {
9
+ const properties = {
10
+ _application: undefined,
11
+ initApplicationContextMixin() {
12
+ this._application = this.config.context && this.config.context.application || _settings.globalSettings.Application.createDefault();
13
+ },
14
+ get application() {
15
+ return this._application;
16
+ }
17
+ };
18
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
19
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.jobContextMixin = jobContextMixin;
7
+ const defaultJob = {
8
+ workflow: {
9
+ subworkflows: [],
10
+ units: []
11
+ },
12
+ status: "pre-submission",
13
+ compute: {
14
+ queue: "D",
15
+ nodes: 1,
16
+ ppn: 1,
17
+ timeLimit: "3600"
18
+ },
19
+ _project: {
20
+ _id: ""
21
+ }
22
+ };
23
+ function jobContextMixin(item) {
24
+ const properties = {
25
+ isEdited: false,
26
+ _job: defaultJob,
27
+ get job() {
28
+ return this._job;
29
+ },
30
+ initJobContextMixin() {
31
+ const {
32
+ config
33
+ } = this;
34
+ this._job = config.context && config.context.job || defaultJob;
35
+ this.isEdited = false; // we always get the `defaultData` (recalculated from scratch, not persistent)
36
+ }
37
+ };
38
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
39
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.materialContextMixin = materialContextMixin;
7
+ var _settings = require("../providers/settings");
8
+ function materialContextMixin(item) {
9
+ const properties = {
10
+ _material: undefined,
11
+ updateMaterialHash() {
12
+ if (this.isEditedIsSetToFalseOnMaterialUpdate) this.isEdited = false;
13
+ this.extraData = {
14
+ materialHash: this.material.hash
15
+ };
16
+ },
17
+ // Workaround: Material.createDefault() used to initiate workflow reducer and hence here too
18
+ // does not have an id. Here we catch when such material is used and avoid resetting isEdited
19
+ get isMaterialCreatedDefault() {
20
+ return !this.material.id;
21
+ },
22
+ get isMaterialUpdated() {
23
+ return Boolean(this.extraData && this.extraData.materialHash !== this.material.hash);
24
+ },
25
+ get material() {
26
+ if (!this._material) {
27
+ throw new Error("Material is not set");
28
+ }
29
+ return this._material;
30
+ },
31
+ initMaterialContextMixin() {
32
+ this._material = this.config.context && this.config.context.material;
33
+ if (!this._material) {
34
+ this._material = _settings.globalSettings.Material.createDefault();
35
+ }
36
+ this.updateMaterialHash();
37
+ }
38
+ };
39
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
40
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.materialsContextMixin = materialsContextMixin;
7
+ var _settings = require("../providers/settings");
8
+ function materialsContextMixin(item) {
9
+ const properties = {
10
+ get materials() {
11
+ return this._materials;
12
+ },
13
+ initMaterialsContextMixin() {
14
+ const materials = this.config.context?.materials;
15
+ this._materials = materials && materials.length ? materials : [_settings.globalSettings.Material.createDefault()];
16
+ }
17
+ };
18
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
19
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.materialsSetContextMixin = materialsSetContextMixin;
7
+ var _utils = require("@mat3ra/code/dist/js/entity/set/ordered/utils");
8
+ function materialsSetContextMixin(item) {
9
+ const properties = {
10
+ _materialsSet: undefined,
11
+ get materialsSet() {
12
+ return this._materialsSet;
13
+ },
14
+ initMaterialsSetContextMixin() {
15
+ this._materialsSet = this.config.context?.materialsSet;
16
+ },
17
+ sortMaterialsByIndexInSet(materials = []) {
18
+ // DO NOT SORT IN PLACE AS IT CHANGES THE ORDER IN `this.materials` AND HAS SIDE EFFECTS (MaterialViewer).
19
+ return materials.concat().sort((a, b) => {
20
+ return (0, _utils.compareEntitiesInOrderedSetForSorting)(a, b, this.materialsSet._id, false);
21
+ });
22
+ }
23
+ };
24
+ Object.defineProperties(item, Object.getOwnPropertyDescriptors(properties));
25
+ }