mer21.f

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

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