// moundstrip.fe
// Evolver data for drop of prescribed volume sitting on plane with gravity.
// Contact angle with plane can be varied.
// Drop is on wettable strip, which it overflows onto a less wettable
// substrate. Illustrates how to deal with varying contact tension.
parameter wet_angle = 60 // interior angle between plane and surface, degrees
parameter dry_angle = 120 // interior angle outside strip
parameter xleft = .2 // left side of wettable strip
parameter xright = .8 // right side of wettable strip
gravity_constant 0 // start with gravity off
#define WETT (-cos(wet_angle*pi/180)) // virtual tension of facet on plane
#define DRYT (-cos(dry_angle*pi/180)) // virtual tension of facet on plane
constraint 1 /* the table top */
formula: z = 0
energy: // For contact angle. Note that conditional expression is just
// the two tensions because dx strips each have constant tension!!!!
e1: (x > xleft and x < xright) ? -(WETT*y) : -(DRYT*y)
e2: 0
e3: 0
// one-sided constraints keeping stuff inside wettable strip
constraint leftcon nonnegative
formula: x - xleft
constraint rightcon nonpositive
formula: x - xright
// one-sided constraints keeping stuff outside wettable strip
constraint outleft nonpositive
formula: x - xleft
constraint outright nonnegative
formula: x - xright
// constraints for keeping certain vertices exactly on edge of wettable strip
constraint leftedge
formula: x = xleft
constraint rightedge
formula: x = xright
vertices
1 0.0 0.0 0.0 constraint 1, outleft /* 4 vertices on plane */
2 1.0 0.0 0.0 constraint 1, outright
3 1.0 1.0 0.0 constraint 1, outright
4 0.0 1.0 0.0 constraint 1, outleft
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
// wettable strip outline, raised a bit for visibility
13 xleft -1.0 0.01 fixed
14 xleft 2.0 0.01 fixed
15 xright -1.0 0.01 fixed
16 xright 2.0 0.01 fixed
// extra vertices at sides of wettable strip, constrained to stay there
17 xleft 0.0 0.0 constraint 1, leftedge
18 xleft 1.0 0.0 constraint 1, leftedge
19 xright 1.0 0.0 constraint 1, rightedge
20 xright 0.0 0.0 constraint 1, rightedge
edges /* given by endpoints and attribute */
1 1 17 constraint 1,outleft /* 4 edges on plane */
2 2 3 constraint 1,outright
3 3 19 constraint 1,outright
4 4 1 constraint 1,outleft
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 no_refine fixed /* for table top */
14 10 11 no_refine fixed
15 11 12 no_refine fixed
16 12 9 no_refine fixed
17 13 14 no_refine fixed bare
18 15 16 no_refine fixed bare
// extra edges due to the strip
19 17 20 constraints 1,leftcon,rightcon
20 20 2 constraints 1,outright
21 19 18 constraints 1,leftcon,rightcon
22 18 4 constraints 1,outleft
faces /* given by oriented edge loop */
1 1 19 20 10 -5 -9
2 2 11 -6 -10
3 3 21 22 12 -7 -11
4 4 9 -8 -12
5 5 6 7 8
7 13 14 15 16 no_refine density 0 fixed /* table top for display */
bodies /* one body, defined by its oriented faces */
1 1 2 3 4 5 volume 1 density 1