1 ** Changes to FElt from 3.05 to 3.06 (released 3/24/00)
3 The following bugs/things were fixed/changed:
4 1. the details stream was getting set all the time on the regular
5 writing of structural results, producing extraneous output
6 if the details flag hadn't actually been set
7 2. the text output for static thermal analysis was going to
8 stdout rather than the output window in velvet
9 3. as part of the rearrangement of the isoparametric elements and
10 element stresses/nodally averaged stresses, the components of the
11 stress vectors for cst, iso_2d, iso_quad, and axisymm elements
12 have changed. All of them (plus bricks) now have 10 components:
13 sigma_x, sigma_y, sigma_z, tau_xy, tau_xz, tau_yz, sigma_1, sigma_2,
14 sigma_3, and the von Mises stress. (sigma_r, sigma_z, sigma_theta,
15 tau_rz, 0, 0, sigma_1. sigma_2, 0, sigma_VM for axisymm elements).
17 The following features were added:
18 1. all of velvet's post-processing graphics except animation and mode
19 shapes have been ported over to OpenGL. The big reason for this is to
20 provide 3D color plots of stress and displacement for problems
21 using brick elements, but it also makes the post-processing code
22 quite a bit cleaner and provides nice rotation control. Try
23 loading the new examples brick_cap.flt and brick_ring.flt into
24 velvet (ignore the no nodes in the z=0 plane message), solve,
25 and plot stresses or displacements. As mentioned above, all of
26 the plottable stresses are now nodally averaged results. The
27 component can vary from 1 to 10. Displacements are treated the
28 same as before. Saves don't really work yet. If you need a
29 dump you can always xwd the window on your own and crop it and
30 convert it as necessary.
32 ** Changes to FElt from 3.02 to 3.05 (first version released on SourceForge)
34 The following changes were made to the FElt syntax:
35 1. changed the sense of coordinates for axisymmetric elements to
36 make them easier to use with mesh generation. x is still radial
37 but now y is vertical/axial. Previously z was vertical.
39 The following bugs/things were fixed/changed:
40 1. some small bugs in axisymmetric, ctg, htk, and iso_2d elements
41 that I haven't been really good about keeping tack of. Try
42 the new version and see if your answers look better -- if they
43 look worse then let me know ...
44 2. you can now use the -details switch to get the coordinates of
45 the points where stresses are calculated in the text display of
47 3. added radial and axial directions to the load dialog in velvet
48 and to the file writing routines. They'd gotten left out when
49 axisymmetric elements were originally implemented.
50 4. finally resolved the colormap issue in velvet so you can
51 use color stress and displacement plots on > 8-bit displays.
52 Take a look at src/Velvet/XCC.README to see how you too can
53 accomplish this if you're X11 colormap impaired like us.
54 5. dropped Geompk in favor of Triangle by J.R. Shewchuk. Several
55 reasons for the change: Geompk was always a little finicky,
56 mostly because of our interface probably, but it was sometimes
57 difficult to coax a mesh out of Geompk. The interface to
58 Triangle is very simple, it is coded in C which makes compilation
59 and configuration on other architectures simple, and it seems
60 to be pretty easy to get a decent mesh out of it. Accordingly,
61 the main input parameters have changed to target and alpha.
62 target is the approximate number of desired elements in the mesh.
63 alpha is used to generate a maximum bound on the area of a generated
64 element: Amax of an elt = alpha*Atotal/target. Triangle appears to
65 have a lot of other options for mesh refinement, angle constraints
66 etc., but none of these are made use of at this point. Most of the
67 hooks for Geompk are still available if someone really wants to
68 switch back. The call to GenerateTriMesh did not change for
69 applications, but the applications did change to account for
70 the loss of Geompk parameters (min, max, angspc, angtol, etc.)
71 and the addition of target and alpha.
73 ** Changes to FElt from 3.00 or 3.01 to 3.02
75 The following changes were made to the FElt syntax:
76 1. hooks for a gravity vector in the analysis section. Doesn't
77 do anything yet, but the syntax is there ...
78 2. "static-substitution" and "static-incremental" are now valid
80 3. a "load cases" section and accompanying syntax for named
82 4. syntax for new analysis parameters, "tolerance", "iterations",
83 "relaxation", "load-steps".
84 5. input-node= and input-dof= parameters in the analysis
85 parameters to allow for parametric studies in which you
86 get a table (or plot) of output that explores displacements
87 as a function of force level at a single input point
88 6. axial and radial are now valid directions for distributed loads
90 The following bugs/things were fixed/changed:
91 1. the transform matrix for beam3d elements was incorrect if elements
92 had nodes which were out of the x-y plane.
93 2. several problems with the new Makefile scheme were corrected.
94 3. velvet was probably getting the aspect ratios wrong in drawing
95 3d structures due to an error in the min/max checking.
96 4. the spectrum components of force structures were not being
97 initialized to either zero or NULL
98 5. save's in velvet were actually doing dumps (save all's), minor,
99 but potentially annoying.
100 6. there was still a problem with the lumped mass matrices for
102 7. the new PrintGlobalMatrices routine took a file pointer but
103 didn't actually use it; things were just going to stdout.
104 8. internal error in burlap's interface wit the matrix lib
105 was causing some problems with inversion and overwriting.
106 9. there were problems with iso_2d elements (or any element with
107 optional nodes) as the renumbering routines were just blindly
108 looping through element -> definition -> numnodes rather than
109 checking to make sure that all of the nodes were in fact valid.
110 10. on a similar note, the checks in velvet for out-of-plane nodes
111 were going over element -> definition -> numnodes rather than
112 element -> definition -> shapenodes (which all have to be valid
114 11. there was some sort of problem with the pre-processor and
115 corduroy (don't ask me how these things happen). I think it's
116 fixed now, but then again, I don't really know what was wrong.
117 12. renamed AssembleStiffness and AssembleDynamic to ConstructStiffness
118 and ConstructDynamic to reflect that they both create and assemble
119 the matrices (this then parallels ConstructForceVector). Renamed
120 ConstructTransientForce to AssembleTransientForce to reflect
121 the fact it only fills the thing rather than creating it then
123 13. the cpp command line wasn't being built properly so you couldn't
124 actually use -I, -D and -U on the felt (and corduroy) command line
125 14. memory initialization problem in Drawing.c
126 15. 2d and 3d Athena widget specific defaults were moved into
127 velvet.c and are now applied automatically at runtime as
129 16. the filename printing and scrolling in velvet's file dialog
131 17. changed the analysis.nodes array into an array of actual node
132 pointers rather than node numbers. In some ways this adds
133 a layer of complexity because whenever we input analysis nodes
134 we have to resolve their numbers by doing tree lookups in the
135 node tree; on the other hand, it is much more consistent with
136 the way we try to do things everywhere else and allows for the
137 elimination of a clumsy mapping scheme in the FE routines themselves.
138 With the elimination of the need for building that scheme in each FE
139 routine we can also stop passing around "old_numbers" for the
140 most part. There is probably a very slight performance hit
141 because now just about every analysis type should restore original
142 node numbers in renumbered problems before they output any
143 results (otherwise their references to analysis.nodes [i] -> number
144 will refer to a node's renumbered number ...). I got rid
145 of MakeNodeNumberingMap() in renumber.c.
146 18. added a NodeDOF data structure for use in the re-done FindForcedDOF
147 and the accompanying spectral analysis routines ... this parallels
148 what I did to the analysis nodes - removed references to node or
149 DOF number and replaced them with pointers.
150 19. I implemented the concept of "sub-analysis types" so that I
151 could do load cases, parametric input ranges, etc. What this
152 means is that the user can still only say analysis=static, but
153 depending on if any load cases are defined or if input-node and
154 input-dof are given, the actual analysis type used will be
155 StaticLoadCases or StaticLoadRange. This means that driver
156 routines should call mode = SetAnalysisMode ( ) and then switch
157 on the local variable mode rather than problem.mode. It's
158 really a sort of behind the scenes output control ...
159 20. cleaned up the printing of some of the analysis parameters on
161 21. the new material properties for thermal analysis were not
163 22. fixed up some problems with incorrect numbers of arguments in
164 a couple of places in velvet
165 23. the Cholesky factorization was actually returing a matrix
166 Q such that Q^T * Q = M, rather than Q*Q^T = M which is what
167 the modal analysis routines were actually set-up to handle.
168 This was producing incorrect results for problems with
169 consistent mass matrices. Thanks to Alvino Cossimo for pointing
170 this out and for providing the appropriate fix.
171 24. The geompack routines are flaking out for some reason that
172 I still haven't really pinned down. I think I have it at a
173 point where they will work for problems with no holes all
174 the time and for all problems when I turn off the optimization
175 in gcc. Given that kind of behavior I wouldn't be surprised
176 to hear about other machine specific strangeness ... if you
177 discover any let me know. For now I'll just turn off the
178 optimization on any machines that it is causing a problem on.
180 The following features were added:
181 1. the ability to plot force-time histories from the force
182 dialog in velvet. This means that for any given force
183 you can see what your forces (moments) look like over
184 the course of your simulation. It's really just intended
185 to give you a visual check that you have defined it
186 the way you actually wanted it.
187 2. added a magnification parameter to WriteGraphicsFile( )
188 which allows the routine to apply magnified displacements
189 to the nodal coordinates if you want it to spit out
190 a displaced shape plot. Use 0.0 for backward compatibility.
191 3. an axisymmetric element
192 4. large deformation, incremental, nonlinear static analysis - sort of
193 5. load cases - it feels kind of awkward right now but I couldn't
194 think of any cleaner ways to do it. Right now, you can define
195 a series of named load cases. For each load case you get
196 displacement info at each of the analysis nodes and DOF.
197 The load case definition itself consists of a series of
198 (node number, force name) and (element number, distributed name)
199 assignments (the element loads are ignored right now).
200 6. logarithmic, sinusoidal, cosinusoidal, parabolic, reverse-logarithmic
201 and reverse-parabolic spacing for mesh
202 generation in corduroy. The syntax for logarithmic had
203 always been there but had never actually been implemented.
204 The grid generation functionality was moved into a new
205 dialog to be consistent with triangle generation and
206 to allow for the selection of a given spacing.
208 Here's how they work: along a line of length L along which we are
209 placing the sides of ne elements (ne+1 nodes), the i_th node is
210 placed at a distance x_i, according to the following rules
212 linear: L * (i - 1)/ne
213 cosinusoidal: L - L*cos(pi/2 * (i - 1)/ne)
214 sinusoidal: L*sin(pi/2 * (i - 1)/ne)
215 logarithmic: L*log10(1 + 9*(i - 1)/ne)
216 parabolic: L*((i-1)/ne)^2
217 reverse-logarithmic: L - L*log10(10 - 9*(i - 1)/ne)
218 reverse-parabolic: L*sqrt((i - 1)/ne)
220 I'm not sure how useful some of them are, but they generate
221 some cool looking meshes.
223 7. the ability to write out global matrices in matlab
225 8. load ranges - because load cases were awkward :). It came
226 down to the fact that I could not see one all-encompassing,
227 yet elegant, way to do everything I wanted to do with
228 load cases. To use load ranges all you need to do is define
229 a single input DOF (with input-node= and input-dof=)
230 and then a force range (with start=, stop=, step=) and you
231 will get displacement info at your analysis DOF (nodes=[], dofs=[])
232 at each given load level.
233 9. detailed solution information in many places. A driver application
234 can now turn on detail printing with a single call. Analysis
235 routines simply make calls to the new function detail() and
236 if the printing flag has been toggled all sorts of ancillary
237 solution information can be spit out (renumbering info, iteration
238 counts, matrix sizes, etc., etc.). Of course not all routines
239 have anything important to say.
240 10. FElt -> OOGL translation in patchwork - thanks due to Stefan Majer.
242 The following things were changed for no apparent reason:
243 1. the velvet color scheme. I think the new subdued colors
244 give us a more serious look. The old scheme was really
245 starting to get on our nerves. I think we're also planning
246 on linking statically against the Xaw3d widgets for as many
247 platforms as possible. Again, a more serious look.
248 2. moved the etc/Tests directory to examples/
251 ** Changes to FElt from 2.30 to 3.00 (released 8/6/95) -
253 The following changes were made to the FElt syntax:
254 1. constraints can now have ITx= ITy= ... IRz= statements to define
255 a set of initial displacements. This means that we should now be
256 able to completely and independently define both the initial and
257 boundary conditions for a problem. Tx= ... Rz= are the boundary
258 conditions and ITx= ... IRx=, Vx= ... Vz=, Ax= ... Az= are the
259 initial conditions. I really should have done it this way from the
260 start and technically this fixes a bug that could well have cropped
261 up in transient analysis problems with fixed (non-zero)
262 displacement BCs. Also note that the Tx=...Rz= statements can now be
263 functions of time (i.e., expressions with t in them) just like forces
264 can be. This allows for time varying boundary conditions.
266 Is this backwards compatible? Yes and no. It allows for clarification
267 of an ambiguity between boundary and initial conditions (see #3 in
268 bug fixes). If you currently have problems with non-zero initial
269 conditions then you WILL need to change those files and move the
270 initial condition specification to ITx= ... IRz=. If you had a
271 problem where the Tx= ... Rz= were supposed to be boundary (as
272 opposed to initial) conditions then chances are that you were not
273 getting the right answer before, but you can leave the file as is
274 and should get the right answer now. I realize that this may
275 cause some confusion (it did for me as I was trying to work it out)
276 so just drop us a note and we'll try to clarify if you still have
278 2. nodes can now have a lumped mass assigned to them with mass=. This will
279 simply add this amount of mass directly to the translational DOFs
280 for this node in the global mass matrix. Completely backwards
282 3. new analysis types are supported in the analysis= statement in the
283 problem description section. They are: spectral, static-thermal,
284 and transient-thermal.
285 4. changed the trig functions to take arguments in radians instead of
286 degrees. Yes, we thought that making them take degrees was a nice
287 little feature when we only thought about them as an aid to defining
288 the geometry of problems with funny angles ... but now it occurs to
289 me that more people are probably using them for harmonic forcing
290 in transient problems and for that, radians is the way to go.
291 Besides, everybody else does it that way so we probably should
292 have too right from the start. This is _not_ backwards compatible
293 obviously and I apologize if it causes anyone major headaches.
294 5. added Kx, Ky, Kz (thermal conductivities) and c (heat capacitance)
295 to the list of available material properties.
296 6. added start=, stop=, step= to the analysis parameters. stop and step
297 are essentially aliases for duration and dt in a transient analysis
298 problem; the new forms are preferred because they are more
299 general. Things were generalized to make room for spectral
301 7. added an Rk= and Rm= to the analysis parameters. This allows for
302 a global level of Rayleigh damping as opposed to an element by
303 element (dependent on material property) definition. If either
304 of these "global" parameters is given, then the global damping matrix
305 will be based on them and any element by element results will be
308 The following bugs/things were fixed/changed:
309 1. added a tabbing mechanism and keyboard translations to the line graph
310 drawing shell (time displacement plots). Honest, I think that's
311 the last pop-up shell that didn't have them :-))
312 2. put AllocationError() back into misc.c ... don't ask me how it got
313 removed in the first place.
314 3. fixed the fact that fixed displacements were not being handled in
315 transient analysis problems. In previous versions I was treating
316 the constraint specification (Tx= ... Rz=) as the both initial
317 and boundary condition. This could cause some real ambiguity issues
318 if you wanted to specify both obviously. With the current fix,
319 Tx= ... Rz= are now interpreted as time varying boundary conditions
320 (i.e., they can have t in them) and the initial displacements are
321 explicitly specified using ITx= ... IRz =. See the note on syntax
322 changes to know if you need to update any of your input files.
323 If you had problems with non-zero IC then you probably do need to make
324 some changes (the IC specification should be moved off of of Tx=
325 and onto ITx=). Sorry for any confusion that this may cause, but
326 really, I think it should be much clearer now. Note that because
327 I am now treating displacement BC properly, I had to modify the
328 hyperbolic time integration implementation so that d(i+1) is solved
329 for implicitly (as opposed to a(i+1)).
330 4. renamed several functions and moved things around so that all of the
331 ASCII output routines are now in lib/Felt/results.c instead of being
332 spread over fe.c, modal.c and dynamic.c. Renamed dynamic.c to
333 transient.c. The functions which changed names are:
335 WriteOutput -> WriteStructuralResults
336 ResolveConstraints -> ZeroConstrainedDOF
337 ResolveModalConstraints -> RemoveConstrainedDOF
338 NewmarkIterate -> IntegrateHyperbolicDE
339 BuildInitialConditions -> BuildHyperbolicIC
340 ResolveInitialConstraints -> ResolveBC
341 EltStresses -> ElementStresses
342 EltSetup -> ElementSetup
344 Note that ZeroConstrainedDOF can now take NULL for the two
345 force vectors if you only want to zero out the rows and columns
346 in the stiffness (or any other) matrix. Also ResolveBC does not do any
347 zeroing out of the stiffness matrix. All it does is make appropriate
348 adjustments to the force vector for displacement boundary conditions.
349 I also got rid of CheckModalAnalysisParameters and changed
350 CheckAnalysisParameters to take an AnalysisType argument and
351 check the parameters based on the given analysis type.
352 The upshot of all this is improved clarity I think (plus it forced me
353 to clean-up/organize the prototypes in fe.h).
354 4. in yet another case of fiddling with graph.c I cleaned it up some
355 to make it more robust in terms of plotting both transient structural
356 and transient thermal results (i.e., made labels a parameter instead
357 of hard-coding them, etc.).
358 5. for Burlap's sake we got rid of ElementArray and changed the way
359 that applications know about the list of available elements. The
360 element definition structure changed such that the element name,
361 and pointers to the setup and stress functions are included right
362 in the definition structure. See the updated chapter on adding
363 new elements for details on how this affects any elements that you
364 have written. For clarity, src/Velvet/definitions.h was renamed
365 src/Velvet/interface.h so as to not conflict with the new
366 inc/definition.h file. inc/element.h is gone completely. When
367 you add new elements just add the file name to the list of objects
368 in lib/Elements/Makefile and update the initialization procedure in
369 lib/Felt/initialize.c. There is no separate element configure
370 script that needs to be run and no elements.db file.
371 6. corduroy's debugging option wasn't handling the fairly recent addition
372 of quadrilateral grid generation. It also wasn't printing out
373 the element type names for each different generation section.
374 7. added a dosdist target to the Makefile to create a zip file of
375 the source needed for the command line applications. I also
376 patched up several different bits of source to check if the
377 pre-processor symbol DOS is defined to make building DOS binaries
378 less painful and easier for someone else to try.
379 8. in a final(?) fit of messing with graph.c, I made things lots more
380 robust to make room for plotting power spectra (i.e., the x axis can
381 now be something arbitrary not just nicely spaced time points, all
382 the routines now take the graph structure/shell/drawing widget as a
383 parameter so we can have both power spectra and time domain answers
384 on screen at the same time).
385 9. another round of major cleaning - this time in the form of abandoning
386 the paradigm of passing around node, numnodes, dofs, count, etc.
387 everywhere. There are now two dofs arrays in the problem structure:
388 problem.dofs_pos is the same as the old dofs array, problem.num_dofs
389 is the same as the variable count that used to get passed around,
390 the new array is problem.dofs_num and it gives the local DOF
391 number (1 through 6) of an active DOF in the problem, i.e., for
392 a mixed beam truss problem the two arrays will be
394 problem.dofs_num = [1, 2, 3, 6, 0, 0]
395 problem.dofs_pos = [1, 2, 3, 0, 0, 4]
397 The new one also allowed me to rewrite the way that various routines
398 search through the active DOFs on a given object for a given node
399 to fill in global arrays. There are also two new routines
400 GlobalDOF and LocalDOF which map between node number, local DOF and
401 a global DOF number. Routines that need to access the node and element
402 arrays can simply get to them through the problem structure.
403 10. InvertMatrix was broken (sort of). It's fixed now but the calling
404 sequence of some things may have to change because it can't trash
406 11. added ZeroConstrainedMatrixDOF and RemoveConstrainedMatrixDOF for
407 burlap's sake. Both are much like their more specialized counterparts
408 but are meant to be more generalized. They only work on one matrix
409 at a time and the input can either be a full, compact or column
410 matrix. They'll just do the right thing depending on the input.
411 12. modal results now print the frequency in Hz in addition to the radial
413 13. for consistency's sake you can now draw a polyline tool object
414 with keyboard input (i.e., by inputting a series of coordinates).
415 Also, esc/quit button and ctrl-c/abort button should now work during
416 polygon draw operations either during keyboard or mouse controlled
418 14. in order to keep things clear and to be consistent
419 with the change to the syntax, the analysis structure members
420 duration and dt were renamed to stop and step.
421 15. renamed WriteModalResults to WriteEigenResults. WriteModalResults
422 is now a function to print out modal mass, stiffness and damping
423 matrices (and modal damping ratios).
424 16. eliminated the -printk and -printm options from felt (and the
425 output control in velvet) in favor of -matrices which simply
426 prints out whatever matrices are appropriate to the problem.
427 Also, I wrote PrintGlobalMatrices to keep the solution drivers
428 from getting cluttered up - it will check for matrices of all
429 zeros as well; each analysis type in a switch now just needs to
430 check for the matrices flag and call this new function as
432 17. lots of minor cleaning to get gcc -Wall to shutup and some
433 rearranging of various bits and pieces - nothing really at the
434 user level though. The Makefile scheme also got reworked.
435 Oh yeah, we completely removed xfelt from the distribution.
436 If you really, really want it and you don't already have it
437 from one of the previous distributions (it hasn't change since
438 about v1.3 I think) then drop us a note and we'll get it to
440 18. looks like the velvet distributed load dialog was doing some
441 funny things with a few malloc's so things may have been getting
444 The following features were added:
445 1. burlap - yes, it's finally here. Our very own attempt at a
446 powerful, flexible, easy-to-use interactive environment for doing
447 FEA, burlap lets you script new analyses and new elements; it lets
448 you use the results from current analyses in ways that we didn't
449 think to provide in one of the other applications; it's sort of a
450 FE-aware Matlab-like application. There are two brand new chapters in
451 the manual that describe it - yes, it's that big and that powerful.
452 2. thermal (heat transfer) analysis, both steady state and linear time
453 dependent forms. Two new elements are available for these analyses:
454 a constant temperature gradient triangle (analogous to a CST), and a
455 one-dimensional rod (sort of like a truss, only simpler in that rod
456 elements can only really exist along a single line because there is no
457 transformation matrix applied).
458 3. added user contributed elements to the standard distribution. This
459 currently adds a triangular plate bending element (PLTGZ4) to the
460 element library if you answer yes to the new question in the configure
461 process (the one about building user contributed elements).
462 4. corduroy can now generate a grid of brick elements. This isn't really
463 anything special but it does allow for a simplistic meshing of a
464 rectangular solid of some kind. Chapter 8 of the manual has been
465 updated to reflect the changes. Note that because velvet does not have
466 a mechanism for specifying coordinates in 3d, velvet cannot generate
467 these kinds of grids.
468 5. spectral analysis. Just take what used to be an analysis=transient
469 statement and make it an analysis=spectral statement and watch the
470 fun (of course you really should change the duration and dt into
471 start, stop and step frequencies and change forces to their frequency
472 domain analogs if you want output power spectra as opposed to just
473 transfer functions). The output will be the frequency domain analog of
474 the results that you normally see for transient analysis problems. As
475 usual regular old ASCII results are the default but both felt and velvet
476 can plot the power spectra or transfer functions if you want graphical
477 results. If you give felt the -transfer option then it will only
478 calculate transfer functions; if not then it will want frequency
479 domain forces to be applied and it will calculate output spectra instead.
480 The transfer only option is also a new toggle in the output/results
481 dialog under the solutions control menu in velvet.
482 6. now clicking on the third mouse button (right button) on a node
483 or element raises both the node (or element) dialog plus the
484 appropriate object dialogs with the objects assigned to that
485 node (or element) already highlighted, i.e., this is an easy
486 way to change the actual definition of a force that is assigned
487 to a node (keep in mind however that objects can be assigned to
488 more than one node or element so any changes you make could affect
489 other nodes and elements).
490 7. added modal analysis to modal analysis ... what this really means is
491 that I went ahead and added some capabilities beyond just finding
492 the eigenvalues and eigenvectors. You can now calculate the
493 modal mass, stiffness, and damping matrices. You can also just stop
494 at the eigenvalues and eigenvectors if you want to using the
495 -eigen switch in felt. felt also has a new switch (-ortho) to control
496 the use of orthonormal mode shapes. Both switches are also available
497 in the revamped output/results dialog available from the solutions
499 8. added a -preview option to felt. It tries to draw an ASCII rendering
500 of the structure described by the input file. It's far from
501 perfect but for a lot of structures it may be enough for a quick
502 check of the validity of the problem geometry.
503 9. a very simple, one-dimensional spring element was added. It's
504 basically the truss without a transformation from local to global
505 coordinates; they should only ever be defined along the global
507 10. added "ctrl-t ?" keyboard shortcuts for the drawing tools (ctrl-t c
508 for a circle for instance; ?=l for line, ?=t for text, ?=p for polygon,
509 ?=r for rectangle, ?=a for arc).
511 ** Changes to FElt from 2.23 to 2.30 (released January 18, 1995) -
513 The following bugs/things were fixed/changed:
514 1. planar elements were drawn all wrong during animation
515 2. changes to a parameter for a material property after already having
516 solved the problem once were not properly reflected in subsequent solves.
517 The bug was in something the element library was doing but only really
519 3. The original shape for 3d wireframe plots was still being drawn in
520 yellow rather than with a dashed line like it should have been based
521 on the changes from 2.0 to 2.1.
522 4. The initial implementation of the lumped mass matrix for beams did
523 not calculate an inertia for rotational DOF. In playing around
524 with modal analysis I noticed that we should probably put something
525 in there for consistency with the kinds of answers that most people
526 expect to get. Changed for beam3d and timoshenko elements as well.
527 5. stiffness matrices and material statistics were only printed in
528 static analysis problems. Mass matrices can now be printed for
529 both transient and modal analysis problems as well. Note that the
530 stiffness and mass matrices for modal analysis problems are completely
531 condensed (i.e., constrained DOFs are completely removed from the
532 problem, not simply zero'd out). This is one way to look at the
533 same kind of stiffness and mass matrices for a problem that you are
534 also doing by hand (in assembling by hand of course, few if any of of us
535 actually bother to assemble the constrained DOFs in the first place).
536 6. the contour field drawing routines wasn't cleaning up properly if an
537 error occurred in the middle of the interpolation process.
538 7. moved the velvet routines in misc.c into text_entry.c and group.c
539 to better reflect exactly what they did. misc.h is now text_entry.h
540 because it only had prototypes for the text stuff.
541 8. I changed the matrix printing routines to make the output look more
542 like some other programs that pretty print matrices ... I think it's
543 more readable this way.
544 9. fixed scaling problems in structure/animate plots when the structure
545 only existed in one dimension (i.e., a line). Also fixed the
546 problem of the animation widget resizing itself too small on
547 tall, slender structures (in essence it was not trult consistent with
548 the new plotting method of resizing/clicking/drawing ...).
549 10. added a tabbing mechanism and keyboard translations to the animation
551 11. I actually wrote a new README for this release. I've also moved all the
552 old README (alpha, 1.3, 2.0) into a single file: README.old
553 12. slight fix-up to the configure script so it looks for /usr/X11R5 and
554 /usr/X11R6 for X includes and libraries.
556 The following features were added:
557 1. a three-dimensional solid, 8-noded brick element was added to the
558 element library. See chapter 3 of the updated manual for details on
559 how to use it. There is a very simple example in etc/Tests/brick.flt.
560 For the most part, brick elements will be hard to use in velvet
561 because of velvet's problems with drawing and defining a problem in
562 3d. However, the wireframe structure plots (under post processing ...)
563 have been modified and should be able to handle basic rendering
564 of problems with bricks in them (no hidden line removal though ...).
565 Animation and mode shape plots still don't work for these.
566 2. a basic form of modal analysis has been added. Change the analysis=
567 to modal in the problem description section and FElt will calculate
568 the eigenvalues and eigenvectors for the problem. See modal.flt
569 in etc/Tests and the new section at the end of chapter 2 in the manual.
570 Some velvet specific notes have been added in Chapter 7 (there were
571 changes to the problem/analysis and output control dialogs). I also
572 added a section in chapter 9 to describe the numerical procedure FElt
573 uses to actually solve the generalized eigenvalue problem.
574 3. a version flag to felt. I also added inc/version.h to help keep this
575 updated here and anywhere else it might be needed.
576 4. examples that illustrate multiple distributed loads on an element
577 (etc/Tests/dist_mult.flt) and a simple simply supported beam
578 (etc/Tests/beam_ss.flt).
579 5. replaced GIF support with PPM support for saving images of contour
580 plots. Though PPM is perhaps not as widespread, it is fairly well
581 supported between pbmplus and xv. If nothing else, pbmplus gives you
582 the power to translate to just about any other format you could think of.
583 Note that PPM images can get pretty big, pretty quickly; you'll
584 probably want to convert to a compressing format or simply compress
585 the actual PPM file with something like gzip. The reason for the change
586 should be obvious with all the current hoopla about CompuServe and
587 their attempted restrictions on the use of GIF - we simply figured
588 why bother with it. We figured that EPS (see next note) and PPM
589 would be good enough for now and we'll think about changing it again
590 once some sort of simple 8-bit standard image file format begins to
592 6. encapsulated postscript support for saving contour plots. I also
593 hacked up the file dialog yet again to make it more robust in terms
594 of having arbitrary labels on the toggles (i.e., XWD/PostScript vs.
597 ** Changes to FElt from 2.22 to 2.23 (released September 7, 1994) -
599 The following bugs were fixed:
600 1. the problem title was not being set properly in the problem/analysis
602 2. a transient analysis problem with no nodes or DOFs defined didn't
603 save right from velvet (and therefore did not load back in either).
604 3. changed the animation and drawing popup shells to topLevel class from
605 transient because some window managers actually do some things right
606 and don't allow you to resize transients ...
607 4. invalid node numbers in a distributed load on a CST could produce core
608 dumps because the error checks were being done in the wrong order.
609 5. the heuristic for deciding how to orient the wedge on a stress or a
610 displacement plot was not self-consistent throughout the plotting
611 routines and in some cases this caused the scale to draw on top of
613 6. corduroy did not put the problem description section on top of the
614 output so the resulting file could not be used directly in velvet.
615 There may have been some reason for this initially, but I can't think
616 of what it was now and it struck me as kind of annoying when I came
618 7. the mass matrices for HTK plate bending elements were wrong (I think).
620 The following features were added:
621 1. corduroy and velvet can now generate a grid of quadrilateral elements.
622 This isn't really anything special but it does allow for a simplistic
623 meshing of a rectangular plate of some kind. Chapter 8 of the manual
624 has been updated to reflect the changes.
626 ** Changes to FElt from 2.21 to 2.22 -
628 The move to 2.22 involved purely structural changes and minor fix-ups to
629 allow for cleaner compiles on different platforms using a couple of
630 different compilers. The most visible change is the renaming of bin
631 to src for consistency with current trends in other software packages.
633 ** Changes to FElt from 2.20 to 2.21 -
635 The following change was made to the FElt syntax:
636 1. materials, constraints, loads and forces can all now have a color=
637 parameter to control the new multi-color rendering in velvet. In
638 general the parameter would only get set by velvet during a save so
639 that colors would be maintained when the file is read back into
640 velvet. Other FElt applications will effectively ignore the color=
641 entirely. The change is completely backward compatible of course.
643 The following bugs were fixed:
644 1. The wrong menu was left sensitive during edit operations. You should
645 have access to the canvas menu not the post-processing menu during
646 an edit. Also made the four object pop-up menu controls sensitive
647 during edits to make it easier to change the active constraint, etc.
648 in the middle of an add operation and cleaned up the stuff that
649 should always be sensitive in the Canvas menu.
650 2. Reading in a material database didn't automatically update the material
651 list in the element dialogs.
652 3. Changing canvas parameters in the middle of adding nodes / elements
653 was not immediately reflected in the additions after the change was
655 4. Moving the first node of a line element caused that element to be
656 drawn improperly (such that it looked like it wasn't drawn at all).
657 5. renamed the actual executable filename of patchwork to patchwork
658 (instead of pw). This means that if you ever actually installed
659 FElt-2.20 you should be sure to clobber the pw executable because the
660 new one will not overwrite the old one. Sorry about that.
661 6. mass of truss elements not entirely in the z-plane was not properly
663 7. saving a problem with no nodes or elements caused a core dump.
664 8. saving more than one GIF plot during a single session tended to be
665 unreliable ... If anyone ran into a problem where the _first_ GIF saved
666 was somehow corrupted then we'd like to hear about it because that may
669 The following features were added:
670 1. A unique color can be assigned to each material, load, constraint, force.
671 This means that in velvet, elements (nodes) with different material
672 properties (constraints) can be rendered in different colors. If
673 an element (node) has a load (force) assigned to it then the load
674 (force) coloring will override the material (constraint) color.
675 The coloring for all objects is controlled from a single dialog
676 accessible via the canvas menu.
677 2. The way that post-processing windows get sized was changed to allow for
678 more user control. Now when you plot something the first thing that
679 happens is the window comes up blank. You can resize this window
680 as appropriate. The plotting won't start until you click in the
681 drawing area (the big blank white space); once it does start it will
682 use whatever size you had the drawing area when you clicked.
683 3. Unified the code for the post-processing drawing shells and added
684 tabbing mechanisms and keyboard translations to them. The layout
685 widget is also now responsible for their geometry management.
686 4. A unit conversion and problem scaling application called
687 yardstick. See the new subsection on units in chapter 2 and the
688 new manual page for details.
690 ** Changes to FElt from 2.16 to 2.20 -
692 No changes to the FElt syntax.
694 The following bugs were fixed:
695 1. the install target didn't install anything from bin/Corduroy ... oops
696 2. a couple of tweaks were made to allow for easier compiles on certain
697 machines. see new special instructions at the end of the INSTALL file.
698 Some of these tweaks/instructions should allow for compilation of
699 FElt on systems with X11R4.
700 3. resolved the problem of circular dependencies between libelt and libfelt.
701 All of the basic matrix routines are now in lib/Matrix ... we did
702 a new library for a new application that's in the works so we might
703 as well use it for everything else. A couple of utility routines
704 also got moved ... ElementArea ( ) is now in lib/Elements/misc.c,
705 ZeroRowCol ( ) is now in lib/Elements/misc.c. The new matrix library
706 has more transparent sort for compact column matrices so some of
707 the details of routines in fe.c and dynamic.c changed. We probably
708 introduced a few bugs by changing a major component of the mathematical
709 routines, but oh well, it's all in the name of progress, we promise.
710 4. the configuration process was changed - building xfelt is now an option
711 and the default is no. With velvet available and xfelt not having
712 changed in several releases, we see little point in building it over
715 The following features were added:
716 1. a new application, patchwork, was added to the system. patchwork
717 allows you to convert files from other packages to the FElt syntax (and
718 vice versa). Right now it can read FElt, AutoCAD-like DXF files, and
719 gnuplot data files and it can write FElt, DXF, gnuplot data, and files
720 formatted for the software in Logan's book. There's a new section at
721 the end of chapter two of the manual with some more details.
722 2. The bulky solution/output dialog box was broken up into three new
723 dialogs: one to toggle solution output and one each for contour plotting
724 and structure plotting. The latter two allow more control than was
725 previously available for the post-processing options. The new output
726 toggling mechanisms also now mirrors all of the command line options
727 available in felt (i.e., printk and debug are now implemented).
728 The postprocessing options and controls were moved from the solutions
729 menu to a new menu called, appropriately enough, postprocessing.
730 The problem title and analysis mode were moved to the analysis
731 parameters dialog box - this one dialog now is exactly analogous to
732 the problem description and analysis parameters section of the
733 FElt syntax. The renumber toggle button (for temporary renumbering
734 during solutions only) was moved to a menu based switch on the nodes
737 ** Changes to FElt from 2.15 to 2.16 -
739 No changes to the FElt syntax.
741 The following bugs were fixed:
742 1. hitting quit with no boundary markers during element generation in
743 velvet caused some really stupid errors - even core dumps.
744 2. plotting stress contours for a problem with all zero stresses
745 caused floating exceptions (surprise, surprise).
746 3. plotting structure plots by doing a plot structure on solution from
747 the output dialog box either didn't work right or core dumped
748 4. plotting anything for iso2d elements was generally pretty screwed up
750 The following features were added:
751 1. the ability to move tool figures around the drawing area in velvet -
752 simply select move from the tools menu, click on the figure to relocate,
753 move it around, and click again to drop it in the new position.
754 2. feature or bug-fix? iso_quad elements actually define a mass matrix
755 now during transient analysis (always lumped)
756 3. a bindist target was added to the main Makefile to simplify making
759 ** Changes to FElt from 2.1 to 2.15 -
761 No changes to the FElt syntax.
763 The following bugs were fixed:
764 1. Trying to plot stresses for an invalid stress component probably
765 produced unpredictable results as we weren't checking for this. Now
766 velvet should (rightly) report an error when you give a stress
767 component that is out of range.
768 2. There is better colormap handling - if it can't get 128 colors it will
769 use (and most importantly make maximum use of) what it can get. It
770 also warns when it only get 64 colors or less (half of what it
771 wanted to get). The results could get kind of screwy previously.
772 3. The first time you type make it should check to see if you have done
773 a make config or not - if not it will force you to do one. We also
774 removed the etc/config.in file so the make config should now do a
775 better job of guessing what local defaults should be.
777 The following features were added:
778 1. A new plate bending element was added, with symbolic type name
779 "htk". It has four nodes (where the fourth can be the third repeated
780 for degeneration to a triangle), and 3 DOFs (Tz, Rx, Ry). The
781 internal forces calculated are M11, M12, M21, Q1, and Q2. Distributed
782 loads on these still aren't operational. There is an example in
784 2. The ability to do color shaded contour plots of nodal displacement
785 components for planar elements. (Just like stress plots). This is
786 one good way to visualize the Tz DOF of a problem with the new htk
787 elements. The solution control dialog was modified to handle the
788 controls of these plots.
789 3. Dumping any of the color contour plots now produces a GIF file instead
790 of an XWD. The theory here is that GIFs are easier for most people
791 to work with - plus you don't have to worry about whether or not the
792 window is obscured when you click on OK in the file dialog.
794 ** Changes to FElt from 2.0 to 2.1 -
796 The following changes were made to the FElt syntax:
797 All changes are completely backward compatible in this release - all
798 original v2.0 (or v1.3 even) problems will not need any modifications.
800 1. addition of canvas configuration and display list sections to
801 standard FElt syntax to replace the .vlv files. Now all of the
802 customization for problem appearance and tool figures is stored
803 directly in a plain-text format right within the standard FElt
804 file. If these sections are present and felt is used on the problem
805 they are simply ignored. If velvet is used to read the file then
806 this info will be used to restore the canvas to its previous
807 appearance and to reconstruct all of the tool figures.
809 The following bugs were fixed:
811 1. cpp_args was not initialized in problem.c (ParseCppOptions) which
812 broke the file handling on a DEC Alpha (thanks to Sanjay Gavindjee)
813 2. some very early editions of v2.0 that may have gone out did
814 not properly read from standard input.
816 The following features were added:
818 1. PostScript output in canvas dumps, structure plots, etc.
819 A mod to the file dialog to allow for optional toggle buttons
820 which control whether the user wants XWD or PS output.
821 2. line styles went into the drawing widget. In structure plots
822 this means that the original undisplaced structure is drawn
823 with a dashed rather than a yellow line.
824 3. renamed the Problem ... menu to Solutions ..., renamed Define ...
825 under this menu to Output ... in an attempt to be more explicit
826 about what those options actually do. Dump ... under Canvas ...
827 was renamed to Save canvas ...
828 4. graphical time-displacement plots in place of the regular felt
829 output ascii versions ... much nicer and they save as PostScript
830 plots that print really well.
831 5. elimination of those damn .vlv files in favor of additions to the
832 FElt syntax to describe all of the canvas and tool stuff in plain
834 6. the cursor in the main drawing area changes to a watch during
835 computational waits now (ooh, ahhh).
836 7. corduroy ... no really now, it's actually a complete program
837 that actually works. (see the new chapter in the manual)
838 8. in that same vein, a routine to coalesce nodes was incorporated
839 into all the generation stuff. What this means is that you
840 should now be able to get away with generating elements in
841 adjacent regions at two different times, etc. Nodes that are
842 very near to each other, but are not connected (i.e., because
843 you generated a bunch of elements and nodes and then went back
844 and did the same thing right near or next to the first bunch)
845 will be merged together.
847 ** Changes to FElt from 1.3 to 2.0 (released February 12, 1994) -
849 The following changes were made to the FElt syntax:
850 All changes are completely backward copmpatible in this release - all
851 original static problems will not need any modifications.
853 1. t is now a valid token in expressions. In a transient analysis problem
854 it will stand for time in a force and be dynamically evaluated throughout
855 the course of the simulation. In static problems it will simply
856 be evaluated at t=0 at startup and treated as a constant expression.
857 2. valid expressions can now use the intrinsic functions hypot, log,
858 log10, ceil, floor, fmod, fabs, exp and pow. They can also make use of
859 the C style ternary if-then-else operator (t < 10 ? 15*t : exp(-0.03*t))
860 3. a mechanism for time-magnitude pairs for discretized dynamic forces
862 4. an analysis= parameter in the problem description section to control what
863 type of analysis is performed (static or transient) for that problem.
864 The default is static if nothing is specified.
865 5. an "analysis parameters" section to control the variables in
866 transient analysis problems - beta, gamma, and alpha are parameters
867 in the HHT integration scheme. duration and dt control the length
868 and the time-step of the integration. nodes= and dofs= control
869 what node (and which DOFs at each node) are included in the output.
870 mass-mode= controls what type of element mass matrices should be formed,
871 either consistent or lumped.
873 The following bugs were fixed:
874 1. a couple problems with trying to solve problems (or do anything for that
875 matter) after you'd deleted elements in velvet.
876 2. the variable 'time' in lib/Widgets/post.c was renamed 'when' to avoid
877 conflicts with some installations of gcc
878 3. a local implementation of strdup was provided for systems that insist
879 on being totally and solely ANSI and POSIX compliant.
880 4. delete window hooks were added to the post-processing popups so you
881 can now close them with the window manager and the entire program
883 5. a bug? ... well, the Fortran compiler was taken out as an option in
884 the configuration - it's just too confusing for people as most people
885 do not know what the extra libraries are that they need to link in.
887 The following features were added:
888 1. transient analysis using Hilbert-Hughes-Taylor alpha variant of
889 Newmark integration. The C and M matrices are also assembled directly
890 into a compact column representation. Dynamic forces can be specified
891 as continuous functions of t (see syntax changes above).
892 -plot and -table options were added to felt to control the output.
893 2. direct assembly into compact columns for the K, M and C matrices - this
894 can represent a major savings in memory.
895 3. automatic node renumbering for bandwidth/profile reduction of the
896 matrices - in felt it is activated by a command line switch;
897 in velvet you can do it once and for all and the way your problem
898 is shown and saved will reflect the new numbering or you can implement
899 it with a toggle as in felt that just does it to solve the problem
900 and then reverts back to the old numbers to show you your solution
901 4. renumber and summary toggles were added to the solution dialog in
902 velvet to mirror felt command line options. plot and table toggles
903 in that same dialog reflect new command line options in felt that control
904 the output for a transient analysis problem.
905 5. static and transient mode analysis toggles in the solution dialog
906 to control the problem mode (equivalent to analysis= in the problem
907 description section of a FElt file).
908 6. an analysis parameters dialog box to account for the new section
910 7. animation of transient analysis simulations as a special case solution
911 mode for these types of problems. The animation popup includes controls
912 for speed, play forward/backward, stop and a time counter.
913 8. the ability to evaluate an expression wherever velvet is expecting a
914 floating point number in a dialog box (i.e., forces, material properties,
915 nodal coordinates) just like you can use an expression in the regular
916 FElt syntax, including the variable t in dynamic forces.
917 9. element mass matrix (consistent and lumped) definitions for truss,
918 beam and timoshenko elements. Only lumped mass formulations are done
919 for beam3d and cst elements. Nothing is done for isoparametric
922 ** Changes to FElt from 1.0a to 1.3 (released November 7, 1993) -
924 The following changes were made to the FElt syntax:
925 1. addition of 'hinge' or 'h' as a keyword after the R[xyz]=
926 token in a constraint to indicate a hinged DOF
927 2. addition of a valid expression after the T[xyz]= or R[xyz]=
928 token in a constraint to indicate a displacement boundary
929 condition. Tx=c for examples is now equivalent to Tx=0.0.
930 3. directions 'x','y', and 'z' are no longer valid. This is
931 the only backward incompatible change to the syntax. Valid
932 directions now include LocalX, LocalY, LocalZ, GlobalX,
933 GlobalY and GlobalZ. Check the element definitions in the
934 user's manual to see what these things mean.
935 4. you can now use sqrt() in expressions (just like you
936 you could use sin, cos and tan before).
938 The following bugs were fixed:
939 1. a bug in xfelt which caused a core dump when you tried to
940 draw a problem in 3d when it was only a 2d problem.
941 2. a bug in the internal forces calculated for beams which always
942 caused the second end moment to be printed as zero.
943 3. several bugs in 3d beam elements including an error in the
944 global <-> local transform matrix and a typo in the resolution
945 of distributed loads. I think they actually work now :-).
946 4. not really a bug, but the directions of loads on beam elements'
947 got straightened out and is probably a bit more consistent now.
948 5. consistency amongst text commands, menu options and keyboard
949 shortcuts was substantially improved.
950 6. does the original user's manual count as a bug? Well the new one
951 should actually print on any old postscript printer, plus it
952 contains a wealth of new information and is organized a whole lot
955 The following features were added:
956 1. hinged DOFs, displacement boundary conditions.
957 2. a simple, illustrative Timoshenko beam element.
958 3. plotting of 2d planar stress fields with color imaging in velvet.
959 4. plotting of the displaced structure in velvet.
960 5. loads directed along the global coordinate axes on beams and beam3ds
961 6. a real file selection mechanism for velvet
962 7. much improved, consistent, self-contained force, material,
963 load and constraint dialogs in velvet
964 8. unified node and element edit/info dialogs
965 9. a problem solution control dialog in velvet
966 10. unified interface mechanism for all the dialogs, including tab groups
967 and the ability to leave dialogs up throughout a work session
968 11. translation include files and a built-in include path for cpp
970 12. element numbering