as3_3131_q.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\as3_3131_q.f
00002 !
00047                      SUBROUTINE AS3_3131_Q
00048 !                    *********************
00049 !
00050      &(XM,NSEG,XMT,DIM1XMT,DIM2XMT,STOXMT,
00051      & NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00052      & ELTSEG4,ELTSEG5,ELTSEG6,ORISEG1,ORISEG2,ORISEG3,
00053      & ORISEG4,ORISEG5,ORISEG6)
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 !| ELTSEG4        |-->| FOURTH SEGMENT OF A QUADRATIC TRIANGLE
00068 !| ELTSEG5        |-->| FIFTH SEGMENT OF A QUADRATIC TRIANGLE
00069 !| ELTSEG6        |-->| SIXTH SEGMENT OF A QUADRATIC TRIANGLE
00070 !| NELEM          |-->| NUMBER OF ELEMENTS IN THE MESH
00071 !| NELMAX         |-->| FIRST DIMENSION OF IKLE AND W.
00072 !| NSEG           |-->| NUMBER OF SEGMENTS
00073 !| ORISEG1        |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
00074 !| ORISEG2        |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
00075 !| ORISEG3        |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
00076 !| ORISEG4        |-->| ORIENTATION OF SEGMENT 4 OF TRIANGLE
00077 !| ORISEG5        |-->| ORIENTATION OF SEGMENT 5 OF TRIANGLE
00078 !| ORISEG6        |-->| ORIENTATION OF SEGMENT 6 OF TRIANGLE
00079 !| STOXMT         |-->| STORAGE MODE OF XMT
00080 !| XM             |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
00081 !| XMT            |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
00082 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00083 !
00084       IMPLICIT NONE
00085       INTEGER LNG,LU
00086       COMMON/INFO/LNG,LU
00087 !
00088 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00089 !
00090       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG
00091       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00092       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX),ELTSEG2(NELMAX)
00093       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX),ELTSEG4(NELMAX)
00094       INTEGER         , INTENT(IN)    :: ELTSEG5(NELMAX),ELTSEG6(NELMAX)
00095       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX),ORISEG2(NELMAX)
00096       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX),ORISEG4(NELMAX)
00097       INTEGER         , INTENT(IN)    :: ORISEG5(NELMAX),ORISEG6(NELMAX)
00098       DOUBLE PRECISION, INTENT(INOUT) :: XMT(DIM1XMT,DIM2XMT)
00099       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG*2)
00100 !
00101 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00102 !
00103       INTEGER ISEG,IELEM
00104 !
00105 !-----------------------------------------------------------------------
00106 !
00107 !  INITIALISES
00108 !
00109       DO ISEG = 1 , 2*NSEG
00110         XM(ISEG) = 0.D0
00111       ENDDO
00112 !
00113 !-----------------------------------------------------------------------
00114 !
00115       IF(STOXMT.EQ.1) THEN
00116 !
00117 !     ASSEMBLES
00118 !
00119       DO IELEM = 1,NELEM
00120 !         TERM 12
00121           XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1))
00122      &  = XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1)) + XMT(IELEM,01)
00123 !         TERM 23
00124           XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1))
00125      &  = XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1)) + XMT(IELEM,04)
00126 !         TERM 31
00127           XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1))
00128      &  = XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1)) + XMT(IELEM,08)
00129 !         TERM 21
00130           XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM)))
00131      &  = XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM))) + XMT(IELEM,07)
00132 !         TERM 32
00133           XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM)))
00134      &  = XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM))) + XMT(IELEM,10)
00135 !         TERM 13
00136           XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM)))
00137      &  = XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM))) + XMT(IELEM,02)
00138 !         TERM 14
00139           XM(ELTSEG4(IELEM)+NSEG*(ORISEG4(IELEM)-1))
00140      &  = XM(ELTSEG4(IELEM)+NSEG*(ORISEG4(IELEM)-1)) + XMT(IELEM,03)
00141 !         TERM 24
00142           XM(ELTSEG5(IELEM)+NSEG*(ORISEG5(IELEM)-1))
00143      &  = XM(ELTSEG5(IELEM)+NSEG*(ORISEG5(IELEM)-1)) + XMT(IELEM,05)
00144 !         TERM 34
00145           XM(ELTSEG6(IELEM)+NSEG*(ORISEG6(IELEM)-1))
00146      &  = XM(ELTSEG6(IELEM)+NSEG*(ORISEG6(IELEM)-1)) + XMT(IELEM,06)
00147 !         TERM 41
00148           XM(ELTSEG4(IELEM)+NSEG*(2-ORISEG4(IELEM)))
00149      &  = XM(ELTSEG4(IELEM)+NSEG*(2-ORISEG4(IELEM))) + XMT(IELEM,09)
00150 !         TERM 42
00151           XM(ELTSEG5(IELEM)+NSEG*(2-ORISEG5(IELEM)))
00152      &  = XM(ELTSEG5(IELEM)+NSEG*(2-ORISEG5(IELEM))) + XMT(IELEM,11)
00153 !         TERM 43
00154           XM(ELTSEG6(IELEM)+NSEG*(2-ORISEG6(IELEM)))
00155      &  = XM(ELTSEG6(IELEM)+NSEG*(2-ORISEG6(IELEM))) + XMT(IELEM,12)
00156       ENDDO
00157 !
00158 !-----------------------------------------------------------------------
00159 !
00160       ELSEIF(STOXMT.EQ.2) THEN
00161 !
00162       DO IELEM = 1,NELEM
00163 !         TERM 12
00164           XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1))
00165      &  = XM(ELTSEG1(IELEM)+NSEG*(ORISEG1(IELEM)-1)) + XMT(01,IELEM)
00166 !         TERM 23
00167           XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1))
00168      &  = XM(ELTSEG2(IELEM)+NSEG*(ORISEG2(IELEM)-1)) + XMT(04,IELEM)
00169 !         TERM 31
00170           XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1))
00171      &  = XM(ELTSEG3(IELEM)+NSEG*(ORISEG3(IELEM)-1)) + XMT(08,IELEM)
00172 !         TERM 21
00173           XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM)))
00174      &  = XM(ELTSEG1(IELEM)+NSEG*(2-ORISEG1(IELEM))) + XMT(07,IELEM)
00175 !         TERM 32
00176           XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM)))
00177      &  = XM(ELTSEG2(IELEM)+NSEG*(2-ORISEG2(IELEM))) + XMT(10,IELEM)
00178 !         TERM 13
00179           XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM)))
00180      &  = XM(ELTSEG3(IELEM)+NSEG*(2-ORISEG3(IELEM))) + XMT(02,IELEM)
00181 !         TERM 14
00182           XM(ELTSEG4(IELEM)+NSEG*(ORISEG4(IELEM)-1))
00183      &  = XM(ELTSEG4(IELEM)+NSEG*(ORISEG4(IELEM)-1)) + XMT(03,IELEM)
00184 !         TERM 24
00185           XM(ELTSEG5(IELEM)+NSEG*(ORISEG5(IELEM)-1))
00186      &  = XM(ELTSEG5(IELEM)+NSEG*(ORISEG5(IELEM)-1)) + XMT(05,IELEM)
00187 !         TERM 34
00188           XM(ELTSEG6(IELEM)+NSEG*(ORISEG6(IELEM)-1))
00189      &  = XM(ELTSEG6(IELEM)+NSEG*(ORISEG6(IELEM)-1)) + XMT(06,IELEM)
00190 !         TERM 41
00191           XM(ELTSEG4(IELEM)+NSEG*(2-ORISEG4(IELEM)))
00192      &  = XM(ELTSEG4(IELEM)+NSEG*(2-ORISEG4(IELEM))) + XMT(09,IELEM)
00193 !         TERM 42
00194           XM(ELTSEG5(IELEM)+NSEG*(2-ORISEG5(IELEM)))
00195      &  = XM(ELTSEG5(IELEM)+NSEG*(2-ORISEG5(IELEM))) + XMT(11,IELEM)
00196 !         TERM 43
00197           XM(ELTSEG6(IELEM)+NSEG*(2-ORISEG6(IELEM)))
00198      &  = XM(ELTSEG6(IELEM)+NSEG*(2-ORISEG6(IELEM))) + XMT(12,IELEM)
00199       ENDDO
00200 !
00201 !-----------------------------------------------------------------------
00202 !
00203       ELSE
00204         IF(LNG.EQ.1) THEN
00205           WRITE(LU,*) 'AS3_3131_Q : STOCKAGE DE XMT INCONNU : ',STOXMT
00206         ENDIF
00207         IF(LNG.EQ.2) THEN
00208           WRITE(LU,*) 'AS3_3131_Q: UNKNOWN STORAGE OF XMT : ',STOXMT
00209         ENDIF
00210         CALL PLANTE(1)
00211         STOP
00212       ENDIF
00213 !
00214 !-----------------------------------------------------------------------
00215 !
00216       RETURN
00217       END

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