Ejemplo n.º 1
0
 def calc_loss(arr: ti.template(), loss: ti.template()):
     for i in arr:
         loss[None] += arr[i]
Ejemplo n.º 2
0
def mark_valid_v(velocities_v: ti.template(), valid: ti.template()):
    for i, j in velocities_v:
        if is_fluid(i, j - 1) or is_fluid(i, j):
            valid[i, j] = 1
        else:
            valid[i, j] = 0
Ejemplo n.º 3
0
 def inc(a: ti.template(), b: ti.template()):
     for i in a:
         a[i] += b
Ejemplo n.º 4
0
def clear_loss(l: ti.template()):
    # Using SNode writers would result in a forced sync, therefore we wrap these
    # writes into a kernel.
    l[None] = 0
    l.grad[None] = 1
Ejemplo n.º 5
0
def apply_gravity(velocities_v: ti.template()):
    for i, j in velocities_v:
        velocities_v[i, j] += -9.8 * dt
Ejemplo n.º 6
0
def tensor_to_tensor(tensor: ti.template(), other: ti.template()):
    for I in ti.grouped(tensor):
        tensor[I] = other[I]
Ejemplo n.º 7
0
def fill_tensor(tensor: ti.template(), val: ti.template()):
    for I in ti.grouped(tensor):
        tensor[I] = val
 def double(a: ti.template(), b: ti.template()):
     for i in range(16):
         b[i] = a[i] * 2 + 1
 def fill(l: ti.template()):
     for I in ti.grouped(a[l]):
         a[l][I] = l
Ejemplo n.º 10
0
 def init_kernel(self, cell_type : ti.template()):
     for i, j in cell_type:
         if (i - self.x0) ** 2 + (j - self.y0) ** 2 <= self.r ** 2:
             cell_type[i, j] = utils.FLUID
Ejemplo n.º 11
0
 def update(self, I, res: ti.template()):
     for k, v in ti.static(res.items()):
         self[k][I] = v
Ejemplo n.º 12
0
 def calc_loss(input_field: ti.template(), loss: ti.template()):
     for i in input_field:
         loss[None] += input_field[i]
Ejemplo n.º 13
0
 def ti_frac(input_field: ti.template(), output_field: ti.template()):
     for i in input_field:
         output_field[i] = frac(input_field[i])**2
Ejemplo n.º 14
0
def advect(vf: ti.template(), qf: ti.template(), new_qf: ti.template()):
    for i, j in vf:
        p = ti.Vector([i, j]) + 0.5
        p = backtrace(vf, p, dt)
        new_qf[i, j] = bilerp(qf, p) * dye_decay
Ejemplo n.º 15
0
def tensor_to_image(tensor: ti.template(), arr: ti.ext_arr()):
    for I in ti.grouped(tensor):
        t = ti.cast(tensor[I], ti.f32)
        arr[I, 0] = t
        arr[I, 1] = t
        arr[I, 2] = t
 def aTob(l: ti.template()):
     for I in ti.grouped(b[l]):
         b[l][I] = sample(a, l, I)
Ejemplo n.º 17
0
def vector_to_image(mat: ti.template(), arr: ti.ext_arr()):
    for I in ti.grouped(mat):
        for p in ti.static(range(mat.n)):
            arr[I, p] = ti.cast(mat[I][p], ti.f32)
            if ti.static(mat.n <= 2):
                arr[I, 2] = 0
Ejemplo n.º 18
0
def rand_vector(n: ti.template()):
    '''
    Samples a n-dimensional random uniform vector.
    '''
    return ti.Vector([ti.random() for _ in range(n)])
Ejemplo n.º 19
0
def ext_arr_to_tensor(arr: ti.ext_arr(), tensor: ti.template()):
    for I in ti.grouped(tensor):
        tensor[I] = arr[I]
Ejemplo n.º 20
0
def backtrace(v: ti.template(), I, dt):
    midI = I - 0.5 * ts.bilerp(v, I) * dt
    finI = I - dt * ts.bilerp(v, midI)
    return finI
Ejemplo n.º 21
0
def clear_gradients(vars: ti.template()):
    for I in ti.grouped(ti.Expr(vars[0])):
        for s in ti.static(vars):
            ti.Expr(s)[I] = 0
Ejemplo n.º 22
0
def _vector_product(self: ti.template()):
    ret = self[0]
    for i in ti.static(range(1, self.n)):
        ret *= self[i]
    return ret
Ejemplo n.º 23
0
def fill_matrix(mat: ti.template(), vals: ti.template()):
    for I in ti.grouped(mat):
        for p in ti.static(range(mat.n)):
            for q in ti.static(range(mat.m)):
                mat[I][p, q] = vals[p][q]
Ejemplo n.º 24
0
def snode_deactivate(b: ti.template()):
    for I in ti.grouped(b):
        ti.deactivate(b, I)
Ejemplo n.º 25
0
def mark_valid_u(velocities_u: ti.template(), valid: ti.template()):
    for i, j in velocities_u:
        if is_fluid(i - 1, j) or is_fluid(i, j):
            valid[i, j] = 1
        else:
            valid[i, j] = 0
Ejemplo n.º 26
0
def snode_deactivate_dynamic(b: ti.template()):
    for I in ti.grouped(b.parent()):
        ti.deactivate(b, I)
Ejemplo n.º 27
0
 def sample(x: ti.template(), I):
     return x[I]
Ejemplo n.º 28
0
def tensor_to_ext_arr(tensor: ti.template(), arr: ti.ext_arr()):
    for I in ti.grouped(tensor):
        arr[I] = tensor[I]
Ejemplo n.º 29
0
 def inc2(z: ti.i32, a: ti.template(), b: ti.i32):
     for i in a:
         a[i] += b + z
Ejemplo n.º 30
0
 def mul(arr: ti.template(), out: ti.template()):
     for i in arr:
         out[i] = arr[i] * 2.0