// moundB.fe
// Evolver data for drop of prescribed volume sitting on plane with gravity.
// Contact angle with plane implemented with tension on bottom face of
//   drop, instead of constraint edge integral.  This means that the tension
//   must be set directly on the contact facets rather than just changing
//   the angle variable.

PARAMETER angle = 90    // interior angle between plane and surface, degrees

gravity_constant 0  // start with gravity off

#define WALLT  (-cos(angle*pi/180))  // virtual tension of facet on plane
 
constraint 1   /* the table top */
formula: x3 = 0

vertices
1   0.0  0.0 0.0  constraint 1  /* 4 vertices on plane */
2   1.0  0.0 0.0  constraint 1
3   1.0  1.0 0.0  constraint 1
4   0.0  1.0 0.0  constraint 1
5   0.0  0.0 1.0
6   1.0  0.0 1.0
7   1.0  1.0 1.0
8   0.0  1.0 1.0
9   2.0  2.0 0.0  fixed   /* for table top */
10  2.0 -1.0 0.0  fixed
11 -1.0 -1.0 0.0  fixed
12 -1.0  2.0 0.0  fixed

edges  /* given by endpoints and attribute */
1   1 2    constraint 1 /* 4 edges on plane */
2   2 3    constraint 1
3   3 4    constraint 1
4   4 1    constraint 1
5   5 6
6   6 7  
7   7 8 
8   8 5
9   1 5   
10  2 6  
11  3 7 
12  4 8
13  9 10   fixed  no_refine /* for table top */
14 10 11   fixed  no_refine
15 11 12   fixed  no_refine
16 12  9   fixed  no_refine

faces  /* given by oriented edge loop */
1   1 10 -5  -9
2   2 11 -6 -10
3   3 12 -7 -11
4   4  9 -8 -12
5   5  6  7   8
6  -4 -3 -2  -1  tension WALLT constraint 1
7  13 14 15  16  tension 0 fixed no_refine /* table top for display */

bodies  /* one body, defined by its oriented faces */
1   1 2 3 4 5   volume 1  density 1

read

// convenient command to adjust facet tension after changing angle
reset := { set facet tension (-cos(angle*PI/180)) where on_constraint 1 }

// Script to show problem with using facet tension instead of edge integral.
// Note how edges on contact line hit inner vertices, causing the scale factor
// to plunge towards zero.

run := { angle := 135; reset;
	 r;r; 
	 g 20; 
       }
