def __init__(self, *arg, **kargs): r"""Solution Initiatlization Routine See :class:`Solution` for more info. """ import sys if 'claw_package' in kargs.keys(): claw_package = kargs['claw_package'] else: claw_package = None if claw_package is not None and claw_package in sys.modules: self.claw_package = sys.modules[claw_package] else: claw_package_name = self.__module__[0:self.__module__.find('.')] if claw_package_name in sys.modules: self.claw_package = sys.modules[claw_package_name] else: raise NotImplementedError( "Unable to determine solver package, please provide one") State = self.claw_package.State self.states = [] self.domain = None if len(arg) == 1: # Load frame frame = arg[0] self.read(frame, **kargs) elif len(arg) == 2: #Set domain if isinstance(arg[1], Domain): self.domain = arg[1] else: if not isinstance(arg[1], (list, tuple)): arg[1] = list(arg[1]) if isinstance(arg[1][0], Dimension): self.domain = Domain(Patch(arg[1])) elif isinstance(arg[1][0], Patch): self.domain = Domain(arg[1]) else: raise Exception("Invalid argument list") #Set state if isinstance(arg[0], State): # Single State self.states.append(arg[0]) elif isinstance(arg[0], (list, tuple)): if isinstance(arg[0][0], State): # List of States self.states = arg[0] elif isinstance(arg[0][0], int): self.states = State(self.domain, arg[0][0], arg[0][1]) else: raise Exception("Invalid argument list") elif isinstance(arg[0], int): self.states.append(State(self.domain, arg[0])) if self.states == [] or self.domain is None: raise Exception("Invalid argument list")