docs: def set_voltage_level(self, mode='distance'):
          """ Sets voltage level of MV grid according to load density of MV Grid District or max.
          distance between station and Load Area.
  
          Parameters
          ----------
          mode: str
              method to determine voltage level
              
              * 'load_density': Decision on voltage level is determined by load density
                of the considered region. Urban areas (load density of
                >= 1 MW/km2 according to [#]_) usually got a voltage of
                10 kV whereas rural areas mostly use 20 kV.
  
              * 'distance' (default): Decision on voltage level is determined by the max.
                distance between Grid District's HV-MV station and Load
                Areas (LA's centre is used). According to [#]_ a value of
                1kV/kV can be assumed. The `voltage_per_km_threshold`
                defines the distance threshold for distinction.
                (default in config = (20km+10km)/2 = 15km)
  
          References
          ----------
          .. [#] Falk Schaller et al., "Modellierung realitätsnaher zukünftiger Referenznetze im Verteilnetzsektor zur
              Überprüfung der Elektroenergiequalität", Internationaler ETG-Kongress Würzburg, 2011
          .. [#] Klaus Heuck et al., "Elektrische Energieversorgung", Vieweg+Teubner, Wiesbaden, 2007
  
          """
  
          if mode == 'load_density':
  
              # get power factor for loads
              cos_phi_load = cfg_ding0.get('assumptions', 'cos_phi_load')
  
              # get load density
              load_density_threshold = float(cfg_ding0.get('assumptions',
                                                           'load_density_threshold'))
  
              # transform MVGD's area to epsg 3035
              # to achieve correct area calculation
              projection = partial(
                  pyproj.transform,
                  pyproj.Proj(init='epsg:4326'),  # source coordinate system
                  pyproj.Proj(init='epsg:3035'))  # destination coordinate system
  
              # calculate load density
              kw2mw = 1e-3
              sqm2sqkm = 1e6
              load_density = ((self.grid_district.peak_load * kw2mw / cos_phi_load) /
                              (transform(projection, self.grid_district.geo_data).area / sqm2sqkm)) # unit MVA/km^2
  
              # identify voltage level
              if load_density < load_density_threshold:
                  self.v_level = 20
              elif load_density >= load_density_threshold:
                  self.v_level = 10
              else:
                  raise ValueError('load_density is invalid!')
  
          elif mode == 'distance':
  
              # get threshold for 20/10kV disambiguation
              voltage_per_km_threshold = float(cfg_ding0.get('assumptions',
                                                             'voltage_per_km_threshold'))
  
              # initial distance
              dist_max = 0
              import time
              start = time.time()
              for node in self.graph_nodes_sorted():
                  if isinstance(node, LVLoadAreaCentreDing0):
                      # calc distance from MV-LV station to LA centre
                      dist_node = calc_geo_dist_vincenty(self.station(), node) / 1e3
                      if dist_node > dist_max:
                          dist_max = dist_node
  
              # max. occurring distance to a Load Area exceeds threshold => grid operates at 20kV
              if dist_max >= voltage_per_km_threshold:
                  self.v_level = 20
              # not: grid operates at 10kV
              else:
                  self.v_level = 10
  
          else:
              raise ValueError('parameter \'mode\' is invalid!')