@mat3ra/mode 2025.10.2-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/dist/tree.js ADDED
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MODEL_TREE = exports.MODEL_NAMES = exports.METHODS = void 0;
7
+ exports.filterMethodsByModel = filterMethodsByModel;
8
+ exports.treeSlugToNamedObject = exports.getTreeByApplicationNameAndVersion = exports.getPseudopotentialTypesFromTree = exports.getDefaultModelTypeForApplication = exports.getDFTFunctionalsFromTree = exports.getDFTFunctionalsByApproximation = void 0;
9
+ var _utils = require("@mat3ra/code/dist/js/utils");
10
+ var _standata = require("@mat3ra/standata");
11
+ var _lodash = _interopRequireDefault(require("lodash"));
12
+ var _underscore = _interopRequireDefault(require("underscore"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ // TODO: migrate to use manifest instead
15
+
16
+ const METHODS = exports.METHODS = {
17
+ pseudopotential: "pseudopotential",
18
+ localorbital: "localorbital",
19
+ unknown: "unknown"
20
+ };
21
+ const methods = {
22
+ [METHODS.pseudopotential]: ["paw", "nc", "nc-fr", "us"],
23
+ // TODO: Add additional basis set options, once user choice of specific (i.e 3-21G vs cc-pVDZ) is implemented.
24
+ [METHODS.localorbital]: ["pople"],
25
+ [METHODS.unknown]: ["unknown"]
26
+ };
27
+ const getPseudopotentialTypesFromTree = () => methods[METHODS.pseudopotential];
28
+
29
+ // DFT-specific
30
+ exports.getPseudopotentialTypesFromTree = getPseudopotentialTypesFromTree;
31
+ const DFTModelRefiners = ["hse", "g0w0"];
32
+ const DFTModelModifiers = ["soc", "magn"];
33
+ const DFTModelTree = {
34
+ gga: {
35
+ refiners: DFTModelRefiners,
36
+ modifiers: DFTModelModifiers,
37
+ methods,
38
+ functionals: ["pbe", "pbesol", "pw91", "other"]
39
+ },
40
+ lda: {
41
+ refiners: DFTModelRefiners,
42
+ modifiers: DFTModelModifiers,
43
+ methods,
44
+ functionals: ["pz", "pw", "vwn", "other"]
45
+ },
46
+ hybrid: {
47
+ methods,
48
+ functionals: ["b3lyp", "hse06"]
49
+ },
50
+ other: {
51
+ methods,
52
+ functionals: ["other"]
53
+ }
54
+ };
55
+ const getDFTFunctionalsFromTree = () => Object.keys(DFTModelTree);
56
+ exports.getDFTFunctionalsFromTree = getDFTFunctionalsFromTree;
57
+ const getDFTFunctionalsByApproximation = approximation => {
58
+ const branch = DFTModelTree[approximation];
59
+ return branch && branch.functionals;
60
+ };
61
+
62
+ // GENERAL
63
+ exports.getDFTFunctionalsByApproximation = getDFTFunctionalsByApproximation;
64
+ const MODEL_TREE = exports.MODEL_TREE = {
65
+ dft: DFTModelTree,
66
+ ml: {
67
+ re: {
68
+ methods: {
69
+ linear: ["least_squares", "ridge"],
70
+ kernel_ridge: ["least_squares"]
71
+ }
72
+ }
73
+ },
74
+ unknown: {
75
+ unknown: {
76
+ methods: {
77
+ unknown: ["unknown"]
78
+ }
79
+ }
80
+ }
81
+ };
82
+ const MODEL_NAMES = exports.MODEL_NAMES = {
83
+ dft: "density functional theory",
84
+ lda: "local density approximation",
85
+ gga: "generalized gradient approximation",
86
+ hybrid: "hybrid functional",
87
+ ml: "machine learning",
88
+ re: "regression"
89
+ };
90
+ const treeSlugToNamedObject = modelSlug => {
91
+ return {
92
+ slug: modelSlug,
93
+ name: _lodash.default.get(MODEL_NAMES, modelSlug, modelSlug)
94
+ };
95
+ };
96
+
97
+ // TODO: find a better way to handle application-specific model-method combination
98
+ // must be a subset of the MODEL_TREE above
99
+ // demonstrate how tree can be modified
100
+ // VASP_MODELS_TREE.gga.functionals = _.omit(VASP_MODELS_TREE.gga.functionals);
101
+ exports.treeSlugToNamedObject = treeSlugToNamedObject;
102
+ const VASP_MODELS_TREE = (0, _utils.deepClone)(_underscore.default.pick(MODEL_TREE, "dft"));
103
+ const ESPRESSO_MODELS_TREE = (0, _utils.deepClone)(_underscore.default.pick(MODEL_TREE, "dft"));
104
+ const NWCHEM_MODELS_TREE = (0, _utils.deepClone)(_underscore.default.pick(MODEL_TREE, "dft"));
105
+ ["gga", "lda"].forEach(approximation => {
106
+ // pick "paw" for vasp
107
+ VASP_MODELS_TREE.dft[approximation].methods.pseudopotential = VASP_MODELS_TREE.dft[approximation].methods.pseudopotential.splice(0, 1);
108
+
109
+ // assert "us" is the first option
110
+ ESPRESSO_MODELS_TREE.dft[approximation].methods.pseudopotential = ESPRESSO_MODELS_TREE.dft[approximation].methods.pseudopotential.reverse();
111
+ });
112
+ const UNKNOWN_MODELS_TREE = _underscore.default.pick(MODEL_TREE, "unknown");
113
+ // const ML_MODELS_TREE = _.pick(MODEL_TREE, "ml");
114
+
115
+ const MODELS_TREE_CONFIGS_BY_APPLICATION_NAME_VERSION = [{
116
+ name: "vasp",
117
+ tree: VASP_MODELS_TREE
118
+ }, {
119
+ name: "espresso",
120
+ tree: ESPRESSO_MODELS_TREE
121
+ }, {
122
+ name: "python",
123
+ tree: UNKNOWN_MODELS_TREE
124
+ }, {
125
+ name: "shell",
126
+ tree: UNKNOWN_MODELS_TREE
127
+ }, {
128
+ name: "jupyterLab",
129
+ tree: UNKNOWN_MODELS_TREE
130
+ }, {
131
+ name: "nwchem",
132
+ tree: NWCHEM_MODELS_TREE
133
+ }, {
134
+ name: "deepmd",
135
+ tree: UNKNOWN_MODELS_TREE
136
+ }];
137
+ const getTreeByApplicationNameAndVersion = ({
138
+ name,
139
+ // eslint-disable-next-line no-unused-vars
140
+ version
141
+ }) => {
142
+ // TODO: add logic to filter by version when necessary
143
+ const cfgs = MODELS_TREE_CONFIGS_BY_APPLICATION_NAME_VERSION.filter(cfg => cfg.name === name).map(x => x.tree);
144
+ return Object.assign({}, ...cfgs);
145
+ };
146
+ exports.getTreeByApplicationNameAndVersion = getTreeByApplicationNameAndVersion;
147
+ const getDefaultModelTypeForApplication = application => {
148
+ return Object.keys(getTreeByApplicationNameAndVersion(application))[0];
149
+ };
150
+
151
+ /**
152
+ * Filter list of method configs based on model
153
+ * @param {Object[]} methodList - Array of method configs
154
+ * @param {Object} model - Model config for which methods should be filtered
155
+ * @return {Object[]}
156
+ */
157
+ exports.getDefaultModelTypeForApplication = getDefaultModelTypeForApplication;
158
+ function filterMethodsByModel({
159
+ methodList,
160
+ model
161
+ }) {
162
+ if (!model) return [];
163
+ const modelMethodFilter = new _standata.ModelMethodFilter();
164
+ return modelMethodFilter.getCompatibleMethods(model, methodList);
165
+ }
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@mat3ra/mode",
3
+ "version": "2025.10.2-0",
4
+ "description": "MOdel and method DEfinitions",
5
+ "scripts": {
6
+ "test": "nyc --reporter=text mocha --recursive --bail --require @babel/register/lib --require tests/setup.js tests",
7
+ "lint": "eslint src tests && prettier --write src tests",
8
+ "lint:fix": "eslint --fix --cache src tests && prettier --write src tests",
9
+ "transpile": "babel --out-dir dist src",
10
+ "postinstall": "npm run transpile",
11
+ "prettier": "prettier --check src tests",
12
+ "prepare": "husky install || exit 0",
13
+ "prepublishOnly": "rm -rf dist; npm run transpile"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/Exabyte-io/mode.git"
18
+ },
19
+ "main": "dist/index.js",
20
+ "files": [
21
+ "/dist",
22
+ "/src",
23
+ ".babelrc"
24
+ ],
25
+ "author": "Exabyte Inc.",
26
+ "bugs": {
27
+ "url": "https://github.com/Exabyte-io/mode/issues"
28
+ },
29
+ "license": "Apache-2.0",
30
+ "homepage": "https://github.com/Exabyte-io/mode",
31
+ "dependencies": {
32
+ "@babel/cli": "7.16.0",
33
+ "@babel/core": "7.16.0",
34
+ "@babel/eslint-parser": "7.16.3",
35
+ "@babel/plugin-proposal-class-properties": "7.16.0",
36
+ "@babel/preset-env": "7.16.4",
37
+ "@babel/preset-react": "7.16.7",
38
+ "@babel/register": "^7.16.0",
39
+ "@babel/runtime-corejs3": "7.16.8",
40
+ "ajv": "^8.12.0",
41
+ "js-yaml": "^4.1.0",
42
+ "lodash": "^4.17.21",
43
+ "mixwith": "^0.1.1",
44
+ "underscore": "^1.13.3",
45
+ "underscore.string": "^3.3.4"
46
+ },
47
+ "devDependencies": {
48
+ "@exabyte-io/eslint-config": "^2022.11.17-0",
49
+ "@mat3ra/esse": "2024.4.19-1",
50
+ "@mat3ra/standata": "2025.10.2-0",
51
+ "@mat3ra/code": "2024.3.25-3",
52
+ "chai": "^4.3.4",
53
+ "eslint": "7.32.0",
54
+ "eslint-config-airbnb": "19.0.2",
55
+ "eslint-config-prettier": "^8.5.0",
56
+ "eslint-import-resolver-exports": "^1.0.0-beta.2",
57
+ "eslint-plugin-import": "2.25.3",
58
+ "eslint-plugin-jsdoc": "37.1.0",
59
+ "eslint-plugin-jsx-a11y": "6.5.1",
60
+ "eslint-plugin-prettier": "^4.2.1",
61
+ "eslint-plugin-react": "7.30.0",
62
+ "eslint-plugin-simple-import-sort": "7.0.0",
63
+ "husky": "^7.0.4",
64
+ "lint-staged": "^12.1.2",
65
+ "mocha": "^9.1.3",
66
+ "nyc": "^15.1.0",
67
+ "prettier": "^2.7.1"
68
+ },
69
+ "peerDependencies": {
70
+ "@mat3ra/esse": "*",
71
+ "@mat3ra/standata": "*",
72
+ "@mat3ra/code": "*"
73
+ },
74
+ "engines": {
75
+ "node": ">20.0.0"
76
+ },
77
+ "lint-staged": {
78
+ "*.js": "eslint --cache --fix",
79
+ "*.{js,css}": "prettier --write"
80
+ }
81
+ }
@@ -0,0 +1,2 @@
1
+ /* eslint-disable */
2
+ module.exports = {allMethods: [{"units":[{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Any Plane-wave Pseudopotential Method","path":"/qm/wf/none/psp/us::/qm/wf/none/psp/nc::/qm/wf/none/psp/nc-fr::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"least_squares","type":"linear"},"tags":["exabyteML"],"name":"Linear least squares regression","path":"/none/none/none/linear/least_squares"}],"name":"Linear least squares regression","path":"/none/none/none/linear/least_squares"},{"units":[{"categories":{"subtype":"ridge","type":"linear"},"tags":["exabyteML"],"name":"Linear ridge regression","path":"/none/none/none/linear/ridge"}],"name":"Linear ridge regression","path":"/none/none/none/linear/ridge"},{"units":[{"categories":{"type":"kernel_ridge","subtype":"least_squares"},"tags":["exabyteML"],"name":"Kernel Ridge least squares regression","path":"/none/none/none/kernel_ridge/least_squares"}],"name":"Kernel Ridge least squares regression","path":"/none/none/none/kernel_ridge/least_squares"},{"units":[{"parameters":{"basisSlug":"6-31G"},"categories":{"tier1":"qm","tier2":"wf","type":"ao","subtype":"pople"},"tags":["atomic orbital"],"name":"Wave function: LCAO - Pople basis set (6-31G)","path":"/qm/wf/none/ao/pople?basisSlug=6-31G"}],"name":"Wave function: LCAO - Pople basis set (6-31G)","path":"/qm/wf/none/ao/pople?basisSlug=6-31G"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Ultra-soft Pseudopotential (Conjugate Gradient Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/opt/diff/ordern/cg/none::/qm/wf/none/psp/us::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Ultra-soft Pseudopotential (Conjugate Gradient Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/opt/diff/ordern/cg/none::/qm/wf/none/psp/us::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Ultra-soft Pseudopotential (Conjugate Gradient Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/opt/diff/ordern/cg/none::/qm/wf/none/psp/us::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Ultra-soft Pseudopotential (Davidson Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/linalg/diag/none/davidson/none::/qm/wf/none/psp/us::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Ultra-soft Pseudopotential (Davidson Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/linalg/diag/none/davidson/none::/qm/wf/none/psp/us::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"us","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Ultra-soft Pseudopotential","path":"/qm/wf/none/psp/us"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Ultra-soft Pseudopotential (Davidson Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/linalg/diag/none/davidson/none::/qm/wf/none/psp/us::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Pseudopotential (Conjugate Gradient Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/opt/diff/ordern/cg/none::/qm/wf/none/psp/nc::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Pseudopotential (Conjugate Gradient Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/opt/diff/ordern/cg/none::/qm/wf/none/psp/nc::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Pseudopotential (Conjugate Gradient Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/opt/diff/ordern/cg/none::/qm/wf/none/psp/nc::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Pseudopotential (Davidson Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/linalg/diag/none/davidson/none::/qm/wf/none/psp/nc::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Pseudopotential (Davidson Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/linalg/diag/none/davidson/none::/qm/wf/none/psp/nc::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"nc","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Pseudopotential","path":"/qm/wf/none/psp/nc"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Pseudopotential (Davidson Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/linalg/diag/none/davidson/none::/qm/wf/none/psp/nc::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Fully-relativistic Pseudopotential (Conjugate Gradient Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/opt/diff/ordern/cg/none::/qm/wf/none/psp/nc-fr::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Fully-relativistic Pseudopotential (Conjugate Gradient Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/opt/diff/ordern/cg/none::/qm/wf/none/psp/nc-fr::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Fully-relativistic Pseudopotential (Conjugate Gradient Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/opt/diff/ordern/cg/none::/qm/wf/none/psp/nc-fr::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Fully-relativistic Pseudopotential (Davidson Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/linalg/diag/none/davidson/none::/qm/wf/none/psp/nc-fr::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Fully-relativistic Pseudopotential (Davidson Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/linalg/diag/none/davidson/none::/qm/wf/none/psp/nc-fr::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"nc-fr","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Norm-conserving Fully-relativistic Pseudopotential","path":"/qm/wf/none/psp/nc-fr"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Norm-conserving Fully-relativistic Pseudopotential (Davidson Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/linalg/diag/none/davidson/none::/qm/wf/none/psp/nc-fr::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Projector-augmented Wave Pseudopotential (Conjugate Gradient Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/opt/diff/ordern/cg/none::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Projector-augmented Wave Pseudopotential (Conjugate Gradient Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/opt/diff/ordern/cg/none::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"opt","tier2":"diff","tier3":"ordern","type":"cg"},"tags":["diagonalization"],"name":"Conjugate Gradient Diagonalization","path":"/opt/diff/ordern/cg/none"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Projector-augmented Wave Pseudopotential (Conjugate Gradient Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/opt/diff/ordern/cg/none::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"gaussian","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Gaussian Smearing","path":"/qm/wf/none/smearing/gaussian"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Projector-augmented Wave Pseudopotential (Davidson Diagonalization, Gaussian Smearing)","path":"/qm/wf/none/smearing/gaussian::/linalg/diag/none/davidson/none::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"methfessel-paxton","tier1":"qm","tier2":"wf","type":"smearing"},"tags":["occupation number"],"name":"Methfessel-Paxton Smearing","path":"/qm/wf/none/smearing/methfessel-paxton"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Projector-augmented Wave Pseudopotential (Davidson Diagonalization, Methfessel-paxton Smearing)","path":"/qm/wf/none/smearing/methfessel-paxton::/linalg/diag/none/davidson/none::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"},{"units":[{"categories":{"subtype":"linear","tier1":"qm","tier2":"wf","type":"tetrahedron"},"tags":["occupation number"],"name":"Linear Tetrahedron Method","path":"/qm/wf/none/tetrahedron/linear"},{"categories":{"tier1":"linalg","tier2":"diag","type":"davidson"},"tags":["diagonalization"],"name":"Davidson Diagonalization","path":"/linalg/diag/none/davidson/none"},{"categories":{"subtype":"paw","tier1":"qm","tier2":"wf","type":"psp"},"tags":["pseudopotential"],"name":"Projector-augmented wave Pseudopotential","path":"/qm/wf/none/psp/paw"},{"categories":{"tier1":"qm","tier2":"wf","type":"pw"},"tags":["plane wave"],"name":"Wave function: Plane wave","path":"/qm/wf/none/pw/none"}],"name":"Plane-wave Projector-augmented Wave Pseudopotential (Davidson Diagonalization, Linear Tetrahedron Method)","path":"/qm/wf/none/tetrahedron/linear::/linalg/diag/none/davidson/none::/qm/wf/none/psp/paw::/qm/wf/none/pw/none"}]}
@@ -0,0 +1,2 @@
1
+ /* eslint-disable */
2
+ module.exports = {allModels: [{"parameters":{"spinOrbitCoupling":true,"dispersionCorrection":"dft-d3","functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE-D3 (SOC)","path":"/pb/qm/dft/ksdft/gga?spinOrbitCoupling=true&dispersionCorrection=dft-d3&functional=pbe"},{"parameters":{"spinPolarization":"collinear","dispersionCorrection":"dft-d3","functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE-D3 (collinear)","path":"/pb/qm/dft/ksdft/gga?spinPolarization=collinear&dispersionCorrection=dft-d3&functional=pbe"},{"parameters":{"dispersionCorrection":"dft-d3","functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE-D3","path":"/pb/qm/dft/ksdft/gga?dispersionCorrection=dft-d3&functional=pbe"},{"parameters":{"hubbardType":"u","spinOrbitCoupling":true,"functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE+U (SOC)","path":"/pb/qm/dft/ksdft/gga?hubbardType=u&spinOrbitCoupling=true&functional=pbe"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE (SOC)","path":"/pb/qm/dft/ksdft/gga?spinOrbitCoupling=true&functional=pbe"},{"parameters":{"spinPolarization":"collinear","hubbardType":"u","functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE+U (collinear)","path":"/pb/qm/dft/ksdft/gga?spinPolarization=collinear&hubbardType=u&functional=pbe"},{"parameters":{"hubbardType":"u","functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE+U","path":"/pb/qm/dft/ksdft/gga?hubbardType=u&functional=pbe"},{"parameters":{"spinPolarization":"collinear","functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE (collinear)","path":"/pb/qm/dft/ksdft/gga?spinPolarization=collinear&functional=pbe"},{"parameters":{"functional":"pbe"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBE","path":"/pb/qm/dft/ksdft/gga?functional=pbe"},{"parameters":{"spinOrbitCoupling":true,"dispersionCorrection":"dft-d3","functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL-D3 (SOC)","path":"/pb/qm/dft/ksdft/gga?spinOrbitCoupling=true&dispersionCorrection=dft-d3&functional=pbesol"},{"parameters":{"spinPolarization":"collinear","dispersionCorrection":"dft-d3","functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL-D3 (collinear)","path":"/pb/qm/dft/ksdft/gga?spinPolarization=collinear&dispersionCorrection=dft-d3&functional=pbesol"},{"parameters":{"dispersionCorrection":"dft-d3","functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL-D3","path":"/pb/qm/dft/ksdft/gga?dispersionCorrection=dft-d3&functional=pbesol"},{"parameters":{"hubbardType":"u","spinOrbitCoupling":true,"functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL+U (SOC)","path":"/pb/qm/dft/ksdft/gga?hubbardType=u&spinOrbitCoupling=true&functional=pbesol"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL (SOC)","path":"/pb/qm/dft/ksdft/gga?spinOrbitCoupling=true&functional=pbesol"},{"parameters":{"spinPolarization":"collinear","hubbardType":"u","functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL+U (collinear)","path":"/pb/qm/dft/ksdft/gga?spinPolarization=collinear&hubbardType=u&functional=pbesol"},{"parameters":{"hubbardType":"u","functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL+U","path":"/pb/qm/dft/ksdft/gga?hubbardType=u&functional=pbesol"},{"parameters":{"spinPolarization":"collinear","functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL (collinear)","path":"/pb/qm/dft/ksdft/gga?spinPolarization=collinear&functional=pbesol"},{"parameters":{"functional":"pbesol"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"gga"},"tags":["density functional theory"],"name":"DFT GGA PBESOL","path":"/pb/qm/dft/ksdft/gga?functional=pbesol"},{"parameters":{"functional":"pbe","require":"pb/qm/dft/ksdft/gga?functional=pbe"},"categories":{"subtype":"g0w0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"G0W0@PBE","path":"/pb/qm/abin/gw/g0w0?functional=pbe&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe"},{"parameters":{"functional":"pbesol","require":"pb/qm/dft/ksdft/gga?functional=pbe"},"categories":{"subtype":"g0w0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"G0W0@pbesol","path":"/pb/qm/abin/gw/g0w0?functional=pbesol&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe"},{"parameters":{"functional":"pbe","require":"pb/qm/dft/ksdft/gga?functional=pbe"},"categories":{"subtype":"evgw0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW0@PBE","path":"/pb/qm/abin/gw/evgw0?functional=pbe&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe"},{"parameters":{"functional":"pbesol","require":"pb/qm/dft/ksdft/gga?functional=pbe"},"categories":{"subtype":"evgw0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW0@pbesol","path":"/pb/qm/abin/gw/evgw0?functional=pbesol&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe"},{"parameters":{"functional":"pbe","require":"pb/qm/dft/ksdft/gga?functional=pbe"},"categories":{"subtype":"evgw","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW@PBE","path":"/pb/qm/abin/gw/evgw?functional=pbe&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe"},{"parameters":{"functional":"pbesol","require":"pb/qm/dft/ksdft/gga?functional=pbe"},"categories":{"subtype":"evgw","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW@pbesol","path":"/pb/qm/abin/gw/evgw?functional=pbesol&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbe","require":"pb/qm/dft/ksdft/gga?functional=pbe&spinOrbitCoupling=true"},"categories":{"subtype":"g0w0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"G0W0@PBE (SOC)","path":"/pb/qm/abin/gw/g0w0?spinOrbitCoupling=true&functional=pbe&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe%26spinOrbitCoupling%3Dtrue"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbesol","require":"pb/qm/dft/ksdft/gga?functional=pbe&spinOrbitCoupling=true"},"categories":{"subtype":"g0w0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"G0W0@pbesol (SOC)","path":"/pb/qm/abin/gw/g0w0?spinOrbitCoupling=true&functional=pbesol&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe%26spinOrbitCoupling%3Dtrue"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbe","require":"pb/qm/dft/ksdft/gga?functional=pbe&spinOrbitCoupling=true"},"categories":{"subtype":"evgw0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW0@PBE (SOC)","path":"/pb/qm/abin/gw/evgw0?spinOrbitCoupling=true&functional=pbe&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe%26spinOrbitCoupling%3Dtrue"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbesol","require":"pb/qm/dft/ksdft/gga?functional=pbe&spinOrbitCoupling=true"},"categories":{"subtype":"evgw0","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW0@pbesol (SOC)","path":"/pb/qm/abin/gw/evgw0?spinOrbitCoupling=true&functional=pbesol&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe%26spinOrbitCoupling%3Dtrue"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbe","require":"pb/qm/dft/ksdft/gga?functional=pbe&spinOrbitCoupling=true"},"categories":{"subtype":"evgw","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW@PBE (SOC)","path":"/pb/qm/abin/gw/evgw?spinOrbitCoupling=true&functional=pbe&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe%26spinOrbitCoupling%3Dtrue"},{"parameters":{"spinOrbitCoupling":true,"functional":"pbesol","require":"pb/qm/dft/ksdft/gga?functional=pbe&spinOrbitCoupling=true"},"categories":{"subtype":"evgw","tier1":"pb","tier2":"qm","tier3":"abin","type":"gw"},"name":"evGW@pbesol (SOC)","path":"/pb/qm/abin/gw/evgw?spinOrbitCoupling=true&functional=pbesol&require=pb%2Fqm%2Fdft%2Fksdft%2Fgga%3Ffunctional%3Dpbe%26spinOrbitCoupling%3Dtrue"},{"parameters":{"spinOrbitCoupling":true,"dispersionCorrection":"dft-d3","functional":"hse06"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid HSE-D3 (SOC)","path":"/pb/qm/dft/ksdft/hybrid?spinOrbitCoupling=true&dispersionCorrection=dft-d3&functional=hse06"},{"parameters":{"spinPolarization":"collinear","dispersionCorrection":"dft-d3","functional":"hse06"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid HSE-D3 (collinear)","path":"/pb/qm/dft/ksdft/hybrid?spinPolarization=collinear&dispersionCorrection=dft-d3&functional=hse06"},{"parameters":{"dispersionCorrection":"dft-d3","functional":"hse06"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid HSE-D3","path":"/pb/qm/dft/ksdft/hybrid?dispersionCorrection=dft-d3&functional=hse06"},{"parameters":{"spinOrbitCoupling":true,"functional":"hse06"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid HSE (SOC)","path":"/pb/qm/dft/ksdft/hybrid?spinOrbitCoupling=true&functional=hse06"},{"parameters":{"spinPolarization":"collinear","functional":"hse06"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid HSE (collinear)","path":"/pb/qm/dft/ksdft/hybrid?spinPolarization=collinear&functional=hse06"},{"parameters":{"functional":"hse06"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid HSE","path":"/pb/qm/dft/ksdft/hybrid?functional=hse06"},{"parameters":{"spinOrbitCoupling":true,"dispersionCorrection":"dft-d3","functional":"b3lyp"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid B3LYP-D3 (SOC)","path":"/pb/qm/dft/ksdft/hybrid?spinOrbitCoupling=true&dispersionCorrection=dft-d3&functional=b3lyp"},{"parameters":{"spinPolarization":"collinear","dispersionCorrection":"dft-d3","functional":"b3lyp"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid B3LYP-D3 (collinear)","path":"/pb/qm/dft/ksdft/hybrid?spinPolarization=collinear&dispersionCorrection=dft-d3&functional=b3lyp"},{"parameters":{"dispersionCorrection":"dft-d3","functional":"b3lyp"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid B3LYP-D3","path":"/pb/qm/dft/ksdft/hybrid?dispersionCorrection=dft-d3&functional=b3lyp"},{"parameters":{"spinOrbitCoupling":true,"functional":"b3lyp"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid B3LYP (SOC)","path":"/pb/qm/dft/ksdft/hybrid?spinOrbitCoupling=true&functional=b3lyp"},{"parameters":{"spinPolarization":"collinear","functional":"b3lyp"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid B3LYP (collinear)","path":"/pb/qm/dft/ksdft/hybrid?spinPolarization=collinear&functional=b3lyp"},{"parameters":{"functional":"b3lyp"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"hybrid"},"tags":["density functional theory"],"name":"DFT Hybrid B3LYP","path":"/pb/qm/dft/ksdft/hybrid?functional=b3lyp"},{"parameters":{"spinOrbitCoupling":true,"dispersionCorrection":"dft-d3","functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ-D3 (SOC)","path":"/pb/qm/dft/ksdft/lda?spinOrbitCoupling=true&dispersionCorrection=dft-d3&functional=pz"},{"parameters":{"spinPolarization":"collinear","dispersionCorrection":"dft-d3","functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ-D3 (collinear)","path":"/pb/qm/dft/ksdft/lda?spinPolarization=collinear&dispersionCorrection=dft-d3&functional=pz"},{"parameters":{"dispersionCorrection":"dft-d3","functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ-D3","path":"/pb/qm/dft/ksdft/lda?dispersionCorrection=dft-d3&functional=pz"},{"parameters":{"hubbardType":"u","spinOrbitCoupling":true,"functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ+U (SOC)","path":"/pb/qm/dft/ksdft/lda?hubbardType=u&spinOrbitCoupling=true&functional=pz"},{"parameters":{"spinOrbitCoupling":true,"functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ (SOC)","path":"/pb/qm/dft/ksdft/lda?spinOrbitCoupling=true&functional=pz"},{"parameters":{"spinPolarization":"collinear","hubbardType":"u","functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ+U (collinear)","path":"/pb/qm/dft/ksdft/lda?spinPolarization=collinear&hubbardType=u&functional=pz"},{"parameters":{"hubbardType":"u","functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ+U","path":"/pb/qm/dft/ksdft/lda?hubbardType=u&functional=pz"},{"parameters":{"spinPolarization":"collinear","functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ (collinear)","path":"/pb/qm/dft/ksdft/lda?spinPolarization=collinear&functional=pz"},{"parameters":{"functional":"pz"},"categories":{"tier1":"pb","tier2":"qm","tier3":"dft","type":"ksdft","subtype":"lda"},"tags":["density functional theory"],"name":"DFT LDA PZ","path":"/pb/qm/dft/ksdft/lda?functional=pz"},{"categories":{"tier1":"st","tier2":"det","tier3":"ml","type":"re"},"parameters":{},"name":"Regression","path":"/st/det/ml/re/none"}]}
@@ -0,0 +1,2 @@
1
+ /* eslint-disable */
2
+ module.exports = {"pb":{"qm":{"abin":{"gw":[{"path":"/qm/wf/none/pw/none"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/smearing\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/tetrahedron\\/.*"},{"path":"/opt/diff/ordern/cg/none"},{"path":"/linalg/diag/none/davidson/none"}]},"dft":{"ksdft":{"lda":[{"path":"/qm/wf/none/pw/none"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/smearing\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/tetrahedron\\/.*"},{"path":"/opt/diff/ordern/cg/none"},{"path":"/linalg/diag/none/davidson/none"}],"gga":[{"path":"/qm/wf/none/pw/none"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/smearing\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/tetrahedron\\/.*"},{"path":"/opt/diff/ordern/cg/none"},{"path":"/linalg/diag/none/davidson/none"}],"hybrid":[{"path":"/qm/wf/none/pw/none"},{"regex":"\\/qm\\/wf\\/none\\/psp\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/smearing\\/.*"},{"regex":"\\/qm\\/wf\\/none\\/tetrahedron\\/.*"},{"path":"/opt/diff/ordern/cg/none"},{"path":"/linalg/diag/none/davidson/none"},{"regex":"\\/qm\\/wf\\/none\\/ao\\/pople.*"}]}}}},"st":{"det":{"ml":{"re":[{"path":"/none/none/none/linear/least_squares"},{"path":"/none/none/none/linear/ridge"},{"path":"/none/none/none/kernel_ridge/least_squares"}]}}}}
@@ -0,0 +1,38 @@
1
+ import lodash from "lodash";
2
+
3
+ import { MODEL_NAMES, MODEL_TREE } from "./tree";
4
+
5
+ export const PseudopotentialMethodConfig = {
6
+ type: "pseudopotential",
7
+ subtype: "us",
8
+ };
9
+
10
+ export const LocalOrbitalMethodConfig = {
11
+ type: "localorbital",
12
+ subtype: "pople",
13
+ };
14
+
15
+ export const UnknownMethodConfig = {
16
+ type: "unknown",
17
+ subtype: "unknown",
18
+ };
19
+
20
+ export function allowedTypes(model) {
21
+ return lodash
22
+ .keys(lodash.get(MODEL_TREE, `${model.type}.${model.subtype}.methods`, []))
23
+ .map((x) => {
24
+ return {
25
+ slug: x,
26
+ name: lodash.get(MODEL_NAMES, x, x),
27
+ };
28
+ });
29
+ }
30
+
31
+ export function allowedSubtypes(model, type) {
32
+ return lodash.get(MODEL_TREE, `${model.type}.${model.subtype}.methods.${type}`, []).map((x) => {
33
+ return {
34
+ slug: x,
35
+ name: lodash.get(MODEL_NAMES, x, x),
36
+ };
37
+ });
38
+ }
@@ -0,0 +1,9 @@
1
+ export const DFTModelConfig = {
2
+ type: "dft",
3
+ subtype: "gga",
4
+ };
5
+
6
+ export const UnknownModelConfig = {
7
+ type: "unknown",
8
+ subtype: "unknown",
9
+ };
package/src/index.js ADDED
@@ -0,0 +1,32 @@
1
+ import { MethodStandata, ModelStandata } from "@mat3ra/standata";
2
+
3
+ import * as default_methods from "./default_methods";
4
+ import * as default_models from "./default_models";
5
+ import { Method } from "./method";
6
+ import { MethodFactory } from "./methods/factory";
7
+ import { PseudopotentialMethod } from "./methods/pseudopotential";
8
+ import { Model } from "./model";
9
+ import { DFTModel } from "./models/dft";
10
+ import { ModelFactory } from "./models/factory";
11
+ // TODO : can replace these with subpackages in exports in package.json
12
+ import * as tree from "./tree";
13
+
14
+ const methodStandata = new MethodStandata();
15
+ const modelStandata = new ModelStandata();
16
+
17
+ const categorizedMethodList = methodStandata.getAll();
18
+ const categorizedModelList = modelStandata.getAll();
19
+
20
+ export {
21
+ Method,
22
+ Model,
23
+ MethodFactory,
24
+ ModelFactory,
25
+ PseudopotentialMethod,
26
+ DFTModel,
27
+ tree,
28
+ default_models,
29
+ default_methods,
30
+ categorizedModelList,
31
+ categorizedMethodList,
32
+ };
package/src/method.js ADDED
@@ -0,0 +1,77 @@
1
+ import { InMemoryEntity } from "@mat3ra/code/dist/js/entity";
2
+ import { deepClone } from "@mat3ra/code/dist/js/utils";
3
+ import lodash from "lodash";
4
+
5
+ import { PseudopotentialMethodConfig } from "./default_methods";
6
+
7
+ export class Method extends InMemoryEntity {
8
+ constructor(config) {
9
+ const data = config.data || {};
10
+ super({ ...config, data });
11
+ }
12
+
13
+ cloneWithoutData() {
14
+ const clone = this.clone();
15
+ clone.setData({});
16
+ return clone;
17
+ }
18
+
19
+ get type() {
20
+ return this.prop("type");
21
+ }
22
+
23
+ get subtype() {
24
+ return this.prop("subtype");
25
+ }
26
+
27
+ setSubtype(subtype) {
28
+ // TODO: add proper handling of method data subscriptions on type/subtype change
29
+ this.setProp("subtype", subtype);
30
+ }
31
+
32
+ static get defaultConfig() {
33
+ return PseudopotentialMethodConfig;
34
+ }
35
+
36
+ get precision() {
37
+ return this.prop("precision");
38
+ }
39
+
40
+ get data() {
41
+ return this.prop("data");
42
+ }
43
+
44
+ get searchText() {
45
+ return this.prop("data.searchText", "");
46
+ }
47
+
48
+ // used to narrow down the list of methodData items available for selection
49
+ // utilizing "data" field as a "blackbox" container for searchText
50
+ setSearchText(searchText) {
51
+ this.setData({ ...this.prop("data"), searchText });
52
+ }
53
+
54
+ setData(data = {}) {
55
+ this.setProp("data", data);
56
+ }
57
+
58
+ get omitInHashCalculation() {
59
+ const data = this.prop("data");
60
+ return !data.searchText && lodash.isEmpty(lodash.omit(data, "searchText"));
61
+ }
62
+
63
+ // data without client-only fields
64
+ cleanData(fieldsToExclude = []) {
65
+ const filteredData = { ...this.prop("data") };
66
+ fieldsToExclude.forEach((f) => {
67
+ delete filteredData[f];
68
+ });
69
+ return filteredData;
70
+ }
71
+
72
+ // override in child class if needed
73
+ toJSONWithCleanData(fieldsToExclude = []) {
74
+ const json = { ...this._json, data: this.cleanData(fieldsToExclude) };
75
+ return deepClone(json);
76
+ }
77
+ }
@@ -0,0 +1,17 @@
1
+ import { Method } from "../method";
2
+ import { PseudopotentialMethod } from "./pseudopotential";
3
+
4
+ export class MethodFactory {
5
+ static Method = Method;
6
+
7
+ static PseudopotentialMethod = PseudopotentialMethod;
8
+
9
+ static create(config) {
10
+ switch (config.type) {
11
+ case "pseudopotential":
12
+ return new this.PseudopotentialMethod(config);
13
+ default:
14
+ return new this.Method(config);
15
+ }
16
+ }
17
+ }