as3_8181_q.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\as3_8181_q.f
00002 !
00048                      SUBROUTINE AS3_8181_Q
00049 !                    *********************
00050 !
00051      &(XM,NSEG,XMT,DIM1XMT,DIM2XMT,STOXMT,
00052      & NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00053      & ORISEG1,ORISEG2,ORISEG3)
00054 !
00055 !***********************************************************************
00056 ! BIEF   V6P2                                   21/08/2010
00057 !***********************************************************************
00058 !
00059 !
00060 !
00061 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00062 !| DIM1XMT        |-->| FIRST DIMENSION OF XMT
00063 !| DIM2XMT        |-->| SECOND DIMENSION OF XMT
00064 !| ELTSEG1        |-->| FIRST SEGMENT OF A TRIANGLE
00065 !| ELTSEG2        |-->| SECOND SEGMENT OF A TRIANGLE
00066 !| ELTSEG3        |-->| THIRD SEGMENT OF A TRIANGLE
00067 !| NELEM          |-->| NUMBER OF ELEMENTS IN THE MESH
00068 !| NELMAX         |-->| FIRST DIMENSION OF IKLE AND W.
00069 !| NSEG           |-->| NUMBER OF SEGMENTS
00070 !| ORISEG1        |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
00071 !| ORISEG2        |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
00072 !| ORISEG3        |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
00073 !| STOXMT         |-->| STORAGE MODE OF XMT
00074 !| XM             |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
00075 !| XMT            |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
00076 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00077 !
00078       IMPLICIT NONE
00079       INTEGER LNG,LU
00080       COMMON/INFO/LNG,LU
00081 !
00082 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00083 !
00084       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG
00085       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00086       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX),ELTSEG2(NELMAX)
00087       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00088       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX),ORISEG2(NELMAX)
00089       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00090       DOUBLE PRECISION, INTENT(INOUT) :: XMT(DIM1XMT,DIM2XMT)
00091       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG*2)
00092 !
00093 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00094 !
00095       INTEGER ISEG,IELEM
00096 !
00097 !-----------------------------------------------------------------------
00098 !
00099 !  INITIALISES
00100 !
00101       DO ISEG = 1 , 2*NSEG
00102         XM(ISEG) = 0.D0
00103       ENDDO
00104 !
00105 !-----------------------------------------------------------------------
00106 !
00107       IF(STOXMT.EQ.1) THEN
00108 !
00109 !     ASSEMBLES
00110 !
00111       DO IELEM = 1,NELEM
00112 !         TERM 12
00113           XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1))
00114      &  = XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1)) + XMT(IELEM,01)
00115 !         TERM 23
00116           XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1))
00117      &  = XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1)) + XMT(IELEM,02)
00118 !         TERM 31
00119           XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1))
00120      &  = XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1)) + XMT(IELEM,06)
00121 !         TERM 21
00122           XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM)))
00123      &  = XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM))) + XMT(IELEM,04)
00124 !         TERM 32
00125           XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM)))
00126      &  = XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM))) + XMT(IELEM,05)
00127 !         TERM 13
00128           XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM)))
00129      &  = XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM))) + XMT(IELEM,03)
00130       ENDDO
00131 !
00132 !-----------------------------------------------------------------------
00133 !
00134       ELSEIF(STOXMT.EQ.2) THEN
00135 !
00136       DO IELEM = 1,NELEM
00137 !         TERM 12
00138           XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1))
00139      &  = XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1)) + XMT(01,IELEM)
00140 !         TERM 23
00141           XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1))
00142      &  = XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1)) + XMT(02,IELEM)
00143 !         TERM 31
00144           XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1))
00145      &  = XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1)) + XMT(06,IELEM)
00146 !         TERM 21
00147           XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM)))
00148      &  = XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM))) + XMT(04,IELEM)
00149 !         TERM 32
00150           XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM)))
00151      &  = XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM))) + XMT(05,IELEM)
00152 !         TERM 13
00153           XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM)))
00154      &  = XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM))) + XMT(03,IELEM)
00155       ENDDO
00156 !
00157 !-----------------------------------------------------------------------
00158 !
00159       ELSE
00160         IF(LNG.EQ.1) THEN
00161           WRITE(LU,*) 'AS3_8181_Q : STOCKAGE DE XMT INCONNU : ',STOXMT
00162         ENDIF
00163         IF(LNG.EQ.2) THEN
00164           WRITE(LU,*) 'AS3_8181_Q: UNKNOWN STORAGE OF XMT : ',STOXMT
00165         ENDIF
00166         CALL PLANTE(1)
00167         STOP
00168       ENDIF
00169 !
00170 !-----------------------------------------------------------------------
00171 !
00172       RETURN
00173       END

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