Skip to content

Commit 15ceb4c

Browse files
Continue refactor, start to consolidate checks into prodecural check
1 parent 5bf28b1 commit 15ceb4c

File tree

1 file changed

+24
-43
lines changed

1 file changed

+24
-43
lines changed

pymatgen/io/validation/check_incar.py

+24-43
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@
1212
"AMGGAC": 1.0,
1313
"DEPER": 0.3,
1414
"EBREAK": 0.0,
15+
"EFIELD": 0.0,
16+
"EPSILON": 1.0,
1517
"GGA_COMPAT": True,
1618
"ICHARG": 2,
1719
"ICORELEVEL": 0,
20+
"IDIPOL": 0,
1821
"IMAGES": 0,
1922
"INIWAV": 1,
2023
"ISTART": 0,
@@ -23,17 +26,21 @@
2326
"LBERRY": False,
2427
"LCALCEPS": False,
2528
"LCALCPOL": False,
29+
"LCHIMAG": False,
2630
"LDAU": False,
2731
"LDAUU": [],
2832
"LDAUJ": [],
2933
"LDAUL": [],
3034
"LDAUTYPE": 2,
35+
"LDIPOL": False,
3136
"LEPSILON": False,
3237
"LHFCALC": False,
3338
"LHYPERFINE": False,
3439
"LKPOINTS_OPT": False,
3540
"LKPROJ": False,
41+
"LMONO": False,
3642
"LMP2LT": False,
43+
"LNMR_SYM_RED": False,
3744
"LNONCOLLINEAR": False,
3845
"LOCPROJ": None,
3946
"LRPA": False,
@@ -47,6 +54,8 @@
4754

4855
_categories = {
4956
"hybrid": ("AEXX", "AGGAC", "AGGAX", "ALDAX", "AMGGAX", "ALDAC", "AMGGAC", "LHFCALC"),
57+
"chem_shift": ("LCHIMAG", "LNMR_SYM_RED"),
58+
"dipol": ("EFIELD", "EPSILON", "IDIPOL", "LDIPOL", "LMONO"),
5059
"ldau": ("LDAUU", "LDAUJ", "LDAUL", "LDAUTYPE"),
5160
"misc": (
5261
"DEPER",
@@ -203,42 +212,11 @@ def _get_valid_ismears_and_sigma(parameters, bandgap, nionic_steps):
203212

204213

205214
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")
215216

216217

217218
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")
242220

243221

244222
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
624602

625603

626604
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")
635606

636607

637608
def _check_misc_params(
@@ -646,13 +617,12 @@ def _check_misc_params(
646617
structure,
647618
):
648619
for key in _categories["misc"]:
649-
valid_deper = valid_input_set.incar.get(key, _vasp_defaults[key])
650620
_check_required_params(
651621
reasons,
652622
parameters,
653623
key,
654624
_vasp_defaults[key],
655-
valid_deper,
625+
valid_input_set.incar.get(key, _vasp_defaults[key]),
656626
allow_close=False if isinstance(key, int) else True,
657627
)
658628

@@ -846,6 +816,17 @@ def _check_write_params(reasons, parameters, valid_input_set):
846816
_check_required_params(reasons, parameters, "LOPTICS", False, valid_loptics)
847817

848818

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+
849830
def _check_required_params(
850831
reasons, parameters, input_tag, default_val, required_val, allow_close=False, extra_comments_upon_failure=""
851832
):

0 commit comments

Comments
 (0)