You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stark is a C++ and Python simulation _platform_ that provides easy access to state-of-the-art methods to robustly solve simulations of rigid and deformable objects in a strongly coupled manner.
7
+
STARK is a C++ and Python simulation _platform_ that provides easy access to state-of-the-art methods to robustly solve simulations of rigid and deformable objects in a strongly coupled manner.
13
8
To the best of our knowledge, no other existing open source simulation environment provides such a rich collection of models, including coupling, with the same level of robustness.
14
-
Stark has been validated through real-world, challenging cases of interactions between robots and deformable objects, see the [Stark ICRA'24 paper](https://www.animation.rwth-aachen.de/publication/0588/).
9
+
STARK has been validated through real-world, challenging cases of interactions between robots and deformable objects, see the [STARK ICRA'24 paper](https://www.animation.rwth-aachen.de/publication/0588/).
One of the main features of Stark is that it uses a powerful symbolic differentiation and code generation engine that allows for a concise formulation of the global variational form of the non-linear dynamic problem.
23
-
Adding new models (e.g. materials, joints, interactions, ...) in Stark is as simple as specifying their energy potential in symbolic form together with the data they depend on.
17
+
One of the main features of STARK is that it uses a powerful symbolic differentiation and code generation engine that allows for a concise formulation of the global variational form of the non-linear dynamic problem.
18
+
Adding new models (e.g. materials, joints, interactions, ...) in STARK is as simple as specifying their energy potential in symbolic form together with the data they depend on.
24
19
This removes the tedium of manually deriving, implementing, testing and optimizing new models and integrating them in existing complex simulation environments.
25
-
Stark collects all the potentials and uses Newton's Method to find the solution to the non-linear implicit time-stepping problem.
26
-
Presently, even though Stark has a C++ and Python API, models can only be defined in C++.
20
+
STARK collects all the potentials and uses Newton's Method to find the solution to the non-linear implicit time-stepping problem.
21
+
Presently, even though STARK has a C++ and Python API, models can only be defined in C++.
27
22
28
-
By default, Stark comes out-of-the-box with important widely used models:
23
+
By default, STARK comes out-of-the-box with important widely used models:
29
24
- 3D and 2D **FEM** discretizations for deformable non-linear materials
30
25
-**Discrete Shells** for cloths and stiff shells
31
26
-**Rigid Bodies** with joints and motors
32
27
- Frictional Contact with **IPC**
33
28
34
29
See [Features](#features) section for more details.
35
30
36
-
There are two use cases for Stark:
31
+
There are two use cases for STARK:
37
32
- As an external, black-box, powerful simulator that can handle very challenging scenarios.
38
-
No knowledge of Stark internals are needed in this case, and users can directly use the high-level C++ or Python APIs.
33
+
No knowledge of STARK internals are needed in this case, and users can directly use the high-level C++ or Python APIs.
39
34
- As a research and development tool for simulation.
40
-
Thanks mainly to the symbolic differentiation and integrated collision detection, Stark can dramatically increase productivity of simulation technology research.
41
-
See [here](stark/src/models) how the models contained in Stark are implemented.
35
+
Thanks mainly to the symbolic differentiation and integrated collision detection, STARK can dramatically increase productivity of simulation technology research.
36
+
See [here](stark/src/models) how the models contained in STARK are implemented.
42
37
43
38
44
39
## Hello World
45
-
The following is a script example using Stark's Python API to execute a simulation of a piece of cloth falling on a rigid box with a prescribed spinning motion.
40
+
The following is a script example using STARK's Python API to execute a simulation of a piece of cloth falling on a rigid box with a prescribed spinning motion.
46
41
47
42
<palign=center>
48
43
<imgsrc="docs/images/spinning_box_cloth.gif">
@@ -96,7 +91,7 @@ The output is a sequence of VTK files per output group (in this case one sequenc
96
91
VTK files can be viewed in Blender with [this](https://github.com/InteractiveComputerGraphics/blender-sequence-loader) add-on or in [Paraview](https://www.paraview.org/).
97
92
You can use [meshio](https://github.com/nschloe/meshio) to transform VTK meshes to other formats.
98
93
99
-
Stark code will always follow the same structure:
94
+
STARK code will always follow the same structure:
100
95
- Define global settings and parameters.
101
96
- Add objects, boundary conditions and define interactions. In this example, `presets` are used but custom objects and composed materials are also possible.
@@ -105,12 +100,12 @@ Stark code will always follow the same structure:
105
100
See the folder [`stark/pystark/examples`](pystark/examples) for more scenes using the Python API and [`stark/examples`](examples/) for scenes written in C++.
106
101
107
102
108
-
## Get Stark
109
-
Stark's C++ and Python APIs are essentially equivalent.
110
-
A user who just wants to _use_Stark with the models that it comes with, probably will prefer the Python API.
111
-
Users looking to work on their own new models to _extend_Stark with new functionality will have to work directly in the C++ source code.
103
+
## Get STARK
104
+
STARK's C++ and Python APIs are essentially equivalent.
105
+
A user who just wants to _use_STARK with the models that it comes with, probably will prefer the Python API.
106
+
Users looking to work on their own new models to _extend_STARK with new functionality will have to work directly in the C++ source code.
112
107
113
-
Every time Stark encounters a new potential energy, it will generate and compile code to compute its derivatives.
108
+
Every time STARK encounters a new potential energy, it will generate and compile code to compute its derivatives.
114
109
Therefore, a C++17 compiler is required.
115
110
You can specify the command to invoke a compatible compiler using `pystark.set_compiler_command(str)` in Python and `stark::set_compiler_command(str)` in C++.
116
111
By default, it is `"g++"` in Unix and
@@ -121,18 +116,18 @@ in Windows.
121
116
Use `pystark.Settings().debug.symx_suppress_compiler_output = False` to inspect the compiler's output.
122
117
123
118
124
-
If you don't have a C++17 compiler and just want to use the models shipped with Stark by default, you can download the corresponding compiled binaries [here](https://rwth-aachen.sciebo.de/s/5NXgsPtoDyVl8Yo).
125
-
Don't forget to point Stark to the folder containing those in `settings.output.codegen_directory`.
119
+
If you don't have a C++17 compiler and just want to use the models shipped with STARK by default, you can download the corresponding compiled binaries [here](https://rwth-aachen.sciebo.de/s/5NXgsPtoDyVl8Yo).
120
+
Don't forget to point STARK to the folder containing those in `settings.output.codegen_directory`.
126
121
127
122
### Python API
128
-
You can install Stark for Python 3.8+ using
123
+
You can install STARK for Python 3.8+ using
129
124
```
130
125
pip install stark-sim
131
126
```
132
127
133
128
### Build from source
134
129
To build from source you will need [CMake](https://cmake.org/) and a C++17 compiler.
135
-
All dependencies are bundled with Stark or are downloaded by CMake at build time.
130
+
All dependencies are bundled with STARK or are downloaded by CMake at build time.
136
131
137
132
## Examples with code
138
133
<divalign="center">
@@ -169,7 +164,7 @@ All dependencies are bundled with Stark or are downloaded by CMake at build time
169
164
## Features
170
165
171
166
### Models
172
-
Besides a simulator, Stark is a repository of potential energies commonly used for deformable and rigid objects and frictional contact.
167
+
Besides a simulator, STARK is a repository of potential energies commonly used for deformable and rigid objects and frictional contact.
173
168
The following models can be found in symbolic form in `stark/stark/src/models/`:
174
169
175
170
* Deformable objects
@@ -198,12 +193,12 @@ The following models can be found in symbolic form in `stark/stark/src/models/`:
198
193
- Optional numerical PSD projection of element Hessians
199
194
* Event-based scripts
200
195
201
-
## Research using Stark
196
+
## Research using STARK
202
197
*["Micropolar Elasticity in Physically-Based Animation"](https://www.animation.rwth-aachen.de/publication/0582/) - Löschner et al., 2023
203
198
*["Curved Three-Director Cosserat Shells with Strong Coupling"](https://www.animation.rwth-aachen.de/publication/0589/) - Löschner et al., 2024
204
199
*["Strongly Coupled Simulation of Magnetic Rigid Bodies"](https://www.animation.rwth-aachen.de/publication/0590/) - Westhofen et al., 2024
205
200
206
-
## Cite Stark
201
+
## Cite STARK
207
202
```bibtex
208
203
@InProceedings{FLL+24,
209
204
author={Fernández-Fernández, José Antonio and Lange, Ralph and Laible, Stefan and Arras, Kai O. and Bender, Jan},
@@ -223,7 +218,7 @@ The following models can be found in symbolic form in `stark/stark/src/models/`:
0 commit comments