// cd.fe
// Schoen's C(D) surface
// Surface Evolver datafile for one fundamental region

// Programmer: Ken Brakke, brakke@susqu.edu, http://www.susqu.edu

/* Commands:
   gogo - typical evolution
   showsix - hexagonal unit, as on web page
   showrhombic - show rhombic dodecahedron unit cell
   transforms off - show just single fundamental region
   setcolor - to color one side yellow, as in my web page.

   To turn off showing all the edges in the graphics display,
      hit the "e" key in the graphics window.
*/

view_transform_generators 6
0 -1 0 0   // Transform a - mirror plane in x+y = 0
-1 0 0 0   
0 0 1 0   
0 0 0 1   

1 0 0 0   // Transform b - mirror plane in y = z
0 0 1 0    
0 1 0 0   
0 0 0 1   

swap_colors 
0 0 -1 2 // Transform c - C2 rotation  
0 -1 0 0    
-1 0 0 2   
0 0 0 1 

swap_colors 
-1 0 0 2 // Transform d - C2 rotation  
0 1 0 0   
0 0 -1 2   
0 0 0 1 

0 1 0 2    // Transform e - mirror plane in x-y = 0 
1 0 0 -2   
0 0 1 0   
0 0 0 1  

-1 0 0 0    
0 0 -1 0    
0 1 0 0   
0 0 0 1   // Transform f - mirror plane in y + z = 0

constraint 1 formula: x+y = 0  // mirror
constraint 2 formula: y = z    // mirror

vertices
1   1 1 1 fixed
2   -.25 .25 .25 constraints 1,2
3   0 0 2 fixed
4   1 0 1 fixed

edges
1  1 2 constraint 2
2  2 3 constraint 1
3  3 4 fixed
4  4 1 fixed

faces
1  1 2 3 4

read
hessian_normal
refine edge where valence == 1; l 1; g 5;
refine edge where original == 2;

// command to show six-spoke version as on web page
showsix := { transform_expr "babcd" }

// command to show full cell in rhombic dodecahedron
showrhombic := { transform_expr "beabaecdcd"; transforms on; 
                 set edge color black;
	      }

// edge to show rhombic dodecahedron edge
rhomb_edge := {
    va := new_vertex(-1,1,1);
    vb := new_vertex(1,-1,3);
    ea := new_edge(va,vb);
    set edge[ea] no_refine;
    set edge[ea] bare;
    set edge[ea] fixed;
    set edge[ea].vertex fixed;;
    vd := new_vertex(1,-1,-1);
    ec := new_edge(va,vd);
    set edge[ec] no_refine;
    set edge[ec] bare;
    set edge[ec] fixed;
    set edge[ec].vertex fixed;
}

setcolor := { set facet backcolor yellow }

// To show just one fundamental region, do "transforms off".
// To show tetrahedron outline again, do "show edges".

// typical evolution
gogo := { r; g12; u; refine edge where original==3; g 12 ; V; V; u; g 12;
          hessian; hessian;
          r; g 5; hessian; hessian;
          r; refine edge where on_constraint 2; u; V;
          g 5; hessian; hessian;
        }
