Returns the run type. Currently supports LDA, GGA, vdW-DF and HF calcs.

        TODO: Fix for other functional types like PW91, other vdW types, etc.

def run_type(self):
        """
        Returns the run type. Currently supports LDA, GGA, vdW-DF and HF calcs.

        TODO: Fix for other functional types like PW91, other vdW types, etc.
        """

        METAGGA_TYPES = {"TPSS", "RTPSS", "M06L", "MBJL", "SCAN", "MS0", "MS1", "MS2"}

        if self.parameters.get("LHFCALC", False):
            rt = "HF"
        elif self.parameters.get("METAGGA", "").strip().upper() in METAGGA_TYPES:
            rt = self.parameters["METAGGA"].strip().upper()
        elif self.parameters.get("LUSE_VDW", False):
            vdw_gga = {"RE": "DF", "OR": "optPBE", "BO": "optB88",
                       "MK": "optB86b", "ML": "DF2"}
            gga = self.parameters.get("GGA").upper()
            rt = "vdW-" + vdw_gga[gga]
        elif self.potcar_symbols[0].split()[0] == 'PAW':
            rt = "LDA"
        else:
            rt = "GGA"
        if self.is_hubbard:
            rt += "+U"
        return rt