
// cat1diskpart.fe
// Symmetric quarter of cat1disk.fe
// Two catenoids joined at right angles with disk across center of one.

parameter radius = 1  // ring radius
parameter heightl = .2 // half-distance between left rings
parameter heightr = .2 // half-distance between right rings

// rings
boundary 1 parameters 1  //right top ring
x1:  radius*sin(p1)
x2:  sqrt(radius^2-heightl^2) - radius*cos(p1)
x3:  heightr

boundary 2 parameters 1  //right bottom ring
x1:  radius*sin(p1)
x2:  sqrt(radius^2-heightl^2) - radius*cos(p1)
x3:  -heightr

boundary 3 parameters 1  //left front ring
x1:  heightl
x2:  -(sqrt(radius^2-heightr^2) - radius*cos(p1))
x3:  radius*sin(p1)

boundary 4 parameters 1  //left back ring
x1:  -heightl
x2:  -(sqrt(radius^2-heightr^2) - radius*cos(p1))
x3:  radius*sin(p1)

constraint 1 formula: z = 0
constraint 2 formula: x = 0

vertices
1  asin(heightl/radius)  boundary 1 fixed
2  pi/2  boundary 1 fixed
3  pi boundary 1 fixed
11  pi/2 boundary 3 fixed
12  pi boundary 3 fixed
 17  0 0 0 constraint 1,2
18  heightl 0 0 constraint 1
19  radius radius 0 constraint 1
 20  0 2*radius 0 constraint 1,2
23  0 0 heightr constraint 2
24  0 -radius radius constraint 2
25  0 -2*radius 0 constraint 1,2

edges
1   1 2 boundary 1 fixed
2   2 3 boundary 1 fixed
9   1 11 boundary 3 fixed
10  11 12 boundary 3 fixed
17   23 1
18   1 18
21   2 19
22   3 20 constraint 2
24   11 24
25   12 25  constraint 1
27   17 23 constraint 2
29   20 17 constraint 2,1
30   17 18 constraint 1
31   18 19 constraint 1
32  19 20 constraint 1
35   23 24 constraint 2
36   24 25 constraint 2

faces
 1   18 31 -21 -1
 2  21 32 -22 -2
 5 -18 -17 -27 30
 6  35 -24 -9 -17
 7  24 36 -25 -10
 21 29 30 31 32 tension 0.5


read
hessian_normal

// Command to refine edges around these vertices:
ref := { refine edge ee where max(ee.vertex, id==1) }

//
gogo := { l .8; refine edge where id==1 or id==3 or id==18 or id==33 ;
	  g 20; t .06;
	  g5; hessian; hessian; ref; g 10; hessian;
	  ref; u; g 10; hessian;
	  ref; u; g 10; hessian;
	  ref; u; g 10; hessian;
	  ref; u; g 10; hessian;
	  r; g22; r; u; g 10; V;V;V; g 22;
	  ref; u; g 12; r; g 10; hessian; V; V;
	  hessian;
	  }



