Пример #1
0
    def test_compute_accumulation(self):

        problem = OneDimReservoir(self.inputs)

        np.testing.assert_allclose(problem.compute_accumulation(0), 100.0)

        return
Пример #2
0
    def test_compute_transmissibility(self):

        problem = OneDimReservoir(self.inputs)

        np.testing.assert_allclose(problem.compute_transmissibility(0, 0),
                                   4000.0)

        return
Пример #3
0
    def test_implicit_solve(self):

        implicit = OneDimReservoir(self.inputs)
        implicit.solve()
        np.testing.assert_allclose(implicit.get_solution(),
                                   np.array([1582.9, 1184.8, 1051.5, 1015.9]),
                                   atol=0.5)
        return
Пример #4
0
    def test_implicit_solve_one_step(self):

        implicit = OneDimReservoir(self.inputs)
        implicit.solve_one_step()
        np.testing.assert_allclose(
            implicit.get_solution(),
            np.array([1295.1463, 1051.1036, 1008.8921, 1001.7998]),
            atol=0.5)
        return
Пример #5
0
    def test_implicit_heterogeneous_permeability_solve_one_step(self):

        self.inputs['reservoir']['permeability'] = [10., 100., 50., 20]

        implicit = OneDimReservoir(self.inputs)
        implicit.solve_one_step()
        np.testing.assert_allclose(implicit.get_solution(),
                                   np.array([1085.3, 1005.8, 1001.3, 1000.1]),
                                   atol=0.5)
        return
Пример #6
0
    def test_implicit_heterogeneous_permeability_and_grid_size_solve(self):

        self.inputs['reservoir']['permeability'] = [10., 100., 50., 20]
        self.inputs['numerical']['delta x'] = [2000., 3000., 1500., 3500]

        implicit = OneDimReservoir(self.inputs)
        implicit.solve()
        np.testing.assert_allclose(implicit.get_solution(),
                                   np.array([1295.6, 1039.1, 1019.9, 1002.5]),
                                   atol=0.5)
        return
Пример #7
0
    def test_explicit_solve_one_step(self):

        self.inputs['numerical']['solver'] = 'explicit'

        explicit = OneDimReservoir(self.inputs)

        explicit.solve_one_step()

        np.testing.assert_allclose(explicit.get_solution(),
                                   np.array([1506., 1000., 1000., 1000.004]),
                                   atol=0.5)
        return
Пример #8
0
    def test_mixed_method_solve_crank_nicolson(self):

        self.inputs['numerical']['solver'] = {'mixed method': {'theta': 0.5}}

        mixed = OneDimReservoir(self.inputs)

        mixed.solve()

        np.testing.assert_allclose(mixed.get_solution(),
                                   np.array([1642.0, 1196.5, 1043.8, 1009.1]),
                                   atol=0.5)
        return
Пример #9
0
    def test_explicit_solve(self):

        self.inputs['numerical']['solver'] = 'explicit'

        explicit = OneDimReservoir(self.inputs)

        explicit.solve()

        np.testing.assert_allclose(explicit.get_solution(),
                                   np.array([1689.8, 1222.3, 1032.4, 1000.0]),
                                   atol=0.5)
        return
Пример #10
0
    def test_mixed_method_solve_one_step_crank_nicolson(self):

        self.inputs['numerical']['solver'] = {'mixed method': {'theta': 0.5}}

        mixed = OneDimReservoir(self.inputs)

        mixed.solve_one_step()

        np.testing.assert_allclose(mixed.get_solution(),
                                   np.array([1370.4, 1037.8, 1003.8, 1000.4]),
                                   atol=0.5)
        return
Пример #11
0
    def test_mixed_method_solve_one_step_explicit(self):

        self.inputs['numerical']['solver'] = {'mixed method': {'theta': 1.0}}

        mixed_explicit = OneDimReservoir(self.inputs)

        mixed_explicit.solve_one_step()

        np.testing.assert_allclose(mixed_explicit.get_solution(),
                                   np.array([1506., 1000., 1000., 1000.004]),
                                   atol=0.5)
        return
Пример #12
0
    def test_mixed_method_solve_one_step_implicit(self):

        self.inputs['numerical']['solver'] = {'mixed method': {'theta': 0.0}}

        mixed_implicit = OneDimReservoir(self.inputs)

        mixed_implicit.solve_one_step()

        np.testing.assert_allclose(
            mixed_implicit.get_solution(),
            np.array([1295.1463, 1051.1036, 1008.8921, 1001.7998]),
            atol=0.5)
        return
Пример #13
0
    def test_is_transmissiblity_matrix_sparse(self):

        problem = OneDimReservoir(self.inputs)

        assert scipy.sparse.issparse(problem.T)

        return
Пример #14
0
    def test_implicit_solve_reverse_boundary_conditions(self):

        self.inputs['boundary conditions'] = {
            'right': {
                'type': 'prescribed pressure',
                'value': 2000  #psi
            },
            'left': {
                'type': 'prescribed flux',
                'value': 0  #ft^3/day
            }
        }

        implicit = OneDimReservoir(self.inputs)
        implicit.solve()
        np.testing.assert_allclose(implicit.get_solution(),
                                   np.array([1015.9, 1051.5, 1184.8, 1582.9]),
                                   atol=0.5)
        return