Current Glaberish implementation
m = grid
n = compute_neighborhoods(grid)
# genesis and persistence are functions with outputs ranging from -1, 1
g = genesis(n)
p = persistence(n)
dgrid = (1-m) * g + m * p
new_grid = clip(grid + dt * dgrid, 0, 1.0)
noclip scheme
# clipping m here allows for all less than or equal to 0 to undergo 'genesis'
m = clip(grid, 0, 1)
n = compute_neighborhoods(grid)
# range of outputs for genesis and persistence differ
# genesis output ranges from 0 to 1
# persistence output ranges from -1 to 1 (facilitates decay)
g = genesis(n)
p = persistence(n)
# clipping m earlier means dgrid won't have exploding values (neg. or positive)
dgrid = (1-m) * g + m * p
# no clipping here: Euler method
new_grid = grid + dt * dgrid
Current Glaberish implementation
noclip scheme