as3_1212_q.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\as3_1212_q.f
00002 !
00049                      SUBROUTINE AS3_1212_Q
00050 !                    *********************
00051 !
00052      &(XM,NSEG11,NSEG12,XMT,NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00053      &                                   ELTSEG4,ELTSEG5,ELTSEG6,
00054      &                                   ORISEG1,ORISEG2,ORISEG3)
00055 !
00056 !***********************************************************************
00057 ! BIEF   V6P1                                   21/08/2010
00058 !***********************************************************************
00059 !
00060 !
00061 !
00062 !
00063 !
00064 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00065 !| ELTSEG1        |-->| FIRST SEGMENT OF A TRIANGLE
00066 !| ELTSEG2        |-->| SECOND SEGMENT OF A TRIANGLE
00067 !| ELTSEG3        |-->| THIRD SEGMENT OF A TRIANGLE
00068 !| ELTSEG4        |-->| FOURTH SEGMENT OF A QUADRATIC TRIANGLE
00069 !| ELTSEG5        |-->| FIFTH SEGMENT OF A QUADRATIC TRIANGLE
00070 !| ELTSEG6        |-->| SIXTH SEGMENT OF A QUADRATIC TRIANGLE
00071 !| NELEM          |-->| NUMBER OF ELEMENTS IN THE MESH
00072 !| NELMAX         |-->| FIRST DIMENSION OF IKLE AND W.
00073 !| NSEG11         |-->| NUMBER OF SEGMENTS (HERE JOINING LINEAR POINTS)
00074 !| NSEG12         |-->| NUMBER OF SEGMENTS (HERE QUADRATIC)
00075 !| ORISEG1        |-->| ORIENTATION OF SEGMENT 1 OF TRIANGLE
00076 !| ORISEG2        |-->| ORIENTATION OF SEGMENT 2 OF TRIANGLE
00077 !| ORISEG3        |-->| ORIENTATION OF SEGMENT 3 OF TRIANGLE
00078 !| XM             |<--| ASSEMBLED OFF-DIAGONAL TERMS XA12,23,31
00079 !| XMT            |-->| ELEMENT BY ELEMENT STORAGE OF MATRIX
00080 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00081 !
00082       IMPLICIT NONE
00083       INTEGER LNG,LU
00084       COMMON/INFO/LNG,LU
00085 !
00086 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00087 !
00088       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG11,NSEG12
00089       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00090       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00091       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00092       INTEGER         , INTENT(IN)    :: ELTSEG4(NELMAX)
00093       INTEGER         , INTENT(IN)    :: ELTSEG5(NELMAX)
00094       INTEGER         , INTENT(IN)    :: ELTSEG6(NELMAX)
00095       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX)
00096       INTEGER         , INTENT(IN)    :: ORISEG2(NELMAX)
00097       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00098       DOUBLE PRECISION, INTENT(IN)    :: XMT(NELMAX,*)
00099       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG12*2)
00100 !
00101 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00102 !
00103       INTEGER ISEG,IELEM
00104 !
00105 !-----------------------------------------------------------------------
00106 !
00107 !  INITIALISES
00108 !
00109       DO ISEG = 1 , NSEG11
00110         XM(ISEG       ) = 0.D0
00111         XM(ISEG+NSEG12) = 0.D0
00112       ENDDO
00113 !
00114 !  ASSEMBLES PART P1
00115 !
00116       DO IELEM = 1,NELEM
00117 !         TERM 12
00118           XM(ELTSEG1(IELEM)+NSEG12*(ORISEG1(IELEM)-1))
00119      &  = XM(ELTSEG1(IELEM)+NSEG12*(ORISEG1(IELEM)-1)) + XMT(IELEM,01)
00120 !         TERM 23
00121           XM(ELTSEG2(IELEM)+NSEG12*(ORISEG2(IELEM)-1))
00122      &  = XM(ELTSEG2(IELEM)+NSEG12*(ORISEG2(IELEM)-1)) + XMT(IELEM,04)
00123 !         TERM 31
00124           XM(ELTSEG3(IELEM)+NSEG12*(ORISEG3(IELEM)-1))
00125      &  = XM(ELTSEG3(IELEM)+NSEG12*(ORISEG3(IELEM)-1)) + XMT(IELEM,08)
00126 !         TERM 21
00127           XM(ELTSEG1(IELEM)+NSEG12*(2-ORISEG1(IELEM)))
00128      &  = XM(ELTSEG1(IELEM)+NSEG12*(2-ORISEG1(IELEM))) + XMT(IELEM,07)
00129 !         TERM 32
00130           XM(ELTSEG2(IELEM)+NSEG12*(2-ORISEG2(IELEM)))
00131      &  = XM(ELTSEG2(IELEM)+NSEG12*(2-ORISEG2(IELEM))) + XMT(IELEM,10)
00132 !         TERM 13
00133           XM(ELTSEG3(IELEM)+NSEG12*(2-ORISEG3(IELEM)))
00134      &  = XM(ELTSEG3(IELEM)+NSEG12*(2-ORISEG3(IELEM))) + XMT(IELEM,02)
00135       ENDDO
00136 !
00137 !  ASSEMBLES QUASIBUBBLE PART
00138 !
00139       DO IELEM = 1,NELEM
00140 !       TERM 14
00141         XM(ELTSEG4(IELEM)) = XMT(IELEM,03)
00142 !       TERM 24
00143         XM(ELTSEG5(IELEM)) = XMT(IELEM,05)
00144 !       TERM 34
00145         XM(ELTSEG6(IELEM)) = XMT(IELEM,06)
00146 !       TERM 41
00147         XM(ELTSEG4(IELEM)+NSEG12) = XMT(IELEM,09)
00148 !       TERM 42
00149         XM(ELTSEG5(IELEM)+NSEG12) = XMT(IELEM,11)
00150 !       TERM 43
00151         XM(ELTSEG6(IELEM)+NSEG12) = XMT(IELEM,12)
00152       ENDDO
00153 !
00154 !-----------------------------------------------------------------------
00155 !
00156       RETURN
00157       END

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