NeuroSurgSim/Backlog

From KitwarePublic
Jump to navigationJump to search

__NOTITLE__


Home




Instructions




Report Problems




Contact Us

Mesh Generator

  • Interface - Should be able to take volume data and or surface meshes (for stuffing) and output a sofa mesh data structure
  • Implement a tetrahedral multi material mesh generation routine
  • Takes an image label map (or series of) and output multimaterial meshes
  • Mesh decimation routine
  • Smoothing routine
  • Implement a routine to refine mesh
  • Implement adaptive mesh generation routine (multiple resolution mesh)
  • Implement a GPU+ multicore version of the mesher
  • Create testing routines

Hybrid Finite Element Solver

  • Interface - Should handle sofa data structures only (based on sofa vectors, scalar data)
  • Implement overloaded function addForce and getPotentialEnergy
  • Couple with the corotational FEM to model arteries
  • GPU + multicore implementation of the hybrid solver
  • Create testing routines

Collision detection and response

  • Interface - Should integrate with the collision pipeline in sofa
  • Implement bounding tree generation routine
  • Implement Continuous Intersection class (handles contacts between collision elements)
  • Implement computeIntersection and testIntersection collision queries routines
  • Create a data structure that can handle topology changes
  • Incorporate self collision into the data structure
  • GPU+ multicore implementations
  • Fluid solver simulation, investigate state of the SPH fluid solver in sofa
  • Investigate Haptic device integration within sofa
  • Simulation of suction and cutting

Performance Issues and Benchmarking

1. What kind of performance do we expect from FEM, collision detection as well as collision response? What is the mesh complexity? How much accuracy do we want? What is the performance goal? For example, for haptic rendering, the collision detection time budget is much lower than that for physics simulation.

2. I realize that it is already a major challenge to integrate technologies from various players (UNC, ODU, RPI and Kitware). But we may decide whether or not, you guys would need to port the stuff on a multi-core CPU or GPU, to meet the performance goals. As you know, that developing and integrating code for GPUs can increase the system complexity considerably. As far as our work is work, designing good algorithms for CPUs and GPUs is a very different task.