@mat3ra/wode 2026.4.9-0 → 2026.5.29-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 (361) hide show
  1. package/.babelrc +1 -1
  2. package/dist/js/Subworkflow.d.ts +714 -0
  3. package/dist/js/Subworkflow.js +397 -0
  4. package/dist/js/Workflow.d.ts +82 -0
  5. package/dist/js/Workflow.js +286 -0
  6. package/dist/js/WorkflowDesignerMaterial.d.ts +21 -0
  7. package/dist/js/WorkflowDesignerMaterial.js +26 -0
  8. package/dist/js/context/mixins/ApplicationContextMixin.d.ts +10 -0
  9. package/dist/js/context/mixins/ApplicationContextMixin.js +10 -17
  10. package/dist/js/context/mixins/MaterialContextMixin.d.ts +18 -0
  11. package/dist/js/context/mixins/MaterialContextMixin.js +14 -38
  12. package/dist/js/context/mixins/MaterialsContextMixin.d.ts +10 -0
  13. package/dist/js/context/mixins/MaterialsContextMixin.js +11 -17
  14. package/dist/js/context/mixins/MaterialsSetContextMixin.d.ts +14 -0
  15. package/dist/js/context/mixins/MaterialsSetContextMixin.js +21 -23
  16. package/dist/js/context/providers/BoundaryConditionsFormDataManager.d.ts +30 -0
  17. package/dist/js/context/providers/BoundaryConditionsFormDataManager.js +62 -0
  18. package/dist/js/context/providers/CollinearMagnetizationDataManager.d.ts +42 -0
  19. package/dist/js/context/providers/CollinearMagnetizationDataManager.js +101 -0
  20. package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.d.ts +29 -0
  21. package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.js +69 -0
  22. package/dist/js/context/providers/Hubbard/HubbardContextProvider.d.ts +20 -0
  23. package/dist/js/context/providers/Hubbard/HubbardContextProvider.js +47 -0
  24. package/dist/js/context/providers/Hubbard/HubbardJContextManager.d.ts +22 -0
  25. package/dist/js/context/providers/Hubbard/HubbardJContextManager.js +61 -0
  26. package/dist/js/context/providers/Hubbard/HubbardUContextManager.d.ts +22 -0
  27. package/dist/js/context/providers/Hubbard/HubbardUContextManager.js +57 -0
  28. package/dist/js/context/providers/Hubbard/HubbardVContextManager.d.ts +22 -0
  29. package/dist/js/context/providers/Hubbard/HubbardVContextManager.js +79 -0
  30. package/dist/js/context/providers/IonDynamicsDataManager.d.ts +27 -0
  31. package/dist/js/context/providers/IonDynamicsDataManager.js +48 -0
  32. package/dist/js/context/providers/MLSettingsDataManager.d.ts +24 -0
  33. package/dist/js/context/providers/MLSettingsDataManager.js +42 -0
  34. package/dist/js/context/providers/MLTrainTestSplitDataManager.d.ts +23 -0
  35. package/dist/js/context/providers/MLTrainTestSplitDataManager.js +40 -0
  36. package/dist/js/context/providers/NEBFormDataManager.d.ts +23 -0
  37. package/dist/js/context/providers/NEBFormDataManager.js +39 -0
  38. package/dist/js/context/providers/NonCollinearMagnetizationDataManager.d.ts +78 -0
  39. package/dist/js/context/providers/NonCollinearMagnetizationDataManager.js +181 -0
  40. package/dist/js/context/providers/PlanewaveCutoffDataManager.d.ts +26 -0
  41. package/dist/js/context/providers/PlanewaveCutoffDataManager.js +69 -0
  42. package/dist/js/context/providers/PointsGrid/IGridFormDataManager.d.ts +13 -0
  43. package/dist/js/context/providers/PointsGrid/IGridFormDataManager.js +23 -0
  44. package/dist/js/context/providers/PointsGrid/KGridFormDataManager.d.ts +15 -0
  45. package/dist/js/context/providers/PointsGrid/KGridFormDataManager.js +30 -0
  46. package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.d.ts +171 -0
  47. package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.js +270 -0
  48. package/dist/js/context/providers/PointsGrid/QGridFormDataManager.d.ts +13 -0
  49. package/dist/js/context/providers/PointsGrid/QGridFormDataManager.js +23 -0
  50. package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.d.ts +10 -0
  51. package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.js +19 -0
  52. package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.d.ts +9 -0
  53. package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.js +18 -0
  54. package/dist/js/context/providers/PointsPath/IPathFormDataManager.d.ts +8 -0
  55. package/dist/js/context/providers/PointsPath/IPathFormDataManager.js +17 -0
  56. package/dist/js/context/providers/PointsPath/KPathFormDataManager.d.ts +8 -0
  57. package/dist/js/context/providers/PointsPath/KPathFormDataManager.js +17 -0
  58. package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.d.ts +40 -0
  59. package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.js +125 -0
  60. package/dist/js/context/providers/PointsPath/QPathFormDataManager.d.ts +8 -0
  61. package/dist/js/context/providers/PointsPath/QPathFormDataManager.js +17 -0
  62. package/dist/js/context/providers/base/ContextProvider.d.ts +75 -0
  63. package/dist/js/context/providers/base/ContextProvider.js +87 -0
  64. package/dist/js/context/providers/base/JSONSchemaDataProvider.d.ts +16 -0
  65. package/dist/js/context/providers/base/JSONSchemaDataProvider.js +17 -0
  66. package/dist/js/context/providers/base/JSONSchemaFormDataProvider.d.ts +19 -0
  67. package/dist/js/context/providers/base/JSONSchemaFormDataProvider.js +32 -0
  68. package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.d.ts +26 -0
  69. package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.js +54 -0
  70. package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.d.ts +78 -0
  71. package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.js +104 -0
  72. package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.d.ts +36 -0
  73. package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.js +58 -0
  74. package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.d.ts +36 -0
  75. package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.js +56 -0
  76. package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.d.ts +30 -0
  77. package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.js +50 -0
  78. package/dist/js/context/providers/index.d.ts +92 -0
  79. package/dist/js/context/providers/index.js +107 -0
  80. package/dist/js/context/providers/settings.d.ts +7 -0
  81. package/dist/js/context/providers/settings.js +11 -33
  82. package/dist/js/convergence/ConvergenceParameter.d.ts +26 -0
  83. package/dist/js/convergence/ConvergenceParameter.js +13 -0
  84. package/dist/js/convergence/NonUniformKGridConvergence.d.ts +12 -0
  85. package/dist/js/convergence/NonUniformKGridConvergence.js +31 -0
  86. package/dist/js/convergence/UniformKGridConvergence.d.ts +8 -0
  87. package/dist/js/convergence/UniformKGridConvergence.js +22 -0
  88. package/dist/js/convergence/factory.d.ts +8 -0
  89. package/dist/js/convergence/factory.js +18 -0
  90. package/dist/js/enums.d.ts +62 -0
  91. package/dist/js/enums.js +66 -61
  92. package/dist/js/generated/AssertionUnitSchemaMixin.d.ts +5 -0
  93. package/dist/js/generated/AssertionUnitSchemaMixin.js +27 -0
  94. package/dist/js/generated/AssignmentUnitSchemaMixin.d.ts +5 -0
  95. package/dist/js/generated/AssignmentUnitSchemaMixin.js +33 -0
  96. package/dist/js/generated/BaseUnitSchemaMixin.d.ts +5 -0
  97. package/dist/js/generated/BaseUnitSchemaMixin.js +57 -0
  98. package/dist/js/generated/ConditionUnitSchemaMixin.d.ts +5 -0
  99. package/dist/js/generated/ConditionUnitSchemaMixin.js +51 -0
  100. package/dist/js/generated/ExecutionUnitInputSchemaMixin.d.ts +5 -0
  101. package/dist/js/generated/ExecutionUnitInputSchemaMixin.js +27 -0
  102. package/dist/js/generated/ExecutionUnitSchemaMixin.d.ts +5 -0
  103. package/dist/js/generated/ExecutionUnitSchemaMixin.js +45 -0
  104. package/dist/js/generated/IOUnitSchemaMixin.d.ts +5 -0
  105. package/dist/js/generated/IOUnitSchemaMixin.js +33 -0
  106. package/dist/js/generated/MapUnitSchemaMixin.d.ts +5 -0
  107. package/dist/js/generated/MapUnitSchemaMixin.js +27 -0
  108. package/dist/js/generated/ReduceUnitSchemaMixin.d.ts +5 -0
  109. package/dist/js/generated/ReduceUnitSchemaMixin.js +27 -0
  110. package/dist/js/generated/StatusSchemaMixin.d.ts +5 -0
  111. package/dist/js/generated/StatusSchemaMixin.js +21 -0
  112. package/dist/js/generated/SubworkflowSchemaMixin.d.ts +5 -0
  113. package/dist/js/generated/SubworkflowSchemaMixin.js +51 -0
  114. package/dist/js/generated/SubworkflowUnitSchemaMixin.d.ts +5 -0
  115. package/dist/js/generated/SubworkflowUnitSchemaMixin.js +15 -0
  116. package/dist/js/generated/WorkflowSchemaMixin.d.ts +5 -0
  117. package/dist/js/generated/WorkflowSchemaMixin.js +51 -0
  118. package/dist/js/index.d.ts +13 -0
  119. package/dist/js/index.js +66 -176
  120. package/dist/js/units/AssertionUnit.d.ts +20 -0
  121. package/dist/js/units/AssertionUnit.js +33 -0
  122. package/dist/js/units/AssignmentUnit.d.ts +17 -0
  123. package/dist/js/units/AssignmentUnit.js +35 -0
  124. package/dist/js/units/BaseUnit.d.ts +39 -0
  125. package/dist/js/units/BaseUnit.js +70 -0
  126. package/dist/js/units/ConditionUnit.d.ts +17 -0
  127. package/dist/js/units/ConditionUnit.js +37 -0
  128. package/dist/js/units/ExecutionUnit.d.ts +115 -0
  129. package/dist/js/units/ExecutionUnit.js +181 -0
  130. package/dist/js/units/ExecutionUnitInput.d.ts +22 -0
  131. package/dist/js/units/ExecutionUnitInput.js +47 -0
  132. package/dist/js/units/IOUnit.d.ts +16 -0
  133. package/dist/js/units/IOUnit.js +31 -0
  134. package/dist/js/units/MapUnit.d.ts +34 -0
  135. package/dist/js/units/MapUnit.js +46 -0
  136. package/dist/js/units/ReduceUnit.d.ts +16 -0
  137. package/dist/js/units/ReduceUnit.js +30 -0
  138. package/dist/js/units/SubworkflowUnit.d.ts +16 -0
  139. package/dist/js/units/SubworkflowUnit.js +28 -0
  140. package/dist/js/units/factory.d.ts +31 -0
  141. package/dist/js/units/factory.js +65 -47
  142. package/dist/js/units/index.d.ts +14 -0
  143. package/dist/js/units/index.js +25 -81
  144. package/dist/js/units/mixins/RuntimeItemsUILogicMixin.d.ts +26 -0
  145. package/dist/js/units/mixins/RuntimeItemsUILogicMixin.js +50 -0
  146. package/dist/js/utils/baseUnits.d.ts +2 -0
  147. package/dist/js/utils/baseUnits.js +11 -0
  148. package/dist/js/utils/index.d.ts +3 -0
  149. package/dist/js/utils/index.js +39 -0
  150. package/dist/js/utils/subworkflow.d.ts +2 -0
  151. package/dist/js/utils/subworkflow.js +29 -0
  152. package/dist/js/utils/underscoreStringSlugify.d.ts +6 -0
  153. package/dist/js/utils/underscoreStringSlugify.js +32 -0
  154. package/dist/js/utils/units.d.ts +4 -0
  155. package/dist/js/utils/units.js +16 -0
  156. package/dist/js/utils/workflow.d.ts +9 -0
  157. package/dist/js/utils/workflow.js +67 -0
  158. package/dist/js/utils.js +2 -7
  159. package/dist/js/workflows/default.d.ts +3 -0
  160. package/dist/js/workflows/default.js +43 -39
  161. package/dist/js/workflows/workflow.d.ts +4404 -0
  162. package/dist/js/workflows/workflow.js +310 -306
  163. package/package.json +56 -44
  164. package/src/js/Subworkflow.ts +532 -0
  165. package/src/js/Workflow.ts +390 -0
  166. package/src/js/context/mixins/ApplicationContextMixin.ts +21 -0
  167. package/src/js/context/mixins/MaterialContextMixin.ts +35 -0
  168. package/src/js/context/mixins/MaterialsContextMixin.ts +24 -0
  169. package/src/js/context/mixins/MaterialsSetContextMixin.ts +42 -0
  170. package/src/js/context/providers/BoundaryConditionsFormDataManager.ts +88 -0
  171. package/src/js/context/providers/CollinearMagnetizationDataManager.ts +140 -0
  172. package/src/js/context/providers/Hubbard/HubbardContextManagerLegacy.ts +93 -0
  173. package/src/js/context/providers/Hubbard/HubbardContextProvider.ts +85 -0
  174. package/src/js/context/providers/Hubbard/HubbardJContextManager.ts +82 -0
  175. package/src/js/context/providers/Hubbard/HubbardUContextManager.ts +78 -0
  176. package/src/js/context/providers/Hubbard/HubbardVContextManager.ts +100 -0
  177. package/src/js/context/providers/IonDynamicsDataManager.ts +64 -0
  178. package/src/js/context/providers/MLSettingsDataManager.ts +61 -0
  179. package/src/js/context/providers/MLTrainTestSplitDataManager.ts +59 -0
  180. package/src/js/context/providers/NEBFormDataManager.ts +57 -0
  181. package/src/js/context/providers/NonCollinearMagnetizationDataManager.ts +229 -0
  182. package/src/js/context/providers/PlanewaveCutoffDataManager.ts +110 -0
  183. package/src/js/context/providers/PointsGrid/IGridFormDataManager.ts +36 -0
  184. package/src/js/context/providers/PointsGrid/KGridFormDataManager.ts +46 -0
  185. package/src/js/context/providers/PointsGrid/PointsGridFormDataProvider.ts +371 -0
  186. package/src/js/context/providers/PointsGrid/QGridFormDataManager.ts +36 -0
  187. package/src/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.ts +26 -0
  188. package/src/js/context/providers/PointsPath/ExplicitKPathFormDataManager.ts +24 -0
  189. package/src/js/context/providers/PointsPath/IPathFormDataManager.ts +22 -0
  190. package/src/js/context/providers/PointsPath/KPathFormDataManager.ts +22 -0
  191. package/src/js/context/providers/PointsPath/PointsPathFormDataProvider.ts +192 -0
  192. package/src/js/context/providers/PointsPath/QPathFormDataManager.ts +22 -0
  193. package/src/js/context/providers/base/ContextProvider.ts +150 -0
  194. package/src/js/context/providers/base/JSONSchemaDataProvider.ts +31 -0
  195. package/src/js/context/providers/base/JSONSchemaFormDataProvider.ts +38 -0
  196. package/src/js/context/providers/by_application/espresso/QENEBInputDataManager.ts +107 -0
  197. package/src/js/context/providers/by_application/espresso/QEPWXInputDataManager.ts +178 -0
  198. package/src/js/context/providers/by_application/nwchem/NWChemInputDataManager.ts +93 -0
  199. package/src/js/context/providers/by_application/vasp/VASPInputDataManager.ts +89 -0
  200. package/src/js/context/providers/by_application/vasp/VASPNEBInputDataManager.ts +92 -0
  201. package/src/js/context/providers/index.ts +155 -0
  202. package/src/js/context/providers/settings.ts +13 -0
  203. package/src/js/convergence/ConvergenceParameter.ts +37 -0
  204. package/src/js/convergence/NonUniformKGridConvergence.ts +38 -0
  205. package/src/js/convergence/UniformKGridConvergence.ts +26 -0
  206. package/src/js/convergence/factory.ts +18 -0
  207. package/src/js/{enums.js → enums.ts} +27 -22
  208. package/src/js/generated/AssertionUnitSchemaMixin.ts +34 -0
  209. package/src/js/generated/AssignmentUnitSchemaMixin.ts +40 -0
  210. package/src/js/generated/BaseUnitSchemaMixin.ts +64 -0
  211. package/src/js/generated/ConditionUnitSchemaMixin.ts +58 -0
  212. package/src/js/generated/ExecutionUnitInputSchemaMixin.ts +36 -0
  213. package/src/js/generated/ExecutionUnitSchemaMixin.ts +52 -0
  214. package/src/js/generated/IOUnitSchemaMixin.ts +40 -0
  215. package/src/js/generated/MapUnitSchemaMixin.ts +34 -0
  216. package/src/js/generated/ReduceUnitSchemaMixin.ts +34 -0
  217. package/src/js/generated/StatusSchemaMixin.ts +28 -0
  218. package/src/js/generated/SubworkflowSchemaMixin.ts +58 -0
  219. package/src/js/generated/SubworkflowUnitSchemaMixin.ts +22 -0
  220. package/src/js/generated/WorkflowSchemaMixin.ts +58 -0
  221. package/src/js/index.ts +44 -0
  222. package/src/js/units/AssertionUnit.ts +49 -0
  223. package/src/js/units/AssignmentUnit.ts +49 -0
  224. package/src/js/units/BaseUnit.ts +117 -0
  225. package/src/js/units/ConditionUnit.ts +52 -0
  226. package/src/js/units/ExecutionUnit.ts +274 -0
  227. package/src/js/units/ExecutionUnitInput.ts +71 -0
  228. package/src/js/units/IOUnit.ts +43 -0
  229. package/src/js/units/MapUnit.ts +59 -0
  230. package/src/js/units/ReduceUnit.ts +46 -0
  231. package/src/js/units/SubworkflowUnit.ts +44 -0
  232. package/src/js/units/factory.ts +131 -0
  233. package/src/js/units/index.ts +27 -0
  234. package/src/js/units/mixins/RuntimeItemsUILogicMixin.ts +81 -0
  235. package/src/js/utils/baseUnits.ts +11 -0
  236. package/src/js/utils/index.ts +3 -0
  237. package/src/js/utils/units.ts +23 -0
  238. package/src/js/utils/workflow.ts +69 -0
  239. package/src/js/workflows/{default.js → default.ts} +8 -1
  240. package/build_workflows.js +0 -65
  241. package/dist/js/context/context.js +0 -49
  242. package/dist/js/context/mixins/JobContextMixin.js +0 -39
  243. package/dist/js/context/mixins/MethodDataContextMixin.js +0 -48
  244. package/dist/js/context/mixins/WorkflowContextMixin.js +0 -28
  245. package/dist/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -84
  246. package/dist/js/context/providers/CollinearMagnetizationContextProvider.js +0 -96
  247. package/dist/js/context/providers/HubbardContextProviderLegacy.js +0 -68
  248. package/dist/js/context/providers/HubbardJContextProvider.js +0 -67
  249. package/dist/js/context/providers/HubbardUContextProvider.js +0 -70
  250. package/dist/js/context/providers/HubbardVContextProvider.js +0 -92
  251. package/dist/js/context/providers/IonDynamicsContextProvider.js +0 -58
  252. package/dist/js/context/providers/MLSettingsContextProvider.js +0 -51
  253. package/dist/js/context/providers/MLTrainTestSplitContextProvider.js +0 -47
  254. package/dist/js/context/providers/NEBFormDataProvider.js +0 -42
  255. package/dist/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -187
  256. package/dist/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -67
  257. package/dist/js/context/providers/PointsGridFormDataProvider.js +0 -263
  258. package/dist/js/context/providers/PointsPathFormDataProvider.js +0 -147
  259. package/dist/js/context/providers/by_application/ExecutableContextProvider.js +0 -25
  260. package/dist/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -61
  261. package/dist/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -150
  262. package/dist/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -85
  263. package/dist/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -65
  264. package/dist/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -57
  265. package/dist/js/context/providers.js +0 -199
  266. package/dist/js/patch.js +0 -19
  267. package/dist/js/subworkflows/convergence/non_uniform_kgrid.js +0 -31
  268. package/dist/js/subworkflows/convergence/parameter.js +0 -70
  269. package/dist/js/subworkflows/convergence/uniform_kgrid.js +0 -26
  270. package/dist/js/subworkflows/convergence.js +0 -189
  271. package/dist/js/subworkflows/create.js +0 -293
  272. package/dist/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -34
  273. package/dist/js/subworkflows/dynamic/index.js +0 -19
  274. package/dist/js/subworkflows/dynamic/surfaceEnergy.js +0 -67
  275. package/dist/js/subworkflows/index.js +0 -19
  276. package/dist/js/units/assertion.js +0 -37
  277. package/dist/js/units/assignment.js +0 -42
  278. package/dist/js/units/base.js +0 -91
  279. package/dist/js/units/builders/AssertionUnitConfigBuilder.js +0 -34
  280. package/dist/js/units/builders/AssignmentUnitConfigBuilder.js +0 -41
  281. package/dist/js/units/builders/ExecutionUnitConfigBuilder.js +0 -67
  282. package/dist/js/units/builders/IOUnitConfigBuilder.js +0 -54
  283. package/dist/js/units/builders/UnitConfigBuilder.js +0 -85
  284. package/dist/js/units/builders/index.js +0 -18
  285. package/dist/js/units/condition.js +0 -52
  286. package/dist/js/units/execution.js +0 -225
  287. package/dist/js/units/io.js +0 -148
  288. package/dist/js/units/map.js +0 -38
  289. package/dist/js/units/processing.js +0 -41
  290. package/dist/js/units/reduce.js +0 -24
  291. package/dist/js/units/subworkflow.js +0 -23
  292. package/dist/js/workflows/create.js +0 -318
  293. package/dist/js/workflows/index.js +0 -113
  294. package/dist/js/workflows/relaxation.js +0 -38
  295. package/src/js/context/context.js +0 -47
  296. package/src/js/context/mixins/ApplicationContextMixin.js +0 -19
  297. package/src/js/context/mixins/JobContextMixin.js +0 -36
  298. package/src/js/context/mixins/MaterialContextMixin.js +0 -41
  299. package/src/js/context/mixins/MaterialsContextMixin.js +0 -18
  300. package/src/js/context/mixins/MaterialsSetContextMixin.js +0 -24
  301. package/src/js/context/mixins/MethodDataContextMixin.js +0 -48
  302. package/src/js/context/mixins/WorkflowContextMixin.js +0 -25
  303. package/src/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -72
  304. package/src/js/context/providers/CollinearMagnetizationContextProvider.js +0 -105
  305. package/src/js/context/providers/HubbardContextProviderLegacy.js +0 -67
  306. package/src/js/context/providers/HubbardJContextProvider.js +0 -65
  307. package/src/js/context/providers/HubbardUContextProvider.js +0 -95
  308. package/src/js/context/providers/HubbardVContextProvider.js +0 -96
  309. package/src/js/context/providers/IonDynamicsContextProvider.js +0 -44
  310. package/src/js/context/providers/MLSettingsContextProvider.js +0 -45
  311. package/src/js/context/providers/MLTrainTestSplitContextProvider.js +0 -43
  312. package/src/js/context/providers/NEBFormDataProvider.js +0 -33
  313. package/src/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -179
  314. package/src/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -65
  315. package/src/js/context/providers/PointsGridFormDataProvider.js +0 -271
  316. package/src/js/context/providers/PointsPathFormDataProvider.js +0 -163
  317. package/src/js/context/providers/by_application/ExecutableContextProvider.js +0 -17
  318. package/src/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -58
  319. package/src/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -168
  320. package/src/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -89
  321. package/src/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -58
  322. package/src/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -48
  323. package/src/js/context/providers/settings.js +0 -38
  324. package/src/js/context/providers.js +0 -140
  325. package/src/js/index.js +0 -57
  326. package/src/js/patch.js +0 -12
  327. package/src/js/subworkflows/convergence/enums.js +0 -12
  328. package/src/js/subworkflows/convergence/factory.js +0 -15
  329. package/src/js/subworkflows/convergence/non_uniform_kgrid.js +0 -28
  330. package/src/js/subworkflows/convergence/parameter.js +0 -58
  331. package/src/js/subworkflows/convergence/uniform_kgrid.js +0 -22
  332. package/src/js/subworkflows/convergence.js +0 -196
  333. package/src/js/subworkflows/create.js +0 -220
  334. package/src/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -35
  335. package/src/js/subworkflows/dynamic/index.js +0 -8
  336. package/src/js/subworkflows/dynamic/surfaceEnergy.js +0 -124
  337. package/src/js/subworkflows/index.js +0 -2
  338. package/src/js/subworkflows/subworkflow.js +0 -345
  339. package/src/js/units/assertion.js +0 -29
  340. package/src/js/units/assignment.js +0 -34
  341. package/src/js/units/base.js +0 -97
  342. package/src/js/units/builders/AssertionUnitConfigBuilder.js +0 -28
  343. package/src/js/units/builders/AssignmentUnitConfigBuilder.js +0 -36
  344. package/src/js/units/builders/ExecutionUnitConfigBuilder.js +0 -59
  345. package/src/js/units/builders/IOUnitConfigBuilder.js +0 -53
  346. package/src/js/units/builders/UnitConfigBuilder.js +0 -92
  347. package/src/js/units/builders/index.js +0 -15
  348. package/src/js/units/condition.js +0 -47
  349. package/src/js/units/execution.js +0 -267
  350. package/src/js/units/factory.js +0 -53
  351. package/src/js/units/index.js +0 -25
  352. package/src/js/units/io.js +0 -163
  353. package/src/js/units/map.js +0 -33
  354. package/src/js/units/processing.js +0 -39
  355. package/src/js/units/reduce.js +0 -17
  356. package/src/js/units/subworkflow.js +0 -15
  357. package/src/js/utils.js +0 -73
  358. package/src/js/workflows/create.js +0 -227
  359. package/src/js/workflows/index.js +0 -98
  360. package/src/js/workflows/relaxation.js +0 -42
  361. package/src/js/workflows/workflow.js +0 -388
@@ -0,0 +1,22 @@
1
+ import type { PathContextItemSchema } from "@mat3ra/esse/dist/js/types";
2
+
3
+ import type { UnitContext } from "../base/ContextProvider";
4
+ import PointsPathFormDataProvider, {
5
+ type PointsPathFormDataProviderExternalContext,
6
+ } from "./PointsPathFormDataProvider";
7
+
8
+ type Name = "qpath";
9
+ type Schema = PathContextItemSchema;
10
+
11
+ export default class QPathFormDataManager extends PointsPathFormDataProvider<Name> {
12
+ readonly name = "qpath" as const;
13
+
14
+ static createFromUnitContext(
15
+ unitContext: UnitContext,
16
+ externalContext: PointsPathFormDataProviderExternalContext,
17
+ ) {
18
+ const contextItem = this.findContextItem<Schema>(unitContext, "qpath");
19
+
20
+ return new QPathFormDataManager(contextItem, externalContext);
21
+ }
22
+ }
@@ -0,0 +1,150 @@
1
+ import { type ContextItemSchema } from "@mat3ra/esse/dist/js/types";
2
+ import { Utils } from "@mat3ra/utils";
3
+
4
+ export type UnitContext = ContextItemSchema[];
5
+ export type ContextName = ContextItemSchema["name"];
6
+ export type ContextExtraData = ContextItemSchema["extraData"];
7
+ export type ContextData = ContextItemSchema["data"];
8
+
9
+ export type ContextItem<
10
+ D extends ContextData = ContextData,
11
+ ED extends ContextExtraData = ContextExtraData,
12
+ > = {
13
+ data?: D;
14
+ extraData?: ED;
15
+ isEdited?: boolean;
16
+ };
17
+
18
+ /** Context item with template-facing `data` (may be a superset of persisted `S["data"]`). */
19
+ export type ContextItemForRendering<
20
+ S extends ContextItemSchema = ContextItemSchema,
21
+ R = S["data"],
22
+ > = Omit<S, "data"> & { data: R };
23
+
24
+ export type Domain = "executable" | "important";
25
+
26
+ export type EntityName = "unit" | "subworkflow";
27
+
28
+ /** Minimal bound for provider external context; the full contract is ExternalContext in context/providers/index.ts */
29
+ export type BaseExternalContext = object;
30
+
31
+ /**
32
+ * Context providers expose three data layers. Keep them separate.
33
+ *
34
+ * 1. Persistent data — user input / defaults. Stored in the DB as the context item's `data`,
35
+ * and bound to RJSForm as `formData`.
36
+ * API: `getData()` / `setData(data)` / `getContextItemData()`
37
+ *
38
+ * 2. Patched persistent (rendering) data — persistent data plus fields derived from external
39
+ * context (material, application, …) that must NOT be stored or shown in the form.
40
+ * Default = identity, override `patchForRendering` when the template needs extra fields.
41
+ * API: `getDataForRendering()` / `getContextItemDataForRendering()`
42
+ * If the rendering shape is a proper superset of the persistent shape, declare it via the
43
+ * third generic `DataForRendering` and pair with a dedicated ESSE schema (see
44
+ * `PointsPathFormDataProvider` + `points_path_data_provider_rendering.json`).
45
+ *
46
+ * 3. Full rendering context — `{ ...patchedItemByName, ...externalContext }` fed to Jinja.
47
+ * Built by `ExecutionUnit.render` from `getContextItemDataForRendering()` results.
48
+ *
49
+ * Rules:
50
+ * - Never bake derived fields into `setData`/`getDefaultData` just to reach templates.
51
+ * - `setData` may normalize legacy payloads to the current persistent schema.
52
+ * - `ExecutionUnit.render` MUST call `getContextItemData()` for `this.context` (DB) and
53
+ * `getContextItemDataForRendering()` for `this.renderingContext` (Jinja) separately.
54
+ *
55
+ * See `.cursor/rules/context-provider-data-layers.mdc` for the full guidance.
56
+ */
57
+ abstract class ContextProvider<
58
+ S extends ContextItemSchema = ContextItemSchema,
59
+ EC extends BaseExternalContext = BaseExternalContext,
60
+ /** Data passed to templates; defaults to persisted `S["data"]` (identity `patchForRendering`). */
61
+ DataForRendering = S["data"],
62
+ > {
63
+ abstract name: S["name"];
64
+
65
+ abstract readonly domain: Domain;
66
+
67
+ abstract readonly entityName: EntityName;
68
+
69
+ protected abstract getDefaultData(): S["data"];
70
+
71
+ protected data?: S["data"];
72
+
73
+ /** Seeded from persisted context; material providers refresh via `updateMaterialHash()`. */
74
+ extraData?: S["extraData"];
75
+
76
+ readonly externalContext: EC;
77
+
78
+ isEdited: boolean;
79
+
80
+ constructor(contextItem: Partial<S>, externalContext: EC) {
81
+ this.externalContext = externalContext;
82
+ this.isEdited = contextItem.isEdited || false;
83
+
84
+ if (contextItem.data !== undefined) {
85
+ this.data = Utils.clone.deepClone(contextItem.data);
86
+ }
87
+
88
+ if (contextItem.extraData !== undefined) {
89
+ this.extraData = Utils.clone.deepClone(contextItem.extraData);
90
+ }
91
+ }
92
+
93
+ setIsEdited(isEdited: boolean) {
94
+ this.isEdited = isEdited;
95
+ }
96
+
97
+ getData(): S["data"] {
98
+ if (this.data !== undefined) {
99
+ return Utils.clone.deepClone(this.data);
100
+ }
101
+ return this.getDefaultData();
102
+ }
103
+
104
+ setData(data: S["data"]) {
105
+ this.data = Utils.clone.deepClone(data);
106
+ }
107
+
108
+ /**
109
+ * Derive template-facing `data` from persisted `data`. Override when the template needs fields
110
+ * that must not be stored (e.g. coordinates from symmetry point names + lattice).
111
+ */
112
+ // eslint-disable-next-line class-methods-use-this
113
+ protected patchForRendering(data: S["data"]): DataForRendering {
114
+ return data as DataForRendering;
115
+ }
116
+
117
+ getDataForRendering(): DataForRendering {
118
+ return this.patchForRendering(this.getData());
119
+ }
120
+
121
+ getContextItemData(): S {
122
+ return {
123
+ name: this.name,
124
+ isEdited: this.isEdited,
125
+ data: this.getData(),
126
+ extraData: this.extraData,
127
+ } as S;
128
+ }
129
+
130
+ getContextItemDataForRendering(): ContextItemForRendering<S, DataForRendering> {
131
+ return {
132
+ ...this.getContextItemData(),
133
+ data: this.getDataForRendering(),
134
+ };
135
+ }
136
+
137
+ /**
138
+ * Helper method to find a context item from a unit context array by name.
139
+ * Returns a partial schema object that can be safely passed to constructors.
140
+ */
141
+ protected static findContextItem<S extends ContextItemSchema>(
142
+ unitContext: UnitContext,
143
+ contextName: ContextName,
144
+ ): Partial<S> {
145
+ const item = unitContext.find((item): item is S => item.name === contextName);
146
+ return item || {};
147
+ }
148
+ }
149
+
150
+ export default ContextProvider;
@@ -0,0 +1,31 @@
1
+ import type { JSONSchema } from "@mat3ra/esse/dist/js/esse/utils";
2
+ import type { ContextItemSchema } from "@mat3ra/esse/dist/js/types";
3
+
4
+ import ContextProvider from "./ContextProvider";
5
+
6
+ export interface JinjaExternalContext {
7
+ isUsingJinjaVariables?: boolean;
8
+ }
9
+
10
+ /**
11
+ * @summary Provides jsonSchema only.
12
+ */
13
+ abstract class JSONSchemaDataProvider<
14
+ S extends ContextItemSchema = ContextItemSchema,
15
+ EC extends JinjaExternalContext = JinjaExternalContext,
16
+ DataForRendering = S["data"],
17
+ // eslint-disable-next-line prettier/prettier
18
+ > extends ContextProvider<S, EC, DataForRendering> {
19
+ abstract readonly jsonSchema: JSONSchema;
20
+
21
+ readonly entityName = "unit" as const;
22
+
23
+ isUsingJinjaVariables: boolean;
24
+
25
+ constructor(contextItem: Partial<S>, externalContext: EC) {
26
+ super(contextItem, externalContext);
27
+ this.isUsingJinjaVariables = Boolean(externalContext?.isUsingJinjaVariables);
28
+ }
29
+ }
30
+
31
+ export default JSONSchemaDataProvider;
@@ -0,0 +1,38 @@
1
+ import type { ContextItemSchema } from "@mat3ra/esse/dist/js/types";
2
+ import type { UiSchema } from "react-jsonschema-form";
3
+
4
+ import JSONSchemaDataProvider, { type JinjaExternalContext } from "./JSONSchemaDataProvider";
5
+
6
+ /**
7
+ * @summary Provides jsonSchema and uiSchema for generating react-jsonschema-form
8
+ * See https://github.com/mozilla-services/react-jsonschema-form for Form UI.
9
+ * Form generation example:
10
+ * ```
11
+ * <Form schema={provider.jsonSchema}
12
+ * uiSchema={provider.uiSchema}
13
+ * formData={provider.getData(unit.important)} />
14
+ * ```
15
+ */
16
+ abstract class JSONSchemaFormDataProvider<
17
+ S extends ContextItemSchema = ContextItemSchema,
18
+ EC extends JinjaExternalContext = JinjaExternalContext,
19
+ DataForRendering = S["data"],
20
+ > extends JSONSchemaDataProvider<S, EC, DataForRendering> {
21
+ fields: object = {};
22
+
23
+ protected abstract uiSchema: UiSchema;
24
+
25
+ get uiSchemaStyled(): UiSchema {
26
+ return Object.fromEntries(
27
+ Object.entries(this.uiSchema).map(([key, value]) => [
28
+ key,
29
+ {
30
+ ...value,
31
+ classNames: `${value.classNames || ""}`,
32
+ },
33
+ ]),
34
+ );
35
+ }
36
+ }
37
+
38
+ export default JSONSchemaFormDataProvider;
@@ -0,0 +1,107 @@
1
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
2
+ import type {
3
+ InputContextItemSchema,
4
+ QENEBContextProviderSchema,
5
+ } from "@mat3ra/esse/dist/js/types";
6
+ import type { JSONSchema7 } from "json-schema";
7
+
8
+ import materialContextMixin, {
9
+ type MaterialContextMixin,
10
+ type MaterialExternalContext,
11
+ } from "../../../mixins/MaterialContextMixin";
12
+ import materialsContextMixin, {
13
+ type MaterialsContextMixin,
14
+ type MaterialsExternalContext,
15
+ } from "../../../mixins/MaterialsContextMixin";
16
+ import materialsSetContextMixin, {
17
+ type MaterialsSetContextMixin,
18
+ type MaterialsSetExternalContext,
19
+ } from "../../../mixins/MaterialsSetContextMixin";
20
+ import type { UnitContext } from "../../base/ContextProvider";
21
+ import JSONSchemaDataProvider, {
22
+ type JinjaExternalContext,
23
+ } from "../../base/JSONSchemaDataProvider";
24
+ import QEPWXInputDataManager, {
25
+ type JobExternalContext,
26
+ type MethodDataExternalContext,
27
+ type WorkflowExternalContext,
28
+ } from "./QEPWXInputDataManager";
29
+
30
+ const jsonSchemaId = "context-providers-directory/by-application/qe-neb-context-provider";
31
+
32
+ type Data = QENEBContextProviderSchema;
33
+ type Schema = InputContextItemSchema & { data: Data };
34
+ type ExternalContext = JinjaExternalContext &
35
+ WorkflowExternalContext &
36
+ JobExternalContext &
37
+ MaterialsExternalContext &
38
+ MethodDataExternalContext &
39
+ MaterialsSetExternalContext &
40
+ MaterialExternalContext;
41
+
42
+ interface QENEBInputDataManager
43
+ extends MaterialContextMixin,
44
+ MaterialsContextMixin,
45
+ MaterialsSetContextMixin {}
46
+
47
+ class QENEBInputDataManager extends JSONSchemaDataProvider<Schema, ExternalContext> {
48
+ readonly name = "input" as const;
49
+
50
+ readonly domain = "executable" as const;
51
+
52
+ readonly entityName = "unit" as const;
53
+
54
+ isEdited = false;
55
+
56
+ static createFromUnitContext(unitContext: UnitContext, externalContext: ExternalContext) {
57
+ const contextItem = this.findContextItem<Schema>(unitContext, "input");
58
+
59
+ return new QENEBInputDataManager(contextItem, externalContext);
60
+ }
61
+
62
+ readonly jsonSchema: JSONSchema7;
63
+
64
+ constructor(config: Partial<Schema>, externalContext: ExternalContext) {
65
+ super(config, externalContext);
66
+ this.initMaterialsContextMixin(externalContext);
67
+ this.initMaterialContextMixin(externalContext);
68
+ this.initMaterialsSetContextMixin(externalContext);
69
+
70
+ const jsonSchema = JSONSchemasInterface.getSchemaById(jsonSchemaId);
71
+
72
+ if (!jsonSchema) {
73
+ throw new Error("Failed to get JSON schema");
74
+ }
75
+
76
+ this.jsonSchema = jsonSchema;
77
+ }
78
+
79
+ getDefaultData(): Data {
80
+ const PWXContexts = this.sortMaterialsByIndexInSet(this.materials).map((material) => {
81
+ return new QEPWXInputDataManager({}, { ...this.externalContext, material }).getData();
82
+ });
83
+
84
+ const {
85
+ ATOMIC_POSITIONS,
86
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
87
+ ATOMIC_POSITIONS_WITHOUT_CONSTRAINTS: _,
88
+ ...rest
89
+ } = PWXContexts[0];
90
+
91
+ return {
92
+ ...rest,
93
+ FIRST_IMAGE: ATOMIC_POSITIONS,
94
+ LAST_IMAGE: PWXContexts[PWXContexts.length - 1].ATOMIC_POSITIONS,
95
+ INTERMEDIATE_IMAGES: PWXContexts.slice(1, PWXContexts.length - 1).map((data) => {
96
+ return data.ATOMIC_POSITIONS;
97
+ }),
98
+ contextProviderName: "qe-neb" as const,
99
+ };
100
+ }
101
+ }
102
+
103
+ materialContextMixin(QENEBInputDataManager.prototype);
104
+ materialsContextMixin(QENEBInputDataManager.prototype);
105
+ materialsSetContextMixin(QENEBInputDataManager.prototype);
106
+
107
+ export default QENEBInputDataManager;
@@ -0,0 +1,178 @@
1
+ import { PERIODIC_TABLE } from "@exabyte-io/periodic-table.js";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type {
4
+ BaseMethod,
5
+ InputContextItemSchema,
6
+ QEPwxContextProviderSchema,
7
+ } from "@mat3ra/esse/dist/js/types";
8
+ import type { Material } from "@mat3ra/made";
9
+ import type { AtomicElementValue } from "@mat3ra/made/dist/js/basis/elements";
10
+ import type { JSONSchema7 } from "json-schema";
11
+ import path from "path";
12
+
13
+ import materialContextMixin, {
14
+ type MaterialContextMixin,
15
+ type MaterialExternalContext,
16
+ } from "../../../mixins/MaterialContextMixin";
17
+ import materialsContextMixin, {
18
+ type MaterialsContextMixin,
19
+ type MaterialsExternalContext,
20
+ } from "../../../mixins/MaterialsContextMixin";
21
+ import type { UnitContext } from "../../base/ContextProvider";
22
+ import JSONSchemaDataProvider, {
23
+ type JinjaExternalContext,
24
+ } from "../../base/JSONSchemaDataProvider";
25
+
26
+ // TODO: create a task to define correct type for MethodData
27
+ type MethodData = BaseMethod["data"] & {
28
+ pseudo?: { element: AtomicElementValue; filename?: string; path?: string }[];
29
+ };
30
+
31
+ export type MethodDataExternalContext = {
32
+ methodData?: MethodData;
33
+ };
34
+
35
+ export type JobExternalContext = {
36
+ jobHasParent: boolean;
37
+ };
38
+
39
+ export type WorkflowExternalContext = {
40
+ workflowHasRelaxation: boolean;
41
+ };
42
+
43
+ type Data = QEPwxContextProviderSchema;
44
+ type Schema = InputContextItemSchema & { data: Data };
45
+ type ExternalContext = JinjaExternalContext &
46
+ WorkflowExternalContext &
47
+ MaterialExternalContext &
48
+ JobExternalContext &
49
+ MethodDataExternalContext &
50
+ MaterialsExternalContext;
51
+
52
+ interface QEPWXInputDataManager extends MaterialContextMixin, MaterialsContextMixin {}
53
+
54
+ const jsonSchemaId = "context-providers-directory/by-application/qe-pwx-context-provider";
55
+
56
+ class QEPWXInputDataManager extends JSONSchemaDataProvider<Schema, ExternalContext> {
57
+ readonly name = "input" as const;
58
+
59
+ readonly domain = "executable" as const;
60
+
61
+ readonly entityName = "unit" as const;
62
+
63
+ isEdited = false;
64
+
65
+ methodData?: MethodData;
66
+
67
+ jobHasParent: boolean;
68
+
69
+ workflowHasRelaxation: boolean;
70
+
71
+ static createFromUnitContext(unitContext: UnitContext, externalContext: ExternalContext) {
72
+ const contextItem = this.findContextItem<Schema>(unitContext, "input");
73
+
74
+ return new QEPWXInputDataManager(contextItem, externalContext);
75
+ }
76
+
77
+ readonly jsonSchema: JSONSchema7;
78
+
79
+ constructor(config: Partial<Schema>, externalContext: ExternalContext) {
80
+ super(config, externalContext);
81
+ this.initMaterialsContextMixin(externalContext);
82
+ this.initMaterialContextMixin(externalContext);
83
+
84
+ this.methodData = externalContext.methodData || {};
85
+ this.jobHasParent = externalContext.jobHasParent;
86
+ this.workflowHasRelaxation = externalContext.workflowHasRelaxation;
87
+
88
+ const jsonSchema = JSONSchemasInterface.getSchemaById(jsonSchemaId);
89
+
90
+ if (!jsonSchema) {
91
+ throw new Error("Failed to get JSON schema");
92
+ }
93
+
94
+ this.jsonSchema = jsonSchema;
95
+ }
96
+
97
+ private buildQEPWXContext(material: Material): Data {
98
+ const { Basis: basis, Lattice: lattice } = material;
99
+ const { jobHasParent, workflowHasRelaxation } = this;
100
+
101
+ const ATOMIC_SPECIES = basis.uniqueElements.map((symbol) => {
102
+ const pseudo = (this.methodData?.pseudo || []).find((p) => p.element === symbol);
103
+ return {
104
+ X: symbol,
105
+ Mass_X: PERIODIC_TABLE[symbol].atomic_mass,
106
+ PseudoPot_X: pseudo?.filename || path.basename(pseudo?.path || ""),
107
+ };
108
+ });
109
+
110
+ const uniqueElementsWithLabels = [...new Set(basis.elementsWithLabelsArray)];
111
+
112
+ const ATOMIC_SPECIES_WITH_LABELS = uniqueElementsWithLabels.map((symbol) => {
113
+ const symbolWithoutLabel = symbol.replace(/\d$/, "") as AtomicElementValue;
114
+ const label = symbol.match(/\d$/g) ? symbol.match(/\d$/g)?.[0] : "";
115
+ const pseudo = (this.methodData?.pseudo || []).find(
116
+ (p) => p.element === symbolWithoutLabel,
117
+ );
118
+ return {
119
+ X: `${symbolWithoutLabel}${label}`,
120
+ Mass_X: PERIODIC_TABLE[symbol].atomic_mass,
121
+ PseudoPot_X: pseudo?.filename || path.basename(pseudo?.path || ""),
122
+ };
123
+ });
124
+
125
+ const CELL_PARAMETERS = {
126
+ v1: lattice.vectorArrays[0],
127
+ v2: lattice.vectorArrays[1],
128
+ v3: lattice.vectorArrays[2],
129
+ };
130
+
131
+ const ATOMIC_POSITIONS = basis.elementsCoordinatesConstraintsArray.map(
132
+ ([element, label, coordinate, constraint]) => {
133
+ return {
134
+ X: `${element}${label}`,
135
+ x: coordinate[0],
136
+ y: coordinate[1],
137
+ z: coordinate[2],
138
+ "if_pos(1)": constraint[0] ? 1 : 0,
139
+ "if_pos(2)": constraint[1] ? 1 : 0,
140
+ "if_pos(3)": constraint[2] ? 1 : 0,
141
+ };
142
+ },
143
+ );
144
+
145
+ return {
146
+ IBRAV: 0,
147
+ RESTART_MODE: jobHasParent || workflowHasRelaxation ? "restart" : "from_scratch",
148
+ ATOMIC_SPECIES,
149
+ ATOMIC_SPECIES_WITH_LABELS,
150
+ NAT: basis.atomicPositions.length,
151
+ NTYP: basis.uniqueElements.length,
152
+ NTYP_WITH_LABELS: uniqueElementsWithLabels.length,
153
+ ATOMIC_POSITIONS,
154
+ ATOMIC_POSITIONS_WITHOUT_CONSTRAINTS: basis.atomicPositions.join("\n"),
155
+ CELL_PARAMETERS,
156
+ contextProviderName: "qe-pwx" as const,
157
+ };
158
+ }
159
+
160
+ getDefaultData() {
161
+ // the below values are read from PlanewaveDataManager instead
162
+ // ECUTWFC = 40;
163
+ // ECUTRHO = 200;
164
+
165
+ return {
166
+ ...this.buildQEPWXContext(this.material),
167
+ perMaterial: this.materials.map((material) => this.buildQEPWXContext(material)),
168
+ };
169
+ }
170
+ }
171
+
172
+ materialContextMixin(QEPWXInputDataManager.prototype);
173
+ materialsContextMixin(QEPWXInputDataManager.prototype);
174
+ // methodDataContextMixin(QEPWXInputDataManager.prototype);
175
+ // workflowContextMixin(QEPWXInputDataManager.prototype);
176
+ // jobContextMixin(QEPWXInputDataManager.prototype);
177
+
178
+ export default QEPWXInputDataManager;
@@ -0,0 +1,93 @@
1
+ import { PERIODIC_TABLE } from "@exabyte-io/periodic-table.js";
2
+ import JSONSchemasInterface from "@mat3ra/esse/dist/js/esse/JSONSchemasInterface";
3
+ import type {
4
+ InputContextItemSchema,
5
+ NWChemTotalEnergyContextProviderSchema,
6
+ } from "@mat3ra/esse/dist/js/types";
7
+ import type { JSONSchema7 } from "json-schema";
8
+
9
+ import materialContextMixin, {
10
+ type MaterialContextMixin,
11
+ type MaterialExternalContext,
12
+ } from "../../../mixins/MaterialContextMixin";
13
+ import type { UnitContext } from "../../base/ContextProvider";
14
+ import JSONSchemaDataProvider, {
15
+ type JinjaExternalContext,
16
+ } from "../../base/JSONSchemaDataProvider";
17
+
18
+ type Data = NWChemTotalEnergyContextProviderSchema;
19
+ type Schema = InputContextItemSchema & { data: Data };
20
+ type ExternalContext = JinjaExternalContext & MaterialExternalContext;
21
+
22
+ // eslint-disable-next-line @typescript-eslint/no-empty-interface
23
+ interface NWChemInputDataManager extends MaterialContextMixin {}
24
+
25
+ const jsonSchemaId =
26
+ "context-providers-directory/by-application/nwchem-total-energy-context-provider";
27
+
28
+ class NWChemInputDataManager extends JSONSchemaDataProvider<Schema, ExternalContext> {
29
+ readonly name = "input" as const;
30
+
31
+ readonly domain = "executable" as const;
32
+
33
+ readonly entityName = "unit" as const;
34
+
35
+ isEdited = false;
36
+
37
+ static createFromUnitContext(unitContext: UnitContext, externalContext: ExternalContext) {
38
+ const contextItem = this.findContextItem<Schema>(unitContext, "input");
39
+
40
+ return new NWChemInputDataManager(contextItem, externalContext);
41
+ }
42
+
43
+ readonly contextProviderName = "nwchem-total-energy" as const;
44
+
45
+ readonly jsonSchema: JSONSchema7;
46
+
47
+ constructor(config: Partial<Schema>, externalContext: ExternalContext) {
48
+ super(config, externalContext);
49
+ this.initMaterialContextMixin(externalContext);
50
+
51
+ const jsonSchema = JSONSchemasInterface.getSchemaById(jsonSchemaId);
52
+
53
+ if (!jsonSchema) {
54
+ throw new Error("Failed to get JSON schema");
55
+ }
56
+
57
+ this.jsonSchema = jsonSchema;
58
+ }
59
+
60
+ /*
61
+ * TODO: Create ability for user to define CHARGE, MULT, BASIS and FUNCTIONAL parameters.
62
+ */
63
+ getDefaultData() {
64
+ const basis = this.material.Basis;
65
+
66
+ const NTYP = basis.uniqueElements.length;
67
+ const ATOMIC_POSITIONS_WITHOUT_CONSTRAINTS = basis.atomicPositions.join("\n") || "";
68
+ const ATOMIC_SPECIES = basis.uniqueElements
69
+ .map((symbol) => `${symbol} ${PERIODIC_TABLE[symbol].atomic_mass} `)
70
+ .join("\n");
71
+
72
+ basis.toCartesian();
73
+ const atomicPositions = basis.getAtomicPositionsWithConstraintsAsStrings();
74
+
75
+ return {
76
+ CHARGE: 0,
77
+ MULT: 1,
78
+ BASIS: "6-31G",
79
+ NAT: atomicPositions.length,
80
+ NTYP,
81
+ ATOMIC_POSITIONS: atomicPositions.join("\n"),
82
+ ATOMIC_POSITIONS_WITHOUT_CONSTRAINTS,
83
+ ATOMIC_SPECIES,
84
+ FUNCTIONAL: "B3LYP",
85
+ CARTESIAN: basis.toCartesian !== undefined,
86
+ contextProviderName: this.contextProviderName,
87
+ };
88
+ }
89
+ }
90
+
91
+ materialContextMixin(NWChemInputDataManager.prototype);
92
+
93
+ export default NWChemInputDataManager;