asmve1.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\asmve1.f
00002 !
00049                      SUBROUTINE ASMVE1
00050 !                    *****************
00051 !
00052      &(X, IKLE,W, NPOIN,NELEM,NELMAX,LV)
00053 !
00054 !***********************************************************************
00055 ! BIEF   V6P1                                   21/08/2010
00056 !***********************************************************************
00057 !
00058 !
00059 !
00060 !
00061 !
00062 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00063 !| IKLE           |-->| CONNECTIVITY TABLE
00064 !| LV             |-->| VECTOR LENGTH OF THE COMPUTER
00065 !| NELEM          |-->| NUMBER OF ELEMENTS IN THE MESH
00066 !| NELMAX         |-->| FIRST DIMENSION OF IKLE AND W.
00067 !| NPOIN          |-->| NUMBER OF POINTS IN X
00068 !| W              |-->| WORK ARRAY WITH A NON ASSEMBLED FORM OF THE
00069 !|                |   | RESULT
00070 !| X              |<->| ASSEMBLED VECTOR
00071 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00072 !
00073       IMPLICIT NONE
00074       INTEGER LNG,LU
00075       COMMON/INFO/LNG,LU
00076 !
00077 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00078 !
00079       INTEGER         , INTENT(IN)    :: NELEM,NELMAX,NPOIN,LV
00080       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
00081       INTEGER         , INTENT(IN)    :: IKLE(NELMAX)
00082       DOUBLE PRECISION, INTENT(IN)    :: W(NELMAX)
00083 !
00084 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00085 !
00086       INTEGER IELEM,IB
00087 !
00088       INTRINSIC MIN
00089 !
00090 !-----------------------------------------------------------------------
00091 ! LOOP IN SCALAR MODE (LV=1) OR WITH FORCED VECTORISATION
00092 !-----------------------------------------------------------------------
00093 !
00094       IF(LV.EQ.1) THEN
00095 !
00096 !  SCALAR MODE
00097 !
00098       DO IELEM = 1 , NELEM
00099         X(IKLE(IELEM)) = X(IKLE(IELEM)) * W(IELEM)
00100       ENDDO ! IELEM
00101 !
00102       ELSE
00103 !
00104 !  VECTOR MODE
00105 !
00106       DO IB = 1,(NELEM+LV-1)/LV
00107 !VOCL LOOP,NOVREC
00108 !DIR$ IVDEP
00109       DO IELEM = 1+(IB-1)*LV , MIN(NELEM,IB*LV)
00110         X(IKLE(IELEM)) = X(IKLE(IELEM)) * W(IELEM)
00111       ENDDO ! IELEM
00112       ENDDO ! IB
00113 !
00114       ENDIF
00115 !
00116 !-----------------------------------------------------------------------
00117 !
00118       RETURN
00119       END

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