Clebsch Diagonal Surface
                                             by 
          Frits Beukers, Wilberd van der Kallen and Johan Kolk
                      Mathematical Institute, Utrecht University, 2015

Introduction

The Clebsch diagonal surface is defined by the system of equations in (ℙ^4) 
    (x^3) + (y^3) + (z^3) + (u^3) +(v^3) = 0,
    x   + y  +  z  + u + v   = 0. 
It is the unique cubic surface having 27 lines on it and the system displays the (Subscript[(Subscript[S,  ]), 5])-symmetry. 
In order to study a few of the many properties of the surface, intersect with the hyperplane u + v = 0. We get (x^3) + (y^3) + (z^3) = 0 and  x + y + z  = 0. Eliminate z to get 
    (x^3) + (y^3) – (((x + y))^3) = – 3 xy(x + y) = 3 xyz. 
I.e we have three lines on the surface and passing through the point (0 : 0 : 0 : 1 : –1) . This then is called an Eckardt point. Since there are (({{5}, {2}})) = 10 choices for the hyperplanes, there are 10 Eckardt points. Notice that x = 0 contains (({{4}, {2}})) = 6 Eckhardpoints and similarly for the other coordinate hyperplanes.
The lines on the surface associated to the 10 Eckardt points satisfy the equations x + y = z + u = v = 0 and permutations of it. This gives 15 lines. Indeed, there are 5 choices for v and (1/2)(({{4}, {2}})) = 3 for x + y, because then u + v is also determined, while the division by 2 is needed as the u + v occur among the x + y. 
The other lines are constructed as follows. Consider the complex point w = ((Subscript[ζ, 1]),(Subscript[ζ, 2]),... ,(Subscript[ζ, 5]) ) where the (Subscript[ζ, i]) form the complete set of fifth roots of unity. Then the line spanned by the real and imaginary part of w lies on the surface. There are 5! = 120 choices for w, but any ζ w for any fifth root ζ of unity and complex conjugate (Overscript[w, —]) give the same line. Therefore we get (120/10) = 12 additional lines.
Below we give a second method to obtain the 27 lines on the surface that also verifies that there are no other lines on the surface.

The other 12 lines.

ω=E^(2π I/5);
Table[Re[ω^j],{j,0,4}]//ComplexExpand
Table[Im[ω^j],{j,0,4}]//ComplexExpand
Sum[ω^j,{j,0,4}]//ComplexExpand
Sum[ω^(3j),{j,0,4}]//ComplexExpand
Sum[λ ω^j+μ Conjugate[ω^j],{j,0,4}]//ComplexExpand
Sum[(λ ω^j+μ Conjugate[ω^j])^3,{j,0,4}]//ComplexExpand
Sum[(λ (ω^j+ Conjugate[ω^j])+I μ (ω^j- Conjugate[ω^j]))^3,{j,0,4}]//ComplexExpand

Introduction

In order to create a 3-dimensional image of the surface, map the coordinate planes to designated planes in (ℝ^3). The (Subscript[S, 5])-symmetry will be lost in the process, but we will preserve the (Subscript[S, 3])-symmetry which comes from the permuation of x, y, z. 
We eliminate v to get
    (x^3) + (y^3) + (z^3) + (u^3) – (((x+ y+ z + u))^3) = 0.
The five coordinate planes above are now given by, respectively,  
x = 0,  y = 0,  z = 0,  u = 0,  x + y + z + u = 0. 
Consider the pyramid in (ℝ^3) with vertices (1, 0, 0), (0, 1, 0), (0, 0, 1) and the top T = (0, 0, 0). We project x = 0 to the plane through (0,1,0), (0,0,1) and T and similarly for 
y = 0 and z = 0. We project u = 0 to x + y + z = 1, the base of the pyramid. Finally, we like to project x + y + z + u = 0 to x + y + z = b with b a parameter not equal to 0 or 1. All of this can be realized by the substitutions 
   x  by  (1 – b) x 
   y  by  (1 – b) y 
   z  by  (1 – b) z 
   u  by  b (x + y + z  – 1).

Next plot the surface. We summarize everything in one command.

clebsch[b_]:=Expand[(x+y+z+u)^3-x^3-y^3-z^3-u^3/.{x->(1-b)x,y->(1-b)y,z->(1-b)z,u->b(x+y+z-1)}]

We first give an example with b > 0. Then the plot of the surface will be like the classical plaster models in various shapes.

g=8/3  clebsch[1/2]//Expand

bound1=-2;bound2=2;
ContourPlot3D[g==0,{x,bound1,bound2},{y,bound1,bound2},{z,bound1,bound2},Mesh->False,PlotPoints->40]

Now an example with b < 0.

g=8/9 clebsch[-1/2]//Expand

bound1=-2;bound2=2;
ContourPlot3D[g==0,{x,bound1,bound2},{y,bound1,bound2},{z,bound1,bound2},Mesh->False,PlotPoints->40]

These graphics are not very satisfactory. Below more illustrative pictures will be produced.

The following transformation accomplishes that 
   – (1/3)  (x + y + z) is the new z-coordinate 
     (1/(Sqrt[3]))(x – y)           the new x-coordinate
     (1/3)  (x + y – 2 z)   the new y- coordinate. 
The resulting equation is invariant with respect to rotations in the x-y-plane and sign change of x.

sol0=Solve[x==((x1-y1)/(Sqrt[3]))&&y==(1/3) (x1+y1-2 z1)&&z==(1/3) (-x1-y1-z1),{x1,y1,z1}]//Simplify
sol=sol0[[1]]/.{x1->x,y1->y,z1->z};

Alternatively, we obtain the same result by using matrices. Here bM denotes the original linear transformation and aM its inverse.

bM=(1/3){{(Sqrt[3]),-(Sqrt[3]),0},{1,1,-2},{-1,-1,-1}};
bM//MatrixForm
aM=Inverse[bM];
aM//MatrixForm
Det[aM]

We draw a picture of the effect of aM on the standard simplex (in red) in (R^3)

e0={0,0,0};
e1={1,0,0};
e2={0,1,0};
e3={0,0,1};
l1=Line[{e0,e1}];
l2=Line[{e0,e2}];
l3=Line[{e0,e3}];
l12=Line[{e1,e2}];
l23=Line[{e2,e3}];
l31=Line[{e3,e1}];
al1=Line[{aM.e0,aM.e1}];
al2=Line[{aM.e0,aM.e2}];
al3=Line[{aM.e0,aM.e3}];
al12=Line[{aM.e1,aM.e2}];
al23=Line[{aM.e2,aM.e3}];
al31=Line[{aM.e3,aM.e1}];
Graphics3D[{Red,{l1,l2,l3,l12,l23,l31},Blue,{al1,al2,al3,al12,al23,al31},Black,PointSize[Large],Point[{1,0,0}]},Axes->True, ViewPoint->{3,1.5,-1/8}]

grotate=Factor[clebsch[1/3]/.sol]
grotate1=Factor[clebsch[1/2]/.sol]
clebschEq[b]=Factor[clebsch[b]/.sol]

We verify the invariances.

an=2Pi/3;
clebschEq[b]/.{{x,y}->{{Cos[an],-Sin[an]},{Sin[an], Cos[an]}}.{x,y}}//Factor
%==clebschEq[b]//Simplify
(clebschEq[b]/.{x->-x})==clebschEq[b]//Simplify

Let us scale it in the z-direction by a factor 3 and in the x-y-direction by (1/2).

Factor[grotate/.{x->2*x,y->2*y,z->z/3}]
Factor[grotate1/.{x->2*x,y->2*y,z->z/3}]
Factor[clebschEq[b]/.{x->2*x,y->2*y,z->z/3}]
clebschEq1=Expand[-4*72clebschEq[b]/.{x->2*x,y->2*y,z->z/3}]/.b->1/2

Expand[8clebschEq1/.{x->x/2,y->y/2,z->-z/2}//Simplify]

The formula used in the graphics below is derived in the following way.

clebschJW=Expand[32 - 216 x^2 + 648 x^2 y - 216 y^2 - 216 y^3 - 150 z +
          216 x^2 z + 216 y^2 z + 231 z^2 - 113 z^3/.z->z+1]

clebschJW1=clebschJW/.{x->x Cos[an]-y Sin[an],y->x Sin[an]+y Cos[an]};
clebschJW1==clebschJW//Simplify

An optimal choice for the parameter b correction is obtained by taking b = (1/2).

clebsch = 32 - 216 x^2 + 648 x^2 y - 216 y^2 - 216 y^3 - 150 z +
          216 x^2 z + 216 y^2 z + 231 z^2 - 113 z^3;

Choose parameters al and radius. There will be horizontal lines and Eckardt points at heights 0, 2/(3+al) and 1. 
Make sure that 0 < 2/(3+al) < 1.

al=1;radius=.8;

clebsch=-216 (((1+al))^3) (y^3)+216 (((1+al))^2) (y^2) (-1+z)+216 (((1+al))^2) (x^2) (-1+3 (1+al) y+z)-(-1+z) (32-2 (59+27 al) z+(113+108 al+27 (al^2)) (z^2))

The occurrence of the number 1728 indicates that the theory of the icosahedron plays a role in this investigation.

Let us make the following Ansatz for the (18, as will be shown in the following) lines which are not in a plane parallel to the x,y-plane: 
   {x, y, z}={(Subscript[x, 0]),(Subscript[y, 0]),0}+t{(Subscript[x, 1]),(Subscript[y, 1]),1}.
Here, t is the parameter of the line. The coefficients (Subscript[x, 0]), (Subscript[x, 1]), (Subscript[y, 0]), and (Subscript[y, 1]) are to be determined. (Every line not parallel to the x,y-plane will cross the x,y-plane; so, we have taken (Subscript[z, 0])=0, while (Subscript[z, 1])=1 can always be achieved by a reparametrization.) 
We insert this parametrization for the lines into clebsch.

clebsch /. {x -> x0 + x1 t, y -> y0 + y1 t, z -> t}

Extracting the coefficients with respect to t gives us a set of polynomial equations for (Subscript[x, 0]), (Subscript[x, 1]), (Subscript[y, 0]), and (Subscript[y, 1]).

cl1 = CoefficientList[%, t]

We can now straightforwardly solve these equations.

sol2 = Solve[cl1 == 0,
             {x0, y0, x1, y1}] // RootReduce // ToRadicals

As previously mentioned, there are 18 lines.

Length[sol2]

For the picture to be constructed later, we numericalize the data for (Subscript[x, 0]), (Subscript[x, 1]), (Subscript[y, 0]), and (Subscript[y, 1]).

sol3 = N[sol2];
sol4 = {x0, x1, y0, y1} /. sol3;

We will make a picture for the surface for all values of z, which arise when x and y vary inside a circle of radius R. To make the lines fit inside the region where the surface is drawn, we determine the relevant parameter values.

tRange[{x0_, x1_, y0_, y1_}, R_] =
  t /. Solve[(x0 + x1 t)^2 + (y0 + y1 t)^2 == R^2, {t}]

So, we get the following lines. (We take R=radius as an appropriate parameter for a neat picture here.)

lines1 = Apply[Function[{t0, t1, x0, x1, y0, y1},
                        Line[{{x0, y0, 0} + t0 {x1, y1, 1},
                              {x0, y0, 0} + t1 {x1, y1, 1}}]],
                        Flatten[{tRange[#, radius], #}]& /@ sol4, {1}];

Now, we must treat the case that there are lines that are parallel to the x,y-plane. We make a similar Ansatz as above: {x, y, z}={0,(Subscript[y, 0]),(Subscript[z, 0])}+t{1,(Subscript[y, 1]),0}.
This does not cover lines that are parallel to the y-axis, but one may check that there are no such lines.

clebsch /. {x -> t, y -> y0 + y1 t, z -> z0}

We again extract the coefficients with respect to t.

cl2 = CoefficientList[%, t]

The resulting equations can be easily solved for (Subscript[x, 0]), (Subscript[y, 0]), (Subscript[y, 1]), and (Subscript[z, 0]).

sol1 = Solve[ cl2==0, { y0, y1, z0 }]

There are nine remaining solutions.

Length[sol1]

We can again calculate explicit representations for these nine lines.

sol5={0, 1, y0, y1, z0}/.sol1//N;

lines2 = Apply[Function[{t0, t1, x0, x1, y0, y1, z0},
                        Line[{{x0, y0, z0} + t0 {x1, y1, 0},
                              {x0, y0, z0} + t1 {x1, y1, 0}}]],
               Flatten[{tRange[Drop[#, -1], radius], #}]& /@ sol5, {1}];

So, we finally have the following 27 lines.

twentySevenLines = Join[lines1, lines2];

Let us have a look at them. Viewing from far above (right picture), we see how the calculated lines reflect the threefold rotational symmetry of the Clebsch surface.

GraphicsRow[
Graphics3D[twentySevenLines, PlotRange -> All, ViewPoint -> #]& /@
                                    {{1.3, -2.4, 2}, {0, 0, 100}}]

Now let us make a picture of the Clebsch surface and the 27 lines. Here is a picture of the Clebsch surface. As in Chapter 1 of the Numerics volume [1752✶], we use ContourPlot3D to calculate this picture and exploit the symmetry of the surface.

As the old code no longer works (it depended too much on precise details of implementation of ContourPlot3D), we first define some auxiliary functions. 
ContourPlot3D produces a GraphicsComplex, and we will need to change coordinates within that GraphicsComplex.

transformGraphicsComplex::usage:="Apply function to the coordinate vectors in every GraphicsComplex"

transformGraphicsComplex[f_,pic_Graphics3D]:=MapAt[transformGraphicsComplex[f,#1]&,pic,(Most[#1]&)/@Position[pic,GraphicsComplex]];

transformGraphicsComplex[f_,GraphicsComplex[list_,rest__]]:=GraphicsComplex[f/@list,rest]

cylinder2cartesian[{r_,phi_,z_}]={r  Cos[phi],r Sin[phi],z}

Now we can plot the Clebsch surface.

cylinderClebsch=clebsch/.{x->r  Cos[phi],y->r  Sin[phi]}

clebschSurface =(pic=transformGraphicsComplex[cylinder2cartesian,
ContourPlot3D[cylinderClebsch==0,
              {r, 0, radius}, {phi, N[-Pi/2], N[Pi/6]},
(* carefully select z-boundaries to fit exactly *)
              {z, -1.6, 2.5}, MaxRecursion -> 1,PlotPoints->12{1,1,1},ImageSize->800, Mesh->None,ContourStyle->Hue[0.6,0.7,1],Lighting->"Neutral"]]/.Line[_]->Null;
(* now exploit the threefold symmetry *)
Graphics3D[
{pic[[1]],
transformGraphicsComplex[N[{{-1,Sqrt[3],0},{-Sqrt[3],-1,0},{0,0,2}}/2].#&,pic[[1]]],
transformGraphicsComplex[N[{{-1,-Sqrt[3],0},{Sqrt[3],-1,0},{0,0,2}}/2].#&,pic[[1]]]},
PlotRange->All,pic[[2]]
])

Just displaying this surface and the lines together in one picture does not yield a reasonable quality. Due to the approximative nature of the polygons from the surface, they intersect in a complicated manner with the lines, and so some parts of the lines will be “below” and some parts “above” the surface. To avoid this, we “lift” the lines slightly in the direction of the local normal on the surface. Here is the normal vector for our cubic.

normalVector[{x_, y_, z_}] = 
 #/Sqrt[#.#]&[{D[#, x], D[#, y], D[#, z]}&[clebsch]];

The routine liftLines lifts its first argument (a Line) to both sides of the surface to avoid intersections with the polygons by a height height.

liftLines[Line[{point__}], height_] :=
Function[{l, normal}, (* move slightly up and down *)
{Line[MapThread[Plus, {l, +height normal}]],
 Line[MapThread[Plus, {l, -height normal}]]}] @@
  {{point}, normalVector /@ {point}};

As the normals change direction, we wish to subdivide the lines

subdivide[Line[{points__}]]:=Line[subdivide[{points}]];
subdivide[{l__Line}]:=subdivide/@{l}
subdivide[{p1_,p2_}]:={p1,(p1+p2)/2,p2}
subdivide[{p1_,p2_,p3__}]:=Join[{p1,(p1+p2)/2},subdivide[{p2,p3}]]

Now, we can display the lines and the surface together.

Show[Graphics3D[{
{(* the 27 lines *) PlotPoints->500, Thickness[0.001], RGBColor[1,0,0], 
 liftLines[#, 0.0005]& /@ Nest[subdivide,twentySevenLines,8]},
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {1.99, -1.6, 0.9}, BoxRatios -> {1, 1, 1.2},
 Lighting->"Neutral", ImageSize->900, Background->LightBlue]

The normals change direction, as one sees by lifting one line a bit further away from the surface.

Graphics3D[{liftLines[Nest[subdivide,twentySevenLines[[19]],8],.1]}]

But they do not change direction much between consecutive division points, as witnessed by the Dot product of consecutive normals.

Min[Table[MapThread[Dot,{Rest[#],Most[#]}&@@Map[normalVector,Nest[subdivide,twentySevenLines[[i]],8],{2}]],{i,27}]]

Now we go after a Schläfli double six. This is an array 
     ({{{, ({{(Subscript[a, 1]), (Subscript[a, 2])}, {(Subscript[b, 1]), (Subscript[b, 2])}})}})({{ }, { }})  ({{(Subscript[a, 3])}, {(Subscript[b, 3])}})   ({{(Subscript[a, 4])}, {(Subscript[b, 4])}})   ({{(Subscript[a, 5])}, {(Subscript[b, 5])}})   ({{(Subscript[a, 6])}, {(Subscript[b, 6])}}) }
of 12 of the 27 lines with the property that any 2 of these 12 intersect if and only they are in different rows and columns. 

In fact, there are 36 double sixes. Since a double six describes, by definition, the intersection behavior of the lines, we see immediately that (Subscript[S,  6, ])the symmetic group on 6 letters, acts by permutations on a double six and (Subscript[ℤ,  2]) acts by exchanging rows. Therefore we see that the group of symmetries of the 27 lines counts |(Subscript[S,  6 ])|· 2 · 36 = 51,540 elements. In fact, this group is nothing but the Weyl group of the simple Lie algebra of type (Subscript[E , 6]), and the 36 double sixes correspond to a choice of positive roots.

skewQ[Line[{p1_,p2_}],Line[{p3_,p4_}]]:=0=!=Chop[Det[{p1-p4,p2-p4,p3-p4}]]

intersectQ[Line[{p1_,p2_}],Line[{p3_,p4_}]]:=0==Chop[Det[{p1-p4,p2-p4,p3-p4}]]

intersectQ[Line[{p1_,p2_}],{l1__Line}]:=And@@(intersectQ[Line[{p1,p2}],#]&/@{l1})

sixes=FindClique[AdjacencyGraph[Table[If[skewQ[twentySevenLines[[i]],twentySevenLines[[j]]],1,0],{i,27},{j,27}]],{6},73]

We take one, suggested by a picture of an actual model.

six1=sixes[[16]]

The complementary six is.

six2=Flatten[Table[Select[Range[27],intersectQ[twentySevenLines[[#]],twentySevenLines[[Drop[six1,{j}]]]]&],{j,6}]]

The 6 red and 6 green lines together form a Steiner double six.

Graphics3D[{Red,twentySevenLines[[six1]],Green,twentySevenLines[[six2]],Yellow,twentySevenLines[[Complement[Range[27],six1,six2]]]}, PlotRange -> All,ViewPoint -> {1.99, -1.6, 0.9}, Background->Hue[0.6,0.7,1], ImageSize->800]
Graphics3D[{Red,twentySevenLines[[six1]],Green,twentySevenLines[[six2]]},(*, Yellow,twentySevenLines[[Complement[Range[27],six1,six2]]]},*) 
PlotRange -> All,ViewPoint -> {1.99, -1.6, 0.9}, Background->Hue[0.6,0.7,1], ImageSize->800]

Show[Graphics3D[{Red,twentySevenLines[[six1]],Green,twentySevenLines[[six2]],Yellow,twentySevenLines[[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {1.99, -1.6, 0.9}, BoxRatios -> {1, 1, 1.2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

The following shape with al = 1 more or less matches a picture of a model.

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Black,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {1.89, -1.6, 0.9}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

(*Export["ClebschMidway.jpg",%]*)

Next it is our intention to display the 
- 10 Eckardt points, at each of which 3 of the yellow lines intersect,
- 15 yellow lines, of which for every Eckardt point a subset of 3 passes through that point,
-   7 passages = holes. 
These holes are no sharply demarcated tears in the surface, but they are bounded by smoothly curved patches of the surface, just like a torus, which has 1 hole. We will distinguish 3 different types of holes: 
- 3 “upper” holes located in the “ears”, 
- 3 “lower” holes in the “pinched” parts of the surface, 
- 1 “bottom” hole surrounding the z-axis, which is the axis of the three fold symmetry.  
Furthermore, note that through every hole there pass 12 lines: 6 yellow, 3 red and 3 green ones. 

The next image, in which we are looking downward, depicts 1 Eckardt point on the monkey saddle as wel as 3 other Eckardt points below the saddle. Furthermore, 12 distinct yellow lines out of 15 passing through the Eckardt points. No holes visible.

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {0, 0, 40}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

A view at the level of the monkey saddle. There is 1 Eckardt point at the inflection point of the monkey saddle and 2 more Eckardt points on the lower part of the surface. On account of the three fold symmetry of the surface the latter give rise to a contribution of 6 Eckardt points. The 3 triples of 3 yellow parallel lines each meet in a Eckardt point at infinity; this gives 3 more Eckardt points. So 1 + 6 + 3 = 10 Eckardt points in total. 
Furthermore, 2 out of 3 holes of the lower type are visible, at z-levels with (1/2) > z > 0. Moreover, 15 of all the 15 (yellow) lines passing through the 10 Eckardt points are visible (see also the next image).

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> True, Boxed -> True,
 ViewPoint -> {2.7, -1.6, 1.3}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

That the image above indeed contains all 15 yellow lines lines through the 10 Eckardt points is corroborated by comparison of the image above with the one below.

Show[Graphics3D[{Thickness[.001],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]]
(* the 27 lines *) 
 (* the Clebsch surface *)
 }],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {2.7, -1.6, 1.3}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->Hue[0.6,0.7,1],ImageSize->900]

Below one hole of the upper type is visible. It is located in an ``ear’’ and provides a view of an “interior” part of the surface underneath the monkey saddle. This hole leads to a total of 3 such holes on account of the symmetry, while 1 hole of the lower type is visible too. The 3 new holes are at higher z-levels than the 3 old ones, viz. for 1 > z > (1/2).

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {2.7, 1, 4.3}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

Below the same hole of upper type as above from a slightly different point of view, such that 2 holes of the lower type are visible too.

Show[Graphics3D[{Thickness[.001],PlotPoints->100,MaxRecursion->5,Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 BoxRatios -> {1, 1, 2}, ViewPoint -> 2{-4.85,9,2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

Yet another view through the same hole of the upper type as above, but now with a good view of the “interior” part of the surface. Through the hole 2 Eckardt points are visible, contributing a total of 6 on account of the symmetry. In addition the 1 Eckardt point at the monkey saddle is also visible as well as the 3 such points at infinity.

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {1.75, 1, 3.2}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

One more view through the same hole in the ear as above, but now from a higher point of view. This reveals that there is one more hole, the bottom hole, at a lower level through which we can see the background. Below we will produce another image of the latter hole. So upon entering this apparent “interior” of the surface through the hole, there are 3 other holes to leave this “interior.”

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {2, 1,4.3}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

MAYBE, THE NEXT IMAGE CAN BE MISSED?

Show[Graphics3D[{Thickness[.001],PlotPoints->100,MaxRecursion->5,Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> True, Boxed -> True,
 BoxRatios -> {1, 1, 2}, ViewPoint -> {-3.9,4,10.5},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

By looking upward the 7-th hole becomes visible, which allow a view from below of the Eckardt point located on the monkey saddle. This hole is an entrance to a part of the surface that is shaped like an “inner tube”, bounded above and below by a isosceles triangle with 3 yellow sides.

Show[Graphics3D[{Thickness[.001],Red,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six1]],Green,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[six2]],Yellow,liftLines[#,0.0005]&/@Nest[subdivide,twentySevenLines,8][[Complement[Range[27],six1,six2]]],
(* the 27 lines *) 
 (* the Clebsch surface *)
 clebschSurface[[1]]}],
 PlotRange -> All, Axes -> False, Boxed -> False,
 ViewPoint -> {0,0, -20}, BoxRatios -> {1, 1, 2},
 Lighting->"Neutral", Background->LightBlue,ImageSize->900]

Below we depict horizontal sections of the surface to see what is happening in the central part of the surface. The first image is at the level z = (3/2), above the monkey saddle, and the following ones at lower levels, down to z = – (1/2), below the bottom hole. 
(3/2) ≥ z > 1, 3 brances representing the 3 ears. 
z = 1,        the top of the monkey saddle. 
1 > z > (1/2),  the monkey saddle and the 3 upper holes. NOT CLEAR WHETHER IS THE CASE FOR ALL VALUES OF z.
z = (1/2),          an isosceles triangle formed by 3 yellow lines,marking the onset of the 3 lower holes.   
(1/2) ≥ z > 0,  the inner tube, seemingly disconnected from the other part of the surface. 
z = 0,           an isosceles triangle formed by 3 yellow lines, marking the end of the 3 lower holes.  
0 > z ≥ (3/2)   3 brances representing the 3 ears.

GraphicsColumn[Table[ContourPlot[(clebsch/.z->-n)==0,{x,-1,1},{y,-1,1},PlotLabel->-n,PlotPoints->30,ImageSize->300],{n,-3/2,1/2,1/10}]]

A cubic curve consisting of two ovals. One oval consists of 3 infinite branches, which are connected at infinity.

((27/8)-648 (y^2)-1728 (y^3)+648 (x^2) (-1+8 y))/(8 27)//Simplify
ContourPlot[(27/8)-648 (y^2)-1728 (y^3)+648 (x^2) (-1+8 y)==0,{x,-1/2,1/2},{y,-1/2,1/2},ImageSize->400]