Git Product home page Git Product logo

rim's Introduction

Reduced Immersed Method

This is a basic implementation of The Reduced Immersed Method for Real-Time Fluid-Elastic Solid Interaction and Contact Simulation.

Prerequisites

We currently only provide a setup to build the code on Windows, in particular using Visual Studio 2015, 2017 or 2019. CUDA is required and should be installed prior to following the build instructions.

Build

Unpack the files and run premake-vs201X.bat to generate a solution for Visual Studio 201X in a subdirectory build. Open build/Demo.sln and build the solution. Run the project demo to start the simulation.

The simulation

Note that the simulation requires preprocessing, so there will be a ~10 second delay before the simulation starts. The simulation should run at least at 60FPS on a wide range of CPUs and GPUs. If your framerate is significantly lower than this, there is likely to be an issue related to OpenMP, CUDA options, or compilation options.

In the simulation, the user can click and drag on the mesh to add position constraints for mesh vertices. The camera can be moved using WASD (as in a first person game) and Q/E to move up and down. Additionally, pressing F toggles a mode in which mouse movement is translated to rotating the camera.

Simulation options

There is an expandable GUI in the top left corner containing various option groups. We offer various options related to the camera, lighting and rendering. The FPS can be viewed when expanding the "Render options" group. The options controlling the simulation are grouped into setting that have an instant effect on the simulation and options that require the simulation to be restarted, meaning the precomputation has to be run again.

Direct options

Local/Global Iterations - Iterations used in the Projective Dynamics algorithm to solve for the elastic forces
Jacobi Iterations - Number of Jacobi iterations to solve for incompressibility
Material Stiffness - Changes the stiffness of the elastic deformable
Solid:Fluid density - Controls the density of the elastic deformable relative to that of the fluid (0.5 means a 1:1 ratio)
Fluid calmness - Controlls the ratio between PIC and FLIP
Skip fluid step - Deactivates all fluid related computations (then handles advection of the elastic deformable in the Projective Dynamics framework).

Options that require restart

Reduction - Slider that interpolates between a very harsh reduction (0) and a good approximation (1) for the elasticity computations (controls subspace dimension, and force approximation quality)
Fluid Resolution - Interpolates between coarse (0) and fine (1) resolutions for the grid used for incompressibility and advection
Grid Size - Controls the absolute size of the simulation grid relative to the size of the mesh
Add Pool - If set to true, adds a pool of water, the size of the simulation grid
Pool height - Height of the pool relative to the height of the mesh
Pool gap - Extends the simulation grid so that the pool initially doesn't fill the full X/Z-plane
Fluid stream - Adds a stream of fluid that falls from the top with variable size
Prevent intersections - Toggles the solid-solid particle intersection prevention step

rim's People

Contributors

rotateme avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.