User login

Navigation

You are here

question about UMAT

I have read Pro Huang's UMAT for many times and one of its subprogramme I can't understand.

Can anybody help me ?

Normal
0

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}

      SUBROUTINE LUDCMP (A, N, NP, INDX, D)

 

C-----  LU decomposition

 

C-----  Use single precision on cray

C

      IMPLICIT REAL*8 (A-H,O-Z)

      PARAMETER (NMAX=200, TINY=1.0E-20)

      DIMENSION A(NP,NP), INDX(N), VV(NMAX)

 

      D=1.

      DO I=1,N

         AAMAX=0.

 

         DO J=1,N

            IF (ABS(A(I,J)).GT.AAMAX)
AAMAX=ABS(A(I,J))

         END DO

 

         IF (AAMAX.EQ.0.) PAUSE 'Singular
matrix.'

         VV(I)=1./AAMAX

      END DO

 

      DO J=1,N

         DO I=1,J-1

            SUM=A(I,J)

 

            DO K=1,I-1

               SUM=SUM-A(I,K)*A(K,J)

            END DO

 

            A(I,J)=SUM

         END DO

         AAMAX=0.

 

         DO I=J,N

            SUM=A(I,J)

 

            DO K=1,J-1

               SUM=SUM-A(I,K)*A(K,J)

            END DO

 

            A(I,J)=SUM

            DUM=VV(I)*ABS(SUM)

            IF (DUM.GE.AAMAX) THEN

               IMAX=I

               AAMAX=DUM

            END IF

         END DO

 

         IF (J.NE.IMAX) THEN

            DO K=1,N

               DUM=A(IMAX,K)

               A(IMAX,K)=A(J,K)

               A(J,K)=DUM

            END DO

 

            D=-D

            VV(IMAX)=VV(J)

         END IF

 

         INDX(J)=IMAX

         IF (A(J,J).EQ.0.) A(J,J)=TINY

         IF (J.NE.N) THEN

            DUM=1./A(J,J)

            DO I=J+1,N

               A(I,J)=A(I,J)*DUM

            END DO

         END IF

 

      END DO

 

      RETURN

      END

 

 

Subscribe to Comments for "question about UMAT"

Recent comments

More comments

Syndicate

Subscribe to Syndicate