# Surface Evolver Newsletter no. 17

Back to top of Surface Evolver documentation.

                             Surface Evolver Newsletter 17
                                  August 20, 2003

                         by Ken Brakke, brakke@susqu.edu

      Surface Evolver version 2.20 is now available at
      http://www.susqu.edu/facstaff/b/brakke/evolver/evolver.htm.
      This is the first full official new version release since
      version 2.14 in 1999.

      Since there have been various modifications and tweaks of internal
      algorithms, it would be wise to test the new version on your existing
      datafiles before trusting it fully.  Please let me know of any
      significant anomalies.

    New features and changes:

      There are Macintosh versions for Mac OS 9 and Mac OSX.
      This will be the last Mac OS 9 version unless I hear demand from users.

      Variables and element extra attributes can be multi-dimensional
      arrays.  The "print" command can print whole arrays or slices of arrays.

      Functions with arguments and return values and procedures with arguments
      have been added.

      A variable name can be declared local in a command block to restrict
      its scope to the block.  Prevents global namespace pollution.

      Variables and procedures can be made "permanent" and survive loading
      of the next datafile.

      There is a simple man page for unix systems, evolver.1, which just
      describes the command line options.

      All versions can use OpenGL/GLUT graphics.  Can have a pull-down
      menu of graphics window commands, and multiple graphics windows with
      different camera angles.

      The "exec" command will interpret and execute a text string of Evolver
      commands.  Good for generating commands within a script.

      There is a FOR loop construct much like in C, but not quite the same.
      Example: for ( {inx:=1;rsum:=0;} ; inx < 10 ; inx += 1 ) rsum += inx^2;

      Warning messages generated early in loading a datafile can scroll off
      the screen, so if there were messages, a meesage is printed after
      loading is complete, and the user can reprint the messages with
      "print warning_messages".

      Wild cards are permitted in filenames both on the command line and in
      response to various Evolver prompts.  But be very cautious you don't
      get unexpected matches.  Useful when files have horribly long
      descriptive names and you get tired of typing them in.

      Constraints and boundaries can be designated by name as well as number,
      i.e. "constraint topwall" instead of "constraint 1".

      "errprintf" command is like "printf" except it sends output to stderr; good
      for console output in scripts where standard output is being redirected
      to a file.

      "sparse_constraints" toggles a mode of projecting to constraints that
      takes advantage of sparsity in constraints.  Makes it practicable to
      do 100,000 bodies and more in reasonable time.  Default on.

      "augmented_hessian" toggles a mode of solving Hessian equations
      that takes advantage of sparsity in constraints.  You can now do
      hessian commands with 100,000 bodies and more in reasonable time.
      Default on.

      For fine control of facet colors, the simple color numbers are overridden if
      the extra attribute frgb is defined: "define facet attribute frgb real[3]".
      Color component values should be in the range 0 to 1.

      The "pop" command can pop selected sets of vertices or edges.  Gives more
      control than the universal "o" and "O" popping commands.

      Special popping commands pop_edge_to_tri, pop_tri_to_edge, pop_quad_to_quad
      do topological changes common in foam evolution.

      Command sequences can be executed at the start of expressions by
      putting the commands in backquotes, followed by a comma.  Useful in
      constraint and boundary formulas and integrands.

      The width of individual edges in PostScript output can be controlled
      by defining the edge extra attribute ps_linewidth.

      The "equiangulate" command applies the equiangulation test and edge
      swap to selected edges, as opposed to the universal "u" command, or
      the non-testing "edgeswap" command.

      If you define it, a h_zero vertex attribute takes precedence over
      the global variable h_zero in various squared mean curvature calculations.

      Deleting edges and facets favors keeping triple edges (and higher
      valence edges) where there is a choice.

      The default length, area, and volume definitions can be substituted for
      by other named methods.  See length_method_name, area_method_name,
      and volume_method_name in the documentation.

Back to top of Surface Evolver documentation.