working_dir=main_dir, data_dir=data_dir, mesh_dir=mesh_dir, iso_dir=iso_dir, ref_dir=ref_dir, start_dir=start_dir, crtomo_exe=crtomo_exe_name, mesh_exe=mesh_exe_name, ) # %% Generating the mesh # Data file name A B M N in meters df = jp(data_dir, "demo_elecs.dat") # Path to electrode configuration file dat = datread(df) # Use built-in function to extract data (optional) # Electrode spacing in meters es = 5 # Electrodes elevation # Data elevation file name X Z in meters ef = jp(data_dir, "demo_elevation.dat") elev = datread(ef) # Use built-in function to extract data (optional) # %% Build the mesh # The following command generates the mesh in the folder indicated previously. # It requires 3 arguments: # the numpy array of electrodes position of shape (n, 4) (required)
aspect=1.5, cbpos=0.2, folder=result_folder, figname="sens", ) plt.show() # %% Plot pseudosections # Open data file os.chdir(cwd) sub_folder_name = "paper" data_dir = jp(cwd, "data", sub_folder_name) # Data files directory data_file = jp(data_dir, "field_data.dat") data = crc.datread(data_file, start=1) a = data[:, 0] * 5 b = data[:, 1] * 5 m = data[:, 2] * 5 n = data[:, 3] * 5 xy = np.column_stack([(m + n) / 2, -np.min( ((m + n) / 2 - a, b - (m + n) / 2), axis=0) / 3]) fig, ax = plt.subplots() ax.plot(xy[:, 0], xy[:, 1], "k+", markersize=4) ax.set_xlabel("X(m)", fontsize=12) ax.set_ylabel("Pseudo depth(m)", fontsize=12) ax.grid(alpha=0.7) ax.set_aspect(aspect=7)
from tomopal.geoview.diavatly import model_map # Directories cwd = os.getcwd() # Current working directory sub_folder_name = "paper" mesh_dir = jp(cwd, "mesh", sub_folder_name) # Mesh files directory labelsize = 12 bpos = 0.38 # %% MODEL MISFIT true_model = jp("/Users/robin/PycharmProjects/MGS", "data/paper/models/forwardscenario.dat") # Load true model resmod = crc.datread(true_model, start=1)[:, 2] ipmod = crc.datread(true_model, start=1)[:, 3] m2p = -1.234598 mshf = "/Users/robin/PycharmProjects/MGS/mesh/paper/Mesh.dat" ncol, nlin, nelem, blocks, centerxy, nodes = crc.mesh_geometry(mshf) res_levels = 10**np.linspace(min(resmod), max(resmod), 10) ip_levels = np.linspace(min(ipmod / m2p), 150, 7) result_folder = "/Users/robin/PycharmProjects/MGS/results/paper/scenario" model_map( polygons=blocks, vals=10**resmod, log=1,
myinv = crc.Crtomo( working_dir=cwd, data_dir=data_dir, mesh_dir=mesh_dir, iso_dir=iso_dir, ref_dir=ref_dir, start_dir=start_dir, crtomo_exe=crtomo_exe_name, mesh_exe=mesh_exe_name, ) # %% Generating the mesh # Data file name A B M N R df = jp(data_dir, "elecs.dat") dat = crc.datread(df) # Electrode spacing es = 5 # Electrodes elevation ef = jp(data_dir, "field_data_elevation.dat") # Data elevation file name X Z elev = crc.datread(ef) # %% Make the mesh mshf = jp(mesh_dir, "Mesh.dat") if not os.path.exists(mshf): myinv.meshmaker(abmn=dat[:, [0, 1, 2, 3]], electrode_spacing=es, elevation_data=elev)
from tomopal.crtomopy.crtomo import crc from tomopal.geoview.diavatly import model_map from tomopal.model.mohinh import ModelMaker cwd = os.getcwd() # Current working directory sub_folder_name = "paper" mesh_dir = jp(cwd, "mesh", sub_folder_name) # Mesh files directory mshf = jp(mesh_dir, "Mesh.dat") iso_dir = jp(cwd, "iso", sub_folder_name) # ISO file dir ncol, nlin, nelem, blocks, centerxy = crc.mesh_geometry(mshf) iso_file1 = jp(iso_dir, "iso_iso.dat") start_dir = jp(cwd, "start", sub_folder_name) starting_model_file = jp(start_dir, "rho07.dat") dm = crc.datread(starting_model_file, start=1)[:, 0] isom = ModelMaker(blocks=blocks, values=dm, values_log=1, bck=1) # with open(iso_file1, "w") as rw: rw.write(str(nelem) + "\n") for val in isom.final_results: if val > 1: rw.write("{} {}".format(str(val), str(1)) + "\n") if val < 1: rw.write("{} {}".format(str(1), str(1 / val)) + "\n") if val == 1.0: rw.write("{} {}".format(str(1), str(1)) + "\n") rw.close()
# Directories cwd = os.getcwd() # Current working directory sub_folder_name = "paper" mesh_dir = jp(cwd, "mesh", sub_folder_name) # Mesh files directory labelsize = 12 bpos = 0.38 mshf = jp(mesh_dir, "Mesh.dat") ncol, nlin, nelem, blocks, centerxy, nodes = crc.mesh_geometry(mshf) # %% MODEL MISFIT true_model = jp(cwd, "data", sub_folder_name, "models", "forwardscenario.dat") # Load true model resmod = crc.datread(true_model, start=1)[:, 2] ipmod = crc.datread(true_model, start=1)[:, 3] m2p = -1.234598 res_levels = 10**np.linspace(min(resmod), max(resmod), 10) ip_levels = np.linspace(min(ipmod / m2p), 150, 10) true_data = crc.datread(jp(cwd, "data", "paper", "field_data.dat"), start=1) a = true_data[:, 0] * 5 b = true_data[:, 1] * 5 m = true_data[:, 2] * 5 n = true_data[:, 3] * 5 xy = np.column_stack([(m + n) / 2, -np.min( ((m + n) / 2 - a, b - (m + n) / 2), axis=0) / 3])
cwd = os.getcwd() # Current working directory sub_folder_name = "paper" mesh_dir = jp(cwd, "mesh", sub_folder_name) # Mesh files directory mshf = "mesh/paper/Mesh.dat" # Mesh ncol, nlin, nelem, blocks, centerxy, nodes = crc.mesh_geometry(mshf) # IP conversion factor m2p = -1.234598 # crc.mtophase(ncycles=1, pulse_l=3.5, tmin=0.02, tmax=2.83) # %% MODEL MISFIT result_folder = "results/paper/FM1B/config" true_model = jp(result_folder, "fm1b_model.dat") # Load true model resmod = crc.datread(true_model, start=1)[:, 2] # res_levels = 10 ** np.linspace(min(resmod), max(resmod), 7) # res_levels = 10**np.array([0]+sorted(set(resmod))) res_levels = 10**np.linspace(min(resmod), max(resmod), 8) model_map( polygons=blocks, vals=10**resmod, log=1, cbpos=0.35, levels=res_levels, binned=False, folder=result_folder, fontsize=10, labelsize=12, figname="res_mod",