-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfields.py
More file actions
51 lines (41 loc) · 2.63 KB
/
fields.py
File metadata and controls
51 lines (41 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import taichi as ti
class ParticleFields:
def __init__(self, num_p, valueType):
self.position = ti.Vector.field(2, dtype=valueType, shape=num_p)
self.velocity = ti.Vector.field(2, dtype=valueType, shape=num_p)
self.velocity_gradient = ti.Matrix.field(2, 2, dtype=valueType, shape=num_p)
self.deformation_gradient = ti.Matrix.field(2, 2, dtype=valueType, shape=num_p)
self.determinant_of_deformation_gradient = ti.field(dtype=valueType, shape=num_p)
self.stress = ti.Matrix.field(2, 2, dtype=valueType, shape=num_p)
self.material_id = ti.field(dtype=int, shape=num_p)
self.volume = ti.field(dtype=valueType, shape=num_p)
self.mass = ti.field(dtype=valueType, shape=num_p)
self.partitionofUnity = ti.field(dtype=valueType, shape=num_p)
self.consistency = ti.field(dtype=valueType, shape=num_p)
self.consistency_dx = ti.field(dtype=valueType, shape=num_p)
self.consistency_dy = ti.field(dtype=valueType, shape=num_p)
self.pressure = ti.field(dtype=valueType, shape=num_p)
self.divergenceofVelocity = ti.field(dtype=valueType, shape=num_p)
self.particleDensity = ti.field(dtype=valueType, shape=num_p)
class GridFields:
def __init__(self, num_g, valueType):
self.velocity_grid = ti.Vector.field(2, dtype=valueType, shape=(num_g, num_g))
self.velocity_grid_initial = ti.Vector.field(2, dtype=valueType, shape=(num_g, num_g))
self.mass_grid = ti.Matrix.field(2, 2, dtype=valueType, shape=(num_g, num_g))
self.volume_grid = ti.field(dtype=valueType, shape=(num_g, num_g))
self.pressure_grid = ti.field(dtype=valueType, shape=(num_g, num_g))
class StabilizationFields:
def __init__(self, num_g, valueType):
self.volume_0 = ti.field(dtype=valueType, shape=(num_g - 1, num_g - 1))
self.cell = ti.field(dtype=valueType, shape=(num_g - 1, num_g - 1))
class ProjectionFields:
def __init__(self, num_g, valueType):
self.divergence_velocity_numerator = ti.field(dtype=valueType, shape=(num_g, num_g))
self.divergence_velocity_denominator = ti.field(dtype=valueType, shape=(num_g, num_g))
self.divergence_velocity = ti.field(dtype=valueType, shape=(num_g, num_g))
class PenaltyMethodFields:
def __init__(self, num_cell, valueType):
self.left_boundary = ti.Vector.field(2, dtype=valueType, shape=num_cell - 4)
self.right_boundary = ti.Vector.field(2, dtype=valueType, shape=num_cell - 4)
self.bottom_boundary = ti.Vector.field(2, dtype=valueType, shape=num_cell - 4)
self.top_boundary = ti.Vector.field(2, dtype=valueType, shape=num_cell - 4)