@@ -125,6 +125,7 @@ def check(self) -> None:
125
125
severity = working_params .defaults [key ]["severity" ],
126
126
)
127
127
128
+
128
129
class UpdateParameterValues :
129
130
"""
130
131
Update a set of parameters according to supplied rules and defaults.
@@ -184,7 +185,7 @@ def __init__(
184
185
"""
185
186
186
187
self .parameters = copy .deepcopy (parameters )
187
- self .defaults = copy .deepcopy (defaults )
188
+ self .defaults : dict = copy .deepcopy (defaults )
188
189
self .input_set = input_set
189
190
self .vasp_version = vasp_version
190
191
self .structure = structure
@@ -220,8 +221,8 @@ def update_parameters_and_defaults(self) -> None:
220
221
self .add_defaults_to_parameters ()
221
222
222
223
for key , v in self .defaults .items ():
223
- if isinstance (v ,dict ):
224
- self .defaults [key ] = VaspParam (** {"name" :key ,** v })
224
+ if isinstance (v , dict ):
225
+ self .defaults [key ] = VaspParam (** {"name" : key , ** v })
225
226
226
227
def add_defaults_to_parameters (self , valid_values_source : dict | None = None ) -> None :
227
228
"""
@@ -333,10 +334,10 @@ def update_precision_params(self) -> None:
333
334
}
334
335
self .parameters ["ROPT" ] = [abs (value ) for value in self .parameters .get ("ROPT" , [ropt_default [cur_prec ]])]
335
336
self .defaults ["ROPT" ] = VaspParam (
336
- name = "ROPT" ,
337
- value = [abs (ropt_default [cur_prec ]) for _ in self .parameters ["ROPT" ]],
338
- tag = "startup" ,
339
- operation = ["<=" for _ in self .parameters ["ROPT" ]],
337
+ name = "ROPT" ,
338
+ value = [abs (ropt_default [cur_prec ]) for _ in self .parameters ["ROPT" ]],
339
+ tag = "startup" ,
340
+ operation = ["<=" for _ in self .parameters ["ROPT" ]],
340
341
)
341
342
342
343
def update_misc_special_params (self ) -> None :
@@ -449,10 +450,10 @@ def update_fft_params(self) -> None:
449
450
self .valid_values [key ] = int (self .valid_values [key ] * self ._fft_grid_tolerance )
450
451
451
452
self .defaults [key ] = VaspParam (
452
- name = key ,
453
- value = self .valid_values [key ],
454
- tag = "fft" ,
455
- operation = ">=" ,
453
+ name = key ,
454
+ value = self .valid_values [key ],
455
+ tag = "fft" ,
456
+ operation = ">=" ,
456
457
comment = (
457
458
"This likely means the number FFT grid points was modified by the user. "
458
459
"If not, please create a GitHub issue."
@@ -566,15 +567,15 @@ def update_smearing_params(self, bandgap_tol=1.0e-4) -> None:
566
567
self .valid_values ["ELECTRONIC ENTROPY" ] = 0.001 * convert_eV_to_meV
567
568
568
569
self .defaults ["ELECTRONIC ENTROPY" ] = VaspParam (
569
- name = "ELECTRONIC ENTROPY" ,
570
- value = 0.0 ,
571
- tag = "smearing" ,
570
+ name = "ELECTRONIC ENTROPY" ,
571
+ value = 0.0 ,
572
+ tag = "smearing" ,
572
573
comment = (
573
574
"The entropy term (T*S) in the energy is suggested to be less than "
574
575
f"{ round (self .valid_values ['ELECTRONIC ENTROPY' ], 1 )} meV/atom "
575
576
f"in the VASP wiki. Thus, SIGMA should be decreased."
576
577
),
577
- operation = "<=" ,
578
+ operation = "<=" ,
578
579
)
579
580
580
581
def _get_default_nbands (self ):
@@ -654,15 +655,15 @@ def update_electronic_params(self):
654
655
# NBANDS.
655
656
min_nbands = int (np .ceil (self ._NELECT / 2 ) + 1 )
656
657
self .defaults ["NBANDS" ] = VaspParam (
657
- name = "NBANDS" ,
658
- value = self ._get_default_nbands (),
659
- tag = "electronic" ,
660
- operation = [">=" , "<=" ],
661
- comment = (
658
+ name = "NBANDS" ,
659
+ value = self ._get_default_nbands (),
660
+ tag = "electronic" ,
661
+ operation = [">=" , "<=" ],
662
+ comment = (
662
663
"Too many or too few bands can lead to unphysical electronic structure "
663
664
"(see https://github.com/materialsproject/custodian/issues/224 "
664
665
"for more context.)"
665
- )
666
+ ),
666
667
)
667
668
self .valid_values ["NBANDS" ] = [min_nbands , 4 * self .defaults ["NBANDS" ]["value" ]]
668
669
self .parameters ["NBANDS" ] = [self .parameters ["NBANDS" ] for _ in range (2 )]
@@ -715,7 +716,7 @@ def update_ionic_params(self):
715
716
# every MP-compliant input set, but often have comparable or even better results) will also be accepted
716
717
# I am **NOT** confident that this should be the final check. Perhaps I need convincing (or perhaps it does indeed need to be changed...)
717
718
# TODO: -somehow identify if a material is a vdW structure, in which case force-convergence should maybe be more strict?
718
- self .defaults ["EDIFFG" ] = VaspParam (name = "EDIFFG" , value = 10 * self .valid_values ["EDIFF" ], tag = "ionic" )
719
+ self .defaults ["EDIFFG" ] = VaspParam (name = "EDIFFG" , value = 10 * self .valid_values ["EDIFF" ], tag = "ionic" )
719
720
720
721
self .valid_values ["EDIFFG" ] = self .input_set .incar .get ("EDIFFG" , self .defaults ["EDIFFG" ]["value" ])
721
722
self .defaults ["EDIFFG" ][
0 commit comments