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 slffea-1.1 to slffea-1.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 slffea-1.2 to slffea-1.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).mod-x.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 re-orders the eigenvectors to match the re-ordering 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:
~/slffea-1.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:
~/slffea-1.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 slffea-1.5, make the same changes as for "femqd.c" for the non-linear quad element
file "femnqd.c" located in:
~/slffea-1.5/quad/quad_nl/
Since slffea-1.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 re-uploaded the tarfiles for slffea-1.2 to slffea-1.5 reflecting this
change.
|