12
12
"AMGGAC" : 1.0 ,
13
13
"DEPER" : 0.3 ,
14
14
"EBREAK" : 0.0 ,
15
+ "EFIELD" : 0.0 ,
16
+ "EPSILON" : 1.0 ,
15
17
"GGA_COMPAT" : True ,
16
18
"ICHARG" : 2 ,
17
19
"ICORELEVEL" : 0 ,
20
+ "IDIPOL" : 0 ,
18
21
"IMAGES" : 0 ,
19
22
"INIWAV" : 1 ,
20
23
"ISTART" : 0 ,
23
26
"LBERRY" : False ,
24
27
"LCALCEPS" : False ,
25
28
"LCALCPOL" : False ,
29
+ "LCHIMAG" : False ,
26
30
"LDAU" : False ,
27
31
"LDAUU" : [],
28
32
"LDAUJ" : [],
29
33
"LDAUL" : [],
30
34
"LDAUTYPE" : 2 ,
35
+ "LDIPOL" : False ,
31
36
"LEPSILON" : False ,
32
37
"LHFCALC" : False ,
33
38
"LHYPERFINE" : False ,
34
39
"LKPOINTS_OPT" : False ,
35
40
"LKPROJ" : False ,
41
+ "LMONO" : False ,
36
42
"LMP2LT" : False ,
43
+ "LNMR_SYM_RED" : False ,
37
44
"LNONCOLLINEAR" : False ,
38
45
"LOCPROJ" : None ,
39
46
"LRPA" : False ,
47
54
48
55
_categories = {
49
56
"hybrid" : ("AEXX" , "AGGAC" , "AGGAX" , "ALDAX" , "AMGGAX" , "ALDAC" , "AMGGAC" , "LHFCALC" ),
57
+ "chem_shift" : ("LCHIMAG" , "LNMR_SYM_RED" ),
58
+ "dipol" : ("EFIELD" , "EPSILON" , "IDIPOL" , "LDIPOL" , "LMONO" ),
50
59
"ldau" : ("LDAUU" , "LDAUJ" , "LDAUL" , "LDAUTYPE" ),
51
60
"misc" : (
52
61
"DEPER" ,
@@ -203,42 +212,11 @@ def _get_valid_ismears_and_sigma(parameters, bandgap, nionic_steps):
203
212
204
213
205
214
def _check_chemical_shift_params (reasons , parameters , valid_input_set ):
206
- # LCHIMAG.
207
- default_lchimag = False
208
- valid_lchimag = valid_input_set .incar .get ("LCHIMAG" , default_lchimag )
209
- _check_required_params (reasons , parameters , "LCHIMAG" , default_lchimag , valid_lchimag )
210
-
211
- # LNMR_SYM_RED.
212
- default_lnmr_sym_red = False
213
- valid_lnmr_sym_red = valid_input_set .incar .get ("LNMR_SYM_RED" , default_lnmr_sym_red )
214
- _check_required_params (reasons , parameters , "LNMR_SYM_RED" , default_lnmr_sym_red , valid_lnmr_sym_red )
215
+ return _check_subset_params (reasons , parameters , valid_input_set , "chem_shift" )
215
216
216
217
217
218
def _check_dipol_correction_params (reasons , parameters , valid_input_set ):
218
- # LDIPOL.
219
- default_ldipol = False
220
- valid_ldipol = valid_input_set .incar .get ("LDIPOL" , default_ldipol )
221
- _check_required_params (reasons , parameters , "LDIPOL" , default_ldipol , valid_ldipol )
222
-
223
- # LMONO.
224
- default_lmono = False
225
- valid_lmono = valid_input_set .incar .get ("LMONO" , default_lmono )
226
- _check_required_params (reasons , parameters , "LMONO" , default_lmono , valid_lmono )
227
-
228
- # IDIPOL.
229
- default_idipol = 0
230
- valid_idipol = valid_input_set .incar .get ("IDIPOL" , default_idipol )
231
- _check_required_params (reasons , parameters , "IDIPOL" , default_idipol , valid_idipol )
232
-
233
- # EPSILON.
234
- default_epsilon = 1.0
235
- valid_epsilon = valid_input_set .incar .get ("EPSILON" , default_epsilon )
236
- _check_required_params (reasons , parameters , "EPSILON" , default_epsilon , valid_epsilon )
237
-
238
- # EFIELD.
239
- default_efield = 0.0
240
- valid_efield = valid_input_set .incar .get ("EFIELD" , default_efield )
241
- _check_required_params (reasons , parameters , "EFIELD" , default_efield , valid_efield )
219
+ return _check_subset_params (reasons , parameters , valid_input_set , "dipol" )
242
220
243
221
244
222
def _check_electronic_params (reasons , parameters , incar , valid_input_set , calcs_reversed , structure , potcar = None ):
@@ -624,14 +602,7 @@ def _check_lmaxmix_and_lmaxtau(reasons, warnings, parameters, incar, valid_input
624
602
625
603
626
604
def _check_magnetism_params (reasons , parameters , valid_input_set ):
627
- for key in _categories ["ncl" ]:
628
- _check_required_params (
629
- reasons ,
630
- parameters ,
631
- key ,
632
- _vasp_defaults [key ],
633
- valid_input_set .incar .get ("LNONCOLLINEAR" , _vasp_defaults [key ]),
634
- )
605
+ return _check_subset_params (reasons , parameters , valid_input_set , "ncl" )
635
606
636
607
637
608
def _check_misc_params (
@@ -646,13 +617,12 @@ def _check_misc_params(
646
617
structure ,
647
618
):
648
619
for key in _categories ["misc" ]:
649
- valid_deper = valid_input_set .incar .get (key , _vasp_defaults [key ])
650
620
_check_required_params (
651
621
reasons ,
652
622
parameters ,
653
623
key ,
654
624
_vasp_defaults [key ],
655
- valid_deper ,
625
+ valid_input_set . incar . get ( key , _vasp_defaults [ key ]) ,
656
626
allow_close = False if isinstance (key , int ) else True ,
657
627
)
658
628
@@ -846,6 +816,17 @@ def _check_write_params(reasons, parameters, valid_input_set):
846
816
_check_required_params (reasons , parameters , "LOPTICS" , False , valid_loptics )
847
817
848
818
819
+ def _check_subset_params (reasons , parameters , valid_input_set , subset ):
820
+ for key in _categories [subset ]:
821
+ _check_required_params (
822
+ reasons ,
823
+ parameters ,
824
+ key ,
825
+ _vasp_defaults [key ],
826
+ valid_input_set .incar .get (key , _vasp_defaults [key ]),
827
+ )
828
+
829
+
849
830
def _check_required_params (
850
831
reasons , parameters , input_tag , default_val , required_val , allow_close = False , extra_comments_upon_failure = ""
851
832
):
0 commit comments