Skip to content

Commit 5342756

Browse files
committed
solver-specific gravity and fixed unit test
1 parent 078a73f commit 5342756

File tree

9 files changed

+22
-17
lines changed

9 files changed

+22
-17
lines changed

genesis/engine/solvers/base_solver.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def __init__(self, scene: "Scene", sim: "Simulator", options):
1919
self._scene = scene
2020
self._dt: float = options.dt
2121
self._substep_dt: float = options.dt / sim.substeps
22+
self._init_gravity = getattr(options, "gravity", None)
2223
self._gravity = None
2324
self._entities: list[Entity] = gs.List()
2425

@@ -28,11 +29,15 @@ def __init__(self, scene: "Scene", sim: "Simulator", options):
2829
def _add_force_field(self, force_field):
2930
self._ffs.append(force_field)
3031

31-
def build(self, B: int):
32-
self._B = B
33-
g_np = np.asarray(self._sim._gravity)
34-
g_np = np.repeat(g_np[None], B, axis=0)
35-
self._gravity = ti.Vector.field(3, dtype=gs.ti_float, shape=B)
32+
def build(self):
33+
self._B = self._sim._B
34+
if self._init_gravity is not None:
35+
g_np = np.asarray(self._init_gravity, dtype=gs.np_float)
36+
else:
37+
g_np = np.asarray(self._sim._gravity, dtype=gs.np_float)
38+
g_np = np.repeat(g_np[None], self._B, axis=0)
39+
40+
self._gravity = ti.Vector.field(3, dtype=gs.ti_float, shape=self._B)
3641
self._gravity.from_numpy(g_np)
3742

3843
def set_gravity(self, gravity, envs_idx=None):

genesis/engine/solvers/fem_solver.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,9 +276,9 @@ def reset_grad(self):
276276
entity.reset_grad()
277277

278278
def build(self):
279+
super().build()
279280
self.n_envs = self.sim.n_envs
280281
self._B = self.sim._B
281-
super().build(self._B)
282282

283283
# batch fields
284284
self.init_batch_fields()

genesis/engine/solvers/mpm_solver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,9 +196,10 @@ def reset_grad(self):
196196
entity.reset_grad()
197197

198198
def build(self):
199+
super().build()
200+
199201
# particles and entities
200202
self._B = self._sim._B
201-
super().build(self._B)
202203

203204
self._n_particles = self.n_particles
204205
self._n_vverts = self.n_vverts

genesis/engine/solvers/pbd_solver.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,8 @@ def init_ckpt(self):
208208
self._ckpt = dict()
209209

210210
def build(self):
211+
super().build()
211212
self._B = self._sim._B
212-
super().build(self._B)
213213
self._n_particles = self.n_particles
214214
self._n_fluid_particles = self.n_fluid_particles
215215
self._n_edges = self.n_edges

genesis/engine/solvers/rigid/rigid_solver_decomp.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,10 @@ def add_entity(self, idx, material, morph, surface, visualize_contact) -> Entity
156156
return entity
157157

158158
def build(self):
159+
super().build()
160+
159161
self.n_envs = self.sim.n_envs
160162
self._B = self.sim._B
161-
super().build(self._B)
162163
self._para_level = self.sim._para_level
163164

164165
for entity in self._entities:

genesis/engine/solvers/sf_solver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ def set_jets(self, jets):
4141
self.jets = jets
4242

4343
def build(self):
44-
super().build(self.sim._B)
44+
super().build()
45+
4546
if self.is_active():
4647
self.t = 0.0
4748
self.setup_fields()

genesis/engine/solvers/sph_solver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,9 @@ def reset_grad(self):
128128
pass
129129

130130
def build(self):
131+
super().build()
132+
131133
self._B = self._sim._B
132-
super().build(self._B)
133134

134135
# particles and entities
135136
self._n_particles = self.n_particles

genesis/engine/solvers/tool_solver.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ def __init__(self, scene, sim, options):
3232
self.setup_boundary()
3333

3434
def build(self):
35-
super().build(self.sim._B)
35+
super().build()
36+
3637
for entity in self._entities:
3738
entity.build()
3839

tests/test_rigid_physics.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,11 +2205,6 @@ def test_urdf_mimic(show_viewer, tol):
22052205
def test_gravity(show_viewer, tol):
22062206
scene = gs.Scene(
22072207
show_viewer=show_viewer,
2208-
sim_options=gs.options.SimOptions(
2209-
dt=0.01,
2210-
substeps=1,
2211-
gravity=(0.0, 0.0, -9.8),
2212-
),
22132208
)
22142209

22152210
sphere = scene.add_entity(gs.morphs.Sphere())

0 commit comments

Comments
 (0)