Here is a summary of the updates as of 11/2/09:
I found 2 significant bugs in the main "fem*.c" codes. The first pretains to how the eigenvectors
were assigned to the displacements and must be changed for slffea1.1 to slffea1.5. The second
applies only to the quad and wedge codes and is for the argument list of the *Kassemble functions
in "femqd.c" and "femwe.c". These must be changed for slffea1.2 to slffea1.5.
For the first change, for the main 9 codes "fem*.c" of beam, brick, plate, quad, shell, tetra, tri,
truss, and wedge, below the comment lines:
/* Write out the eigenmodes to a (name).modx.obr file */
change:
*(U + i) = *(ritz + num_eigen*(*(id + i))+eigen[j].index);
to
*(U + i) = *(ritz + num_eigen*(*(id + i)) + j);
The former line reorders the eigenvectors to match the reordering of the eigenvalues
from smallest to largest. But this has already been done for the variable "ritz" in
the function *lanczos.c". Because in most instances, the ordering was already correct,
and there was no change. This is why the bug went unnoticed for so long.
For the next bug, go to the quad code located in:
~/slffea1.5/quad/quad/
At the beginning of the file "femqd.c", near line 46, change:
int qdKassemble(double *, int *, double *, int *, double *, int *, int *,
double *, int *, double *, MATL *, double *, STRAIN *, SDIM *, STRESS *,
SDIM *, double *, double *);
to
int qdKassemble(double *, int *, double *, int *, double *, int *, int *,
double *, int *, double *, MATL *, double *, STRAIN *, SDIM *, STRESS *,
SDIM *, double *);
and for everywhere else you see "qdKassemble", remove the last variable "Arean"
from the argument list. Do the same for the wedge element located in:
~/slffea1.5/wedge/wedge/
on line 50 of "femwe.c". Change:
int weKassemble(double *, int *, int *, double *, int *, int *, double *,
int *, int *, double *, int *, MATL *, double *, STRAIN *, SDIM *,
STRESS *, SDIM *, double *, double *);
to
int weKassemble(double *, int *, int *, double *, int *, int *, double *,
int *, int *, double *, int *, MATL *, double *, STRAIN *, SDIM *,
STRESS *, SDIM *, double *);
and for everywhere else you see "weKassemble", remove the last variable "Voln"
from the argument list.
For slffea1.5, make the same changes as for "femqd.c" for the nonlinear quad element
file "femnqd.c" located in:
~/slffea1.5/quad/quad_nl/
Since slffea1.2, I have generally moved the calculation of areas and volumes
outside of the "*Kassemble" routines and into their own functions. The exception
is when their calculation is used for integrating the element stiffness matrix.
I have reuploaded the tarfiles for slffea1.2 to slffea1.5 reflecting this
change.
