def dict_add(d1, d2):
    """Add two dicts together without overwriting any values in the first dict. Returns a new dict without modifying
    the input dicts.

    Parameters
    ----------
    d1 : dict
        Main dictionary
    d2 : dict
        Dictionary of values to try to add

    Returns
    -------
    dict
        Combined dictionary, containing the elements of d1 and d2, except in the case where a key in d2 was the same
        as in d1, in which case only the value in d1 is used.
    """
    d = d1.copy()
    d.update({k: v for k, v in d2.items() if k not in d1})
    return d