@@ -2,23 +2,33 @@ import { HubbardUContextProvider } from "./HubbardUContextProvider";
22
33const 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
1313export 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