Skip to content

Instantly share code, notes, and snippets.

@tehrengruber
Last active May 28, 2021 13:21
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 tehrengruber/d83992a6b8579f67eef117ece21ad265 to your computer and use it in GitHub Desktop.
Save tehrengruber/d83992a6b8579f67eef117ece21ad265 to your computer and use it in GitHub Desktop.
bla.py
def laplacian(grid: Grid, f: Field[I, J, K, Matrix[3, 3, dtype]]):
def stencil((i, j, k), m):
return l2_norm(m @ [1, 2, 3])
#def stencil(i, j, k, val):
# if (i, j, k) in grid[(I, J, K), "interior"]:
# return -4*f[i, j, k]+f[i-1, j, k]+f[i+1, j, k]+f[i, j-1, k]+f[i, j+1, k]
# else:
...
#return Field(f.domain, stencil)
return map(stencil, graph(f))
return map(stencil, zip(f.domain, f.image))
phi = Field(domain, Lambda((Index(I), Index(J), Index(K)), Constant(0)))
phi2 = Field(domain, Lambda((Index(I), Index(J), Index(K)), Constant(1)))
val = phi[Index(I)+1, Index(J), Index(K)]+phi2[Index(I)+1, Index(J), Index(K)]
val2 = simplify(val)
val3 = val2+1
bla = 1+1
phi = LazyField()
def laplacian(f: Field):
def stencil(i, j, k):
return -4*f[i, j, k]+f[i-1, j, k]+f[i+1, j, k]+f[i, j-1, k]+f[i, j+1, k]
return map(stencil, f)
def laplacian(f: Field):
def stencil(i, j, k):
switch({
(i, j, k) in grid[((I, J, K), "north")]: 1,
(i, j, k) in grid[((I, J, K), "interior")]: (-4 * f + f[i-1] + f[i+1] + f[j-1] + f[j+1])
})
return -4*f[i, j, k]+f[i-1, j, k]+f[i+1, j, k]+f[i, j-1, k]+f[i, j+1, k]
return Field(f.domain, stencil)
#return map(stencil, f)
def getitem(f: Field, indices):
Index(domain, dim)-1 == Index(translate(domain, (dim: -1)), dim)
@dispatch
def translate(domain: Domain, offset: Tuple[Dimension, Int]):
declare("translate", Domain, Tuple[Dimension, Int])
laplacian(laplacian(phi))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment