From JVoccio@amsuper.com Tue May 15 08:49:41 2001
Joe,
I tried to run the code; however, I don't know what the following things are:
I think I understand other terminologies, but could you help me understand this one? Thanks.
John Voccio
I pride myself on the large number of comment cards in the BEND source. It is a very-open-source code but, as you have noticed, the documentation is still not complete. In particular there are the four points which you have raised:
The central strategy of BEND is to optimize the cable configuration by finding one which minimizes the elastic strain energy subject to the given constraints, i.e. that it starts at a given point with a given direction (say at a low point of the saddle and in the z- direction), that it finishes at another given point and direction (say, for a quarter turn, at a high point of the saddle and in the minus x-direction), and that it is constrained to lie on a cylinder while going from start to finish. (Of course without constraints it is easy to find the optimal configuration: The cable would just be straight.)
One could solve the optimization problem by a hardware simulation, by holding a piece of cable properly at both ends and up against a cylinder and watching it squirm into its minimal (potential) energy configuration. The advantages (and disadvantages) of a software simulation are well known. For parameter studies software is cheaper than hardware (when it is), and software is innately quantitative. BEND produces files which input directly into CAD systems and into NC machining systems.
But for the rest of the cables there is an additional messy con- straint, that they lie packed together in layers. BEND simplifies this situation by just optimizing one cable, represented by the guiding strip, and then packing the rest carefully on either side of it and hoping that there are not so many of them that their configuration is not too far from optimal.
So much for the optimization. Is it important? Aesthetically yes but actually? Well actually it is just a way of getting a smoothly turning block of cables which are precisely packed together, especially since you said that your cables were not particularly brittle. One of BEND's strong points turned out to be its packing algorithm. That it does well. The geometry is complex and messy but BEND does it well, and that is important. You want your cables to enter into the curing process firmly packed together in spite of the fact that they are twisted about into a saddle shape.
A conceptual weakness in BEND's guiding strip strain-energy optimiza- tion (minimization) algorithm is that in its application of Euler- Kirchhoff thin rod theory, the three rigidities that resist easy- way flexure, hard-way flexure, and torsion, are taken respectively to be 0, 1, and 0. The first two rigidities, 0 and 1, are OK. In fact they are perfectly OK because only their ratios matter, but the 0 for torsional rigidity is an imperfection. I don't know how imperfect it is but the code produces smoothly twisting blocks of cables which seem to like what the NC machine has told them to do and Fermilab interests have moved on so I have left it at that.
The radially outer edge of a thin flat cable is the edge which is wound on the cylinder. (For better support you may want to wind the inner edge on the cylinder instead.) Its "outer angle" is the cylin- drical polar coordinate, measured from the vertical, of its point of intersection with the x-y plane from which it starts out in the z- direction, say at a low point in the saddle.
The initial edge of a thin flat cable is its line of cross-section with that x-y plane. The angle is the angle it makes with the ver- tical. The energy minimization will pick that angle by itself. If you would rather do the picking yourself, you input your desired angle and BEND then minimizes subject to that additional constraint.
I lied to you in (1) above. The guiding strip does not represent one of the cables in your block. It is a two-dimensional rectangular strip, twisted into an optimal (rigidities = 0,1,0) configuration Your cables are not represented by such infinitely thin rectangles. They are represented by twisted flat rods of relatively small but finite thickness which are packed up against the guiding strip to be "guided" by it. Typically it is placed somewhere near the middle of the block so as to minimize the deviations from optimality which will necessarily arise in cables packed in layers away from the strip.
So cables are packed on both sides of the strip, on the inside of the turn and its outside. Then (number of cables inside) + (number of cables outside) = (total number of cables in the block (not counting the guiding strip because it does not represent a real cable)). In general one wants the first number to be less than the second because cables tend to get more cramped on the inside, the concave side of the turn.
And you are always welcome to call me at home, (630) 964-2220. (I notice that my area code is given in the comment cards as (708) but they recently changed it to (630).)
Joe CookI had a basic fundamental question for you. If we do not use any shift or blunt of the base curve, then is the equation for the elastica base curve same as an equation of the ellipse or is it some hyper-elliptical equation?
Thanks,Neither SHIFT not BLUNT modify the base curve. They just cause the rulings defining the guiding strip to rotate about the base curve. Each ruling rotates about, as an axis, the tangent to the base curve at the point where it intersects that curve. In this sense the guiding strip rotates about the fixed curve on which it is "based".
As for the curve itself, it looks almost like an ellipse, or one of the hyper-ellipses, but actually it is determined by an equation from elasticity theory, not from pure geometry because there are forces involved. We are all familiar with elementary beam theory in which deformations of the beam are determined from the forces acting on it as long as the deformations are small and the beam is therefore still approximately straight. Then the differential equations determining the deformations are conveniently linear. However when the deformations become large, as in our case when the beam (cable) is twisted and bent through 90° and beyond, then one must resort to nonlinear equations, the equations of the so-called elastica. (See for example page 584 in "Mechanics of Materials", 2nd Ed., by R. C. Hibbeler. For a much more thorough treatment of the elstica see Chapters XVIII and XIX in "A Treatise on the Mathematical Theory of Elasticity", 4th Ed., by A. E. H. Love, Dover Publications, New York (1927).)
These equations can be derived from a variational principle, the minimization of the total elastic strain energy. I needed to modify the classical theory of the planar elastica only slightly by adding to this energy a term which measured the contribution introduced by the curvature of the plane as it is wrapped around a cylinder. In that way we can maintain the relative simplicity of the planar theory even though the elastica is now a curve in three-dimensional space.
This base curve is still just a curve. It is one-dimensional whereas the guiding strip, a rectangle smoothly twisted in space, is two-dimensional, however it is determined by the base curve as follows: A planar elastica has only one rigidity, its resistance to curvature in the plane. But our plane has been bent around a cylinder and the elastica now resists its so-called normal curvature in space where the normal curvature includes the curvature brought in by the bending of the plane. (See any elementary book on differential geometry for a precise definition of the normal curvature of a curve in space.) Now the guiding strip is attached to the curve in such a way that it contains it and is at every point along the curve perpendicular to the direction of curvature of the curve. In other words the strip, being a surface in space, has a perpendicular vector in space which is required to be parallel along its included curve to the vector of normal curvature of the curve. This is the way the strip would naturally want to bend if its rigidity against curvature in a direction perpendicular to its surface, i.e., against curvature about a line tangent to the surface, were much less than its resistance to curvature about a vector perpendicular to the surface. A strip of paper folds much more easily than it can be twisted in a tangent plane (without tearing), and so it is with cables. They can be bent much more easily about a fold line, "easy-way" bending, than they can about the line perpendicular to all possible fold lines, the "hard-way". We idealize this fact for the first approximation to the guiding strip by giving it an infinite "hard-way" rigidity with only some finite "easy-way" rigidity. It turns out that this implies that the configuration of the guiding strip is then completely determined by the fact that it must contain the base curve. The strip must be a developable surface, the rulings being its fold lines. (Again, see any elementary book on differential geometry.)
So the guiding strip has the two flexural rigidities that we would expect from the theory of the elastica in space (as opposed to the single flexural rigidity of the base curve). That theory leads us to expect also a third rigidity, the torsional rigidity, resistance to torsion about the tangent to the base curve as an axis, however BEND does not use this rigidity to compute the torsion. The orientations of the two ends of the strip, the short sides of the long rectangle, are determined by user input. This is always necessary at the initial end of the strip because its orientation is determined by the given orientation of the cable as it comes out of the straight section, and at the final end the user often has reasons for specifying the orientation, e.g., to avoid using shelves, though there is available the option of letting the cable seek its own orientation as if the torsional rigidity were zero. Then BEND computes the torsion between that given at these two endpoints by a smooth interpolation, geometrically rather than elasticity-theoretically.
The guiding strip is still not a cable. Cables have thickness. They are not "infinitesimally" thin so we use the guiding strip not as a model of a cable but only to "guide" the block (group) of cables. They are packed on either side of the guiding strip in the hope that the two cables on the outer edges of the block are still not so far away from the guiding strip that they can benefit from its energy-minimizing properties.
Dear Joe,
I needed your help with this question:
You have parameters key1, key2, fat1 and fat2 for cable shape change. Fat2 and key2 apply at the nose. Fat1 and key1 apply at the middle of the group....is that the middle of the arc length (top, bottom?) or the ruling number 25? I will appreciate your feedback regarding this.
Thanks a lot.I'm glad that you are trying to use BEND.
FAT1 and KEY1 operate at ruling number IMID.
If you do a FIND on ' IMID ' in subroutine GROUP it will get you to the comment cards
* IMID The number of the last point on the base curve such that * arc length to that point is less than or equal to half of * the total length of the base curve.
in the Glossary, so that your first surmise is correct: FAT1 and KEY1 apply at the middle of the base curve in the sense of its arc length, or close to it, on the base curve, not the other edge.
To make sure, FIND the DO loop 930 where the actual computation of IMID is made. It's down around line number 4481 though I am not sure about the version of BEND that you have. BLENTH is the total length of the base curve, arc length, and FAT1 and KEY1 are installed at BLENTH/2.
Actually, statement 931, right after that loop, will boost IMID up to at least 2 in the very very unlikely event that the arc length midpoint of the base curve occurs in the very first mesh interval.
Whenever you suspect that you might be able to use somebody to talk with about BEND, please feel free to get in touch with me. For example my home phone number is (630) 964-2220, with voice mail.
Sincerely,Dear Joe,
Here's another question that I am pondering on. Program Bend outputs a final edge angle that defines the least energy inside surface. If I artificially steepen this final edge angle, such that I still stay within the empirically determined delta L/L of less than 0.3 or if on steepening the final edge angle (to avoid using shelf) the delta L/L does not vary a lot..........In such cases, should I steepen the final edge angle to avoid using shelves. Do you have a feeling on as to if this would influence cable windability or not? I would appreciate your thoughts on the same.
Sincerely,As for your question about the final edge angle, it is OK to steepen it as long as the delta-L/L stays reasonable. In fact, steepening the angle may have two beneficial effects:
(1) It should decrease the curvature at the nose of the free edge, near ruling 50, which tends to be a problem, aggravated by that focusing effect you have noticed. The focusing effect is in turn a consequence of the fact that the rulings are constructed by linear extrapolation from the base curve, which is in turn a product the general rule in BEND that numerical analysis is mostly done to within first order accuracy only. This is not a bad way to go with modern compute-power. To get more accuracy, one just increases the number of mesh points and lets the computer do more work. It doesn't care. It even likes to iterate, unlike the human computors of old who often preferred higher-order schemes in order to avoid boring iteration. However, the width of the cable is not a mesh width that one can decrease. This has always bothered me. The base curve itself is computed by a higher-order scheme, second-order in fact, for which 50 mesh points is plenty, but the linear extrapolation down to the free edge --- well, that has always bothered me. My nervousness could have been cut in half by putting the base curve along the midline, as I did in program LEAD, but with BEND that would have increased my nervousness about the outer- diameter-hugging algorithm. Anyway, go ahead and steepen the final edge angle, some, and see what happens.
(2) As for windability, steepening the final edge angle may cause the cable, under longitudinal tension, to slip laterally away from the non- slip configuration prescribed by the rectifying developable, but it, if anything, causes it to slip in the SAFE direction, namely towards the mandrel, towards the axis of the cylinder where there is plenty of support, at least during curing, so maybe you shouldn't worry about it. Without a shelf? Well, go ahead anyway. Give it a (small) try. Come to think of it, one could compute the radial force induced by the z-direction tension on a steeper final edge angle. Should we compute it?
Should I get bothered by the Wrinkle warning?
Sunil,
I have now had time to look at the "wrinkle" warning. It comes from the subroutine CONCAV which is fed a strip --- rectifying, guiding, side or whatever --- and which then looks at the intersections of the corres- ponding rulings with the mandrel, the inner diameter. The z-coordinates of those intersections are supposed to be monotonically increasing. If not, a "wrinkle" is announced as a "POSSIBLE" problem and the amount of back-step is printed out. In the case of your "Dipole model-2 ..." that back-step was never more than one-third of a micro- meter. That's MICRO, not milli. Plenty small. And besides it was at rulings number 49 and 50 where the z-coordinates are almost constant anyway instead of increasing. Therefore the "POSSIBLE" problem is not a real problem at all.
So we got by that one OK. Now I've got to look at your curvature problem. That one will be harder to figure out. I don't want to just declare "numerical noise" as a cop-out.
JoeDear Joe,
Thanks for your comments on wrinkle warning. That makes me feel much better now. The other thing I was curious about is how do you calculate the incremental delta L over L. I can understand the calculation for overall delta L-over-L (length of outer curve-length of inner curve/length of inner curve; is that right?). How do you do it for the incremental case? Do you take the corresponding arc lengths between the ruling points? Please advice.
Thanks,
Sunil
Hi Joe,
I am really surprised to see that now I am getting a radius of curvature at point 48 as 1.16 mm (using CAD package) as opposed to 0.626 mm output be BEND. I am surprised because I do not think that I can go order of magnitude wrong in simple division.
Only thing I can think of is that yesterday my program file (which reads data into IDEAS) was not working completely to the point of building surfaces and I could not figure out why. Today that program file is working again and I do not understand how come. I also need to look into it more carefully.
Sincerely,
Sunil
Sunil,
Just a note before the long weekend:
Your file reader (which reads data into IDEAS) was reading, I think you told me, from the BEND ".ins" output. In this file the inner curve is NOT the same one used internally by BEND in computing that small curve radius. Internally the curve is the free edge of the guiding strip, the non-base-curve edge, whereas in the ".ins" file the curve used is the intersection of the entire face containing the guiding strip with the mandrel, the inner radius; so we could expect that there would be some difference in the values, though it seems to me that the focusing effect should have produced an even smaller radius instead of a bigger one.
Incidentally the reason the guiding strip is used in both of these computations instead of the values that would have been obtained from the corner files is that you have placed the guiding strip on the inside of all of the cables instead of in the middle someplace, so that is the way I coded it though Jeff says that that is an incongruity. I am going to fix it up some day.
To: Sunil, INTERNET:syadav@fnal.gov
Date: 7/6/99, 12:19 AM
Re: More on that small radius of curvature
As I mentioned before, the radius of curvature you got from your CAD system, which it got from the .ins file, was from the curve of inter- section of the inside lateral face of the group with the mandrel, whereas the unpleasantly small radius, .628 mm, put out by BEND under "ANALYSIS" was from the free edge of the guiding strip.
What was bothering me, lately, is the fact that that .628 mm was not the same as the 1.4642 mm claimed also for the 48th ruling in the previous panel but upon further investigation I have discovered that it wasn't quite the unmodified free edge but rather a modified free edge that the .628 mm referred to, modified slightly (near statement label 6000 in subroutine GROUP) to make it match better with the in- side of the inside cable in the group.
All of this happens because for ANALYSIS if there are no cables on one side of the guiding strip, no cables on which to base the .ins file, then I based the .ins file on the (slightly modified) guiding strip. Not a good idea Jeff said, so I started to fix that but then Jeff went on to other things so I never finished fixing it.
Confusing? I'll get in touch with you tomorrow, Tuesday, to talk it over.
Meanwhile trust your CAD-given radii, maybe with BLUNT=.65, instead of .3, to relieve the curve radii a little because you have some dl/l margin.
As for dl/l, it is computed in two different ways in two different parts of the code:
In both cases the base curve is held fixed and the free edge is required to absorb all of the dl/l. This gives an exaggeration of the dl/l by a factor of two over what I would have gotten if I had taken the midline of the cable as the neutral line instead of the base curve.
Too brief. I'll write this out at greater length later.
JoeHi Joe,
I was just curious at to what determines the spacing of the 50 points on the base curve....is it based on something like the rate of change of curvature along the base curve, with more points where there is more drastic change in curvature????
Thanks,Sunil,
The 50 rulings of the guiding strip intersect the base curve at intervals which are equal, not in arc length but rather in the angle which the tangent to the base curve makes with the z-axis. This has the advantage that the density of these points is higher where the base curve is curving faster and more detail is needed.
[Questions about the parameters NARROW and STIFF in BEND]
Sunil,
The parameter NARROW affects only the behavior of BLUNT. Its value is asked for only if BLUNT is not equal to zero. Therefore, because BLUNT operates only on the free edge of the guiding strip (the other edge is the base curve edge), so does NARROW.
If BLUNT > 0 the free edge is spread out to make the guiding strip more "blunt". If BLUNT < 0 the free edge is pulled back and in.
If NARROW > 0 the spreading or in-pulling effect of BLUNT is restrained near the initial end, the z=0 end of the free edge and encouraged up near the nose. If NARROW < 0, the reverse is the case: The effect of BLUNT is emphasized near the initial end and de-emphasized near the nose.
NARROW was introduced into the program in order to give the user control over the part of the free edge BLUNT should be allowed to operate on.
Now as for STIFF, or rather STIFF() because it is an array of two parameters, these parameters operate on the base curve, not on the free edge as do BLUNT and NARROW. When they are zero, their normal values, the easy-way rigidity of the guiding strip is constant. It is based on a base curve which is the classical one-dimensional elastica which has only one rigidity and its configuration is the equilibrium configuration of that elastica. That configuration will be different if the rigidity of the elastica is allowed to vary along its length instead of being constant. The two STIFF() parameters have that effect. Positive values of STIFF(1) decrease the rigidity of the elastica near its initial end, low z, making it more flimsy so it flexes more easily and has more curvature there; and increase the rigidity of the elastica near the nose, making it "stiffer" there and so decreasing its curvature at the nose. Negative values of STIFF(1) have the reverse effect.
STIFF(2) has the same kind of effect except that it modifies the rigidity of the elastica in its middle region, about half way along its length. Positive values of STIFF(2) make the elastica more flimsy along its middle, increasing its curvature there. Negative values decrease its curvature there.
So: Whereas BLUNT and NARROW move the free edge, STIFF(1) and STIFF(2) (like "perturb") move the base curve.
Hi Joe,
Thanks for your reply. So I can change the base curve with previous version of BEND. I was curious at to what new functionality the new version of BEND provides in changing the base curve.
Thanks,
Sunil
Answer:
To: Sunil, INTERNET:syadav@fnal.gov
Date: 7/12/99, 11:05 AM
Re: Moving the base curve
Sunil,
Yes, you can change the base curve in your old version of BEND in two ways:
The word "Perturb" implies that you are not supposed to perturb it
very much, where "very much" is I don't know how much but make it
small, where "small" is ...
Jeff has used this option to keep two cable groups from intersecting
a "little" ...
Then the guiding strip is no longer a rectifying developable but it
isn't a rectifying developable anyway after being twisted a "little"
to fit the starting angle, and maybe the final edge angle.
Giving STIFF(1) or STIFF(2) nonzero values, however, still leaves the rectifying developable rectifying so you can make those values as large as you wish --- until something else bad happens.
In the new version of BEND the (default) "Indirect" option in number "8 Calculus of Variations:" is supposed to give the same answers as the old version of BEND. Otherwise ("Direct") --- well you had better stay away from it until I have tested it more.
JoeSunil,
Shlomo Caspi says that you are having trouble with rulings which shoot out too far in the forward direction and foul up his wire cutting machine.
There is a rarely used option in BEND which may ameliorate this problem. When you are offered the choices:
"Please enter, on one line, the numbers of only those
options that you want to change from the default.
Option Default Alternate
------------------------------- --------- -----------
1 Input from an external file: No Yes
2 Output to a journal file: No Yes
3 Units: British SI
4 Perturb group: No Yes
5 Cable cross section: Unchanged Change
6 Steepen rulings: No Yes
7 Automatic: Yes No
8 Vary the base curve: No Yes
9 Verbose terminal I/O: No Yes
10 Debug: No Yes
11 Help: No Yes",
enter 6 (along with whatever other integers you have chosen) to "steepen the rulings", i.e., to swing them back towards perpendicularity to the base curve. You will be asked:
"By what ratio do you want to contract the rulings towards perpendicularity?"
The "ratio" that it is asking for is the fraction by which the contraction is to be made. If 1.0 is entered, no contraction will take place. If .8 is entered, all of the angles ALPHA in a later display will be contracted back towards 90 degrees by the amount .8 ( ALPHA - 90).
The bad news is that this may flex the guiding strip away from developabilty, but Shlomo says that in the particular case you are working on the cable-flexure is already quite gentle so maybe a little more delta-l-over-l will be OK. (There may even be a little less delta-l-over-l.)
[Note added 5/31/01: A Fortran program AVOID is now available for use in moving the rulings so that they do not intersect a given obstacle.]
Hi Joe,
I was trying to use program LEAD and I can't understand one thing. Can you please let me know what does this mean:
"Input the values of the two parameters which determine amount of extension of the base curve forward from its initial end and backwards from its final end, repectively, in that order."
Thank you very much.
Sincerely,Sunil,
Bezier curves are pretty neat --- or maybe graceful is a better word. They are generated by polynomials with coefficients in a vector space of arbitrary dimension instead of the usual one dimension, for example the one dimensional Y-axis of an XY-plot.
The polynomials can be of higher order but I used cubics in LEAD and needed (of course) only a three dimensional vector space. Cubics have four coefficients (of course) which, for a Bezier curve are four vectors in the space, say a0, a1, a2, and a3. Then for every value of the scalar t the "polynomial" p(t) = a0 + a1*t + a2*t**2 + a3*t**3 has values in the space. As t varies from 0 to 1, p(t) traces out a curve, starting at a0.
The geometric meaning of the other coefficients is not so simple, but certain linear combinations of them, c1, c2, and c3, with c0 = a0, do have a nice meaning. They form a skewed all-faces-triangular pyramid such that p(t) is the centroid of the four vertices as weighted by four special cubic polynomials in t, all of the weights being non-negative ( for 0 < t < 1) and the sum of the four weights being equal to 1.
The user inputs c0 as the start of the curve and c3 as its end-point. Then c1 has the property that the line joining it with c0 is tangent to the curve at p(0), but instead of asking the user to input c1 LEAD asks for a parameter value SWOOP(1) and then constructs c1 = c0 + SWOOP(1)* T(0) where T(t) is the unit tangent vector to the curve at p(t). So the bigger SWOOP(1) is the further out c1 is and the further out it pulls the curve for a given weight on c1.
Similarly, c2 = c3 - SWOOP(2)*T(1) pulls the curve back from its end- point, c3, when SWOOP(2) is large.
Bezier curves are discussed in any book on CAD systems, for example in Chapter IV of "Computational Geometry" by Su Bu-Qing and Liu Ding-Yuan, Academic Press, New York (1989).
Hi Joe,
I have one more question about program LEAD.....what determines the final position of the cable. The initial position gets fixed by the four input coordinates. However, for the final position we need to input the centroid. If I confine my cable to a cylindrical surface, then for a given centroid the cable can still be oriented in several different positions. What provides an unique solution.
Thanks,
Sunil
Hi Joe,
I figured out the answer to my previous question........it gets determined by the point on the tangent plane....I would put the answer on the web page.....
Thanks,
Sunil
Sunil,
Right: The point on the final tangent line to the curve and a point on the final tangent plane to the guiding strip.
In a later version of LEAD, which allows for an arbitrarily large number of these curved segments, their final ends are input as trapezoids just as are their initial ends so that the user can string together a twisty cable running through all of these trapezoids in succession.
Joe
Hi Joe,
Thanks for your reply. I have put all your answers at this site:
http://tdpc02.fnal.gov/yadav/BEND/bend_questions.html
Thanks,In the second and third paragraphs of section 4 on page 11 of reference [1], the discussion of the perpendicularity to the base curve of the rulings of the rectifying developable at its initial and final endpoints is not clear. In general BEND needs an exposition better suited to users of the program who don't have the time to work through details of its underlying mathematics.
The tangent to the base curve at its initial end is parallel to the axis
of the cylinder. At its final end it is transverse to the axis. The two
rulings of the rectifying developable at these points are perpendicular
to the curve. The discussion of these two facts in the last
paragraph of page 11 in Reference [1] is inadequate so I will try to do a
more complete job here, starting with the final end because that is
simplest. It can even be done without the use of any mathematical
equations.
The sentence in lines 4 and 5 up from the bottom of [1] should be expanded but we can do so in a purely geometric way. Take a strip of paper of the kind we all use to represent the rectifying developable, and grasp each of its two ends between thumb and forefinger, bending the strip into a u-shape. Then we are subjecting it to a pair of forces which are symmetric about a vertical plane, the plane of bilateral symmetry of the human body. If our body is reflected in this plane its left and right sides are switched but it is otherwise left invariant, unchanged in the eyes of an external observer. This plane is also the plane of bilateral symmetry of the twisted strip of paper, even if it is constrained to go up and over a cylindrical surface whose axis lies in the plane with respect to which it is also therefore symmetric. So the reflection leaves invariant the strip, switching corresponding rulings equally placed on the left and right side of the plane. But what about a ruling which starts at the top edge of the strip, the base curve? If it deviated out of the plane, say to the left, then it would be reflected to a ruling which started at that same point and deviated to the right. Now we have two rulings intersecting at a common point on the base curve, a singularity where the radius of curvature of the base curve is zero and the elastic strain energy density is infinite, a corner where several of the rulings come to a focus. But this is prohibited by the BEND algorithm which produces a curve with smoothly turning tangent. No corners. In particular the tangent vector at the bisecting plane, when approaching from either side, is perpendicular to that plane.
So there is only one ruling at the final point on the base curve. (This point would actually be the midpoint if the curve were continued all the way around, a complete 180°, but BEND constructs only the first half, assuming symmetry, even in the case of a lead end when the two halves are constructed separately and one is reflected to be pieced together with the other at the nose.) This one ruling is carried into itself by the reflection so it either makes an angle of 0 or PI/2 with the plane, but the second possibility is excluded because it would result in a another kind of singularity, the ruling would coincide with the tangent to the base curve. The enveloping plane to the rectifying developable would there be rotating about the tangent to the curve which can only happen where its curvature is zero, which is impossible on the curved cylindrical surface unless the tangent to the curve were there parallel to the axis of the cylinder. Therefore the ruling at the final point lies in the plane of symmetry.
This argument depends on a more general principle, that symmetric causes produce symmetric effects, enunciated first by the physicist Pierre Curie. It is implied by a still more general philosophical principle, the Principle of Sufficient Reason, a favorite of Leibnitz which is in fact just common sense. If the ruling deviated to the left out of the plane of symmetry it would have just as much reason to deviate to the right because the reason, i.e., the base curve from which it was constructed, is unmoved by the reflection. But the only deviation to the left equal to a deviation to the right is no deviation at all. Q.E.D.
You may find this philosophical "proof" unconvincing so here is a more mathematical one. The function f of PSI defined on page 7 of reference [1], is implemented as the following Fortran statement function at the head of subroutine STEP1, just beyond the initial comment cards in program BEND:
F(PSI) = EXP( - STIFF(1) * COS( 2 * PSI) -
STIFF(2) * COS( 4 * PSI)) *
SQRT( RR *
( COS( PSI)**4 / RADIUS**2) - 2 * q0 * COS( PSI)
+ dPSI0**2).
This f (=F) is positive in the interval [PI/2,3*PI/2] of the integration defining v (see the quadrature at the top of page 8 in [1]) where v is the longitudinal coordinate of a point on the base curve. The integrand sin(PSI)/f(PSI) is positive for PSI<PI and negative for PSI>PI so v is a maximum at PSI=PI. This is the final point on the base curve. Call the corresponding value of arc length (defined by the quadrature in line 7 up from the bottom of page 7) sfinal (line 5 up from the bottom of page 5). There u is steadily increasing (see the quadrature at the bottom of page 7) so the tangent T(sfinal) to the base curve exists and is perpendicular to the axis of the cylinder and so the curvature KAPPA(sfinal) of the base curve in equation (8) on page 8 of [1] is equal to the reciprocal of the radius of the cylinder and is not equal to zero. Therefore, by that equation, to prove that the ruling at sfinal is perpendicular to the base curve we need to prove that TAU, the torsion, is zero, TAU(sfinal)=0.
By equation (4) on page 284 of [2] (see line 8 up from the bottom on page 10 of [1]) TAU = t - PHI' where t is the geodesic torsion and PHI is the angle between the principle normal, N(s)=T'(s)/KAPPA, and the normal to the cylindrical surface. But T(sfinal) is also tangent to a line of curvature (see the middle of page 285 in [2]) of the surface so t(sfinal)=0 and we need only prove PHI'(sfinal)=0. To do this we use the equation near the bottom of page 10 in [1], PHI' = (k'*GAMMA - k*GAMMA') / (GAMMA**2 + k**2) where k is the normal curvature and GAMMA is the geodesic curvature (see equations (6) and (5) on page 284 of [2]).
From the expression for k in the middle of page 10 we see that k'(sfinal) = - const. * 2 * cos( PSI(sfinal)) * sin( PSI(sfinal)) * PSI'(sfinal) = 0 because sin(sfinal)=sin(PI)=0; so we need only prove GAMMA'(sfinal) = 0. But GAMMA' = PSI" (top of page 6 in [1]) = df(PSI)/ds (by middle of page 7 in [1]) = f'(PSI) * PSI', leaving us with only the necessity to prove f'(PI)=0.
Looking at the expression above for f (=F) we see that it is a function of PSI only through functions of the form cos( integer * PSI) so it is unchanged by the transformation 2*PI-PSI (which also leaves the base curve invariant), f(PSI) = f(2*PI-PSI). Differentiating both sides of this equation by s we get df(PSI)/ds = - f'(2*PI - PSI) * PSI', and evaluating it at s=sfinal, i.e., at PSI = PI, we get df(PI)/ds = - f'(PI) * PSI'(sfinal). However a direct computation yields df(PI)/ds = + f'(PI) * PSI'(sfinal). Therefore - f'(PI) * PSI'(sfinal) = + f'(PI) * PSI'(sfinal). Finally we notice that PSI'(sfinal) = f(PI) (by the middle of page 7 in [1]) and that f(PI) (=F(PI)) > 0 so it can be canceled from both sides of the equation to get - f'(PI) = + f'(PI), and so f'(PI)=0. Q.E.D.
This is a lot of algebra to prove something which we have already shown above to be intuitively obvious. There may be an algebraically simpler proof but at the moment I don't see it.
Because the reflecting plane contains the axis of the bore, the ruling
must intersect that axis (possible at infinity). Note: It need not
intersect that axis perpendicularly and hence need not be perpendicular
to the surface of the cylinder.
Now we turn to a proof of the perpendicularity of the ruling to the base curve at its other end, its initial end at s=0 where it emerges from the straight section. The result follows from a geometric argument which avoids the rather delicate analysis on page 11 but it is simpler only if one is familiar with Meusnier's Theorem (Theorem 3 on page 285 of [2]; or look in just about any introduction to differential geometry). It also shows that, unlike the ruling at the final end of the base curve, at the initial end it is always perpendicular also to the surface of the constraining cylinder.
Meusnier's Theorem involves a curve's osculating plane. The plane is not only tangent to the curve at the given point, say P, but has a contact of higher order there: A line is determined by two distinct points (Euclid), and the tangent to the curve P(s), where s is arc length, is determined by the limit of the line through P(s-delta) and P(s+delta) as delta goes to zero. Similarly, a plane is determined by three distinct points (also Euclid) and the osculating plane is limit of the planes containing P(s-delta), P(s) and P(s+delta). This plane not only contains the tangent vector T(s) but as the tangent vector turns along the curve it turns in a direction which is also in that plane: dT(s)/ds is also in the osculating plane at P(s). In other words it contains the normal vector N(s) = (dT(s)/ds)/KAPPA.
Now assume that the osculating plane is not tangent to the cylinder at s=0 and construct a second plane containing two parallel lines: the axis of the cylinder and its (the cylinder's) ruling through P(0). Then by Meusnier's Theorem the line through the center of curvature of the base curve and perpendicular to the osculating plane, would intersect the second plane at the center of normal (to the cylindrical surface) curvature of the curve. But this second center does not exist! It is off at "infinity", being the "center of curvature" of the cylindrical ruling, a straight line considered as a special kind of "circle". So we have a contradiction to our initial assumption that the osculating plane is not tangent to the cylinder. It must be tangent to the cylinder and therefore the binormal B(0) = T(0) × N(0) must point towards the axis of the cylinder.
To finish the proof we must show that not just the binormal but also the ruling of the rectifying developable points towards the axis of the cylinder. For this it is sufficient to prove that TAU(0)=0 because the ruling of the rectifying developable there is in the direction of the Darboux vector (= TAU × T + KAPPA × B, equation 8 on page 8 of [1]) and KAPPA(0) = PSI'(0) > 0 by the endpoint condition assumed in BEND (leaving a discussion the legitimacy of this assumption until later.) But TAU = t - PHI' where t is the geodesic torsion and PHI is the angle between N and the normal to the cylindrical surface (see page 283 in [2]). Because P(s) is tangent to a ruling of the cylinder at s=0, and that ruling is a line of curvature of the surface, t(0)=0 (apply Theorem 1 on page 284 of [2] and then use the equation in the middle of the next page), so we need only prove that PHI'(0)=0.
We already know that PHI(0) = PI/2. (Being contained in the
osculating plane, N(0) is tangent to the surface.) Further, in a
neighborhood of zero (extend the base curve analytically back into
0>s), PHI(s) > PI/2 if s unequal to zero because: (1) BEND
requires the initial condition PSI'(0) > 0 and therefore PSI'(s) > 0
in the neighborhood by continuity of PSI', where PSI'= GAMMA is the
geodesic curvature; (2) The normal curvature K is <0 for s unequal to
zero in the neighborhood. Therefore, dividing equation (5) by equation
(6) on page 284 of [2] we have tan(PHI(s)) < 0 for s unequal to 0
in that neighborhood, proving PHI(s) > PI/2 there. Combining that
fact with PHI(0) = PI/2 implies that PHI(s) has a local minimum
at s=0. Therefore, it being a smooth function of s, PHI'(0)=0 by
elementary calculus. Q.E.D.
We have still left undiscussed the case PSI'(0) = 0, or even PSI'(0) < 0. This case is excluded by the BEND algorithm but it remains a mathematical possibility. So how can BEND get away with just excluding it? The perpendicularity of the rectifying developable ruling there can be shown by a limiting argument as PSI'(0) goes to zero from above, and BEND approximates PSI'(0) by a forward difference which in the limit allows it to escape from the upper bound on v(sfinal) imposed on the true analytic solution, but what is really going on here? PSI'(0)=0 produces a flex point at s=0, a singularity. KAPPA(0) = GAMMA(0) = TAU(0) = k(0) = 0, and N(0) and B(0) don't even exist. To investigate this situation we go back to the classical analytic exact solution to the two-dimensional problem, temporarily justifying it by the thought that in the limit s=0 as T(s) becomes parallel to a ruling of the cylinder the radius of the cylinder might as well be infinite.
(Upon reviewing the above reply I see that obviously it does not satisfy the request for an exposition of BEND "... better suited to users of the program who don't have the time to work through details of its underlying mathematics." Instead I wrote a long and rather densely mathematical proof of a theorem left unresolved up until now in all of the BEND documentation. Sorry.)