def get_info(outcar):
    """
    get the timing information from OUTCAR of vasp run
    :return out a dict -> {
        "total_cores": int,
        "job_done": bool,
        "start_time": xxx,
        "total_cpu_time": float,
        "elapsed_time": float,
    }
    """
    with open(outcar, 'r') as fin:
        lines = fin.readlines()
    # check whether calculation is finished
    if len(lines[-1].split()) == 4 and lines[-1].split()[0] == "Voluntary" and lines[-1].split()[1] == "context":
        job_done = True
    else:
        job_done = False

    out = {}
    out["job_done"] = job_done

    for line in lines:
        # if it is an empty line continue to next line
        if len(line.split()) == 0:
            continue
        if "running on" in line and "total cores" in line:
            out["total_cores"] = int(line.split()[2])
        if line.split()[0] == "executed" and line.split()[1] == "on" and line.split()[3] == "date":
            out["start_time"] = line.split("\n")[0]
        if line.split()[0] == "Total" and line.split()[1] == "CPU" and line.split()[2] == "time":
            out["total_cpu_time"] = float(line.split()[5]) # in unit of second
        if line.split()[0] == "Elapsed" and line.split()[1] == "time":
            out["elapsed_time"] = float(line.split()[3])

    return out