// knotrect.fe

// orientable rectifiable current on trefoil knot


parameter maj_r = 2      // torus major radius
parameter min_r = 1    // torus minor radius
parameter height = 1   // for vertical stretch

boundary 1 parameter 1    // the knotted wire
x1:  cos(2*p1)*(maj_r + min_r*cos(3*p1))
x2:  sin(2*p1)*(maj_r + min_r*cos(3*p1))
x3:  height*min_r*sin(3*p1)

vertices
1    0*pi/12  boundary 1 fixed
2    2*pi/12  boundary 1 fixed
3    3*pi/12  boundary 1 fixed
4    4*pi/12  boundary 1 fixed
5    5*pi/12  boundary 1 fixed
6    6*pi/12  boundary 1 fixed
7    8*pi/12  boundary 1 fixed
8    10*pi/12  boundary 1 fixed
9    11*pi/12  boundary 1 fixed
10   12*pi/12  boundary 1 fixed
11   13*pi/12  boundary 1 fixed
12   14*pi/12  boundary 1 fixed
13   16*pi/12  boundary 1 fixed
14   18*pi/12  boundary 1 fixed
15   19*pi/12  boundary 1 fixed
16   20*pi/12  boundary 1 fixed
17   21*pi/12  boundary 1 fixed
18   22*pi/12  boundary 1 fixed

edges
1    1 2   boundary 1 fixed
2    2 3   boundary 1 fixed
3    3 4   boundary 1 fixed
4    4 5   boundary 1 fixed
5    5 6   boundary 1 fixed
6    6 7   boundary 1 fixed
7    7 8   boundary 1 fixed
8    8 9   boundary 1 fixed
9    9 10   boundary 1 fixed
10  10 11   boundary 1 fixed
11  11 12   boundary 1 fixed
12  12 13   boundary 1 fixed
13  13 14   boundary 1 fixed
14  14 15   boundary 1 fixed
15  15 16   boundary 1 fixed
16  16 17   boundary 1 fixed
17  17 18   boundary 1 fixed
18  18 1   boundary 1 fixed
19  10 1
20  2  9
21  3 14
22  15 8
23  18 11
24  5 12
25  6 17
26  4 13
27  16 7

faces
1   8 -20 2 21 14 22  // top center
2   23 11 -24 5 25 17  // bottom center
3   19 1 20 9 
4   12 -26 4 24
5   26 13 -21 3
6   6 -27 16 -25
7  27 7 -22 15
8   18 -19 10 -23

read

hessian_normal

// typical evolution
gogo := { refine edge where fixed and (length > 2 or length < 1);
          u; r; g 5; V; u; u; g 5; 
          n .5;  // notching gets more vertices in highly curved region
          u; u; g 5; g 5 ; r; 
          g 5; V ; u ; V ; u; g 5; hessian; hessian; hessian;
        }
