// bga-10.fe // Simple ball grid array joint. // Circular, tilting, non-coaxial wetted pads. With gravity. // Same as bga-8.fe, but with 2D lateral movement of upper pad // and tilting. // Upper pad represented with boundary. // Liquid entirely bounded by facets. evolver_version "2.11c" // minimum Evolver version needed // physical constants, in cgs units parameter S_TENSION = 480 // liquid solder surface tension, erg/cm^2 parameter SOLDER_DENSITY = 9 // grams/cm^3 gravity_constant 980 // cm/sec^2 // configuration parameters parameter height = 0.12 // height of upper pad, cm parameter radius = 0.10 // radius of pads, cm parameter x_offset = 0 // offset in x of upper pad parameter y_offset = 0.03 // offset in y of upper pad parameter tilt = 20 // tilt about x-axis, degrees // lower pad constraint 1 formula: z = 0 // upper pad constraint 2 formula: sin(tilt*pi/180)*(y - y_offset) = cos(tilt*pi/180)*(z - height) // rim of lower pad constraint 3 formula: x^2 + y^2 = radius^2 // upper pad rim boundary 1 parameters 1 x1: x_offset + radius*cos(p1) x2: y_offset + radius*sin(p1)*cos(tilt*pi/180) x3: height + radius*sin(p1)*sin(tilt*pi/180) // upper pad center point boundary 2 parameter 1 x1: x_offset x2: y_offset x3: height vertices // lower pad 1 radius*cos(0*pi/3) radius*sin(0*pi/3) 0 constraints 1,3 fixed 2 radius*cos(1*pi/3) radius*sin(1*pi/3) 0 constraints 1,3 fixed 3 radius*cos(2*pi/3) radius*sin(2*pi/3) 0 constraints 1,3 fixed 4 radius*cos(3*pi/3) radius*sin(3*pi/3) 0 constraints 1,3 fixed 5 radius*cos(4*pi/3) radius*sin(4*pi/3) 0 constraints 1,3 fixed 6 radius*cos(5*pi/3) radius*sin(5*pi/3) 0 constraints 1,3 fixed // upper pad 7 0*pi/3 boundary 1 fixed 8 1*pi/3 boundary 1 fixed 9 2*pi/3 boundary 1 fixed 10 3*pi/3 boundary 1 fixed 11 4*pi/3 boundary 1 fixed 12 5*pi/3 boundary 1 fixed // center of upper pad 13 0 boundary 2 fixed edges // defined by endpoints // lower pad edges 1 1 2 constraints 1,3 fixed 2 2 3 constraints 1,3 fixed 3 3 4 constraints 1,3 fixed 4 4 5 constraints 1,3 fixed 5 5 6 constraints 1,3 fixed 6 6 1 constraints 1,3 fixed // upper pad edges 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 7 boundary 1 fixed // vertical edges 13 1 7 14 2 8 15 3 9 16 4 10 17 5 11 18 6 12 // upper pad radii 19 7 13 constraint 2 fixed no_refine 20 8 13 constraint 2 fixed no_refine 21 9 13 constraint 2 fixed no_refine 22 10 13 constraint 2 fixed no_refine 23 11 13 constraint 2 fixed no_refine 24 12 13 constraint 2 fixed no_refine faces // defined by oriented edge loops to have outward normal // lateral faces 1 1 14 -7 -13 tension S_TENSION 2 2 15 -8 -14 tension S_TENSION 3 3 16 -9 -15 tension S_TENSION 4 4 17 -10 -16 tension S_TENSION 5 5 18 -11 -17 tension S_TENSION 6 6 13 -12 -18 tension S_TENSION // lower pad 7 -6 -5 -4 -3 -2 -1 fixed no_refine color red tension 0 // upper pad 8 7 20 -19 fixed no_refine color green tension 0 constraint 2 9 8 21 -20 fixed no_refine color green tension 0 constraint 2 10 9 22 -21 fixed no_refine color green tension 0 constraint 2 11 10 23 -22 fixed no_refine color green tension 0 constraint 2 12 11 24 -23 fixed no_refine color green tension 0 constraint 2 13 12 19 -24 fixed no_refine color green tension 0 constraint 2 bodies // defined by oriented face list 1 1 2 3 4 5 6 7 8 9 10 11 12 13 volume 1.3*pi*radius^2*height density SOLDER_DENSITY read hessian_normal // Read in force and torque commands. read "xyztorque.cmd" // Typical evolution gogo := { u; g 5; r; g 5; r; g 5; hessian; hessian }