as3_1112.f

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

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