def __init__(self, N, X, y0, name ) : Explicit_Problem.__init__(self,y0=y0,name=name) # self.T = 298.15 self.N = N self.X = X self.x_e = numpy.linspace( 0.0, X, N+1 ) self.x_m = numpy.array( [ 0.5*(self.x_e[i+1]+self.x_e[i]) for i in range(N) ], dtype='d' ) self.vols = numpy.array( [ (self.x_e[i+1] - self.x_e[i]) for i in range(N)], dtype='d' ) ### Diffusivity Ns = int(N/8.) Na = int(N/3.) Nc = N - Ns - Na self.La, self.Ls, self.Lc = Na*X/N, Ns*X/N, Nc*X/N self.Na, self.Ns, self.Nc = Na, Ns, Nc eps_a = 0.3 eps_s = 0.5 eps_c = 0.25 ba, bs, bc = 0.8, 0.5, 0.5 eps_a_vec = [ eps_a for i in range(Na) ] # list( eps_a + eps_a/2.*numpy.sin(numpy.linspace(0.,Na/4,Na)) ) # list(eps_a + eps_a*numpy.random.randn(Na)/5.) # eps_s_vec = [ eps_s for i in range(Ns) ] eps_c_vec = [ eps_c for i in range(Nc) ] # list( eps_c + eps_c/2.*numpy.sin(numpy.linspace(0.,Nc/4,Nc)) ) # list(eps_c + eps_c*numpy.random.randn(Nc)/5.) # self.eps_m = numpy.array( eps_a_vec + eps_s_vec + eps_c_vec ) self.K_m = 1./self.eps_m self.eps_mb = numpy.array( [ ea**ba for ea in eps_a_vec ] + [ es**bs for es in eps_s_vec ] + [ ec**bc for ec in eps_c_vec ] ) self.eps_eff = numpy.array( [ ea**(1.+ba) for ea in eps_a_vec ] + [ es**(1.+bs) for es in eps_s_vec ] + [ ec**(1.+bc) for ec in eps_c_vec ] ) t_plus = 0.4 F = 96485.0 Rp_c = 6.5e-6 Rp_a = 12.0e-6 as_c = 3.*eps_c/Rp_c as_a = 3.*eps_a/Rp_a self.as_c = as_c self.as_a = as_a Ba = [ (1.-t_plus)*as_a/eps_a for i in range(Na) ] Bs = [ 0.0 for i in range(Ns) ] Bc = [ (1.-t_plus)*as_c/eps_c for i in range(Nc) ] self.B = numpy.diag( Ba+Bs+Bc )
def __init__(self,compList,x0=None,y0=None,sw=None): Explicit_Problem.__init__(self) self.components = compList # self.solver = None if not x0 is None and not y0 is None: self.updateValues(x0,y0,sw) #Set initial conditions
def __init__(self, new_rhs, y0, rhs_jac=None): Explicit_Problem.__init__(self, y0=y0) self.rhs = new_rhs self.rhs_jac = rhs_jac