Esempio n. 1
0
    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 )
Esempio n. 2
0
    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