Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
dz = 5 # minimum cell width (base mesh cell width) in z
x_length = 240. # domain width in x
y_length = 240. # domain width in y
z_length = 120. # domain width in y
# Compute number of base mesh cells required in x and y
nbcx = 2**int(np.round(np.log(x_length/dx)/np.log(2.)))
nbcy = 2**int(np.round(np.log(y_length/dy)/np.log(2.)))
nbcz = 2**int(np.round(np.log(z_length/dz)/np.log(2.)))
# Define the base mesh
hx = [(dx, nbcx)]
hy = [(dy, nbcy)]
hz = [(dz, nbcz)]
mesh = TreeMesh([hx, hy, hz], x0='CCN')
# Refine based on surface topography
mesh = refine_tree_xyz(
mesh, xyz_topo, octree_levels=[2, 2], method='surface', finalize=False
)
# Refine box based on region of interest
xp, yp, zp = np.meshgrid([-100., 100.], [-100., 100.], [-80., 0.])
xyz = np.c_[mkvc(xp), mkvc(yp), mkvc(zp)]
mesh = refine_tree_xyz(
mesh, xyz, octree_levels=[2, 2], method='box', finalize=False
)
mesh.finalize()
def make_example_mesh():
# Base mesh parameters
dh = 5. # base cell size
nbc = 32 # total width of mesh in terms of number of base mesh cells
h = dh*np.ones(nbc)
mesh = TreeMesh([h, h, h], x0='CCC')
# Refine to largest possible cell size
mesh.refine(3, finalize=False)
return mesh
# ------------------
#
# Here, we create the OcTree mesh that will be used to predict both DC
# resistivity and IP data.
#
dh = 10. # base cell width
dom_width_x = 2400. # domain width x # domain width y
dom_width_z = 1200. # domain width z
nbcx = 2**int(np.round(np.log(dom_width_x/dh)/np.log(2.))) # num. base cells x
nbcz = 2**int(np.round(np.log(dom_width_z/dh)/np.log(2.))) # num. base cells z
# Define the base mesh
hx = [(dh, nbcx)]
hz = [(dh, nbcz)]
mesh = TreeMesh([hx, hz], x0='CN')
# Mesh refinement based on topography
mesh = refine_tree_xyz(
mesh, topo_xyz[:, [0, 2]], octree_levels=[1], method='surface', finalize=False
)
# Mesh refinement near transmitters and receivers
dc_survey.getABMN_locations()
electrode_locations = np.r_[
dc_survey.a_locations, dc_survey.b_locations,
dc_survey.m_locations, dc_survey.n_locations
]
unique_locations = np.unique(electrode_locations, axis=0)
mesh = refine_tree_xyz(
dz = 5 # minimum cell width (base mesh cell width) in z
x_length = 240. # domain width in x
y_length = 240. # domain width in y
z_length = 120. # domain width in y
# Compute number of base mesh cells required in x and y
nbcx = 2**int(np.round(np.log(x_length/dx)/np.log(2.)))
nbcy = 2**int(np.round(np.log(y_length/dy)/np.log(2.)))
nbcz = 2**int(np.round(np.log(z_length/dz)/np.log(2.)))
# Define the base mesh
hx = [(dx, nbcx)]
hy = [(dy, nbcy)]
hz = [(dz, nbcz)]
mesh = TreeMesh([hx, hy, hz], x0='CCN')
# Refine based on surface topography
mesh = refine_tree_xyz(
mesh, xyz_topo, octree_levels=[2, 2], method='surface', finalize=False
)
# Refine box base on region of interest
xp, yp, zp = np.meshgrid([-100., 100.], [-100., 100.], [-80., 0.])
xyz = np.c_[mkvc(xp), mkvc(yp), mkvc(zp)]
mesh = refine_tree_xyz(
mesh, xyz, octree_levels=[2, 2], method='box', finalize=False
)
mesh.finalize()
# ------------------
#
# Here, we create the OcTree mesh that will be used to predict both DC
# resistivity and IP data.
#
dh = 10. # base cell width
dom_width_x = 2400. # domain width x
dom_width_z = 1200. # domain width z
nbcx = 2**int(np.round(np.log(dom_width_x/dh)/np.log(2.))) # num. base cells x
nbcz = 2**int(np.round(np.log(dom_width_z/dh)/np.log(2.))) # num. base cells z
# Define the base mesh
hx = [(dh, nbcx)]
hz = [(dh, nbcz)]
mesh = TreeMesh([hx, hz], x0='CN')
# Mesh refinement based on topography
mesh = refine_tree_xyz(
mesh, xyz_topo[:,[0, 2]], octree_levels=[1], method='surface', finalize=False
)
# Mesh refinement near transmitters and receivers. First we need to obtain the
# set of unique electrode locations.
dc_survey.getABMN_locations()
electrode_locations = np.c_[
dc_survey.a_locations, dc_survey.b_locations,
dc_survey.m_locations, dc_survey.n_locations
]
unique_locations = np.unique(
np.reshape(electrode_locations, (4*dc_survey.nD, 2)), axis=0
# resistivity and IP data.
#
dh = 20. # base cell width
dom_width_x = 3000. # domain width x
dom_width_y = 3000. # domain width y
dom_width_z = 1500. # domain width z
nbcx = 2**int(np.round(np.log(dom_width_x/dh)/np.log(2.))) # num. base cells x
nbcy = 2**int(np.round(np.log(dom_width_y/dh)/np.log(2.))) # num. base cells y
nbcz = 2**int(np.round(np.log(dom_width_z/dh)/np.log(2.))) # num. base cells z
# Define the base mesh
hx = [(dh, nbcx)]
hy = [(dh, nbcy)]
hz = [(dh, nbcz)]
mesh = TreeMesh([hx, hy, hz], x0='CCN')
# Mesh refinement based on topography
mesh = refine_tree_xyz(
mesh, topo_xyz, octree_levels=[0, 0, 0, 0, 1], method='surface', finalize=False
)
# Mesh refinement near transmitters and receivers
mesh = refine_tree_xyz(
mesh, electrode_locs, octree_levels=[2, 4], method='radial', finalize=False
)
# Refine core mesh region
xp, yp, zp = np.meshgrid([-600., 600.], [-300., 300.], [-500., 0.])
xyz = np.c_[mkvc(xp), mkvc(yp), mkvc(zp)]
mesh = refine_tree_xyz(
mesh, xyz, octree_levels=[0, 2, 2], method='box', finalize=False
)
###############################################################
# Create OcTree Mesh
# ------------------
#
# Here we define the OcTree mesh that is used for this example.
#
dh = 25. # base cell width
dom_width = 1600. # domain width
nbc = 2**int(np.round(np.log(dom_width/dh)/np.log(2.))) # num. base cells
# Define the base mesh
h = [(dh, nbc)]
mesh = TreeMesh([h, h, h], x0='CCC')
# Mesh refinement based on topography
mesh = refine_tree_xyz(
mesh, topo_xyz, octree_levels=[0, 0, 0, 1], method='surface', finalize=False
)
# Mesh refinement near transmitters and receivers
mesh = refine_tree_xyz(
mesh, rx_locs, octree_levels=[2, 4], method='radial', finalize=False
)
# Refine core mesh region
xp, yp, zp = np.meshgrid([-300., 300.], [-300., 300.], [-300., 0.])
xyz = np.c_[mkvc(xp), mkvc(yp), mkvc(zp)]
mesh = refine_tree_xyz(
mesh, xyz, octree_levels=[0, 2, 4], method='box', finalize=False
)
###############################################################
# Create OcTree Mesh
# ------------------
#
# Here we define the OcTree mesh that is used for this example.
#
dh = 20. # base cell width
dom_width = 3000. # domain width
nbc = 2**int(np.round(np.log(dom_width/dh)/np.log(2.))) # num. base cells
# Define the base mesh
h = [(dh, nbc)]
mesh = TreeMesh([h, h, h], x0='CCC')
# Mesh refinement based on topography
mesh = refine_tree_xyz(
mesh, topo_xyz, octree_levels=[0, 0, 0, 1], method='surface', finalize=False
)
# Mesh refinement near transmitters and receivers
mesh = refine_tree_xyz(
mesh, rx_locs, octree_levels=[2, 4], method='radial', finalize=False
)
# Refine core mesh region
xp, yp, zp = np.meshgrid([-300., 300.], [-300., 300.], [-400., 0.])
xyz = np.c_[mkvc(xp), mkvc(yp), mkvc(zp)]
mesh = refine_tree_xyz(
mesh, xyz, octree_levels=[0, 2, 4], method='box', finalize=False
dz = 5 # minimum cell width (base mesh cell width) in z
x_length = 240. # domain width in x
y_length = 240. # domain width in y
z_length = 120. # domain width in y
# Compute number of base mesh cells required in x and y
nbcx = 2**int(np.round(np.log(x_length/dx)/np.log(2.)))
nbcy = 2**int(np.round(np.log(y_length/dy)/np.log(2.)))
nbcz = 2**int(np.round(np.log(z_length/dz)/np.log(2.)))
# Define the base mesh
hx = [(dx, nbcx)]
hy = [(dy, nbcy)]
hz = [(dz, nbcz)]
mesh = TreeMesh([hx, hy, hz], x0='CCN')
# Refine based on surface topography
mesh = refine_tree_xyz(
mesh, topo, octree_levels=[2, 2], method='surface', finalize=False
)
# Refine box base on region of interest
xp, yp, zp = np.meshgrid([-100., 100.], [-100., 100.], [-80., 0.])
xyz = np.c_[mkvc(xp), mkvc(yp), mkvc(zp)]
mesh = refine_tree_xyz(
mesh, xyz, octree_levels=[2, 2], method='box', finalize=False
)
mesh.finalize()