@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.
- 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/utils.js +2 -7
- 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
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import context from "./context";
|
|
2
|
-
|
|
3
|
-
const {
|
|
4
|
-
BoundaryConditionsFormDataProvider,
|
|
5
|
-
MLSettingsContextProvider,
|
|
6
|
-
MLTrainTestSplitContextProvider,
|
|
7
|
-
NEBFormDataProvider,
|
|
8
|
-
PlanewaveCutoffsContextProvider,
|
|
9
|
-
PointsGridFormDataProvider,
|
|
10
|
-
PointsPathFormDataProvider,
|
|
11
|
-
ExplicitPointsPathFormDataProvider,
|
|
12
|
-
ExplicitPointsPath2PIBAFormDataProvider,
|
|
13
|
-
HubbardJContextProvider,
|
|
14
|
-
HubbardUContextProvider,
|
|
15
|
-
HubbardVContextProvider,
|
|
16
|
-
HubbardContextProviderLegacy,
|
|
17
|
-
IonDynamicsContextProvider,
|
|
18
|
-
CollinearMagnetizationContextProvider,
|
|
19
|
-
NonCollinearMagnetizationContextProvider,
|
|
20
|
-
VASPContextProvider,
|
|
21
|
-
VASPNEBContextProvider,
|
|
22
|
-
QEPWXContextProvider,
|
|
23
|
-
QENEBContextProvider,
|
|
24
|
-
NWChemTotalEnergyContextProvider,
|
|
25
|
-
} = context;
|
|
26
|
-
|
|
27
|
-
const CONTEXT_DOMAINS = {
|
|
28
|
-
important: "important", // used to generate `ImportantSettings` form
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const _makeImportant = (config) => Object.assign(config, { domain: CONTEXT_DOMAINS.important });
|
|
32
|
-
|
|
33
|
-
/** ********************************
|
|
34
|
-
* Method-based context providers *
|
|
35
|
-
********************************* */
|
|
36
|
-
|
|
37
|
-
export const wodeProviders = {
|
|
38
|
-
// NOTE: subworkflow-level data manager. Will override the unit-level data with the same name via subworkflow context.
|
|
39
|
-
PlanewaveCutoffDataManager: {
|
|
40
|
-
providerCls: PlanewaveCutoffsContextProvider,
|
|
41
|
-
config: _makeImportant({ name: "cutoffs", entityName: "subworkflow" }),
|
|
42
|
-
},
|
|
43
|
-
KGridFormDataManager: {
|
|
44
|
-
providerCls: PointsGridFormDataProvider,
|
|
45
|
-
config: _makeImportant({ name: "kgrid" }),
|
|
46
|
-
},
|
|
47
|
-
QGridFormDataManager: {
|
|
48
|
-
providerCls: PointsGridFormDataProvider,
|
|
49
|
-
config: _makeImportant({ name: "qgrid", divisor: 5 }), // Using less points for Qgrid by default
|
|
50
|
-
},
|
|
51
|
-
IGridFormDataManager: {
|
|
52
|
-
providerCls: PointsGridFormDataProvider,
|
|
53
|
-
config: _makeImportant({ name: "igrid", divisor: 0.2 }), // Using more points for interpolated grid by default
|
|
54
|
-
},
|
|
55
|
-
QPathFormDataManager: {
|
|
56
|
-
providerCls: PointsPathFormDataProvider,
|
|
57
|
-
config: _makeImportant({ name: "qpath" }),
|
|
58
|
-
},
|
|
59
|
-
IPathFormDataManager: {
|
|
60
|
-
providerCls: PointsPathFormDataProvider,
|
|
61
|
-
config: _makeImportant({ name: "ipath" }),
|
|
62
|
-
},
|
|
63
|
-
KPathFormDataManager: {
|
|
64
|
-
providerCls: PointsPathFormDataProvider,
|
|
65
|
-
config: _makeImportant({ name: "kpath" }),
|
|
66
|
-
},
|
|
67
|
-
ExplicitKPathFormDataManager: {
|
|
68
|
-
providerCls: ExplicitPointsPathFormDataProvider,
|
|
69
|
-
config: _makeImportant({ name: "explicitKPath" }),
|
|
70
|
-
},
|
|
71
|
-
ExplicitKPath2PIBAFormDataManager: {
|
|
72
|
-
providerCls: ExplicitPointsPath2PIBAFormDataProvider,
|
|
73
|
-
config: _makeImportant({ name: "explicitKPath2PIBA" }),
|
|
74
|
-
},
|
|
75
|
-
HubbardJContextManager: {
|
|
76
|
-
providerCls: HubbardJContextProvider,
|
|
77
|
-
config: _makeImportant({ name: "hubbard_j" }),
|
|
78
|
-
},
|
|
79
|
-
HubbardUContextManager: {
|
|
80
|
-
providerCls: HubbardUContextProvider,
|
|
81
|
-
config: _makeImportant({ name: "hubbard_u" }),
|
|
82
|
-
},
|
|
83
|
-
HubbardVContextManager: {
|
|
84
|
-
providerCls: HubbardVContextProvider,
|
|
85
|
-
config: _makeImportant({ name: "hubbard_v" }),
|
|
86
|
-
},
|
|
87
|
-
HubbardContextManagerLegacy: {
|
|
88
|
-
providerCls: HubbardContextProviderLegacy,
|
|
89
|
-
config: _makeImportant({ name: "hubbard_legacy" }),
|
|
90
|
-
},
|
|
91
|
-
// NEBFormDataManager context is stored under the same key (`input`) as InputDataManager contexts.
|
|
92
|
-
NEBFormDataManager: {
|
|
93
|
-
providerCls: NEBFormDataProvider,
|
|
94
|
-
config: _makeImportant({ name: "neb" }),
|
|
95
|
-
},
|
|
96
|
-
BoundaryConditionsFormDataManager: {
|
|
97
|
-
providerCls: BoundaryConditionsFormDataProvider,
|
|
98
|
-
config: _makeImportant({ name: "boundaryConditions" }),
|
|
99
|
-
},
|
|
100
|
-
MLSettingsDataManager: {
|
|
101
|
-
providerCls: MLSettingsContextProvider,
|
|
102
|
-
config: _makeImportant({ name: "mlSettings" }),
|
|
103
|
-
},
|
|
104
|
-
MLTrainTestSplitDataManager: {
|
|
105
|
-
providerCls: MLTrainTestSplitContextProvider,
|
|
106
|
-
config: _makeImportant({ name: "mlTrainTestSplit" }),
|
|
107
|
-
},
|
|
108
|
-
IonDynamicsContextProvider: {
|
|
109
|
-
providerCls: IonDynamicsContextProvider,
|
|
110
|
-
config: _makeImportant({ name: "dynamics" }),
|
|
111
|
-
},
|
|
112
|
-
CollinearMagnetizationDataManager: {
|
|
113
|
-
providerCls: CollinearMagnetizationContextProvider,
|
|
114
|
-
config: _makeImportant({ name: "collinearMagnetization" }),
|
|
115
|
-
},
|
|
116
|
-
NonCollinearMagnetizationDataManager: {
|
|
117
|
-
providerCls: NonCollinearMagnetizationContextProvider,
|
|
118
|
-
config: _makeImportant({ name: "nonCollinearMagnetization" }),
|
|
119
|
-
},
|
|
120
|
-
QEPWXInputDataManager: {
|
|
121
|
-
providerCls: QEPWXContextProvider,
|
|
122
|
-
config: { name: "input" },
|
|
123
|
-
},
|
|
124
|
-
QENEBInputDataManager: {
|
|
125
|
-
providerCls: QENEBContextProvider,
|
|
126
|
-
config: { name: "input" },
|
|
127
|
-
},
|
|
128
|
-
VASPInputDataManager: {
|
|
129
|
-
providerCls: VASPContextProvider,
|
|
130
|
-
config: { name: "input" },
|
|
131
|
-
},
|
|
132
|
-
VASPNEBInputDataManager: {
|
|
133
|
-
providerCls: VASPNEBContextProvider,
|
|
134
|
-
config: { name: "input" },
|
|
135
|
-
},
|
|
136
|
-
NWChemInputDataManager: {
|
|
137
|
-
providerCls: NWChemTotalEnergyContextProvider,
|
|
138
|
-
config: { name: "input" },
|
|
139
|
-
},
|
|
140
|
-
};
|
package/src/js/index.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { wodeProviders } from "./context/providers";
|
|
2
|
-
import { PointsPathFormDataProvider } from "./context/providers/PointsPathFormDataProvider";
|
|
3
|
-
import { globalSettings } from "./context/providers/settings";
|
|
4
|
-
import {
|
|
5
|
-
TAB_NAVIGATION_CONFIG,
|
|
6
|
-
UNIT_NAME_INVALID_CHARS,
|
|
7
|
-
UNIT_STATUSES,
|
|
8
|
-
UNIT_TYPES,
|
|
9
|
-
WORKFLOW_STATUSES,
|
|
10
|
-
} from "./enums";
|
|
11
|
-
import { createSubworkflowByName, Subworkflow } from "./subworkflows";
|
|
12
|
-
import {
|
|
13
|
-
AssertionUnit,
|
|
14
|
-
AssignmentUnit,
|
|
15
|
-
BaseUnit,
|
|
16
|
-
ConditionUnit,
|
|
17
|
-
ExecutionUnit,
|
|
18
|
-
IOUnit,
|
|
19
|
-
MapUnit,
|
|
20
|
-
ProcessingUnit,
|
|
21
|
-
ReduceUnit,
|
|
22
|
-
SubworkflowUnit,
|
|
23
|
-
} from "./units";
|
|
24
|
-
import { builders } from "./units/builders";
|
|
25
|
-
import { UnitFactory } from "./units/factory";
|
|
26
|
-
import { defaultMapConfig } from "./units/map";
|
|
27
|
-
import { createWorkflow, createWorkflowConfigs, createWorkflows, Workflow } from "./workflows";
|
|
28
|
-
|
|
29
|
-
export {
|
|
30
|
-
Subworkflow,
|
|
31
|
-
Workflow,
|
|
32
|
-
createWorkflow,
|
|
33
|
-
createWorkflows,
|
|
34
|
-
createWorkflowConfigs,
|
|
35
|
-
createSubworkflowByName,
|
|
36
|
-
UnitFactory,
|
|
37
|
-
builders,
|
|
38
|
-
UNIT_TYPES,
|
|
39
|
-
UNIT_STATUSES,
|
|
40
|
-
TAB_NAVIGATION_CONFIG,
|
|
41
|
-
UNIT_NAME_INVALID_CHARS,
|
|
42
|
-
WORKFLOW_STATUSES,
|
|
43
|
-
BaseUnit,
|
|
44
|
-
ExecutionUnit,
|
|
45
|
-
AssertionUnit,
|
|
46
|
-
AssignmentUnit,
|
|
47
|
-
ConditionUnit,
|
|
48
|
-
IOUnit,
|
|
49
|
-
MapUnit,
|
|
50
|
-
ProcessingUnit,
|
|
51
|
-
ReduceUnit,
|
|
52
|
-
SubworkflowUnit,
|
|
53
|
-
defaultMapConfig,
|
|
54
|
-
wodeProviders,
|
|
55
|
-
PointsPathFormDataProvider,
|
|
56
|
-
globalSettings,
|
|
57
|
-
};
|
package/src/js/patch.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Template } from "@mat3ra/ade";
|
|
2
|
-
|
|
3
|
-
import { wodeProviders } from "./context/providers";
|
|
4
|
-
|
|
5
|
-
// We patch the static providerRegistry here so that
|
|
6
|
-
// Template has all context providers available
|
|
7
|
-
// to it when creating workflows. It is then re-exported
|
|
8
|
-
// from WoDe for use downstream.
|
|
9
|
-
|
|
10
|
-
Template.setContextProvidersConfig(wodeProviders);
|
|
11
|
-
|
|
12
|
-
export { Template };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import schemas from "@mat3ra/esse/dist/js/schemas.json";
|
|
2
|
-
|
|
3
|
-
const convergenceEnumOptionsSchema = schemas.find(
|
|
4
|
-
(schema) => schema.$id === "workflow/subworkflow/convergence/enum-options",
|
|
5
|
-
);
|
|
6
|
-
const values = convergenceEnumOptionsSchema?.definitions?.ConvergenceParameterNameEnum?.enum || [];
|
|
7
|
-
|
|
8
|
-
export const ConvergenceParameterName = Object.freeze({
|
|
9
|
-
N_k: values[0] || "N_k",
|
|
10
|
-
N_k_nonuniform: values[1] || "N_k_nonuniform",
|
|
11
|
-
N_k_nonuniform_2D: values[2] || "N_k_nonuniform_2D",
|
|
12
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ConvergenceParameterName } from "./enums";
|
|
2
|
-
import { NonUniformKGridConvergence } from "./non_uniform_kgrid";
|
|
3
|
-
import { ConvergenceParameter } from "./parameter";
|
|
4
|
-
import { UniformKGridConvergence } from "./uniform_kgrid";
|
|
5
|
-
|
|
6
|
-
export function createConvergenceParameter({ name, initialValue, increment }) {
|
|
7
|
-
switch (name) {
|
|
8
|
-
case ConvergenceParameterName.N_k:
|
|
9
|
-
return new UniformKGridConvergence({ name, initialValue, increment });
|
|
10
|
-
case ConvergenceParameterName.N_k_nonuniform:
|
|
11
|
-
return new NonUniformKGridConvergence({ name, initialValue, increment });
|
|
12
|
-
default:
|
|
13
|
-
return new ConvergenceParameter({ name, initialValue, increment });
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ConvergenceParameter } from "./parameter";
|
|
2
|
-
|
|
3
|
-
export class NonUniformKGridConvergence extends ConvergenceParameter {
|
|
4
|
-
get increment() {
|
|
5
|
-
return `[${this.initialValue}[i] + math.floor(iteration * ${this._increment} * float(context['kgrid']['reciprocalVectorRatios'][i])) for i in range(3)]`;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
get unitContext() {
|
|
9
|
-
return {
|
|
10
|
-
kgrid: {
|
|
11
|
-
dimensions: [`{{${this.name}[0]}}`, `{{${this.name}[1]}}`, `{{${this.name}[2]}}`],
|
|
12
|
-
shifts: [0, 0, 0],
|
|
13
|
-
},
|
|
14
|
-
isKgridEdited: true,
|
|
15
|
-
isUsingJinjaVariables: true,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// eslint-disable-next-line class-methods-use-this
|
|
20
|
-
useVariablesFromUnitContext(flowchartId) {
|
|
21
|
-
return [
|
|
22
|
-
{
|
|
23
|
-
scope: flowchartId,
|
|
24
|
-
name: "context",
|
|
25
|
-
},
|
|
26
|
-
];
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/* eslint-disable class-methods-use-this */
|
|
2
|
-
import lodash from "lodash";
|
|
3
|
-
|
|
4
|
-
export class ConvergenceParameter {
|
|
5
|
-
constructor({ name, initialValue, increment }) {
|
|
6
|
-
this.name = name;
|
|
7
|
-
this._initialValue = initialValue;
|
|
8
|
-
this._increment = increment;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Getter for initial value as string.
|
|
13
|
-
* Note: this will be used in assignment unit.
|
|
14
|
-
* @return {string}
|
|
15
|
-
*/
|
|
16
|
-
get initialValue() {
|
|
17
|
-
if (!lodash.isString(this._initialValue)) {
|
|
18
|
-
return JSON.stringify(this._initialValue);
|
|
19
|
-
}
|
|
20
|
-
return this._initialValue;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @summary Defines how to increment the parameter.
|
|
25
|
-
* @return {string} - increment operation used in assignment unit
|
|
26
|
-
*/
|
|
27
|
-
get increment() {
|
|
28
|
-
return ""; // overwrite in derived class
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Defines content for updating the unit context
|
|
33
|
-
* @return {Object}
|
|
34
|
-
*/
|
|
35
|
-
get unitContext() {
|
|
36
|
-
return {};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Defines value once convergence is reached (for 'exit' unit).
|
|
41
|
-
* Note: This is used in assignment unit and most often the variable will be assigned to itself.
|
|
42
|
-
* @return {string}
|
|
43
|
-
*/
|
|
44
|
-
get finalValue() {
|
|
45
|
-
return `${this.name}`;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Create list of variables to fetch from a unit.
|
|
50
|
-
* Note: this is used for the `input` field for an assignment unit.
|
|
51
|
-
* @param {string} flowchartId - flowchartId of unit containing context variables
|
|
52
|
-
* @return {Object|{scope, name}}
|
|
53
|
-
*/
|
|
54
|
-
// eslint-disable-next-line class-methods-use-this, no-unused-vars
|
|
55
|
-
useVariablesFromUnitContext(flowchartId) {
|
|
56
|
-
return [];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ConvergenceParameter } from "./parameter";
|
|
2
|
-
|
|
3
|
-
export class UniformKGridConvergence extends ConvergenceParameter {
|
|
4
|
-
get increment() {
|
|
5
|
-
return `${this.name} + ${this._increment}`;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
get unitContext() {
|
|
9
|
-
return {
|
|
10
|
-
kgrid: {
|
|
11
|
-
dimensions: [`{{${this.name}}}`, `{{${this.name}}}`, `{{${this.name}}}`],
|
|
12
|
-
shifts: [0, 0, 0],
|
|
13
|
-
},
|
|
14
|
-
isKgridEdited: true,
|
|
15
|
-
isUsingJinjaVariables: true,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
get finalValue() {
|
|
20
|
-
return `${this.name} + 0`;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import merge from "lodash/merge";
|
|
2
|
-
|
|
3
|
-
import { UNIT_TAGS, UNIT_TYPES } from "../enums";
|
|
4
|
-
import { createConvergenceParameter } from "./convergence/factory";
|
|
5
|
-
|
|
6
|
-
export const ConvergenceMixin = (superclass) =>
|
|
7
|
-
class extends superclass {
|
|
8
|
-
get convergenceParam() {
|
|
9
|
-
return this.findUnitWithTag("hasConvergenceParam")?.operand || undefined;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
get convergenceResult() {
|
|
13
|
-
return this.findUnitWithTag("hasConvergenceResult")?.operand || undefined;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
convergenceSeries(scopeTrack) {
|
|
17
|
-
if (!this.hasConvergence || !scopeTrack?.length) return [];
|
|
18
|
-
let lastResult;
|
|
19
|
-
const series = scopeTrack
|
|
20
|
-
.map((scopeItem, i) => ({
|
|
21
|
-
x: i,
|
|
22
|
-
param: scopeItem.scope?.global[this.convergenceParam],
|
|
23
|
-
y: scopeItem.scope?.global[this.convergenceResult],
|
|
24
|
-
}))
|
|
25
|
-
.filter(({ y }) => {
|
|
26
|
-
const isNewResult = y !== undefined && y !== lastResult;
|
|
27
|
-
lastResult = y;
|
|
28
|
-
return isNewResult;
|
|
29
|
-
});
|
|
30
|
-
return series.map((item, i) => {
|
|
31
|
-
return {
|
|
32
|
-
x: i + 1,
|
|
33
|
-
param: item.param,
|
|
34
|
-
y: item.y,
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
addConvergence({
|
|
40
|
-
parameter,
|
|
41
|
-
parameterInitial,
|
|
42
|
-
parameterIncrement,
|
|
43
|
-
result,
|
|
44
|
-
resultInitial,
|
|
45
|
-
condition,
|
|
46
|
-
operator,
|
|
47
|
-
tolerance,
|
|
48
|
-
maxOccurrences,
|
|
49
|
-
}) {
|
|
50
|
-
// RF: added TODO comments for future improvements
|
|
51
|
-
|
|
52
|
-
const { units } = this;
|
|
53
|
-
// Find unit to converge: should contain passed result in its results list
|
|
54
|
-
// TODO: make user to select unit for convergence explicitly
|
|
55
|
-
const unitForConvergence = units.find((x) =>
|
|
56
|
-
x.resultNames.find((name) => name === result),
|
|
57
|
-
);
|
|
58
|
-
|
|
59
|
-
if (!unitForConvergence) {
|
|
60
|
-
// eslint-disable-next-line no-undef
|
|
61
|
-
sAlert.error(
|
|
62
|
-
`Subworkflow does not contain unit with '${result}' as extracted property.`,
|
|
63
|
-
);
|
|
64
|
-
throw new Error("There is no result to converge");
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// initialize parameter
|
|
68
|
-
const param = createConvergenceParameter({
|
|
69
|
-
name: parameter,
|
|
70
|
-
initialValue: parameterInitial,
|
|
71
|
-
increment: parameterIncrement,
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
// Replace kgrid to be ready for convergence
|
|
75
|
-
// TODO: kgrid should be abstracted and selected by user
|
|
76
|
-
const providers = unitForConvergence.importantSettingsProviders;
|
|
77
|
-
const gridProvider = providers.find((p) => p.name === "kgrid" || p.name === "qgrid");
|
|
78
|
-
let mergedContext = param.unitContext;
|
|
79
|
-
if (gridProvider) {
|
|
80
|
-
mergedContext = merge(gridProvider.yieldData(), param.unitContext);
|
|
81
|
-
gridProvider.setData(mergedContext);
|
|
82
|
-
gridProvider.setIsEdited(true);
|
|
83
|
-
}
|
|
84
|
-
unitForConvergence.updateContext(mergedContext);
|
|
85
|
-
|
|
86
|
-
const prevResult = "prev_result";
|
|
87
|
-
const iteration = "iteration";
|
|
88
|
-
|
|
89
|
-
// Assignment with result's initial value
|
|
90
|
-
const prevResultInit = this._UnitFactory.create({
|
|
91
|
-
name: "init result",
|
|
92
|
-
type: UNIT_TYPES.assignment,
|
|
93
|
-
head: true,
|
|
94
|
-
operand: prevResult,
|
|
95
|
-
value: resultInitial,
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
// Assignment with initial value of convergence parameter
|
|
99
|
-
const paramInit = this._UnitFactory.create({
|
|
100
|
-
name: "init parameter",
|
|
101
|
-
type: UNIT_TYPES.assignment,
|
|
102
|
-
operand: param.name,
|
|
103
|
-
value: param.initialValue,
|
|
104
|
-
tags: [UNIT_TAGS.hasConvergenceParam],
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
// Assignment with initial value of iteration counter
|
|
108
|
-
const iterInit = this._UnitFactory.create({
|
|
109
|
-
name: "init counter",
|
|
110
|
-
type: UNIT_TYPES.assignment,
|
|
111
|
-
operand: iteration,
|
|
112
|
-
value: 1,
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
// Assignment for storing iteration result: extracts 'result' from convergence unit scope
|
|
116
|
-
const storePrevResult = this._UnitFactory.create({
|
|
117
|
-
name: "store result",
|
|
118
|
-
type: UNIT_TYPES.assignment,
|
|
119
|
-
input: [
|
|
120
|
-
{
|
|
121
|
-
scope: unitForConvergence.flowchartId,
|
|
122
|
-
name: result,
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
operand: prevResult,
|
|
126
|
-
value: result,
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
// Assignment for convergence param increase
|
|
130
|
-
const nextStep = this._UnitFactory.create({
|
|
131
|
-
name: "update parameter",
|
|
132
|
-
type: UNIT_TYPES.assignment,
|
|
133
|
-
input: param.useVariablesFromUnitContext(unitForConvergence.flowchartId),
|
|
134
|
-
operand: param.name,
|
|
135
|
-
value: param.increment,
|
|
136
|
-
next: unitForConvergence.flowchartId,
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
// Final step of convergence
|
|
140
|
-
const exit = this._UnitFactory.create({
|
|
141
|
-
type: UNIT_TYPES.assignment,
|
|
142
|
-
name: "exit",
|
|
143
|
-
input: [],
|
|
144
|
-
operand: param.name,
|
|
145
|
-
value: param.finalValue,
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
// Final step of convergence
|
|
149
|
-
const storeResult = this._UnitFactory.create({
|
|
150
|
-
name: "update result",
|
|
151
|
-
type: UNIT_TYPES.assignment,
|
|
152
|
-
input: [
|
|
153
|
-
{
|
|
154
|
-
scope: unitForConvergence.flowchartId,
|
|
155
|
-
name: result,
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
operand: result,
|
|
159
|
-
value: result,
|
|
160
|
-
tags: [UNIT_TAGS.hasConvergenceResult],
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
// Assign next iteration value
|
|
164
|
-
const nextIter = this._UnitFactory.create({
|
|
165
|
-
name: "update counter",
|
|
166
|
-
type: UNIT_TYPES.assignment,
|
|
167
|
-
input: [],
|
|
168
|
-
operand: iteration,
|
|
169
|
-
value: `${iteration} + 1`,
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
// Convergence condition unit
|
|
173
|
-
const conditionUnit = this._UnitFactory.create({
|
|
174
|
-
name: "check convergence",
|
|
175
|
-
type: UNIT_TYPES.condition,
|
|
176
|
-
statement: `${condition} ${operator} ${tolerance}`,
|
|
177
|
-
then: exit.flowchartId,
|
|
178
|
-
else: storePrevResult.flowchartId,
|
|
179
|
-
maxOccurrences,
|
|
180
|
-
next: storePrevResult.flowchartId,
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
this.addUnit(paramInit, 0);
|
|
184
|
-
this.addUnit(prevResultInit, 1);
|
|
185
|
-
this.addUnit(iterInit, 2);
|
|
186
|
-
this.addUnit(storeResult);
|
|
187
|
-
this.addUnit(conditionUnit);
|
|
188
|
-
this.addUnit(storePrevResult);
|
|
189
|
-
this.addUnit(nextIter);
|
|
190
|
-
this.addUnit(nextStep);
|
|
191
|
-
this.addUnit(exit);
|
|
192
|
-
|
|
193
|
-
// `addUnit` adjusts the `next` field, hence the below.
|
|
194
|
-
nextStep.next = unitForConvergence.flowchartId;
|
|
195
|
-
}
|
|
196
|
-
};
|