as3_1211.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\as3_1211.f
00002 !
00049                      SUBROUTINE AS3_1211
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(NSEG11+NSEG12)
00100 !
00101 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00102 !
00103       INTEGER ISEG,IELEM
00104 !
00105 !-----------------------------------------------------------------------
00106 !
00107 !  INITIALISES
00108 !
00109       DO ISEG = 1 , 2*NSEG11
00110         XM(ISEG) = 0.D0
00111       ENDDO
00112 !
00113 !  ASSEMBLES PART P1 (BETWEEN 1 AND 2*NSEG11)
00114 !
00115       DO IELEM = 1,NELEM
00116 !         TERM 12
00117           XM(ELTSEG1(IELEM)+NSEG11*(ORISEG1(IELEM)-1))
00118      &  = XM(ELTSEG1(IELEM)+NSEG11*(ORISEG1(IELEM)-1)) + XMT(IELEM,01)
00119 !         TERM 23
00120           XM(ELTSEG2(IELEM)+NSEG11*(ORISEG2(IELEM)-1))
00121      &  = XM(ELTSEG2(IELEM)+NSEG11*(ORISEG2(IELEM)-1)) + XMT(IELEM,04)
00122 !         TERM 31
00123           XM(ELTSEG3(IELEM)+NSEG11*(ORISEG3(IELEM)-1))
00124      &  = XM(ELTSEG3(IELEM)+NSEG11*(ORISEG3(IELEM)-1)) + XMT(IELEM,05)
00125 !         TERM 21
00126           XM(ELTSEG1(IELEM)+NSEG11*(2-ORISEG1(IELEM)))
00127      &  = XM(ELTSEG1(IELEM)+NSEG11*(2-ORISEG1(IELEM))) + XMT(IELEM,03)
00128 !         TERM 32
00129           XM(ELTSEG2(IELEM)+NSEG11*(2-ORISEG2(IELEM)))
00130      &  = XM(ELTSEG2(IELEM)+NSEG11*(2-ORISEG2(IELEM))) + XMT(IELEM,06)
00131 !         TERM 13
00132           XM(ELTSEG3(IELEM)+NSEG11*(2-ORISEG3(IELEM)))
00133      &  = XM(ELTSEG3(IELEM)+NSEG11*(2-ORISEG3(IELEM))) + XMT(IELEM,02)
00134       ENDDO
00135 !
00136 !  ASSEMBLES THE QUASIBUBBLE PART
00137 !  BETWEEN XM(2*NSEG11+1) AND XM(NSEG11+NSEG12)
00138 !  SEE IN STOSEG HOW ELTSEG4,5 AND 6 ARE BUILT
00139 !
00140       DO IELEM = 1,NELEM
00141 !       TERM 41
00142         XM(ELTSEG4(IELEM)+NSEG11) = XMT(IELEM,07)
00143 !       TERM 42
00144         XM(ELTSEG5(IELEM)+NSEG11) = XMT(IELEM,08)
00145 !       TERM 43
00146         XM(ELTSEG6(IELEM)+NSEG11) = XMT(IELEM,09)
00147       ENDDO
00148 !
00149 !-----------------------------------------------------------------------
00150 !
00151       RETURN
00152       END

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