des11.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\des11.f
00002 !
00067                      SUBROUTINE DES11
00068 !                    ****************
00069 !
00070      &(X, XA1,XA2,XA3,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,NPOIN,LV)
00071 !
00072 !***********************************************************************
00073 ! BIEF   V6P1                                   21/08/2010
00074 !***********************************************************************
00075 !
00076 !
00077 !
00078 !
00079 !
00080 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00081 !| IKLE1          |-->| GLOBAL NUMBER OF THE FIRST POINT OF TRIANGLES
00082 !| IKLE2          |-->| GLOBAL NUMBER OF THE SECOND POINT OF TRIANGLES
00083 !| IKLE3          |-->| GLOBAL NUMBER OF THE THIRD POINT OF TRIANGLES
00084 !| LV             |-->| VECTOR LENGTH OF THE MACHINE
00085 !| NELEM          |-->| NUMBER OF ELEMENTS
00086 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00087 !| NPOIN          |-->| NUMBER OF POINTS
00088 !| X              |<->| AT THE BEGINNING : B
00089 !|                |   | AT THE END       : THE RESULT
00090 !| XA1            |<--| OFF-DIAGONAL TERMS OF THE LOWER PART OF MATRIX
00091 !| XA2            |<--| OFF-DIAGONAL TERMS OF THE LOWER PART OF MATRIX
00092 !| XA3            |<--| OFF-DIAGONAL TERMS OF THE LOWER PART OF MATRIX
00093 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00094 !
00095       IMPLICIT NONE
00096       INTEGER LNG,LU
00097       COMMON/INFO/LNG,LU
00098 !
00099 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00100 !
00101       INTEGER          , INTENT(IN)    :: NPOIN,NELEM,NELMAX,LV
00102       DOUBLE PRECISION , INTENT(INOUT) :: X(NPOIN)
00103       DOUBLE PRECISION , INTENT(IN)    :: XA1(NELMAX)
00104       DOUBLE PRECISION , INTENT(IN)    :: XA2(NELMAX)
00105       DOUBLE PRECISION , INTENT(IN)    :: XA3(NELMAX)
00106       INTEGER          , INTENT(IN)    :: IKLE1(NELMAX)
00107       INTEGER          , INTENT(IN)    :: IKLE2(NELMAX)
00108       INTEGER          , INTENT(IN)    :: IKLE3(NELMAX)
00109 !
00110 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00111 !
00112       INTEGER IELEM,IB
00113 !
00114       INTRINSIC MIN
00115 !
00116 !-----------------------------------------------------------------------
00117 !
00118 ! RESUMES INVERSIONS OF THE LOWER TRIANGULAR MATRICES
00119 !
00120 !-----------------------------------------------------------------------
00121 ! LOOP IN SCALAR MODE (LV=1) OR WITH FORCED VECTORISATION
00122 !-----------------------------------------------------------------------
00123 !
00124       IF(LV.EQ.1) THEN
00125 !
00126 !  SCALAR MODE
00127 !
00128       DO IELEM = 1 , NELEM
00129         X(IKLE2(IELEM))=X(IKLE2(IELEM))-XA1(IELEM)*X(IKLE1(IELEM))
00130         X(IKLE3(IELEM))=X(IKLE3(IELEM))-XA2(IELEM)*X(IKLE1(IELEM))
00131      &                                 -XA3(IELEM)*X(IKLE2(IELEM))
00132       ENDDO ! IELEM
00133 !
00134       ELSE
00135 !
00136 !  VECTOR MODE
00137 !
00138       DO IB = 1,(NELEM+LV-1)/LV
00139 !VOCL LOOP,NOVREC
00140 !DIR$ IVDEP
00141       DO IELEM = 1+(IB-1)*LV , MIN(NELEM,IB*LV)
00142         X(IKLE2(IELEM))=X(IKLE2(IELEM))-XA1(IELEM)*X(IKLE1(IELEM))
00143         X(IKLE3(IELEM))=X(IKLE3(IELEM))-XA2(IELEM)*X(IKLE1(IELEM))
00144      &                                 -XA3(IELEM)*X(IKLE2(IELEM))
00145       ENDDO ! IELEM
00146       ENDDO ! IB
00147 !
00148       ENDIF
00149 !
00150 !-----------------------------------------------------------------------
00151 !
00152       RETURN
00153       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0