docs: def add_Struct(self, struct=None,
                     Cls=None, Name=None, Poly=None,
                     mobile=False, shot=None,
                     Lim=None, Type=None,
                     dextraprop=None):
          """ Add a Struct instance to the config
  
          An already existing Struct subclass instance can be added
          Or it will be created from the (Cls,Name,Poly,Lim) keyword args
  
          """
          # Check inputs
          C0a = struct is None
          C1a = all([ss is None for ss in [Cls,Name,Poly,Lim,Type]])
          if not np.sum([C0a,C1a])==1:
              msg = "Provide either:"
              msg += "\n    - struct: a Struct subclass instance"
              msg += "\n    - the keyword args to create one"
              msg += "\n        (Cls,Name,Poly,Lim,Type)\n"
              msg += "\n You provded:"
              msg += "\n    - struct: {0}, {1}".format(str(struct),
                                                       type(struct))
              raise Exception(msg)
  
          # Create struct if not provided
          if C0a:
              if not (type(Cls) is str or issubclass(Cls,Struct)):
                  msg = "Cls must be either:"
                  msg += "\n    - a Struct subclass"
                  msg += "\n    - the str Name of it (e.g.: 'PFC','CoilPF',...)"
                  raise Exception(msg)
              if type(Cls) is str:
                  Cls = eval('%s'%Cls)
  
              # Preformat Lim and Type
              if Lim is None:
                  Lim = self.Lim
              if Type is None:
                  Type = self.Id.Type
  
              # Create instance
              struct = Cls(Poly=Poly, Name=Name, Lim=Lim, Type=Type,
                           mobile=mobile, shot=shot, Exp=self.Id.Exp)
  
          C0b = issubclass(struct.__class__, Struct)
          assert C0b, "struct must be a Struct subclass instance !"
  
          # Prepare dextraprop
          dextra = self.dextraprop
          lk = sorted([k[1:] for k in dextra.keys() if k!='lprop'])
          if dextraprop is None:
              if not dextra in [None,{}]:
                  msg = "The current Config instance has the following extraprop:"
                  msg += "\n    - " + "\n    - ".join(lk)
                  msg += "\n  => Please specify a dextraprop for struct !"
                  msg += "\n     (using the same keys !)"
                  raise Exception(msg)
          else:
              assert isinstance(dextraprop,dict)
              assert all([k in lk for k in dextraprop.keys()])
              assert all([k in dextraprop.keys() for k in lk])
              dx = {}
              for k in lk:
                  dk = 'd'+k
                  dx[k] = {}
                  for k0 in dextra[dk].keys():
                      dx[k][k0] = {}
                      for k1 in dextra[dk][k0].keys():
                          dx[k][k0][k1] = dextra[dk][k0][k1]
                  if not struct.Id.Cls in dx[k].keys():
                      dx[k][struct.Id.Cls] = {struct.Id.Name:dextraprop[k]}
                  else:
                      dx[k][struct.Id.Cls][struct.Id.Name] = dextraprop[k]
  
          # Set self.lStruct
          lS = self.lStruct + [struct]
          self._init(lStruct=lS, Lim=self.Lim, dextraprop=dx)