@@ -2,23 +2,33 @@ import { HubbardUContextProvider } from "./HubbardUContextProvider";
2
2
3
3
const defaultHubbardConfig = {
4
4
atomicSpecies : "" ,
5
- atomicOrbital : "2p " ,
5
+ atomicOrbital : "3d " ,
6
6
atomicSpecies2 : "" ,
7
- atomicOrbital2 : "2p " ,
7
+ atomicOrbital2 : "3d " ,
8
8
siteIndex : 1 ,
9
9
siteIndex2 : 1 ,
10
10
hubbardVValue : 1.0 ,
11
11
} ;
12
12
13
13
export class HubbardVContextProvider extends HubbardUContextProvider {
14
14
get defaultData ( ) {
15
+ const firstElementOrbitals = this . _getValenceOrbitals ( this . firstSpecies ) ;
16
+ const secondElementOrbitals = this . _getValenceOrbitals ( this . secondSpecies ) ;
15
17
return [
16
18
{
17
19
...defaultHubbardConfig ,
18
20
atomicSpecies : this . firstSpecies ,
19
21
atomicSpecies2 : this . secondSpecies ,
20
22
siteIndex2 :
21
23
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 ,
22
32
} ,
23
33
] ;
24
34
}
@@ -75,8 +85,6 @@ export class HubbardVContextProvider extends HubbardUContextProvider {
75
85
atomicOrbital : {
76
86
type : "string" ,
77
87
title : "Orbital 1" ,
78
- enum : this . orbitalList ,
79
- default : defaultHubbardConfig . atomicOrbital ,
80
88
} ,
81
89
atomicSpecies2 : {
82
90
type : "string" ,
@@ -95,15 +103,61 @@ export class HubbardVContextProvider extends HubbardUContextProvider {
95
103
atomicOrbital2 : {
96
104
type : "string" ,
97
105
title : "Orbital 2" ,
98
- enum : this . orbitalList ,
99
- default : defaultHubbardConfig . atomicOrbital ,
100
106
} ,
101
107
hubbardVValue : {
102
108
type : "number" ,
103
109
title : "V (eV)" ,
104
110
default : defaultHubbardConfig . hubbardVValue ,
105
111
} ,
106
112
} ,
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
+ } ,
107
161
} ,
108
162
minItems : 1 ,
109
163
} ;
0 commit comments