@mat3ra/wode 2026.5.23-0 → 2026.6.5-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.
- package/.babelrc +1 -1
- package/dist/js/Subworkflow.d.ts +714 -0
- package/dist/js/Subworkflow.js +397 -0
- package/dist/js/Workflow.d.ts +82 -0
- package/dist/js/Workflow.js +286 -0
- package/dist/js/WorkflowDesignerMaterial.d.ts +21 -0
- package/dist/js/WorkflowDesignerMaterial.js +26 -0
- package/dist/js/context/mixins/ApplicationContextMixin.d.ts +10 -0
- package/dist/js/context/mixins/ApplicationContextMixin.js +10 -17
- package/dist/js/context/mixins/MaterialContextMixin.d.ts +18 -0
- package/dist/js/context/mixins/MaterialContextMixin.js +14 -38
- package/dist/js/context/mixins/MaterialsContextMixin.d.ts +10 -0
- package/dist/js/context/mixins/MaterialsContextMixin.js +11 -17
- package/dist/js/context/mixins/MaterialsSetContextMixin.d.ts +14 -0
- package/dist/js/context/mixins/MaterialsSetContextMixin.js +21 -23
- package/dist/js/context/providers/BoundaryConditionsFormDataManager.d.ts +30 -0
- package/dist/js/context/providers/BoundaryConditionsFormDataManager.js +62 -0
- package/dist/js/context/providers/CollinearMagnetizationDataManager.d.ts +42 -0
- package/dist/js/context/providers/CollinearMagnetizationDataManager.js +101 -0
- package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.d.ts +29 -0
- package/dist/js/context/providers/Hubbard/HubbardContextManagerLegacy.js +69 -0
- package/dist/js/context/providers/Hubbard/HubbardContextProvider.d.ts +20 -0
- package/dist/js/context/providers/Hubbard/HubbardContextProvider.js +47 -0
- package/dist/js/context/providers/Hubbard/HubbardJContextManager.d.ts +22 -0
- package/dist/js/context/providers/Hubbard/HubbardJContextManager.js +61 -0
- package/dist/js/context/providers/Hubbard/HubbardUContextManager.d.ts +22 -0
- package/dist/js/context/providers/Hubbard/HubbardUContextManager.js +57 -0
- package/dist/js/context/providers/Hubbard/HubbardVContextManager.d.ts +22 -0
- package/dist/js/context/providers/Hubbard/HubbardVContextManager.js +79 -0
- package/dist/js/context/providers/IonDynamicsDataManager.d.ts +27 -0
- package/dist/js/context/providers/IonDynamicsDataManager.js +48 -0
- package/dist/js/context/providers/MLSettingsDataManager.d.ts +24 -0
- package/dist/js/context/providers/MLSettingsDataManager.js +42 -0
- package/dist/js/context/providers/MLTrainTestSplitDataManager.d.ts +23 -0
- package/dist/js/context/providers/MLTrainTestSplitDataManager.js +40 -0
- package/dist/js/context/providers/NEBFormDataManager.d.ts +23 -0
- package/dist/js/context/providers/NEBFormDataManager.js +39 -0
- package/dist/js/context/providers/NonCollinearMagnetizationDataManager.d.ts +78 -0
- package/dist/js/context/providers/NonCollinearMagnetizationDataManager.js +181 -0
- package/dist/js/context/providers/PlanewaveCutoffDataManager.d.ts +26 -0
- package/dist/js/context/providers/PlanewaveCutoffDataManager.js +69 -0
- package/dist/js/context/providers/PointsGrid/IGridFormDataManager.d.ts +13 -0
- package/dist/js/context/providers/PointsGrid/IGridFormDataManager.js +23 -0
- package/dist/js/context/providers/PointsGrid/KGridFormDataManager.d.ts +15 -0
- package/dist/js/context/providers/PointsGrid/KGridFormDataManager.js +30 -0
- package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.d.ts +171 -0
- package/dist/js/context/providers/PointsGrid/PointsGridFormDataProvider.js +270 -0
- package/dist/js/context/providers/PointsGrid/QGridFormDataManager.d.ts +13 -0
- package/dist/js/context/providers/PointsGrid/QGridFormDataManager.js +23 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.d.ts +10 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.js +19 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.d.ts +9 -0
- package/dist/js/context/providers/PointsPath/ExplicitKPathFormDataManager.js +18 -0
- package/dist/js/context/providers/PointsPath/IPathFormDataManager.d.ts +8 -0
- package/dist/js/context/providers/PointsPath/IPathFormDataManager.js +17 -0
- package/dist/js/context/providers/PointsPath/KPathFormDataManager.d.ts +8 -0
- package/dist/js/context/providers/PointsPath/KPathFormDataManager.js +17 -0
- package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.d.ts +40 -0
- package/dist/js/context/providers/PointsPath/PointsPathFormDataProvider.js +125 -0
- package/dist/js/context/providers/PointsPath/QPathFormDataManager.d.ts +8 -0
- package/dist/js/context/providers/PointsPath/QPathFormDataManager.js +17 -0
- package/dist/js/context/providers/base/ContextProvider.d.ts +75 -0
- package/dist/js/context/providers/base/ContextProvider.js +87 -0
- package/dist/js/context/providers/base/JSONSchemaDataProvider.d.ts +16 -0
- package/dist/js/context/providers/base/JSONSchemaDataProvider.js +17 -0
- package/dist/js/context/providers/base/JSONSchemaFormDataProvider.d.ts +19 -0
- package/dist/js/context/providers/base/JSONSchemaFormDataProvider.js +32 -0
- package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.d.ts +26 -0
- package/dist/js/context/providers/by_application/espresso/QENEBInputDataManager.js +54 -0
- package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.d.ts +78 -0
- package/dist/js/context/providers/by_application/espresso/QEPWXInputDataManager.js +104 -0
- package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.d.ts +36 -0
- package/dist/js/context/providers/by_application/nwchem/NWChemInputDataManager.js +58 -0
- package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.d.ts +36 -0
- package/dist/js/context/providers/by_application/vasp/VASPInputDataManager.js +56 -0
- package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.d.ts +30 -0
- package/dist/js/context/providers/by_application/vasp/VASPNEBInputDataManager.js +50 -0
- package/dist/js/context/providers/index.d.ts +92 -0
- package/dist/js/context/providers/index.js +107 -0
- package/dist/js/context/providers/settings.d.ts +7 -0
- package/dist/js/context/providers/settings.js +11 -33
- package/dist/js/convergence/ConvergenceParameter.d.ts +26 -0
- package/dist/js/convergence/ConvergenceParameter.js +13 -0
- package/dist/js/convergence/NonUniformKGridConvergence.d.ts +12 -0
- package/dist/js/convergence/NonUniformKGridConvergence.js +31 -0
- package/dist/js/convergence/UniformKGridConvergence.d.ts +8 -0
- package/dist/js/convergence/UniformKGridConvergence.js +22 -0
- package/dist/js/convergence/factory.d.ts +8 -0
- package/dist/js/convergence/factory.js +18 -0
- package/dist/js/enums.d.ts +62 -0
- package/dist/js/enums.js +66 -61
- package/dist/js/generated/AssertionUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/AssertionUnitSchemaMixin.js +27 -0
- package/dist/js/generated/AssignmentUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/AssignmentUnitSchemaMixin.js +33 -0
- package/dist/js/generated/BaseUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/BaseUnitSchemaMixin.js +57 -0
- package/dist/js/generated/ConditionUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ConditionUnitSchemaMixin.js +51 -0
- package/dist/js/generated/ExecutionUnitInputSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ExecutionUnitInputSchemaMixin.js +27 -0
- package/dist/js/generated/ExecutionUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ExecutionUnitSchemaMixin.js +45 -0
- package/dist/js/generated/IOUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/IOUnitSchemaMixin.js +33 -0
- package/dist/js/generated/MapUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/MapUnitSchemaMixin.js +27 -0
- package/dist/js/generated/ReduceUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/ReduceUnitSchemaMixin.js +27 -0
- package/dist/js/generated/StatusSchemaMixin.d.ts +5 -0
- package/dist/js/generated/StatusSchemaMixin.js +21 -0
- package/dist/js/generated/SubworkflowSchemaMixin.d.ts +5 -0
- package/dist/js/generated/SubworkflowSchemaMixin.js +51 -0
- package/dist/js/generated/SubworkflowUnitSchemaMixin.d.ts +5 -0
- package/dist/js/generated/SubworkflowUnitSchemaMixin.js +15 -0
- package/dist/js/generated/WorkflowSchemaMixin.d.ts +5 -0
- package/dist/js/generated/WorkflowSchemaMixin.js +51 -0
- package/dist/js/index.d.ts +13 -0
- package/dist/js/index.js +66 -176
- package/dist/js/units/AssertionUnit.d.ts +20 -0
- package/dist/js/units/AssertionUnit.js +33 -0
- package/dist/js/units/AssignmentUnit.d.ts +17 -0
- package/dist/js/units/AssignmentUnit.js +35 -0
- package/dist/js/units/BaseUnit.d.ts +39 -0
- package/dist/js/units/BaseUnit.js +70 -0
- package/dist/js/units/ConditionUnit.d.ts +17 -0
- package/dist/js/units/ConditionUnit.js +37 -0
- package/dist/js/units/ExecutionUnit.d.ts +115 -0
- package/dist/js/units/ExecutionUnit.js +181 -0
- package/dist/js/units/ExecutionUnitInput.d.ts +22 -0
- package/dist/js/units/ExecutionUnitInput.js +47 -0
- package/dist/js/units/IOUnit.d.ts +16 -0
- package/dist/js/units/IOUnit.js +31 -0
- package/dist/js/units/MapUnit.d.ts +34 -0
- package/dist/js/units/MapUnit.js +46 -0
- package/dist/js/units/ReduceUnit.d.ts +16 -0
- package/dist/js/units/ReduceUnit.js +30 -0
- package/dist/js/units/SubworkflowUnit.d.ts +16 -0
- package/dist/js/units/SubworkflowUnit.js +28 -0
- package/dist/js/units/factory.d.ts +31 -0
- package/dist/js/units/factory.js +65 -47
- package/dist/js/units/index.d.ts +14 -0
- package/dist/js/units/index.js +25 -81
- package/dist/js/units/mixins/RuntimeItemsUILogicMixin.d.ts +26 -0
- package/dist/js/units/mixins/RuntimeItemsUILogicMixin.js +50 -0
- package/dist/js/utils/baseUnits.d.ts +2 -0
- package/dist/js/utils/baseUnits.js +11 -0
- package/dist/js/utils/index.d.ts +3 -0
- package/dist/js/utils/index.js +39 -0
- package/dist/js/utils/subworkflow.d.ts +2 -0
- package/dist/js/utils/subworkflow.js +29 -0
- package/dist/js/utils/underscoreStringSlugify.d.ts +6 -0
- package/dist/js/utils/underscoreStringSlugify.js +32 -0
- package/dist/js/utils/units.d.ts +4 -0
- package/dist/js/utils/units.js +16 -0
- package/dist/js/utils/workflow.d.ts +9 -0
- package/dist/js/utils/workflow.js +67 -0
- package/dist/js/workflows/default.d.ts +3 -0
- package/dist/js/workflows/default.js +43 -39
- package/dist/js/workflows/workflow.d.ts +4404 -0
- package/dist/js/workflows/workflow.js +310 -306
- package/package.json +56 -44
- package/src/js/Subworkflow.ts +532 -0
- package/src/js/Workflow.ts +390 -0
- package/src/js/context/mixins/ApplicationContextMixin.ts +21 -0
- package/src/js/context/mixins/MaterialContextMixin.ts +35 -0
- package/src/js/context/mixins/MaterialsContextMixin.ts +24 -0
- package/src/js/context/mixins/MaterialsSetContextMixin.ts +42 -0
- package/src/js/context/providers/BoundaryConditionsFormDataManager.ts +88 -0
- package/src/js/context/providers/CollinearMagnetizationDataManager.ts +140 -0
- package/src/js/context/providers/Hubbard/HubbardContextManagerLegacy.ts +93 -0
- package/src/js/context/providers/Hubbard/HubbardContextProvider.ts +85 -0
- package/src/js/context/providers/Hubbard/HubbardJContextManager.ts +82 -0
- package/src/js/context/providers/Hubbard/HubbardUContextManager.ts +78 -0
- package/src/js/context/providers/Hubbard/HubbardVContextManager.ts +100 -0
- package/src/js/context/providers/IonDynamicsDataManager.ts +64 -0
- package/src/js/context/providers/MLSettingsDataManager.ts +61 -0
- package/src/js/context/providers/MLTrainTestSplitDataManager.ts +59 -0
- package/src/js/context/providers/NEBFormDataManager.ts +57 -0
- package/src/js/context/providers/NonCollinearMagnetizationDataManager.ts +229 -0
- package/src/js/context/providers/PlanewaveCutoffDataManager.ts +110 -0
- package/src/js/context/providers/PointsGrid/IGridFormDataManager.ts +36 -0
- package/src/js/context/providers/PointsGrid/KGridFormDataManager.ts +46 -0
- package/src/js/context/providers/PointsGrid/PointsGridFormDataProvider.ts +371 -0
- package/src/js/context/providers/PointsGrid/QGridFormDataManager.ts +36 -0
- package/src/js/context/providers/PointsPath/ExplicitKPath2PIBAFormDataManager.ts +26 -0
- package/src/js/context/providers/PointsPath/ExplicitKPathFormDataManager.ts +24 -0
- package/src/js/context/providers/PointsPath/IPathFormDataManager.ts +22 -0
- package/src/js/context/providers/PointsPath/KPathFormDataManager.ts +22 -0
- package/src/js/context/providers/PointsPath/PointsPathFormDataProvider.ts +192 -0
- package/src/js/context/providers/PointsPath/QPathFormDataManager.ts +22 -0
- package/src/js/context/providers/base/ContextProvider.ts +150 -0
- package/src/js/context/providers/base/JSONSchemaDataProvider.ts +31 -0
- package/src/js/context/providers/base/JSONSchemaFormDataProvider.ts +38 -0
- package/src/js/context/providers/by_application/espresso/QENEBInputDataManager.ts +107 -0
- package/src/js/context/providers/by_application/espresso/QEPWXInputDataManager.ts +178 -0
- package/src/js/context/providers/by_application/nwchem/NWChemInputDataManager.ts +93 -0
- package/src/js/context/providers/by_application/vasp/VASPInputDataManager.ts +89 -0
- package/src/js/context/providers/by_application/vasp/VASPNEBInputDataManager.ts +92 -0
- package/src/js/context/providers/index.ts +155 -0
- package/src/js/context/providers/settings.ts +13 -0
- package/src/js/convergence/ConvergenceParameter.ts +37 -0
- package/src/js/convergence/NonUniformKGridConvergence.ts +38 -0
- package/src/js/convergence/UniformKGridConvergence.ts +26 -0
- package/src/js/convergence/factory.ts +18 -0
- package/src/js/{enums.js → enums.ts} +27 -22
- package/src/js/generated/AssertionUnitSchemaMixin.ts +34 -0
- package/src/js/generated/AssignmentUnitSchemaMixin.ts +40 -0
- package/src/js/generated/BaseUnitSchemaMixin.ts +64 -0
- package/src/js/generated/ConditionUnitSchemaMixin.ts +58 -0
- package/src/js/generated/ExecutionUnitInputSchemaMixin.ts +36 -0
- package/src/js/generated/ExecutionUnitSchemaMixin.ts +52 -0
- package/src/js/generated/IOUnitSchemaMixin.ts +40 -0
- package/src/js/generated/MapUnitSchemaMixin.ts +34 -0
- package/src/js/generated/ReduceUnitSchemaMixin.ts +34 -0
- package/src/js/generated/StatusSchemaMixin.ts +28 -0
- package/src/js/generated/SubworkflowSchemaMixin.ts +58 -0
- package/src/js/generated/SubworkflowUnitSchemaMixin.ts +22 -0
- package/src/js/generated/WorkflowSchemaMixin.ts +58 -0
- package/src/js/index.ts +44 -0
- package/src/js/units/AssertionUnit.ts +49 -0
- package/src/js/units/AssignmentUnit.ts +49 -0
- package/src/js/units/BaseUnit.ts +117 -0
- package/src/js/units/ConditionUnit.ts +52 -0
- package/src/js/units/ExecutionUnit.ts +274 -0
- package/src/js/units/ExecutionUnitInput.ts +71 -0
- package/src/js/units/IOUnit.ts +43 -0
- package/src/js/units/MapUnit.ts +59 -0
- package/src/js/units/ReduceUnit.ts +46 -0
- package/src/js/units/SubworkflowUnit.ts +44 -0
- package/src/js/units/factory.ts +131 -0
- package/src/js/units/index.ts +27 -0
- package/src/js/units/mixins/RuntimeItemsUILogicMixin.ts +81 -0
- package/src/js/utils/baseUnits.ts +11 -0
- package/src/js/utils/index.ts +3 -0
- package/src/js/utils/units.ts +23 -0
- package/src/js/utils/workflow.ts +69 -0
- package/src/js/workflows/{default.js → default.ts} +8 -1
- package/build_workflows.js +0 -65
- package/dist/js/context/context.js +0 -49
- package/dist/js/context/mixins/JobContextMixin.js +0 -39
- package/dist/js/context/mixins/MethodDataContextMixin.js +0 -48
- package/dist/js/context/mixins/WorkflowContextMixin.js +0 -28
- package/dist/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -84
- package/dist/js/context/providers/CollinearMagnetizationContextProvider.js +0 -96
- package/dist/js/context/providers/HubbardContextProviderLegacy.js +0 -68
- package/dist/js/context/providers/HubbardJContextProvider.js +0 -67
- package/dist/js/context/providers/HubbardUContextProvider.js +0 -70
- package/dist/js/context/providers/HubbardVContextProvider.js +0 -92
- package/dist/js/context/providers/IonDynamicsContextProvider.js +0 -58
- package/dist/js/context/providers/MLSettingsContextProvider.js +0 -51
- package/dist/js/context/providers/MLTrainTestSplitContextProvider.js +0 -47
- package/dist/js/context/providers/NEBFormDataProvider.js +0 -42
- package/dist/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -187
- package/dist/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -67
- package/dist/js/context/providers/PointsGridFormDataProvider.js +0 -263
- package/dist/js/context/providers/PointsPathFormDataProvider.js +0 -147
- package/dist/js/context/providers/by_application/ExecutableContextProvider.js +0 -25
- package/dist/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -61
- package/dist/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -150
- package/dist/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -85
- package/dist/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -65
- package/dist/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -57
- package/dist/js/context/providers.js +0 -199
- package/dist/js/patch.js +0 -19
- package/dist/js/subworkflows/convergence/non_uniform_kgrid.js +0 -31
- package/dist/js/subworkflows/convergence/parameter.js +0 -70
- package/dist/js/subworkflows/convergence/uniform_kgrid.js +0 -26
- package/dist/js/subworkflows/convergence.js +0 -189
- package/dist/js/subworkflows/create.js +0 -293
- package/dist/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -34
- package/dist/js/subworkflows/dynamic/index.js +0 -19
- package/dist/js/subworkflows/dynamic/surfaceEnergy.js +0 -67
- package/dist/js/subworkflows/index.js +0 -19
- package/dist/js/units/assertion.js +0 -37
- package/dist/js/units/assignment.js +0 -42
- package/dist/js/units/base.js +0 -91
- package/dist/js/units/builders/AssertionUnitConfigBuilder.js +0 -34
- package/dist/js/units/builders/AssignmentUnitConfigBuilder.js +0 -41
- package/dist/js/units/builders/ExecutionUnitConfigBuilder.js +0 -67
- package/dist/js/units/builders/IOUnitConfigBuilder.js +0 -54
- package/dist/js/units/builders/UnitConfigBuilder.js +0 -85
- package/dist/js/units/builders/index.js +0 -18
- package/dist/js/units/condition.js +0 -52
- package/dist/js/units/execution.js +0 -225
- package/dist/js/units/io.js +0 -148
- package/dist/js/units/map.js +0 -38
- package/dist/js/units/processing.js +0 -41
- package/dist/js/units/reduce.js +0 -24
- package/dist/js/units/subworkflow.js +0 -23
- package/dist/js/workflows/create.js +0 -318
- package/dist/js/workflows/index.js +0 -113
- package/dist/js/workflows/relaxation.js +0 -38
- package/src/js/context/context.js +0 -47
- package/src/js/context/mixins/ApplicationContextMixin.js +0 -19
- package/src/js/context/mixins/JobContextMixin.js +0 -36
- package/src/js/context/mixins/MaterialContextMixin.js +0 -41
- package/src/js/context/mixins/MaterialsContextMixin.js +0 -18
- package/src/js/context/mixins/MaterialsSetContextMixin.js +0 -24
- package/src/js/context/mixins/MethodDataContextMixin.js +0 -48
- package/src/js/context/mixins/WorkflowContextMixin.js +0 -25
- package/src/js/context/providers/BoundaryConditionsFormDataProvider.js +0 -72
- package/src/js/context/providers/CollinearMagnetizationContextProvider.js +0 -105
- package/src/js/context/providers/HubbardContextProviderLegacy.js +0 -67
- package/src/js/context/providers/HubbardJContextProvider.js +0 -65
- package/src/js/context/providers/HubbardUContextProvider.js +0 -95
- package/src/js/context/providers/HubbardVContextProvider.js +0 -96
- package/src/js/context/providers/IonDynamicsContextProvider.js +0 -44
- package/src/js/context/providers/MLSettingsContextProvider.js +0 -45
- package/src/js/context/providers/MLTrainTestSplitContextProvider.js +0 -43
- package/src/js/context/providers/NEBFormDataProvider.js +0 -33
- package/src/js/context/providers/NonCollinearMagnetizationContextProvider.js +0 -179
- package/src/js/context/providers/PlanewaveCutoffsContextProvider.js +0 -65
- package/src/js/context/providers/PointsGridFormDataProvider.js +0 -271
- package/src/js/context/providers/PointsPathFormDataProvider.js +0 -163
- package/src/js/context/providers/by_application/ExecutableContextProvider.js +0 -17
- package/src/js/context/providers/by_application/espresso/QENEBContextProvider.js +0 -58
- package/src/js/context/providers/by_application/espresso/QEPWXContextProvider.js +0 -168
- package/src/js/context/providers/by_application/nwchem/NWChemTotalEnergyContextProvider.js +0 -89
- package/src/js/context/providers/by_application/vasp/VASPContextProvider.js +0 -58
- package/src/js/context/providers/by_application/vasp/VASPNEBContextProvider.js +0 -48
- package/src/js/context/providers/settings.js +0 -38
- package/src/js/context/providers.js +0 -140
- package/src/js/index.js +0 -57
- package/src/js/patch.js +0 -12
- package/src/js/subworkflows/convergence/enums.js +0 -12
- package/src/js/subworkflows/convergence/factory.js +0 -15
- package/src/js/subworkflows/convergence/non_uniform_kgrid.js +0 -28
- package/src/js/subworkflows/convergence/parameter.js +0 -58
- package/src/js/subworkflows/convergence/uniform_kgrid.js +0 -22
- package/src/js/subworkflows/convergence.js +0 -196
- package/src/js/subworkflows/create.js +0 -220
- package/src/js/subworkflows/dynamic/espresso/getQpointIrrep.js +0 -35
- package/src/js/subworkflows/dynamic/index.js +0 -8
- package/src/js/subworkflows/dynamic/surfaceEnergy.js +0 -124
- package/src/js/subworkflows/index.js +0 -2
- package/src/js/subworkflows/subworkflow.js +0 -345
- package/src/js/units/assertion.js +0 -29
- package/src/js/units/assignment.js +0 -34
- package/src/js/units/base.js +0 -97
- package/src/js/units/builders/AssertionUnitConfigBuilder.js +0 -28
- package/src/js/units/builders/AssignmentUnitConfigBuilder.js +0 -36
- package/src/js/units/builders/ExecutionUnitConfigBuilder.js +0 -59
- package/src/js/units/builders/IOUnitConfigBuilder.js +0 -53
- package/src/js/units/builders/UnitConfigBuilder.js +0 -92
- package/src/js/units/builders/index.js +0 -15
- package/src/js/units/condition.js +0 -47
- package/src/js/units/execution.js +0 -267
- package/src/js/units/factory.js +0 -53
- package/src/js/units/index.js +0 -25
- package/src/js/units/io.js +0 -163
- package/src/js/units/map.js +0 -33
- package/src/js/units/processing.js +0 -39
- package/src/js/units/reduce.js +0 -17
- package/src/js/units/subworkflow.js +0 -15
- package/src/js/utils.js +0 -73
- package/src/js/workflows/create.js +0 -227
- package/src/js/workflows/index.js +0 -98
- package/src/js/workflows/relaxation.js +0 -42
- 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;
|