Skip to content

Commit c892bdc

Browse files
committed
SOF-7010: extend valence config implementation for DFT+U+V case
1 parent 6407fb4 commit c892bdc

File tree

1 file changed

+60
-6
lines changed

1 file changed

+60
-6
lines changed

src/context/providers/HubbardVContextProvider.js

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,33 @@ import { HubbardUContextProvider } from "./HubbardUContextProvider";
22

33
const defaultHubbardConfig = {
44
atomicSpecies: "",
5-
atomicOrbital: "2p",
5+
atomicOrbital: "3d",
66
atomicSpecies2: "",
7-
atomicOrbital2: "2p",
7+
atomicOrbital2: "3d",
88
siteIndex: 1,
99
siteIndex2: 1,
1010
hubbardVValue: 1.0,
1111
};
1212

1313
export class HubbardVContextProvider extends HubbardUContextProvider {
1414
get defaultData() {
15+
const firstElementOrbitals = this._getValenceOrbitals(this.firstSpecies);
16+
const secondElementOrbitals = this._getValenceOrbitals(this.secondSpecies);
1517
return [
1618
{
1719
...defaultHubbardConfig,
1820
atomicSpecies: this.firstSpecies,
1921
atomicSpecies2: this.secondSpecies,
2022
siteIndex2:
2123
this.uniqueElementsWithLabels?.length > 1 ? 2 : defaultHubbardConfig.siteIndex2,
24+
atomicOrbital:
25+
firstElementOrbitals.length > 0
26+
? firstElementOrbitals[firstElementOrbitals.length - 1]
27+
: defaultHubbardConfig.atomicOrbital,
28+
atomicOrbital2:
29+
secondElementOrbitals.length > 0
30+
? secondElementOrbitals[secondElementOrbitals.length - 1]
31+
: defaultHubbardConfig.atomicOrbital2,
2232
},
2333
];
2434
}
@@ -75,8 +85,6 @@ export class HubbardVContextProvider extends HubbardUContextProvider {
7585
atomicOrbital: {
7686
type: "string",
7787
title: "Orbital 1",
78-
enum: this.orbitalList,
79-
default: defaultHubbardConfig.atomicOrbital,
8088
},
8189
atomicSpecies2: {
8290
type: "string",
@@ -95,15 +103,61 @@ export class HubbardVContextProvider extends HubbardUContextProvider {
95103
atomicOrbital2: {
96104
type: "string",
97105
title: "Orbital 2",
98-
enum: this.orbitalList,
99-
default: defaultHubbardConfig.atomicOrbital,
100106
},
101107
hubbardVValue: {
102108
type: "number",
103109
title: "V (eV)",
104110
default: defaultHubbardConfig.hubbardVValue,
105111
},
106112
},
113+
dependencies: {
114+
atomicSpecies: {
115+
oneOf: this.uniqueElementsWithLabels.map((elementWithLabel) => {
116+
const element =
117+
parseInt(elementWithLabel.slice(-1), 10) + 1
118+
? elementWithLabel.slice(0, -1)
119+
: elementWithLabel;
120+
const orbitals = this._getValenceOrbitals(element);
121+
return {
122+
properties: {
123+
atomicSpecies: {
124+
enum: [elementWithLabel],
125+
},
126+
atomicOrbital: {
127+
enum: orbitals.length > 0 ? orbitals : this.orbitalList,
128+
default:
129+
orbitals.length > 0
130+
? orbitals[orbitals.length - 1]
131+
: defaultHubbardConfig.atomicOrbital,
132+
},
133+
},
134+
};
135+
}),
136+
},
137+
atomicSpecies2: {
138+
oneOf: this.uniqueElementsWithLabels.map((elementWithLabel) => {
139+
const element =
140+
parseInt(elementWithLabel.slice(-1), 10) + 1
141+
? elementWithLabel.slice(0, -1)
142+
: elementWithLabel;
143+
const orbitals = this._getValenceOrbitals(element);
144+
return {
145+
properties: {
146+
atomicSpecies2: {
147+
enum: [elementWithLabel],
148+
},
149+
atomicOrbital2: {
150+
enum: orbitals.length > 0 ? orbitals : this.orbitalList,
151+
default:
152+
orbitals.length > 0
153+
? orbitals[orbitals.length - 1]
154+
: defaultHubbardConfig.atomicOrbital2,
155+
},
156+
},
157+
};
158+
}),
159+
},
160+
},
107161
},
108162
minItems: 1,
109163
};

0 commit comments

Comments
 (0)