Contents


SLFFEA HOME

SLFCFD HOME

SLFCEM HOME

GUI

Image Gallery

Download

Philosophy

Preamble

FAQ

GNU/Linux

Update

Development

Acknowledgments

Links

CFD

Periodic Table





Stuff About Me

San Le

Artwork

Email

Updates to SLFFEA

Updated 9/24/00



Here is a summary of the updates as of 9/24/00:

Fixed bugs in graphics code for truss in slffea-1.09 and slffea-1.0. You should just make the fix yourself, since I'd rather not upload everything again. In the include file ~/slffea-1.1/truss/truss_gr/tsstrcgr.h, change:
        double xx;
for the structure ISTRESS and ISTRAIN to:
        int xx;
Note that when you change an include file, you should do a
        make clean
and rebuild all the object files and executatble again.

Here is a summary of the updates as of 9/2/00:

This bug fix applies to the QR code in the generic Lanczos program I put up at my development page so it should not effect your current use of SLFFEA unless you are trying to implement modal analysis by yourself. This was the nastiest bug I've ever had to fix, and it is very telling about why no one seems able to contribute to SLFFEA . The difficulty was due to the following:
  1. The code had a "Segmentation fault" at a point which was far away from where the actual error occurred. I thought it was due to a memory leak (the worst type of bug), but it turned out to be improper indexing of a pointer to a non-existent location.
  2. It only occurs for a very unique data set, and only if one of the numbers in the set has 9 significant digits instead of 7. I was very tempted to dismiss the problem as some quirk in the numerics since every other data set worked, but couldn't resist trying to find out the exact cause of this very particular bug. That difference of 2 significant digits caused convergence to the desired eigenvalues from the left instead of the right, which almost never happens. It led to a situation which I had not considered, namely the T matrix evolving into a diagonal matrix except for a 2 X 2 sub-matrix at the bottom right.
  3. I hadn't looked at my implementation of QR for several months and it was pretty tricky trying to figure out what it did. I suspect that if it's this hard for me to figure out my own code, then it must be really difficult for any coder that may be out there.

The reason I'm documenting all the above is to make a record of the effort it took to track this bug down. I don't think I'll upload a new version of slffea-1.09 unless someone is working on modal analysis and wants me to.

Here is a summary of the updates as of 8/22/00:

Fixed bugs in graphics codes for shell, quad, and plate. For the shell, there was sometimes the problem that when you amplified the deformation, the face on the opposite side would slice through to the face you were looking at. I finally understood what caused this and made the fix. Also, fixed the rendering for the plate and the quad graphics codes. Basically, I calculated the norms incorrectly so that they were pointing in the wrong direction. So I'm modifying slffea-1.0 and slffea-1.09. And yes, I'm still working on adding modal analysis.

Here is a summary of the updates as of 7/8/00:

Made another small modification in the Conjugate Gradient solver. I replaced all instances of:
check=matXT(P_el .... )
with
check=matX(P_el .... )
in ~/slffea-1.1/brick/brick2/br2conj.c. This should not have made any difference because I'm dealing with symmetric matrices, but nevertheless, there is a slight change in the results. I think this is due to the fact that iterative methods accumulate small error. The discrepancies here are about O(10e-4), and this is true for both the Windows and Linux versions.

Here is a summary of the updates as of 7/7/00:

Found a bug in the brick2 code ~/slffea-1.1/brick/brick2/br2kasmbl.c and ~/slffea-1.1/brick/brick2/brcasmbl.c for slffea-1.09. This isn't necessarily a bug, but should be rewritten since it vastly improves performance in the Conjugate Gradient solver. On line 375 of br2kasmbl.c, change:
*(K_diag + *(dof_el+j)) = *(K_el + neqel*j + j);
to
*(K_diag + *(dof_el+j)) += *(K_el + neqel*j + j);;
and in brcasmbl.c, for line 216, change:
*(TK_diag + *(Tdof_el+j)) = *(K_el + Tneqel*j + j);
to
*(TK_diag + *(Tdof_el+j)) += *(K_el + Tneqel*j + j);
and on line 357, change:
*(TK_diag + *(TBdof_el+j)) = *(K_el + TBneqel*j + j);
to
*(TK_diag + *(TBdof_el+j)) += *(K_el + TBneqel*j + j);
I've made other small fixes here and there, so it may be worth it to download again. Why aren't people finding these things?

Here is a summary of the updates as of 6/22/00:

Found a bug in the beam code ~/slffea-1.1/beam/beam/bmmasmbl.c for slffea-1.09. This is the mass assemble subroutine used in eigenvalue analysis, so it shouldn't effect anything you've been working on. Unfortunately, it messes up the compile. You can make the change yourself by doing a search for memset and adding a zero between the two existing variables. So for instance, on line 93 of bmmasmbl.c, change:
memset(rotate,nsdsq*sof);
to
memset(rotate,0,nsdsq*sof);
You should do this for all other memset calls in bmmasmbl.c. I don't know why gcc did not pick this up in the compile. I'm currently using Slackware 4.0, and it was an attempt to compile under RedHat 6.1 that the error was found. Thanks to Irene, who is just beginning to learn programming, for helping me find this problem. Why didn't anyone else find it?

Here is a summary of the updates as of 6/15/00:

Found a mistake in the shell science code. In ~/slffea-1.1/shell/shell/shkasmbl.c, I call the function shshg twice when calculating the stresses and strains. Since this does not have any effect on the code(except for slowing things down a little), I'm not going to bother uploading everything. Just make the fix yourself by removing the lines 322 and 323 in ~/slffea-1.1/shell/shell/shkasmbl.c or lines 311 and 312 in ~/slffea-1.0/shell/shell/shkasmbl.c:

Here is a summary of the updates as of 6/10/00:

Found a bug in the Open Inventor data conversion code for the shell. Since I doubt anyone uses this code, I'm not going to bother uploading everything. If you want, just make the fix yourself in ~/slffea-1.1/shell/shell_gr/shinvent.c(or slffea-1.0). Get rid of all references to "mem_sh_double".

Here is a summary of the updates as of 6/4/00:

Found a bug in slffea-1.1 and slffea-1.0 in the graphics codes for the quad element. I forgot to display the nodal coordinates for the Node ID. You can make the change yourself by going to line 874 in ~/slffea-1.0/quad/quad_gr and putting in:
                        fpointx = *(coord + nsd*node_choice);
                        fpointy = *(coord + nsd*node_choice + 1);
                        fpointz = 0.0;
                        if(!After_flag)
                        {
                                fpointx = *(coord0 + nsd*node_choice);
                                fpointy = *(coord0 + nsd*node_choice + 1);
                                fpointz = 0.0;
                        }
                        sprintf( BoxData[0], "%4d ", node_choice);
                        strcpy( BoxData[1], "coord x");
                        sprintf( BoxData[2], "%10.3e ", fpointx);
                        strcpy( BoxData[3], "coord y");
                        sprintf( BoxData[4], "%10.3e ", fpointy);
                        strcpy( BoxData[5], "coord z");
                        sprintf( BoxData[6], "%10.3e ", fpointz);
                        sprintf( BoxData[7], " " );
or line 912 in ~/slffea-1.1/quad/quad_gr and putting in:
                        fpointx = *(coord + nsd*node_choice);
                        fpointy = *(coord + nsd*node_choice + 1);
                        fpointz = 0.0;
                        if(!After_flag)
                        {
                                fpointx = *(coord0 + nsd*node_choice);
                                fpointy = *(coord0 + nsd*node_choice + 1);
                                fpointz = 0.0;
                        }
                        sprintf( BoxData[0], "%4d ", node_choice);
                        strcpy( BoxData[2], "coord x");
                        sprintf( BoxData[4], "%10.3e ", fpointx);
                        strcpy( BoxData[6], "coord y");
                        sprintf( BoxData[8], "%10.3e ", fpointy);
                        strcpy( BoxData[10], "coord z");
                        sprintf( BoxData[12], "%10.3e ", fpointz);
                        sprintf( BoxData[14], " " );
                        sprintf( BoxData[16], " " );
Also, I found a bug in the thermal brick code. Go to the file ~/slffea-1.1/brick/brick2gr/br2param2.c and change line 136 to:
                &min_strain.I, &max_strain.I);        
Also, you should replace all instances of "_el" with "_node" in br2param2.c. This replacement won't effect the data. It's just for cleaning up the code. In vi, you can do it by typing in:
:1,$s/_el/_node/g    

Here is a summary of the updates as of 5/30/00:

Found a bug in the thermal brick code. Go to the file ~/slffea-1.1/brick/brick2gr/br2writer.c and change line 80 to:
           fprintf( o3, "  %8.2e  %8.2e %8.2e %8.2e  %8.2e %8.2e %8.2e\n ",

Here is a summary of the updates as of 5/26/00:

Found a few bugs in the thermal brick code. First, go to the file ~/slffea-1.1/brick/brick2gr/br2param2.c and change lines 81 and 82 to:
        fscanf( brdata,"%20s          %d %d   %lf %lf\n", char_dum, &node_T_min,
                &node_T_max, &min_T, &max_T);
Also, change line 39 in br2mshkey.c to:
extern double *heat_el, *heat_node, *T, *Q;
The above didn't seem to cause any errors, but you should make the change anyway. I have also made some improvements in various files such as brmenu.c for both the brick and brick 2 elements which may make it worthwhile to download everything again. Lastly, the file which contains max and min data for the brick 2 element now writes to and reads from br2view.dat.

Here is a summary of the updates as of 5/14/00:

I added a new thermal brick element which can handle temperature loads as well as orthotropy. I've also decided to include the eigenvalue code that I'm currently working on because it is too difficult to maintain 3 different codes(those who visit often know what I'm talking about). The eigenvalue work is being done on the beam and brick and has no effect on linear analysis. Just make sure that nmode is always set to zero in the input files for the beam and brick.

This new element has many features which have not yet been added to the other elements. You can read about what they are here. In addition I have also included a Windows Port of the code for this brick element as binaries. This should work on all Windows 9* and NTs. If there are a lot of request for the corresponding code, I will put that up as well. I'm also increasing the version number to slffea-1.09.

Here is a summary of the updates as of 4/23/00:

I have made many small changes in slffea-1.07 and have modified the beam code so that you can have both truss and beam elements. So now the data for connectivity looks like:
el no.,connectivity, matl no, element type
0        0    1    0     2
1        1    2    0     2
2        2    3    0     2
3        3    4    0     1
4        4    5    0     1
.
.
.
where the 2 in the last column represents the beam element type, and a 1 represents a truss element. I have also modified the graphics code for the beam and fixed a bug in ~/slffea-1.1/beam/beam_gr/bmparam2.c on lines 113-115 and 168-170. The variables on these lines should be strain, not stress. Because these changes are somewhat significant, I'm calling the code 1.08. There are many others, so it is worth it to download again. Thanks to Dr. Piau for recommending this addition and for a particularly insightful email on how it could easily be done.

Here is a summary of the updates as of 4/7/00:

Made another improvement in the screendump for slffea-1.07 and slffea-1.0. I found out that the targa format needs dimensions which are divisible by 4. So replace all the if statements in ~/slffea-1.1/common_gr/screenshot.c or ~/slffea-1.0/common_gr/screenshot.c by the lines below:
/* The width and height have to be multiples of 4.  Targa seems to
   require this, or else rescaling of the box will result in
   distortion of the image
*/
        dum = width%4;
        width -=  dum;
        dum = height%4;
        height -= dum;

Here is a summary of the updates as of 4/2/00:

A bug was found by Zoran Constantinescu . In ~/slffea-1.1/beam/beam_gr/bmpost.c on line 424 change the code to:
sofmISTRESS=numel;
instead of:
sofmSTRESS=numel;
The file slffea11.tgz has been updated. Many thanks to Zoran.

Here is a summary of the updates as of 3/29/00:

Made big improvement in screendump program for slffea-1.07 and slffea-1.0. Before, if you resized the window, the screendump would result in a distorted image because there needs to be certain allowable aspect ratios. The code below for ~/slffea-1.1/common_gr/screenshot.c will show you how I fixed it and how you should make your fix. Below:
unsigned char Header[18];
add this code:
	int dum;

/* Set dimensions of window to specified size.  Targa seems to
   require this, or else rescaling of the box will result in
   distortion of the image
*/
        dum = 700;
        if(width < 700)
        {
            dum = 680;
            if(width < 650)
            {
                dum = 620;
                if(width < 600)
                {
                    dum = 580;
                    if(width < 550)
                    {
                        dum = 520;
                        if(width < 500)
                        {
                            dum = 480;
                            if(width < 450)
                            {
                                dum = 420;
                                if(width < 400)
                                {
                                    dum = 380;
                                    if(width < 350)
                                    {
                                        dum = 320;
                                        if(width < 300)
                                        {
                                            dum = 280;
                                            if(width < 250)
                                            {
                                                dum = 220;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        width = dum;

        dum = 700;
        if(height < 700)
        {
            dum = 680;
            if(height < 650)
            {
                dum = 620;
                if(height < 600)
                {
                    dum = 580;
                    if(height < 550)
                    {
                        dum = 520;
                        if(height < 500)
                        {
                            dum = 480;
                            if(height < 450)
                            {
                                dum = 420;
                                if(height < 400)
                                {
                                    dum = 380;
                                    if(height < 350)
                                    {
                                        dum = 320;
                                        if(height < 300)
                                        {
                                            dum = 280;
                                            if(height < 250)
                                            {
                                                dum = 220;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        height = dum;
I have also uploaded a new slffea-1.0 binaries package which includes these changes and is much smaller than the previous one. Of course, sources for slffea-1.0 and slffea-1.07 are updated as well.

Here is a summary of the updates as of 3/24/00:

Major Changes!! to slffea-1.05 so I'm calling it slffea-1.07. There are several new features so it's worth it to download again. Among them are:
  1. Color bar changed to better match other scientific visualization packages particularly ANSYS. I've also improved the way you can customize the colors. So if you liked the way slffea looked before, you can change back to those original colors. I've updated some of the images on these pages to reflect the color changes.
  2. Color bar numbers now go from minimum to maximum values. Before, they only went from minimum to maximum - (maximum - minimum)/8.0.
  3. A file called *view.dat is generated for every element. This file contains statistical data about the mesh and can be used to change the range of values over which the colors are displayed. For instance, if the min and max displacement x for a brick problem are 0.0 and 5.0e-3, you can edit the file brview.dat and change the maximum value to 3.0e-3 to give more detail about the displacement x in this range.
  4. The hotkeys 'i' and 'o' have more functionality relating to orthographic viewing. As you know, if you press the hotkey 'p', you go from a perspective view to an orthographic view. When this happens, moving in and out in the mesh has no effect on how the mesh was displayed. But now, by pressing 'i' or 'o', you can zoom in and out and see the mesh in as much detail as desired without going inside the mesh itself. To see this feature, I suggest you activate the mesh window, press 'p' and then 'i' a few times.
  5. New memory manager functions. Now there are subroutines which do all the memory allocation. This helps clean things up.

Here is a summary of the updates as of 3/23/00:

Added binaries package of slffea-1.0 compiled for Linux. This file is VERY big(3.5 Megs) even after removing all the source. It's using up a lot of my space, so I'll keep it here only if it is popular.

Here is a summary of the updates as of 3/15/00:

I made a small improvement in the colors on the color scale for slffea-1.1 and slffea-1.0. This is a very minor modification, so just make the change below. In ~/slffea-1.1/common_gr/color_gr.h, change to:
GLfloat MeshColor[boxnumber+1][3] = { 0.0, 0.0, 1.0,
         0.627, 0.1255, 0.941,
         1.0, 0.0, 1.0,
         0.8157, 0.1255, 0.5647,
         1.0, 0, 0,
         1.0, 0.55, 0, <--------- Change is here 
         1.0, 0.647, 0,
         1.0, 1.0, 0,
         0.0, 1.0, 0.0 };
and also:
GLfloat orangeRed[3] = { 1.0, 0.55, 0 };
instead of:
GLfloat orangeRed[3] = { 1.0, 0.27, 0 };      
Unfortunately, when you change include files, you have to rebuild everything again. So do a:
      cd ~/slffea-1.1/
      make clean_gui
      make gui
if you are not downloading for the first time.

Here is a summary of the updates as of 3/1/00:

Fixed small bug in Makefiles in /slffea-1.1/common/Makefile and /slffea-1.0/common/Makefile. This was a very minor error and has no effect on the compilation, so just make the change below. In /slffea-1.1/common/Makefile, change to:
lm.o: lm.c
        $(CC) -c lm.c 
instead of:
idlm.o: idlm.c
        $(CC) -c idlm.c 
Again, a very trivial error.

Here is a summary of the updates as of 2/4/00:

For the shell patch test code, ~/slffea-1.1/shell/shell/shpatch.c, I added one more fixed point in node 1 in x and y since it may be underprescribed otherwise. Instead of downloading again, you should make the fix yourself. In the file ~/slffea-1.1/shell/shell/shpatch.c or ~/slffea-1.0/shell/shell/shpatch.c on line 160 and 178, add the line:
        fprintf( o4, "%4d %14.6e\n",1,0.0);
Since most people would rather just deal with the patch test files, go to ~/slffea-1.1/data/sh/patch.phi or ~/slffea-1.0/data/sh/patch.phi and add fixed displacements for node 1 in both x and y.

I also added mesh generators for the building problem ~/slffea-1.1/beam/beam/meshbuild.c and a 3-D layered inclusion problem ~/slffea-1.1/brick/brick/meshwedge.c.

Here is a summary of the updates as of 1/19/00:

Fixed small bug related to #define in /slffea-1.1/beam/beam_gr/bmsort.c. Instead of downloading again, you can also make the fix yourself. In the file /slffea-1.1/beam/beam_gr/bmsort.c, change the code to:
        #define big       1e10
instead of 1.0e10.

Here is a summary of the updates as of 1/16/00:

I was given a file which will cause a problem with bmpost, so I cleaned up some sloppy programming in the memory management for all the codes. Instead of downloading again, you can also make the fix yourself. In the file /slffea-1.1/beam/beam_gr/bmpost.c /slffea-1.0/beam/beam_gr/bmpost.c, on lines allocating memory for the integers(about 470-500) change the code to:
/* For the integers */
        sofmi= numel*npel+numel+numnp+1+numel+1+2+dof;
        mem_int=(int *)calloc(sofmi,sizeof(int));
        if(!mem_int )
        {
                printf( "failed to allocate memory for integers\n ");
                exit(1);
        }
                                                ptr_inc = 0;
        connecter=(mem_int+ptr_inc);            ptr_inc += numel*npel;
        el_matl=(mem_int+ptr_inc);              ptr_inc += numel;
        bc.force =(mem_int+ptr_inc);            ptr_inc += numnp+1;
        bc.dist_load=(mem_int+ptr_inc);         ptr_inc += numel+1;
        bc.num_force=(mem_int+ptr_inc);         ptr_inc += 1;
        bc.num_dist_load=(mem_int+ptr_inc);     ptr_inc += 1;
        U_color=(mem_int+ptr_inc);              ptr_inc += dof;

        el_matl_color = el_matl;
though if you want all the clean-up, you will have to download again.

Here is a summary of the updates as of 12/13/99:

I made some changes in the data writing routine for slffea-1.1 and slffea-1.0. These changes pertain to how applied loads and reaction forces are written out. This isn't necessarily an improvement, except for the beam science code which now writes out the applied loads which came from the distributed loads. In most cases, the data output files do not change. The only times they do are when the loads were not sequentially written.

Here is a summary of the updates as of 12/1/99:

I found a bug in the beam graphics codes for slffea-1.1 and slffea-1.0. It pertains to the drawing of the moments. Instead of downloading again, you can also make the fix yourself. In the file /slffea-1.1/beam/beam_gr/bmbc_vec.c or /slffea-1.0/beam/beam_gr/bmbc_vec.c, on line 514, change the code to:
            if( fdum4 > SMALL)                    

Here is a summary of the updates as of 11/26/99:

Remove the input file /slffea-1.1/data/qd/q2. I was using it to test the program, so it really isn't usable as an input example.

Also, I found a bug in the truss graphics code for slffea-1.1 and slffea-1.0. Instead of downloading again, you can also make the fix yourself. In the file /slffea-1.1/truss/truss_gr/tspost.c, on line 497, and in the file /slffea-1.0/truss/truss_gr/tspost.c, on line 509, change the code to:

                    *(coord0 + nsd*i + 2) = *(coord+nsd*i+2) + *(U+ndof*i+2);

Here is a summary of the updates as of 11/22/99:

I found a bug in the non-linear brick code for slffea-1.1 and slffea-1.0. It pertains to the way the mass matrix is created. Instead of downloading again, you can also make the fix yourself. In the file /slffea-1.1/brick/brick_nl/brfmasmbl.c, at the bottom, change the code to:
                    *(mass+*(dof_el+ndof*j)) += *(mass_el + ndof*j);
                    *(mass+*(dof_el+ndof*j+1)) += *(mass_el + ndof*j + 1);
                    *(mass+*(dof_el+ndof*j+2)) += *(mass_el + ndof*j + 2);

Here is a summary of the updates as of 10/27/99:

I found a bug in the beam graphics codes for slffea-1.05. It pertains to the way the distributed loads are drawn. Instead of downloading again, you can also make the fix yourself. In the file /slffea-1.1/beam/beam_gr/bmparam.c, define a new variable:
        int el_num;
at the top, and at the bottom, change the code to:
        for( i = 0; i < bc.num_dist_load[0]; ++i )
        {
/* Calculate dist_load_vec */

                el_num = bc.dist_load[i];

                dist_load_vec_length =
                   *(dist_load + 2*el_num )*(*(dist_load + 2*el_num )) +
                   *(dist_load + 2*el_num + 1)*(*(dist_load + 2*el_num + 1)) +
                   SMALL;
                dist_load_vec_length = sqrt(dist_load_vec_length);
                dist_load_vec0[i].qy = -
                   *(dist_load + 2*el_num )*.5/dist_load_vec_length;
                dist_load_vec0[i].qz = -
                   *(dist_load + 2*el_num + 1)*.5/dist_load_vec_length;

  /*printf(" dist_load %d %10.5e %10.5e %10.5e %10.5e %10.5e\n",
                   i, dist_load_vec_length, *(dist_load + 2*el_num ), *(dist_load + 2*el_num + 1),
                   dist_load_vec0[i].qy, dist_load_vec0[i].qz);*/
        }

Here is a summary of the updates as of 10/11/99:

Somehow, the Makefile of the beam got erased for slffea-1.05. I've put it back in. Sorry about that. Thanks to Chuck Stuart for pointing this out.

Here is a summary of the updates as of 9/30/99:

For slffea-1.05, I modified dotX so that the argument list now reads:
int dotX( double *C, double *A,double *B, int n)
instead of
int dotX( double *A,double *B, double *C, int n)
This was done to make it more consistent with matX and matXT. Of course, this resulted in changes to all programs using dotX.

I also have added text executables within each data directory which will run the correct scientific or graphics binary in the corresponding program directory. For instance, if you are in the /slffea-1.1/data/bm directory, you can run the beam codes by just typing bm and bmpost.

Here is a summary of the updates as of 9/12/99:

I didn't find any bugs so the changes I made relate to only slffea-1.1. The first two codes to have major changes are:
~/slffea-1.1/common/crossx.c
~/slffea-1.1/common/matx.c.
the vector cross product and matrix multiply respectively. I also made some very minor changes in the graphics codes which you can ignore.

For the beam, you can now specify the local z axis for an element. Before, this was done automatically by the code. Note that for this change, I added to the beam input files the lines:
element with specified local z axis: x, y, z component
   38    0.0   0.0     1.000
   39    0.0   1.414   1.414
-10
right above the:
prescribed displacement x: node  disp value
line. If you still want the program to determine all the local axes for you, then just have the -10 terminator flag without any data.

From this point forward, I will be working on adding modal analysis for all linear elements.

Here is a summary of the updates as of 9/8/99:

The only significant change is on lines 104 and 114 of ~/slffea-1.0/beam/beam/fembeam.c, where you should change them to:
sofmf=numnp*nsd+numel*(nsd-1)+2*dof;
and
dist_load=(mem_double+ptr_inc);    ptr_inc += numel*(nsd-1);
respectively. Do this for version 1.1 also if you have it. Don't bother re-downloading. In terms of version 1.1, I'm working on the beam element, so it has important differences from 1.1 of the last update. It still runs like before, and uses the same data files though.

Here is a summary of the updates as of 9/6/99:

I have added a new version of the code slffea-1.05. I am currently naming it slffea-1.1 because all the sources and Makefiles refer to it as slffea-1.1. This new version cleans up the inefficient memory allocation of the stress0(or moment0) variables. I had wanted to make this improvement for a while, and it was actually quite simple. I'll be working on the beam element next, and then try to add modal analysis with the Lanczos method. If and when this is completed, I'll officially consider that version 1.1.

Also, In the course of doing these modifications, I discovered a few very minor bugs which I have fixed in 1.0 as well. My advice to you would be to download 1.05 instead of 1.0 before I make the next update which may make some minor changes in the format of the input files.

Here is a summary of the updates as of 9/3/99:

Fixed small bug on line 71 of ~/slffea-1.0/shell/shell/shpatch.c. Removed one "%lf" since I am only scanning in 3 values, not four. This should not affect you unless you were using the tools to run the patch test for the shell. Removed stray tab in graphics Makefiles. Again, this update has no effect in GNU/Linux, just on an SGI.

Here is a summary of the updates as of 9/2/99:

Fixed small bug relating to variable "name". Worked fine on GNU/Linux, but caused problems on SGI.

Here is a summary of the updates as of 8/29/99:

Made small modifications in graphics Makefiles.

Here is a summary of the updates as of 8/13/99:

Fixed bug in beam element. I had assigned the stresses and moments incorrectly, where I switched the xx and zz moments. Modified code and input/output files. I also indicate in the data files that the moments apply to the local beam coordinate system. Later, I may add the ability to specify your own local axes on the beam. This will slightly change the beam input files.

Here is a summary of the updates as of 7/20/99:

Started with a simple truss code and added 6 more elements including GUIs for each type.

Get San Le's Free Finite Element
Analysis at SourceForge.net. Fast, secure and Free Open Source software
downloads