mt13ba.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\mt13ba.f
00002 !
00077                      SUBROUTINE MT13BA
00078 !                    *****************
00079 !
00080      &(  A11 , A12 , A13 ,
00081      &   A21 , A22 , A23 ,
00082      &   A31 , A32 , A33 ,
00083      &   A41 , A42 , A43 ,
00084      &   XMUL,XEL,YEL,NELEM,NELMAX,ICOORD)
00085 !
00086 !***********************************************************************
00087 ! BIEF   V6P1                                   21/08/2010
00088 !***********************************************************************
00089 !
00090 !
00091 !
00092 !
00093 !
00094 !
00095 !
00096 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00097 !| A11            |<--| ELEMENTS OF MATRIX
00098 !| A12            |<--| ELEMENTS OF MATRIX
00099 !| A13            |<--| ELEMENTS OF MATRIX
00100 !| A21            |<--| ELEMENTS OF MATRIX
00101 !| A22            |<--| ELEMENTS OF MATRIX
00102 !| A23            |<--| ELEMENTS OF MATRIX
00103 !| A31            |<--| ELEMENTS OF MATRIX
00104 !| A32            |<--| ELEMENTS OF MATRIX
00105 !| A33            |<--| ELEMENTS OF MATRIX
00106 !| A41            |<--| ELEMENTS OF MATRIX
00107 !| A42            |<--| ELEMENTS OF MATRIX
00108 !| A43            |<--| ELEMENTS OF MATRIX
00109 !| ICOORD         |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
00110 !| NELEM          |-->| NUMBER OF ELEMENTS
00111 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00112 !| XEL            |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
00113 !| YEL            |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
00114 !| XMUL           |-->| MULTIPLICATION FACTOR
00115 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00116 !
00117       USE BIEF, EX_MT13BA => MT13BA
00118 !
00119       IMPLICIT NONE
00120       INTEGER LNG,LU
00121       COMMON/INFO/LNG,LU
00122 !
00123 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00124 !
00125       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
00126 !
00127       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
00128       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
00129       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
00130       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
00131 !
00132       DOUBLE PRECISION, INTENT(IN) :: XMUL
00133 !
00134       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
00135 !
00136 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00137 !
00138       INTEGER IELEM
00139       DOUBLE PRECISION X2,X3,Y2,Y3
00140       DOUBLE PRECISION XSUR9,XSUR6
00141 !
00142 !-----------------------------------------------------------------------
00143 !
00144       XSUR6 = XMUL/6.D0
00145       XSUR9 = XMUL/9.D0
00146 !
00147 !================================
00148 !  DERIVATIVE WRT X  =
00149 !================================
00150 !
00151         IF(ICOORD.EQ.1) THEN
00152 !
00153 !   LOOP ON THE ELEMENTS
00154 !
00155         DO IELEM = 1 , NELEM
00156 !
00157 !   INITIALISES THE GEOMETRICAL VARIABLES
00158 !
00159         Y2 = YEL(IELEM,2)
00160         Y3 = YEL(IELEM,3)
00161 !
00162 !   EXTRADIAGONAL TERMS
00163 !
00164         A12(IELEM) =  Y3*XSUR9
00165         A13(IELEM) = -Y2*XSUR9
00166         A21(IELEM) = -(Y3-Y2)*XSUR9
00167         A23(IELEM) = -Y2*XSUR9
00168         A31(IELEM) = -(Y3-Y2)*XSUR9
00169         A32(IELEM) =  Y3*XSUR9
00170         A41(IELEM) = -(Y3-Y2)*XSUR6
00171         A42(IELEM) =  Y3*XSUR6
00172         A43(IELEM) = -Y2*XSUR6
00173 !
00174 !   DIAGONAL TERMS
00175 !   THE SUM OF THE MATRIX COLUMNS IS 0 (VECTOR)
00176 !
00177         A11(IELEM) = - A12(IELEM) - A13(IELEM)
00178         A22(IELEM) = - A21(IELEM) - A23(IELEM)
00179         A33(IELEM) = - A31(IELEM) - A32(IELEM)
00180 !
00181       ENDDO ! IELEM
00182 !
00183         ELSEIF(ICOORD.EQ.2) THEN
00184 !
00185 !================================
00186 !  DERIVATIVE WRT Y  =
00187 !================================
00188 !
00189         DO IELEM = 1 , NELEM
00190 !
00191 !   INITIALISES THE GEOMETRICAL VARIABLES
00192 !
00193         X2  =  XEL(IELEM,2)
00194         X3  =  XEL(IELEM,3)
00195 !
00196 !   EXTRADIAGONAL TERMS
00197 !
00198         A12(IELEM) = -X3*XSUR9
00199         A13(IELEM) =  X2*XSUR9
00200         A21(IELEM) = -(X2-X3)*XSUR9
00201         A23(IELEM) =  X2*XSUR9
00202         A31(IELEM) = -(X2-X3)*XSUR9
00203         A32(IELEM) = -X3*XSUR9
00204         A41(IELEM) = -(X2-X3)*XSUR6
00205         A42(IELEM) = -X3*XSUR6
00206         A43(IELEM) =  X2*XSUR6
00207 !
00208 !   DIAGONAL TERMS
00209 !   THE SUM OF THE MATRIX COLUMNS IS 0 (VECTOR)
00210 !
00211         A11(IELEM) = - A12(IELEM) - A13(IELEM)
00212         A22(IELEM) = - A21(IELEM) - A23(IELEM)
00213         A33(IELEM) = - A31(IELEM) - A32(IELEM)
00214 !
00215         ENDDO ! IELEM
00216 !
00217         ELSE
00218 !
00219           IF (LNG.EQ.1) WRITE(LU,200) ICOORD
00220           IF (LNG.EQ.2) WRITE(LU,201) ICOORD
00221           CALL PLANTE(0)
00222 !
00223         ENDIF
00224 !
00225 200       FORMAT(1X,'MT13BA (BIEF) : COMPOSANTE IMPOSSIBLE ',
00226      &              1I6,' VERIFIER ICOORD')
00227 201       FORMAT(1X,'MT13BA (BIEF) : IMPOSSIBLE COMPONENT ',
00228      &              1I6,' CHECK ICOORD')
00229 !
00230 !-----------------------------------------------------------------------
00231 !
00232       RETURN
00233       END

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