예제 #1
0
    def test_solve(self):
        # Create model and solver parameters.
        mp = solver.ModelParams()
        mp.k_on = 0
        mp.k_off = 0
        mp.t_cut = 1

        sp = solver.SolverParams()
        sp.n = 100
        sp.m = 10

        # Define initial values.
        def const(x):
            return 1.0

        # Initialise tracers.
        x = np.array(np.linspace(0, 1, num=5))

        # Run solver.
        rho, ca, v, sigma, x, idx = solver.solve(mp, sp, const, const, x)

        # Check returned arrays.
        const_exp = np.vectorize(const)(np.zeros((sp.m + 1, sp.n)))

        np.testing.assert_equal(rho.shape, (sp.m + 1, sp.n))
        np.testing.assert_equal(ca.shape, (sp.m + 1, sp.n))
        np.testing.assert_allclose(rho, const_exp, atol=1e-7)
        np.testing.assert_allclose(ca, const_exp, atol=1e-7)
        np.testing.assert_allclose(v,
                                   np.zeros((sp.m + 1, sp.n + 1)),
                                   atol=1e-7)
예제 #2
0
# Set path where results are saved.
resultpath = 'results/{0}'.format(
    datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))
if not os.path.exists(resultpath):
    os.makedirs(resultpath)

# Create model and solver parameters.
mp = solver.ModelParams()
mp.eta = 1
mp.xi = 0.1
mp.chi = 1
mp.t_cut = 0
mp.k_on = 200
mp.k_off = 10

sp = solver.SolverParams()
sp.n = 300
sp.m = 300
sp.T = 0.1
sp.dt = 2.5e-6
sp.delta = 1e-2


# Define initial values.
def ca_init(x):
    return stats.uniform.pdf(x, 0, 1) * 20 \
        - math.sin(40 * x + math.cos(40 * x)) / 5


def rho_init(x):
    return stats.uniform.pdf(x, 0, 1) \