File: twointor.htm

package info (click to toggle)
evolver 2.70+ds-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 17,148 kB
  • sloc: ansic: 127,395; makefile: 209; sh: 98
file content (146 lines) | stat: -rw-r--r-- 4,417 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<!DOCTYPE HTML>
<HEAD><title>Surface Evolver Documentation - Torus Example</title>
<link rel="stylesheet" type="text/css" href="evdoc-style.css" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
</head>
<body>

<h1 class="center">
<a href="http://www.susqu.edu/brakke/evolver/evolver.htm" class="comic">
Surface Evolver</a> Documentation</h1>

<a href="evolver.htm#doc-top">Back to top of Surface Evolver documentation.</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.htm">Index.</a><br>
<a href="ringblob.htm">Next: Spinning ring example.</a><br>
<a href="tutorial.htm#tutorial">Back to top of tutorial.</a>

<a   id="Kelvin-foam-example"></a>
<a   id="twointor"></a> <h1>Example: Torus partitioned into two cells (Kelvin's foam)
</h1>

This example has a flat 3-torus (i.e. periodic boundary conditions)
divided into two bodies.  The unit cell is 
a unit cube, and the surface has the topology of Kelvin's partitioning of 
space into tetrakaidecahedra <a href="biblio.htm#refTW">[TW]</a>, which 
was the least area partitioning of space into equal volumes known until 
recently <a href="biblio.htm#refWP">[WP]</a>.  
<p>
The datafile handles the 
wrapping of edges around the torus by specifying for each direction whether
an edge wraps positively (+), negatively (-), or not at all (*).
<p>
Note the use of the keyword <code>TORUS_FILLED</code> in the datafile.
This informs Evolver that one of the volume constraints is redundant,
preventing a singular matrix when the time comes to enforce volume
constraints.  One could use just <code>TORUS</code> and only put on one
volume constraint.
<p>
The display of a surface in a torus can be done several ways.
The <a href="toggle.htm#connected"><code>connected</code></a>
command (my favorite) makes each body show as a single unit.
The  <a href="toggle.htm#clipped"><code>clipped</code></a>
command shows the surface clipped to the fundamental
parallelpiped.  The <a href="toggle.htm#raw_cells"><code>raw_cells</code></a>
command shows the unedited surface.
<p>
The Weaire-Phelan structure 
<a href="biblio.htm#refWP">[WP]</a>.  
is in the datafile <code>phelanc.fe</code>.
It has area 0.3% less than Kelvin's.


<table>
<tr><td>
<img src="twointor.gif"  alt="twointor"></td>
<td>  The initial two-cell Kelvin shape.  Note that due to
periodidity, a single vertex or edge may appear
multiple times in the image.</td>
</tr>
</table>


<pre>
// twointor.fe
// Two Kelvin tetrakaidecahedra in a torus.

TORUS_FILLED   // signals that domain is a torus and bodies fill it.

periods
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000

vertices // values from another program
1  0.499733 0.015302 0.792314
2  0.270081 0.015548 0.500199
3  0.026251 0.264043 0.500458
4  0.755123 0.015258 0.499302
5  0.026509 0.499036 0.794636
6  0.500631 0.015486 0.293622
7  0.025918 0.750639 0.499952
8  0.499627 0.251759 0.087858
9  0.256701 0.499113 0.087842
10 0.026281 0.500286 0.292918
11 0.500693 0.765009 0.086526
12 0.770240 0.499837 0.087382

edges // with wraps in axis directions
1    1 2  * * *    
2    2 3  * * *
3    1 4  * * *
4    3 5  * * *
5    2 6  * * *
6    2 7  * - *
7    1 8  * * +
8    4 6  * * *
9    5 9  * * +
10   3 10 * * *
11   3 4  - * *
12   6 8  * * *
13   6 11 * - *
14   7 4  - + *
15   8 12 * * *
16   9 8  * * *
17   9 11 * * *
18   10 7 * * *
19   11 1 * + -
20   12 5 + * -
21   5 7  * * *
22  11 12 * * *
23  10 12 - * *
24   9 10 * * *

faces
1    1 2 4 9 16 -7 
2    -2 5 12 -16 24 -10 
3    -4 10 18 -21 
4    7 15 20 -4 11 -3 
5    -1 3 8 -5 
6    6 14 -11 -2 
7    5 13 -17 24 18 -6 
8    -12 13 19 7 
9    -16 17 22 -15 
10   -10 11 8 12 15 -23 
11   -21 9 17 19 1 6 
12   -14 -18 23 -22 -13 -8 
13   -24 -9 -20 -23 
14   -19 22 20 21 14 -3 

bodies
1    -1 -2 -3 -4 -5 9 7 11 -9 10 12 5 14 3 volume 0.500
2     2 -6 -7 8 -10 -12 -11 -13 1 13 -14 6 4 -8 volume 0.500

</pre>
Doing some refining and iterating will show that the optimal shape
is curved a bit.
<hr>
<a href="ringblob.htm">Next: Spinning ring example.</a><br>
<a href="tutorial.htm#tutorial">Back to top of tutorial.</a>
<br>
<a href="evolver.htm#doc-top">Back to top of Evolver documentation.</a>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="index.htm">Index.</a>
</body>
</html>