make_zconv.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac3d\make_zconv.f
00002 !
00047                      SUBROUTINE MAKE_ZCONV
00048 !                    *********************
00049 !
00050      &(ZCONV,GRAZCO,ZFLATS,DH,HN,ZF,TETAZCOMP,TETAH,NELEM2,OPTBAN,
00051      & IKLE2,MESH2D)
00052 !
00053 !***********************************************************************
00054 ! TELEMAC3D   V6P2                                   21/08/2010
00055 !***********************************************************************
00056 !
00057 !
00058 !
00059 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00060 !| GRAZCO         |<->| GRADIENT OF ZCONV
00061 !| HN             |-->| DEPTH AT OLD TIME STEP
00062 !| NELEM2         |-->| NUMBER OF 2D ELEMENTS
00063 !| OPTBAN         |-->| OPTION FOR THE TREATMENT OF TIDAL FLATS
00064 !| TETAH          |-->| IMPLICITATION ON DEPTH
00065 !| TETAZCOMP      |-->| COMPATIBILITY OF FREE-SURFACE GRADIENT
00066 !| ZCONV          |<->| PIECE-WISE LINEAR FREE SURFACE AT NEW TIME STEP
00067 !|                |   | WHOSE GRADIENT WILL BE A PIECE-WISE CONSTANT
00068 !| ZF             |-->| BOTTOM TOPOGRAPHY
00069 !| ZFLATS         |<->| PIECE-WISE LINEAR FREE SURFACE AT OLD TIME STEP
00070 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00071 !
00072       USE BIEF
00073       IMPLICIT NONE
00074       INTEGER LNG,LU
00075       COMMON/INFO/LNG,LU
00076 !
00077 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00078 !
00079       INTEGER, INTENT(IN)            :: NELEM2,OPTBAN
00080       INTEGER, INTENT(IN)            :: IKLE2(NELEM2,3)
00081       DOUBLE PRECISION, INTENT(IN)   :: TETAH,TETAZCOMP
00082       TYPE(BIEF_OBJ), INTENT(INOUT)  :: ZCONV,GRAZCO
00083       TYPE(BIEF_OBJ), INTENT(IN)     :: DH,ZFLATS,HN,ZF
00084       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH2D
00085 !
00086 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00087 !
00088       INTEGER IELEM,I1,I2,I3
00089       DOUBLE PRECISION C
00090 !
00091 !-----------------------------------------------------------------------
00092 !
00093       DO IELEM=1,NELEM2
00094         ZCONV%R(IELEM         )=DH%R(IKLE2(IELEM,1))
00095         ZCONV%R(IELEM+  NELEM2)=DH%R(IKLE2(IELEM,2))
00096         ZCONV%R(IELEM+2*NELEM2)=DH%R(IKLE2(IELEM,3))
00097       ENDDO
00098       IF(ABS(1.D0-TETAZCOMP).GT.1.D-6) THEN
00099         C=(1.D0-TETAZCOMP)/TETAH
00100         IF(OPTBAN.EQ.1) THEN
00101 !         FREE SURFACE PIECE-WISE LINEAR IN ZFLATS
00102           CALL OS('X=X+CY  ',X=ZCONV,Y=ZFLATS,C=C)
00103         ELSE
00104 !         FREE SURFACE LINEAR
00105           DO IELEM=1,NELEM2
00106             I1=IKLE2(IELEM,1)
00107             I2=IKLE2(IELEM,2)
00108             I3=IKLE2(IELEM,3)
00109             ZCONV%R(IELEM         )=ZCONV%R(IELEM         )+
00110      &      C*(HN%R(I1)+ZF%R(I1))
00111             ZCONV%R(IELEM+  NELEM2)=ZCONV%R(IELEM+  NELEM2)+
00112      &      C*(HN%R(I2)+ZF%R(I2))
00113             ZCONV%R(IELEM+2*NELEM2)=ZCONV%R(IELEM+2*NELEM2)+
00114      &      C*(HN%R(I3)+ZF%R(I3))
00115           ENDDO
00116         ENDIF
00117       ENDIF
00118 !
00119 !     COMPUTING THE GRADIENT OF ZCONV
00120 !
00121       CALL GRAD_ZCONV(GRAZCO%R,ZCONV%R,MESH2D%XEL%R,MESH2D%YEL%R,
00122      &                NELEM2,MESH2D%NELMAX)
00123 !
00124 !-----------------------------------------------------------------------
00125 !
00126       RETURN
00127       END

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