mt01pp.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\mt01pp.f
00002 !
00070                      SUBROUTINE MT01PP
00071 !                    *****************
00072 !
00073      &( T,XM,XMUL,Z,SURFAC,IKLE,NELEM,NELMAX)
00074 !
00075 !***********************************************************************
00076 ! BIEF   V6P1                                   21/08/2010
00077 !***********************************************************************
00078 !
00079 !
00080 !
00081 !
00082 !
00083 !
00084 !
00085 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00086 !| IKLE           |-->| CONNECTIVITY TABLE.
00087 !| NELEM          |-->| NUMBER OF ELEMENTS
00088 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS
00089 !| SURFAC         |-->| AREA OF TRIANGLES
00090 !| T              |<--| NON ASSEMBLED DIAGONAL
00091 !| XM             |<--| NON ASSEMBLED OFF-DIAGONAL TERMS
00092 !| XMUL           |-->| MULTIPLICATION FACTOR
00093 !| Z              |-->| ELEVATIONS OF POINTS IN THE MESH
00094 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00095 !
00096       USE BIEF, EX_MT01PP => MT01PP
00097 !
00098       IMPLICIT NONE
00099       INTEGER LNG,LU
00100       COMMON/INFO/LNG,LU
00101 !
00102 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00103 !
00104       INTEGER, INTENT(IN)             :: NELEM,NELMAX
00105       INTEGER, INTENT(IN)             :: IKLE(NELMAX,6)
00106       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
00107       DOUBLE PRECISION, INTENT(IN)    :: XMUL,Z(*),SURFAC(NELMAX)
00108 !
00109 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00110 !
00111 !     DECLARATIONS SPECIFIC TO THIS SUBROUTINE
00112 !
00113       INTEGER IELEM
00114       DOUBLE PRECISION SUR360,COEF,H1,H2,H3,HT
00115 !
00116       DOUBLE PRECISION EPSI
00117       DATA EPSI/1.D-3/
00118 !
00119 !-----------------------------------------------------------------------
00120 !
00121       SUR360 = XMUL / 360.D0
00122 !
00123 !   LOOP ON THE ELEMENTS
00124 !
00125       DO IELEM = 1,NELEM
00126 !
00127         COEF = SURFAC(IELEM) * SUR360
00128 !
00129 !       TREATS HERE THE DRY ZONES
00130 !
00131         H1 = MAX(Z(IKLE(IELEM,4)) - Z(IKLE(IELEM,1)),EPSI) * COEF
00132         H2 = MAX(Z(IKLE(IELEM,5)) - Z(IKLE(IELEM,2)),EPSI) * COEF
00133         H3 = MAX(Z(IKLE(IELEM,6)) - Z(IKLE(IELEM,3)),EPSI) * COEF
00134         HT = H1 + H2 + H3
00135 !
00136 !-----------------------------------------------------------------------
00137 !
00138 !  EXTRA-DIAGONAL TERMS
00139 !
00140         XM(IELEM,4)  = H1 + H2 + HT
00141         XM(IELEM,5)  = H1 + H3 + HT
00142         XM(IELEM,9)  = H2 + H3 + HT
00143         XM(IELEM,7)  = XM(IELEM,4)
00144         XM(IELEM,10) = XM(IELEM,5)
00145         XM(IELEM,11) = XM(IELEM,9)
00146 !
00147         XM(IELEM,3)  =  4*H1 + HT + HT
00148         XM(IELEM,8)  =  4*H2 + HT + HT
00149         XM(IELEM,12) =  4*H3 + HT + HT
00150 !
00151         XM(IELEM,1)  = XM(IELEM,4) + XM(IELEM,4)
00152         XM(IELEM,2)  = XM(IELEM,5) + XM(IELEM,5)
00153         XM(IELEM,6)  = XM(IELEM,9) + XM(IELEM,9)
00154         XM(IELEM,13) = XM(IELEM,1)
00155         XM(IELEM,14) = XM(IELEM,2)
00156         XM(IELEM,15) = XM(IELEM,6)
00157 !
00158 !  DIAGONAL TERMS
00159 !
00160         T(IELEM,1) = XM(IELEM,3)  + XM(IELEM,3)
00161         T(IELEM,2) = XM(IELEM,8)  + XM(IELEM,8)
00162         T(IELEM,3) = XM(IELEM,12) + XM(IELEM,12)
00163         T(IELEM,4) = T(IELEM,1)
00164         T(IELEM,5) = T(IELEM,2)
00165         T(IELEM,6) = T(IELEM,3)
00166 !
00167 !   END OF THE LOOP ON THE ELEMENTS
00168 !
00169       ENDDO ! IELEM
00170 !
00171 !-----------------------------------------------------------------------
00172 !
00173       RETURN
00174       END

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