Source code for core.datamodel

from sympy import Function, Symbol


[docs]class Parameter(Symbol): # superclass for ECOMOD params """ Superclass for ECOMOD parameters. 1-1 with sympy.Symbol """ def __new__(cls, name, **kwargs): obj = Symbol.__xnew__(cls, name) obj.__dict__.update(kwargs) return obj
[docs]class Phase(Function): """ Superclass for ECOMOD parameters. 1-1 with sympy.Function """ def __new__(cls, name, dim, desc, *args): obj = Function(name) obj.__dict__.update(dim=dim, desc=desc) # TODO: add dim desc as attributes of class return obj
# def __new__(cls, name, *args, **kwargs): # obj = Symbol.__xnew__(cls, name) # obj.dim = kwargs["dim"] # obj.desc = kwargs["desc"] # obj = Function(obj)(*args) # TODO: CHECK WHY functions in sympyfier == [] # return obj # def __init__(self, name, *args, **kwargs): # self.obj = Function(name)(*args) # self.__dict__.update(kwargs) # @property # def dim(self): # self.__dict__.update({'dim': self.dim}) # return self.dim # # @dim.setter # def dim(self, dim): # if isinstance(dim, str): # self.dim = dim # self.__dict__.update({'dim': self.dim}) # else: # raise TypeError('Dimension must be a string') # # @property # def desc(self): # self.__dict__.update({'desc': self.desc}) # return self.desc # # @desc.setter # def desc(self, desc): # if isinstance(desc, str): # self.desc = desc # self.__dict__.update({'desc': self.desc}) # else: # raise TypeError('Dimension must be a string')
[docs]class Boundary: pass
# class Boundary(Relational): # rel_op = "==" # def __new__(cls, lhs, rhs, rel_op, **kwargs): # obj = Relational.__new__(cls, lhs, rhs, rel_op) # #obj.__dict__ = {} # #obj.__dict__.update(kwargs) # return obj # # class IBoundary(Relational): # rel_op = "==" # def __new__(cls, lhs, rhs, rel_op, **kwargs): # obj = Relational.__new__(cls, lhs, rhs, rel_op) # #obj.__dict__ = {} # #obj.__dict__.update(kwargs) # return obj if __name__ == "__main__": t = Symbol('t', dim=1, desc=2) c = Symbol('c', dim=2, desc=3) a = Function('b', dim=1, desc=2) a =a(t,c) print(type(a.name)) print(a.dim) print(a.args) # print(t.dim)