Salmon - Volumetric mesh cutting and FEM deformation.

Introduction

Salmon is a prototype that combines volumetric cutting with static and dynamic FEM. It uses linear elements, and supports different elasticity models: neohookean, linear, exact geometry, Veronda-Westmann, and consistent Veronda-Westmann. The static solver supports Newton Raphson, unpreconditioned linear and nonlinear Conjugate Gradients in various tastes.

The name salmon continues my tradition of choosing nonsensical names for programs. In the unlikely event that you've downloaded this somewhere: the URL for this package is http://www.cs.uu.nl/groups/AA/virtual/surgery/salmon/salmon-0.1.tar.gz.

There are also some deformation experiments packaged in http://www.cs.uu.nl/groups/AA/virtual/surgery/salmon/salmon-experiments-0.1.tar.gz. They're there for completeness, sorry no doco or hints.

Parts of the above programs were cannibalized for my 3D surface mesh cutter mesjokke, and my needle insertion simulator, which contains more up to date deformation benchmarks, and is the platform upon which my experiments are based.

Here is the obligatory screenshot:

     salmon.png
     

Requirements

This program requires

It has been tested on RedHat 7.x and 8.0. There are some GCCism in the code (notably, the use of <? and >? for minimum and maximum), and gcc-3 will produce lots of warnings. Nevertheless, it seems to work OK.

For compiling: try

       make glutspeed
     

this leaves the executable in out-glutspeed/salmon

Use

This program was my first FEM testbed. It is messy, both internally, externally and UI wise. It's so bad that I don't want to take the trouble of documenting how it works precisely, but here are some pointers;

Command line options:

-h
Option help; prints a list of supported parameters.
-o KEY=VAL
Set a parameter. Use -h to determine what
-i FILE
read FILE
-s N
Set mesh size to nxnxn squares, for squares
-r
Run relaxation
-v
Run visualization

Probably the easiest way of seeing the program in action, is by running the example command-lines.

Dragging mouse with left button held rotates view.

Keys:

c
start cut. Dragging with mouse buttons held will maneuvre the scalpel.
C
end cut
F
apply initial force once more.
f
use force selector. Dragging with 3rd mouse buttons held will alter force. This looks really cute with nonlinear elasticity and small meshes.
g/G
fix and unfix triangle selected by force selector.
i
toggle showing internal edges.
e
toggle showing of edges.
S
toggle showing solid triangles.
v
set mouse to view mode: dragging with 3rd mouse held will zoom in/out.

Bugs

Yes, undoubtedly.

License (1)

The formal part of the license is below. Informally: I basically couldn't care less about what you do with this software. However, if you use it in any way to write articles in any form, I would greatly appreciate being cited. Relevant citations are:

@InProceedings{nienhuys01:miccai,
  author = 	 {Han-Wen Nienhuys and A. Frank van der Stappen},

  title = {A surgery simulation supporting cuts and finite element
  deformation},
series= lncs,
  booktitle = miccai,
  pages =	 {153--160},
  year =	 2001,
  isbn = {3-540-42697-3},
  address =	 {Utrecht, The Netherlands},
  month =	 {October},
  publisher =	 {Springer-Verlag},
number = 2208,
}

@PhdThesis{nienhuys03:_cuttin,
  author = 	 {Han-Wen Nienhuys},
  title = 	 {Cutting in deformable models},
  school = 	 {Utrecht University},
  year = 	 2003
}

The PhD thesis is not finished yet, so you might want to look into these:

@techreport{nienhuys-supporting,
  author = "Han-Wen Nienhuys and A. Frank van der Stappen",
  title = "Supporting cuts and finite element deformation in interactive surgery simulation" 
  year = 2001,
  institution = {Utrecht University, Institute for Information and Computing Sciences},
  address = {PO Box 80.089, 3508 TB, The Netherlands},
  month = {June},
  url = {citeseer.nj.nec.com/nienhuys01supporting.html}
}

@InProceedings{nienhuys00:_combin,
  Author         = {Han-Wen Nienhuys and A. Frank van der Stappen},
  Title          = {Combining finite element deformation with cutting for
                   surgery simulations},
  BookTitle      = {EuroGraphics Short Presentations},
  Editor         = {A. de Sousa and J.C. Torres},
  Pages          = {43--52},
  year           = 2000,
}

In case you want to contact me, my email addresses is hanwen@cs.uu.nl.

License (2)

Copyright (c) 2002 Han-Wen Nienhuys and Utrecht University

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.