def _eval(self, z):
     """
     Solves the dynamical system for given parameters x.
     """
     z = view_as_column(z)
     x = np.exp(z)
     # Points where the solution will be evaluated
     t = np.array([0., 1./6, 1./3, 1./2, 2./3, 5./6, 1.])
     t = view_as_column(t)
     # Initial condition
     y0 = np.array([1., 0., 0., 0., 0., 0.])
     y0 = view_as_column(y0)
     assert x.shape[0] == 5
     sol = f(x[:,0], y0[:,0], t[:,0])
     J = df(x[:,0], y0[:,0], t[:,0])
     H = df2(x[:,0], y0[:,0], t[:,0])
     y = np.delete(sol.reshape((7,6)), 2, 1).flatten() # The 3rd species is unobservable
     dy = np.array([np.delete(J[:,i].reshape((7,6)), 2, 1).reshape(35) for i in range(J.shape[1])]) # Delete the 3rd species
     d2y = np.zeros((35, H.shape[1], H.shape[2]))
     for i in range(H.shape[1]):
         for j in range(H.shape[2]):
             d2y[:,i,j]= np.delete(H[:,i,j].reshape((7,6)), 2, 1).reshape(35) # Delete the 3rd species
     state = {}
     state['f'] = y
     state['f_grad'] = dy.T * x.T
     xx = np.kron(x, x.T)
     state['f_grad_2'] = d2y * xx
     return state
 def _eval(self, x):
     """
     Solves the dynamical system for given parameters x.
     """
     x = view_as_column(x)
     # Points where the solution will be evaluated
     t = np.array([0., 30., 60., 90., 120., 150., 180.])
     t = view_as_column(t)
     # Initial condition
     y0 = np.array([500., 0., 0., 0., 0., 0.])
     y0 = view_as_column(y0)
     assert x.shape[0] == 5
     sol = f(x[:, 0], y0[:, 0], t[:, 0])
     J = df(x[:, 0], y0[:, 0], t[:, 0])
     H = df2(x[:, 0], y0[:, 0], t[:, 0])
     y = np.delete(sol.reshape((7, 6)), 2,
                   1).flatten()  # The 3rd species is unobservable
     dy = np.array([
         np.delete(J[:, i].reshape((7, 6)), 2, 1).reshape(35)
         for i in range(J.shape[1])
     ])  # Delete the 3rd species
     d2y = np.zeros((35, H.shape[1], H.shape[2]))
     for i in range(H.shape[1]):
         for j in range(H.shape[2]):
             d2y[:, i, j] = np.delete(H[:, i, j].reshape(
                 (7, 6)), 2, 1).reshape(35)  # Delete the 3rd species
     state = {}
     state['f'] = y
     state['f_grad'] = dy.T
     state['f_grad_2'] = d2y
     return state
コード例 #3
0
ファイル: _forward_advection.py プロジェクト: yxqd/uq-course
 def _eval(self, xs):
     """
     Solves the advection equation for u and its derivatives for a given 
     source location xs. 
     """
     xs = view_as_column(xs)
     assert xs.shape[0] == 2
     nx = 50
     ny = nx
     dx = 0.1
     dy = dx
     mesh = fp.Grid2D(dx=dx, dy=dy, nx=nx, ny=ny)
     vx, vy = make_V_field(mesh)
     u = f(xs[:, 0], mesh, vx, vy)
     du1 = df(xs[:, 0], mesh, vx, vy, 1)
     du2 = df(xs[:, 0], mesh, vx, vy, 2)
     d2u11 = df2(xs[:, 0], mesh, vx, vy, 1, 1)
     d2u22 = df2(xs[:, 0], mesh, vx, vy, 1, 1)
     d2u12 = df2(xs[:, 0], mesh, vx, vy, 1, 2)
     dU = np.hstack([view_as_column(du1), view_as_column(du2)])
     d2U = np.hstack([
         view_as_column(d2u11),
         view_as_column(d2u12),
         view_as_column(d2u12),
         view_as_column(d2u22)
     ])
     d2U = d2U.reshape((d2U.shape[0], 2, 2))
     state = {}
     state['f'] = u  #view_as_column(u)
     state['f_grad'] = dU
     state['f_grad_2'] = d2U
     return state
 def _eval(self, xs):
     """
     Solves the diffusion equations for u and its derivatives for a given 
     source location xs. 
     """
     xs = view_as_column(xs)
     assert xs.shape[0] == 2
     nx = 25
     ny = nx
     dx = 0.04
     dy = dx
     mesh = fp.Grid2D(dx=dx, dy=dy, nx=nx, ny=ny)
     u = f(xs[:,0], mesh)
     du1 = df(xs[:,0], mesh, 1)
     du2 = df(xs[:,0], mesh, 2)
     d2u11 = df2(xs[:,0], mesh, 1, 1)
     d2u22 = df2(xs[:,0], mesh, 1, 1)
     d2u12 = df2(xs[:,0], mesh, 1, 2)
     dU = np.hstack([view_as_column(du1), view_as_column(du2)])
     d2U = np.hstack([view_as_column(d2u11), view_as_column(d2u12), view_as_column(d2u12), view_as_column(d2u22)])
     d2U = d2U.reshape((d2U.shape[0], 2, 2))
     state = {}
     state['f'] = u #view_as_column(u)
     state['f_grad'] = dU
     state['f_grad_2'] = d2U
     return state
コード例 #5
0
 def _eval(self, x):
     """
     Solves the dynamical system for given parameters x.
     """
     x = view_as_column(x)
     # Points where the solution will be evaluated
     t = np.array([0., 1. / 6, 1. / 3, 1. / 2, 2. / 3, 5. / 6, 1.])
     t = view_as_column(t)
     # Initial condition
     y0 = np.array([1., 0., 0., 0., 0., 0.])
     y0 = view_as_column(y0)
     assert x.shape[0] == 5
     sol = f(x[:, 0], y0[:, 0], t[:, 0])
     J = df(x[:, 0], y0[:, 0], t[:, 0])
     H = df2(x[:, 0], y0[:, 0], t[:, 0])
     y = np.delete(sol.reshape((7, 6)), 2,
                   1).flatten()  # The 3rd species is unobservable
     sol_y = np.delete(y.reshape((7, 5)), 0, 0).reshape(
         30)  # Delete the initial conditions from the data
     dy = np.array([
         np.delete(J[:, i].reshape((7, 6)), 2, 1).reshape(35)
         for i in range(J.shape[1])
     ])  # Delete the 3rd species
     sol_dy = np.array([
         np.delete(dy[i, :].reshape((7, 5)), 0, 0).flatten()
         for i in range(dy.shape[0])
     ])  # Delete the initial cond.
     sol_d2y = np.zeros((30, H.shape[1], H.shape[2]))
     for i in range(H.shape[1]):
         for j in range(H.shape[2]):
             d2y = np.delete(H[:, i, j].reshape((7, 6)), 2,
                             1).reshape(35)  # Delete the 3rd species
             sol_d2y[:, i, j] = np.delete(d2y.reshape((7, 5)), 0,
                                          0).flatten()
     state = {}
     state['f'] = sol_y
     state['f_grad'] = sol_dy.T
     state['f_grad_2'] = sol_d2y
     return state
 def _eval_u(self, xs):
     """
     Solves only the diffusion equation for u for a given 
     source location xs. 
     """
     xs = view_as_column(xs)
     assert xs.shape[0] == 2
     nx = 25
     ny = nx
     dx = 0.04
     dy = dx
     mesh = fp.Grid2D(dx=dx, dy=dy, nx=nx, ny=ny)
     u = f(xs[:,0], mesh)
     return u