示例#1
0
文件: radau5.py 项目: zcemycl/odespy
    def initialize_for_solve(self):
        self.func_wrappers()
        self.set_tol()
        # Flags to indicate whether jac and mas are provided
        self.ijac = int(hasattr(self, 'jac_f77_radau5'))
        self.imas = int(hasattr(self, 'mas_f77'))
        self.set_dummy_functions()

        ljac = self.neq if ((not hasattr(self, 'ml')) or \
            (self.ml == self.neq)) else (self.ml + self.mu + 1)
        lmas = 0 if not self.imas else (self.neq \
            if ((not hasattr(self, 'mlmas')) or (self.mlmas == self.neq)) \
                 else (self.mlmas + self.mumas + 1))
        le = self.neq if ((not hasattr(self, 'ml')) or \
            (self.ml == self.neq)) else (2*self.ml + self.mu + 1)
        self.lwork = self.neq * (ljac + lmas + 3 * le + 12) + 20
        self.liwork = 3 * self.neq + 20

        # Arrays to specify how the problem is to be solved.
        self.iwork = np.zeros(self.liwork, int)
        self.work = np.zeros(self.lwork, float)
        self.iwork[1] = getattr(self, 'nsteps', 0)
        self.work[1] = getattr(self, 'safety')
        self.work[6] = getattr(self, 'max_step', 0.)

        Solver.initialize_for_solve(self)  # Common settings
示例#2
0
文件: radau5.py 项目: apetcho/odespy
    def initialize_for_solve(self):
        self.func_wrappers()
        self.set_tol()
        # Flags to indicate whether jac and mas are provided
        self.ijac = int(hasattr(self, 'jac_f77_radau5'))
        self.imas = int(hasattr(self, 'mas_f77'))
        self.set_dummy_functions()

        ljac = self.neq if ((not hasattr(self, 'ml')) or \
            (self.ml == self.neq)) else (self.ml + self.mu + 1)
        lmas = 0 if not self.imas else (self.neq \
            if ((not hasattr(self, 'mlmas')) or (self.mlmas == self.neq)) \
                 else (self.mlmas + self.mumas + 1))
        le = self.neq if ((not hasattr(self, 'ml')) or \
            (self.ml == self.neq)) else (2*self.ml + self.mu + 1)
        self.lwork = self.neq*(ljac + lmas + 3*le + 12) + 20
        self.liwork = 3*self.neq + 20

        # Arrays to specify how the problem is to be solved.
        self.iwork = np.zeros(self.liwork, int)
        self.work = np.zeros(self.lwork, float)
        self.iwork[1] = getattr(self, 'nsteps', 0)
        self.work[1] = getattr(self, 'safety')
        self.work[6] = getattr(self, 'max_step', 0.)

        Solver.initialize_for_solve(self)   # Common settings