@staticmethod
def _initialise_states(dict_desc, dict_param, kwa):
    """
        This function initialises the model states before starting the simulations.
        If a warm-up run is used, this initialisation happens before the start of the warm-up run.
        If no warm-up is used, this initialisation happens before the start of the actual simulation run.
        """
    area_m2 = dict_desc['area']
    my_dict = dict()
    try:
        my_dict.update({'c_s_v_h2o_ove': kwa['aar'] * kwa['r-o_ratio'] *
            kwa['r-o_split'][0] / 1000 * area_m2 / 8766 * dict_param[
            'c_p_sk'], 'c_s_v_h2o_int': kwa['aar'] * kwa['r-o_ratio'] * kwa
            ['r-o_split'][1] / 1000 * area_m2 / 8766 * dict_param['c_p_fk'],
            'c_s_v_h2o_dra': kwa['aar'] * kwa['r-o_ratio'] * kwa[
            'r-o_split'][2] / 1000 * area_m2 / 8766 * dict_param['c_p_fk'],
            'c_s_v_h2o_sgw': kwa['aar'] * kwa['r-o_ratio'] * kwa[
            'r-o_split'][3] / 1000 * area_m2 / 8766 * dict_param['c_p_gk'],
            'c_s_v_h2o_dgw': kwa['aar'] * kwa['r-o_ratio'] * kwa[
            'r-o_split'][4] / 1000 * area_m2 / 8766 * dict_param['c_p_gk']})
    except KeyError:
        my_dict.update({'c_s_v_h2o_ove': 0.0, 'c_s_v_h2o_int': 0.0,
            'c_s_v_h2o_dra': 0.0, 'c_s_v_h2o_sgw': 0.0, 'c_s_v_h2o_dgw': 0.0})
    my_dict.update({'c_s_v_h2o_ly1': dict_param['c_p_z'] / 12 / 1000 *
        area_m2, 'c_s_v_h2o_ly2': dict_param['c_p_z'] / 12 / 1000 * area_m2,
        'c_s_v_h2o_ly3': dict_param['c_p_z'] / 12 / 1000 * area_m2,
        'c_s_v_h2o_ly4': dict_param['c_p_z'] / 12 / 1000 * area_m2,
        'c_s_v_h2o_ly5': dict_param['c_p_z'] / 12 / 1000 * area_m2,
        'c_s_v_h2o_ly6': dict_param['c_p_z'] / 12 / 1000 * area_m2})
    return my_dict
