Hi, It's me again, I thougth the code would help!! The coeffients fo C are defined in a main progran that calls the function STIFFE REAL FUNCTION STIFFE(NODES, C) RESULT(STIFF) REAL C(:,:) REAL NODES(:,:) DIMENSION STIFF(8,8) REAL BE(4,8) REAL JINT(4,4) REAL J11, J12, J21, J22 REAL MAT(4,8) REAL XI, ETA REAL N1, N2, N3,N4 INTEGER I, J, STAGE MAT=0 B=0 STIFF=0 DO STAGE=1, 4 IF (STAGE .EQ. 1) THEN XI = -1/3**(.5) ETA = -1/3**(.5) END IF IF (STAGE .EQ. 2) THEN XI = 1/3**(.5) ETA = -1/3**(.5) END IF IF (STAGE .EQ. 3) THEN XI = 1/3**(.5) ETA = 1/3**(.5) END IF IF (STAGE .EQ. 4) THEN XI = -1/3**(.5) ETA = 1/3**(.5) END IF N1 = 1 - XI N2 = 1 + XI N3 = 1 - ETA N4 = 1 + ETA J11 = 0.25*( -N3*NODES(1,1) + N3*NODES(3,1) + N4*NODES(5,1) - N4*NODES(7,1) ) J12 = 0.25*( -N1*NODES(1,1) - N2*NODES(3,1) + N2*NODES(5,1) + N1*NODES(7,1) ) J21 = 0.25*( -N3*NODES(2,1) + N3*NODES(4,1) + N4*NODES(6,1) - N4*NODES(8,1) ) J22 = 0.25*( -N1*NODES(2,1) - N2*NODES(4,1) + N2*NODES(6,1) + N1*NODES(8,1) ) DETJ=J11*J22-J12*J21 JINT=0 JINT(1,1) = J22/DETJ JINT(1,2) = -J21/DETJ JINT(2,3) = -J12/DETJ JINT(2,4) = J11/DETJ JINT(3,1:4) = (/0.0, 0.0, 0.0, 0.0/) JINT(4,1) = -J12/DETJ JINT(4,2) = J11/DETJ JINT(4,3) = J22/DETJ JINT(4,4) = -J21/DETJ MAT(1,1:8) = (/-N3, 0.0, N3, 0.0, N4, 0.0, -N4, 0.0/) MAT(2,1:8) = (/-N1, 0.0, -N2, 0.0, N2, 0.0, N1, 0.0/) MAT(3,1:8) = (/0.0, -N3, 0.0, N3, 0.0, N4, 0.0, -N4/) MAT(4,1:8) = (/0.0, -N1, 0.0, -N2, 0.0, N2, 0.0, N1/) BE=.25*MATMUL(JINT,MAT) STIFF = MATMUL( MATMUL( TRANSPOSE(BE), C ), BE )*DETJ + STIFF PRINT *,"STIFF" PRINT '(18X 8EN18.5 )',STIFF PRINT *,"Checking symmetry" PRINT '(18X 8F18.2)',STIFF-TRANSPOSE(STIFF) END DO END FUNCTION STIFFE --- miguel jiménez Zapata <smajz2000@xxxxxxxxxxxx> escribió: > Hello everybody, > > Mi name is Salomon and I'm a fortran user(This > sounds > like AA meeting). > I'm new to the list and to fortran. > So far I've been able to construct some programs > with > succes. However, rigth now I'm facing a problem that > simply goes far beyond my undestanding. > > The problem I'm having is the following > > I have a program that has to multiply matrices, one > of > the matrices is symmetric and has the form > > S = BT.C.B*detj + S > > this matrix is in a do loop so it won't be symmetric > until the end of the cycle. BT is the transpose of B > and C is a 4*4 matrix. I've been playing with the > coeffients of C, they are of the order of 1e10. When > I > use order of magnitude less than 1e9 the program > works > just fine, I get my symmetric matrix, but with > values > of 1e10 my result (S) is no longer symmetric. I > tested > my code in Matlab and works perfect, it doesnt > matter > the order of the coefficents of C. > I declared C as > REAL B(4,8) > REAl S(8,8) > REAL C(4,4) > REAL C11,C12,C13,C33,C44 > > I already tried REAL(4) and REAL(8) and nothing > happens. I use the gfortran compiler in linux. > Is there anything I'm missing?? > > Thanks for your help > > > > > > ___________________________________________________________ > > Do You Yahoo!? > La mejor conexión a Internet y <b >2GB</b> extra a > tu correo por $100 al mes. http://net.yahoo.com.mx > > ___________________________________________________________ Do You Yahoo!? La mejor conexión a Internet y <b >2GB</b> extra a tu correo por $100 al mes. http://net.yahoo.com.mx