Skip to content

Instantly share code, notes, and snippets.

@mikeando
Last active November 15, 2019 07:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mikeando/955703897b35fa3b523752041d61fee4 to your computer and use it in GitHub Desktop.
Save mikeando/955703897b35fa3b523752041d61fee4 to your computer and use it in GitHub Desktop.
Devito comm mismatch
import numpy as np
from dugwave.devitowrap import Function, TimeFunction, Grid, Eq, Operator, configuration, Constant, SpaceDimension, SubDimension, solve
from sympy import Symbol
from mpi4py import MPI
bc_thickness = 4
nx=10
ny=10
dx=0.1
dy=0.1
spacedims = ["x", "y"]
spacings = [Constant(name="h_%s" % d, dtype=np.float32) for d in spacedims]
dimensions = tuple(SpaceDimension(d, spacing=s) for d, s in zip(spacedims, spacings))
x = dimensions[0]
y = dimensions[1]
x_left = SubDimension.left(name="x_left", parent=x, thickness=bc_thickness)
x_right = SubDimension.right(name="x_right", parent=x, thickness=bc_thickness)
y_left = SubDimension.left(name="y_left", parent=y, thickness=bc_thickness)
y_right = SubDimension.right(name="y_right", parent=y, thickness=bc_thickness)
internal_dims = tuple(
SubDimension.middle(
name=d.name + "i",
parent=d,
thickness_left=bc_thickness,
thickness_right=bc_thickness,
) for d in dimensions
)
def build_operator(name, comm):
grid_shape = ( nx + 2 * bc_thickness, ny + 2 * bc_thickness,)
grid = Grid( shape=grid_shape, dimensions=dimensions, comm=comm)
#grid = Grid( shape=grid_shape, dimensions=dimensions, comm=MPI.COMM_WORLD)
internal_dim_subs = {d: di for (d, di) in zip(dimensions, internal_dims)}
u = TimeFunction(name='u',grid=grid, space_order=0, time_order=1)
interior_eq = Eq(u.forward, u + 1)
# Limit our update to the interior of the domain
interior_eq = interior_eq.xreplace(internal_dim_subs)
bc = Eq(u,-1)
# Limit out boundary conditions to the boundary
x_left_bc = bc.xreplace({x:x_left})
x_right_bc = bc.xreplace({x:x_right})
y_left_bc = bc.xreplace({y:y_left})
y_right_bc = bc.xreplace({y:y_right})
actions = [interior_eq, x_left_bc, x_right_bc, y_left_bc, y_right_bc]
op = Operator(actions, name=name)
return op
def create_u(name, nx, ny, comm):
grid_shape = ( nx + 2 * bc_thickness, ny + 2 * bc_thickness)
g_new = Grid( shape=grid_shape, dimensions=dimensions, comm=comm)
u = TimeFunction(name=name,grid=g_new, space_order=0, time_order=1)
u.data[:] = 0
return u
op_world = build_operator("op_world", MPI.COMM_WORLD)
op_self = build_operator("op_self", MPI.COMM_SELF)
# Try it with a new distributed grid!
nx = 15
ny = 15
u_dist = create_u("u_dist", nx,ny,MPI.COMM_WORLD)
u_local = create_u("u_local", nx,ny,MPI.COMM_SELF)
np.set_printoptions(linewidth=500)
for op in [op_world, op_self]:
for u in [u_dist, u_local]:
u.data[:] = 0
print(f"Testing {op.name} + {u.name}")
print("Correcting the operator...")
m={}
m['comm'] = u.grid.distributor._obj_comm
m['nb'] = u.grid.distributor._obj_neighborhood
op.objects = tuple( m.get(o.name, o) for o in op.objects)
op.apply(u=u, time_M=2)
print(u.data[u.local_indices][1,:,:])
args = op.arguments(u=u, time_M=2)
x_m = args["x_m"]
x_M = args["x_M"]
xi_ltkn = args["xi_ltkn"]
xi_rtkn = args["xi_rtkn"]
x_left_ltkn = args["x_left_ltkn"]
x_right_rtkn = args["x_right_rtkn"]
y_m = args["y_m"]
y_M = args["y_M"]
yi_ltkn = args["yi_ltkn"]
yi_rtkn = args["yi_rtkn"]
y_left_ltkn = args["y_left_ltkn"]
y_right_rtkn = args["y_right_rtkn"]
print(f"{MPI.COMM_WORLD.rank} bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = ({x_m}) -- ({x_m} + {x_left_ltkn} - 1) = ({x_m}) -- ({x_m + x_left_ltkn - 1})")
print(f"{MPI.COMM_WORLD.rank} interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = ({x_m} + {xi_ltkn}) -- ({x_M} - {xi_rtkn}) = ({x_m + xi_ltkn}) -- ({x_M - xi_rtkn})")
print(f"{MPI.COMM_WORLD.rank} bc x right : (x_M - x_right_rtkn + 1) -- ({x_M}) = ({x_M} - {x_right_rtkn} + 1) -- (x_M) = ({x_M - x_right_rtkn + 1}) -- ({x_M}) ")
print(f"{MPI.COMM_WORLD.rank} bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = ({y_m}) -- ({y_m} + {y_left_ltkn} - 1) = ({y_m}) -- ({y_m + y_left_ltkn - 1})")
print(f"{MPI.COMM_WORLD.rank} interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = ({y_m} + {yi_ltkn}) -- ({y_M} - {yi_rtkn}) = ({y_m + yi_ltkn}) -- ({y_M - yi_rtkn})")
print(f"{MPI.COMM_WORLD.rank} bc y right : (y_M - y_right_rtkn + 1) -- ({y_M}) = ({y_M} - {y_right_rtkn} + 1) -- (y_M) = ({y_M - y_right_rtkn + 1}) -- ({y_M}) ")
Testing op_world + u_dist
Correcting the operator...
[[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]]
0 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 4) -- (11 - 0) = (4) -- (11)
0 bc x right : (x_M - x_right_rtkn + 1) -- (11) = (11 - 0 + 1) -- (x_M) = (12) -- (11)
0 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
0 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_world + u_local
Correcting the operator...
[[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]]
0 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 4) -- (22 - 0) = (4) -- (22)
0 bc x right : (x_M - x_right_rtkn + 1) -- (22) = (22 - 0 + 1) -- (x_M) = (23) -- (22)
0 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
0 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_self + u_dist
Correcting the operator...
[[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]]
0 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 4) -- (11 - 4) = (4) -- (7)
0 bc x right : (x_M - x_right_rtkn + 1) -- (11) = (11 - 4 + 1) -- (x_M) = (8) -- (11)
0 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
0 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_self + u_local
Correcting the operator...
[[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]]
0 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
0 bc x right : (x_M - x_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (x_M) = (19) -- (22)
0 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
0 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
0 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_world + u_dist
Correcting the operator...
[[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]]
1 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 0 - 1) = (0) -- (-1)
1 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 0) -- (10 - 4) = (0) -- (6)
1 bc x right : (x_M - x_right_rtkn + 1) -- (10) = (10 - 4 + 1) -- (x_M) = (7) -- (10)
1 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
1 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
1 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_world + u_local
Correcting the operator...
[[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]]
1 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 0 - 1) = (0) -- (-1)
1 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 0) -- (22 - 4) = (0) -- (18)
1 bc x right : (x_M - x_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (x_M) = (19) -- (22)
1 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
1 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
1 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_self + u_dist
Correcting the operator...
[[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]]
1 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
1 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 4) -- (10 - 4) = (4) -- (6)
1 bc x right : (x_M - x_right_rtkn + 1) -- (10) = (10 - 4 + 1) -- (x_M) = (7) -- (10)
1 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
1 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
1 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Testing op_self + u_local
Correcting the operator...
[[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. 3. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]
[-1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1. -1.]]
1 bc x left : (x_m) -- (x_m + x_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
1 interior xi: (x_m + xi_ltkn) -- (x_M - xi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
1 bc x right : (x_M - x_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (x_M) = (19) -- (22)
1 bc y left : (y_m) -- (y_m + y_left_ltkn - 1) = (0) -- (0 + 4 - 1) = (0) -- (3)
1 interior yi: (y_m + yi_ltkn) -- (y_M - yi_rtkn) = (0 + 4) -- (22 - 4) = (4) -- (18)
1 bc y right : (y_M - y_right_rtkn + 1) -- (22) = (22 - 4 + 1) -- (y_M) = (19) -- (22)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment