コード例 #1
0
    def spatial_op(state):
        S,J = euler_operator(sbp, state) + \
              outflow_operator(sbp, state, 0, 'w') + \
              outflow_operator(sbp, state, 0, 'e') + \
              outflow_operator(sbp, state, 0, 's') + \
              outflow_operator(sbp, state, 0, 'n')

        return S, J
コード例 #2
0
ファイル: test_jacobians.py プロジェクト: oskaralund/sbpy
    def test_outflow_jacobian(self):
        S, J = outflow_operator(self.sbp, self.state, 0, 'w')
        J = J.todense()

        for i, grad in enumerate(J):
            f = lambda x: outflow_operator(self.sbp, x, 0, 'w')[0][i]
            grad_approx = approx_fprime(self.state, f, 1e-8)
            grad_exact = J[i, :]
            err = np.linalg.norm(grad_approx - grad_exact, ord=np.inf)
            print("Outflow SAT, Gradient error = {:.2e}".format(err))
            self.assertTrue(err < 1e-5)