|
26 | 26 | from pylops.utils.wavelets import ricker |
27 | 27 | from pylops.signalprocessing import Convolve1D |
28 | 28 | import sys |
29 | | -from PyGRDECL.GRDECL_Parser import GRDECL_Parser # https://github.com/BinWang0213/PyGRDECL/tree/master |
| 29 | +#from PyGRDECL.GRDECL_Parser import GRDECL_Parser # https://github.com/BinWang0213/PyGRDECL/tree/master |
30 | 30 | from scipy.interpolate import interp1d |
31 | 31 | from scipy.interpolate import griddata |
32 | 32 | from pipt.misc_tools.analysis_tools import store_ensemble_sim_information |
@@ -759,14 +759,13 @@ def run_fwd_sim(self, state, member_i, del_folder=True): |
759 | 759 |
|
760 | 760 | # The inherited simulator also has a run_fwd_sim. Call this. |
761 | 761 | self.ensemble_member = member_i |
762 | | -<<<<<<< Updated upstream |
763 | | - return super().run_fwd_sim(state, member_i, del_folder=del_folder) |
764 | 762 |
|
765 | | -======= |
766 | 763 | #return super().run_fwd_sim(state, member_i, del_folder=del_folder) |
| 764 | + |
| 765 | + |
767 | 766 | self.pred_data = super().run_fwd_sim(state, member_i, del_folder=del_folder) |
768 | 767 | return self.pred_data |
769 | | ->>>>>>> Stashed changes |
| 768 | + |
770 | 769 | def call_sim(self, folder=None, wait_for_proc=False, run_reservoir_model=None, save_folder=None): |
771 | 770 | # replace the sim2seis part (which is unusable) by avo based on Pylops |
772 | 771 |
|
@@ -909,10 +908,7 @@ def get_avo_result(self, folder, save_folder): |
909 | 908 | def calc_velocities(self, folder, save_folder, grid, v, f_dim): |
910 | 909 | # The properties in pem are only given in the active cells |
911 | 910 | # indices of active cells: |
912 | | -<<<<<<< Updated upstream |
913 | 911 |
|
914 | | -======= |
915 | | ->>>>>>> Stashed changes |
916 | 912 | true_indices = np.where(grid['ACTNUM']) |
917 | 913 |
|
918 | 914 | # Alt 2 |
@@ -959,7 +955,7 @@ def calc_velocities(self, folder, save_folder, grid, v, f_dim): |
959 | 955 | save_dic = {'vp': vp, 'vs': vs, 'rho': rho}#, 'bulkmod': self.bulkmod, 'shearmod': self.shearmod, |
960 | 956 | #'Pov': self.poverburden, 'P': self.pressure, 'Peff': self.peff, 'por': porosity} # for debugging |
961 | 957 | else: |
962 | | - save_dic = {'vp': vp, 'vs': vs, 'rho': rho, 'por': porosity, 'sgas': sgas, 'Pd': pdyn} |
| 958 | + save_dic = {'vp': vp, 'vs': vs, 'rho': rho}#, 'por': porosity, 'sgas': sgas, 'Pd': pdyn} |
963 | 959 |
|
964 | 960 | if save_folder is not None: |
965 | 961 | file_name = save_folder + os.sep + f"vp_vs_rho_vint{v}.npz" if save_folder[-1] != os.sep \ |
@@ -1033,12 +1029,12 @@ def _get_props(self, kw_file): |
1033 | 1029 | with np.load(file) as f: |
1034 | 1030 | exec(f'self.{kw} = f[ "{kw}" ]') |
1035 | 1031 | self.NX, self.NY, self.NZ = f['NX'], f['NY'], f['NZ'] |
1036 | | - else: |
1037 | | - reader = GRDECL_Parser(filename=file) |
1038 | | - reader.read_GRDECL() |
1039 | | - exec(f"self.{kw} = reader.{kw}.reshape((reader.NX, reader.NY, reader.NZ), order='F')") |
1040 | | - self.NX, self.NY, self.NZ = reader.NX, reader.NY, reader.NZ |
1041 | | - eval(f'np.savez("./{kw}.npz", {kw}=self.{kw}, NX=self.NX, NY=self.NY, NZ=self.NZ)') |
| 1032 | + #else: |
| 1033 | + # reader = GRDECL_Parser(filename=file) |
| 1034 | + # reader.read_GRDECL() |
| 1035 | + # exec(f"self.{kw} = reader.{kw}.reshape((reader.NX, reader.NY, reader.NZ), order='F')") |
| 1036 | + # self.NX, self.NY, self.NZ = reader.NX, reader.NY, reader.NZ |
| 1037 | + # eval(f'np.savez("./{kw}.npz", {kw}=self.{kw}, NX=self.NX, NY=self.NY, NZ=self.NZ)') |
1042 | 1038 |
|
1043 | 1039 | def _calc_avo_props(self, dt=0.0005): |
1044 | 1040 | # dt is the fine resolution sampling rate |
@@ -1249,6 +1245,7 @@ def _calc_avo_props_active_cells(self, grid, vp, vs, rho, dt=0.0005): |
1249 | 1245 | kind='nearest', fill_value='extrapolate') |
1250 | 1246 | trace_interp[ind, :] = f(t_interp) |
1251 | 1247 |
|
| 1248 | + |
1252 | 1249 | if i == 0: |
1253 | 1250 | avo_data = trace_interp # 3D |
1254 | 1251 | elif i == 1: |
@@ -2260,34 +2257,8 @@ def van_opstal(self, lambda_vals, z_res, z_base, poisson): |
2260 | 2257 |
|
2261 | 2258 | return value |
2262 | 2259 |
|
2263 | | - def van_opstal_org(self, lambda_vals, z_res, z_base, poisson): |
2264 | | - """ |
2265 | | - Compute the Van Opstal transfer function. |
2266 | | - |
2267 | | - Args: |
2268 | | - lambda_vals -- Numpy array of lambda values. |
2269 | | - z_res -- Depth to reservoir [m]. |
2270 | | - z_base -- Distance to the basement [m]. |
2271 | | - poisson -- Poisson's ratio. |
2272 | | - |
2273 | | - Returns: |
2274 | | - value -- Numpy array of computed values. |
2275 | | - """ |
2276 | | - |
2277 | | - term1 = np.exp(lambda_vals * z_res) * (2 * lambda_vals * z_base + 1) |
2278 | | - term2 = np.exp(-lambda_vals * z_res) * ( |
2279 | | - 4 * lambda_vals ** 2 * z_base ** 2 + 2 * lambda_vals * z_base + (3 - 4 * poisson) ** 2) |
2280 | | - |
2281 | | - term3_numer = (3 - 4 * poisson) * ( |
2282 | | - np.exp(-lambda_vals * (2 * z_base + z_res)) - np.exp(-lambda_vals * (2 * z_base - z_res))) |
2283 | | - term3_denom = 2 * ((1 - 2 * poisson) ** 2 + lambda_vals ** 2 * z_base ** 2 + (3 - 4 * poisson) * np.cosh( |
2284 | | - lambda_vals * z_base) ** 2) |
2285 | | - |
2286 | | - value = term1 - term2 - (term3_numer / term3_denom) |
2287 | | - |
2288 | | - return value |
| 2260 | + def hankel_transform_order_0(self, f, r_max, num_points=1000): |
2289 | 2261 |
|
2290 | | - def hankel_transform_order_0(f, r_max, num_points=1000): |
2291 | 2262 | """ |
2292 | 2263 | Computes the Hankel transform of order 0 of a function f(r). |
2293 | 2264 |
|
|
0 commit comments