docs: def parallelisation(network, args, group_size, extra_functionality=None):
  
      """
      Function that splits problem in selected number of 
      snapshot groups and runs optimization successive for each group. 
          
      Not useful for calculations with storage untis or extension.  
  
      Parameters
      ----------
      network : :class:`pypsa.Network
          Overall container of PyPSA
      args: dict
          Contains calculation settings of appl.py
  
      Returns
      -------
      network : :class:`pypsa.Network
          Overall container of PyPSA
      """
  
      print("Performing linear OPF, {} snapshot(s) at a time:".
            format(group_size))
      t = time.time()
  
      for i in range(int((args['end_snapshot'] - args['start_snapshot'] + 1)
          / group_size)):
          if i > 0:
              network.storage_units.state_of_charge_initial = network.\
                  storage_units_t.state_of_charge.loc[
                      network.snapshots[group_size * i - 1]]
          network.lopf(network.snapshots[
                       group_size * i:group_size * i + group_size],
                       solver_name=args['solver_name'],
                       solver_options=args['solver_options'],
                       extra_functionality=extra_functionality)
          network.lines.s_nom = network.lines.s_nom_opt
  
      print(time.time() - t / 60)
      return