def test_implicit_solve_with_wells_1(self): self.inputs['wells'] = { 'rate': { 'locations': [(0.0, 1.0)], 'values': [1000], 'radii': [0.25] }, 'bhp': { 'locations': [(6250.0, 1.0)], 'values': [800], 'radii': [0.25] } } self.inputs['reservoir'] = { 'permeability': 50, #mD 'porosity': 0.2, 'length': 10000, #ft 'height': 2500, #ft 'depth': 80 #ft } self.inputs['boundary conditions']['left']['type'] = 'prescribed flux' self.inputs['boundary conditions']['left']['value'] = 0.0 self.inputs['boundary conditions']['right'][ 'type'] = 'prescribed pressure' self.inputs['boundary conditions']['right']['value'] = 2000.0 implicit = TwoDimReservoir(self.inputs) implicit.solve() np.testing.assert_allclose(implicit.get_solution(), np.array([1028.9, 1031.6, 1096.7, 1563.7]), atol=0.5) return
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 }, 'top': { 'type': 'prescribed flux', 'value': 0 #ft^3/day }, 'bottom': { 'type': 'prescribed flux', 'value': 0 #ft^3/day } } implicit = TwoDimReservoir(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
def test_implicit_solve(self): implicit = TwoDimReservoir(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
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 = TwoDimReservoir(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
def test_mixed_method_solve_crank_nicolson(self): self.inputs['numerical']['solver'] = {'mixed method': {'theta': 0.5}} mixed = TwoDimReservoir(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
def test_explicit_solve(self): self.inputs['numerical']['solver'] = 'explicit' explicit = TwoDimReservoir(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