Surface Evolver Newsletter no. 21
Back to top of Surface Evolver documentation.
Surface Evolver Newsletter 21
May, 2012
by Ken Brakke, brakke@susqu.edu
Contents:
New Surface Evolver version 2.50 available.
Automated Windows install.
64-bit Windows version.
New book.
3D printing with Evolver.
Warning to users of Evolver's display_text.
New Surface Evolver features.
New Surface Evolver version 2.50 available.
Surface Evolver version 2.50 is available for download at
http://facstaff.susqu.edu/brakke/evolver.
This is the first official release since version 2.30c in January, 2008.
For those who compile Evolver themselves, the same makefile may be used.
Automated Windows install.
Besides the usual zipped file of the Evolver distribution, I put together
a package using the Microsoft Software Installer, which gives you the
familiar semi-automated software installation that a lot of software
uses. The installer will go through steps of asking what directory
you want to install in, setting the Evolver environment variables, and
associating .fe files with Evolver.
64-bit Windows version.
The Windows distribution contains both a 32-bit version of Evolver
(named evolver.exe) and a 64-bit version (named evolver64.exe).
The 64-bit version is meant for very large surfaces, i.e.
hundreds of thousands of facets and up. Even if you have a 64-bit
system, you should use the 32-bit version unless you have a very
large surface, since the 32-bit version is 10 to 20 percent faster
on 64-bit systems, since it has to move less data around.
New book.
I have helped Jean Berthier produce a book entitled "The Physics
of Microdroplets," which has just been published:
http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470938803.html
There are hundreds of Evolver models involved, which are available
on the book's web page (if you get the book).
3D printing with Evolver.
Over the past year I have been experimenting with 3D printing, using
the Shapeways.com website. I have done various minimal surfaces
(using a mesh techinique to keep costs down and look artistic), and
other mathematical shapes. I have made all my models available for
public purchase, and I have set up a web page with illustrations
and links: http://facstaff.susqu.edu/brakke/models/models.html.
Also, I have set up a web page explaining in detail how I use Evolver
to make the files to send to Shapeways.com.
Warning to users of Evolver's display_text.
If you have a recent development version of Evolver and have been using
the display_text feature to display text in the graphics window, be
warned that I have added a font size argument, so you will need to
modify any existing datafiles that use it, and insert a relative
font size (typically 0.03) as the third of five arguments.
New Surface Evolver features.
Converting torus model to Euclidean model.
The "detorus" command will convert a torus model surface to a
non-torus versions. It goes through the same unwrapping
procedure as the graphics display, so what you see in the
graphics window (clipped, connected bodies, raw facets) will
be what you get after detorus. Useful prior to exporting a
surface to an external 3D CAD file.
Facet graphing in string model.
Doing "show facet where ..." in the string model will now show
the designated facets filled in with their colors. By default,
no facets are shown. "show facet where 1" will show all facets.
Default color is white. Nonconvex facets are shown properly.
Superposing models.
The "addload" command will read in a datafile without deleting
the current surface. Syntax:
addload stringexpr
where stringexpr can be a double-quoted filename or a string
variable. The "read" section of the new datafile is NOT read,
to prevent re-definitions of commands and variables and to
prevent initializations that would have a bad effect on the
original surface. But the top section is read, so all constraints,
boundaries, and variables defined there should be compatible with
the existing surface.
Replacing the existing surface.
The "replace_load" command will delete the current surface and
load a new surface from a datafile. Syntax:
replace_load stringexpr
where stringexpr can be a double-quoted filename or a string
variable. The "read" section of the new datafile is NOT read,
Evolver scripts sometimes want to re-evolve a surface again from
the start, and the old permload command has gotten so tangled up
as to be unusable, so I have created the replace_load command,
which deletes all the current surface elements and then does
an addload of the new datafile. So all variables are
remembered, and replace_load is safe to use in loops in scripts.
Permload deprecated.
Do not use permload. It has gotten tangled up beyond fixing.
Use replace_load instead.
Displaying text in the graphics window.
The display_text function will display text strings in the
graphics window. Syntax:
text_id := display_text(x,y,height,string)
where x,y are window-relative coordinates (from 0 to 1) and
height is the window-relative font size (typically 0.03).
Multiple strings can be displayed, and the text_id value
lets you delete an old string, delete_text(text_id), before
drawing a new string.
Array initializer syntax in commands.
It is now possible to use an array initializer as the right side
of an array assignment command.
Increment and decrement operators.
The C-style ++ and -- operators work as increment and decrement
operators on variables, attributes, and array elements. Examples:
for ( inx := 1; inx <= 10 ; inx++ ) ...
framenumber++;
These work only as stand-alone commands, not within expressions,
so you can't do "xx := yy++".
Opacity.
Evolver screen graphics can now show transparent surfaces. If
you set the facet opacity attribute to a value between 0 (clear)
and 1 (opaque), screen graphics will show transparency. Assigning
a opacity value to any facet will activate the transparency in
graphics; hitting the letter 'O' key in the graphics window will
then toggle transparency. Showing transparency properly requires
sorting the facets back to front, so graphics will be slower if
there are many facets. PostScript output will not show transparency.
Command line script execution.
The -r command line option lets you give a command string on the
Evolver command line that will be executed automatically after the
entire datafile is read in and the "read" section executed. Input
reverts to the usual interactive prompt after the command executes.
Useful in batch runs of Evolver. For example, you could have a "run"
command in the datafile, and launch Evolver from your shell script
with
evolver -r "run; exit 0;"
to execute the run command and then quit with exit code 0.
Evaluating level-set constraint functions.
The value_of_constraint attribute of a vertex will return the value
of the designated constraint at the vertex position. Syntax is
the same as the on_constraint attribute. Example
list vertex where on_constraint con1 and
value_of_constraint con1 < 1e-5
Note value_of_constraint is evaluated to the function also for
variables not on the constraint.
Break on warning.
The break_on_warning toggle makes execution stop immediately when
a warning happens and return to the command prompt. The existing
break_after_warning toggle lets the current command or script
complete before breaking.
Vertex-by-vertex control of hessian_normal
The no_hessian_normal of a vertex will exempt a vertex from the
hessian_normal mode when it is set to a non-zero value.
Error message redirection
The ">>2" and ">>>2" symbols will redirect error messages and
errprintf output to a file, the same as ">>" and ">>>"
redirect normal output.
Dot product notation:
The multiplication symbol * between two vectors now means dot product.
No need to use the old dot_product keyword.
Bounding box.
The show_bounding_box toggle command toggles showing the bounding
box in graphics, same as hitting the "o" key in the graphics window.
The bounding box color can be set with the bounding_box_color
internal variable.
view_transforms_use_unique_point
When view transforms are generated with transform_expr, Evolver weeds out
duplicate transforms. By default, "duplicate" means the same transform
matrix, but there are circumstances where different transform matrices carry
the surface to the same spot. view_transforms_use_unique_point toggle enables
a mode whereby two transform matrices are deemed identical if they transform
the point given by the vector view_transforms_unique_point[] to the same
image point.
septum_flag
Evolver toggle command. Under some circumstances, popping a vertex
can leave two regions connected by a tunnel; if the septum_flag toggle
is on, it will force a surface to be placed across the tunnel.
centerofmass
Boolean body attribute. Applies to the "connected" bodies mode of graphical
display in the torus model. When this is set for a body, the center of mass
of the body as displayed is remembered, and the next time a body is graphed,
its wrap is such that its new center of mass is near its previous center
of mass. This prevents bodies near the boundaries of the fundamental
region from jumping back and forth as they shift slightly during evolution.
Default on. Example:
set bodies centerofmass
Dividing string-model facets.
The facet_crosscut function subdivides a facet by constructing
a diagonal edge between given vertices. The return value is the
id number of the new edge. The new facet will be on the same body
as the old facet. Syntax:
newedge := facet_crosscut(facet_id,tail_id,head_id)
Random number seed.
Added -sN command line option for setting random number seed.
End of newsletter 21.