mask3d.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac3d\mask3d.f
00002 !
00061                      SUBROUTINE MASK3D
00062 !                    *****************
00063 !
00064      &(IFABOR3D,MASKEL,MASKPT,MASKBR,
00065      & X,Y,ZF,ZFE,H,HMIN,AT,LT,ITRA01,NELBO3,
00066      & NELMA2,NELEM2,NPOIN2,NPTFR,NPLAN,NETAGE,IELM3,MESH2D)
00067 !
00068 !***********************************************************************
00069 ! TELEMAC3D   V6P1                                   21/08/2010
00070 !***********************************************************************
00071 !
00072 !
00073 !
00074 !
00075 !
00076 !
00077 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00078 !| AT             |-->| TIME OF TIME STEP
00079 !| H              |-->| WATER DEPTH
00080 !| HMIN           |-->| ACCEPTABLE MINIMUM VALUE OF DEPTH
00081 !| IELM3          |-->| 3D DISCRETISATION TYPE
00082 !| IFABOR3D       |<->| ARRAY OF ELEMENT ADJACENT TO EDGES (3D)
00083 !| ITRA01         |<->| WORK ARRAY OF INTEGERS
00084 !| LT             |-->| CURRENT TIME STEP NUMBER
00085 !| MASKBR         |<->| 3D MASK ON LATERAL BOUNDARIES
00086 !| MASKEL         |<->| MASKING OF ELEMENTS
00087 !|                |   | =1. : NORMAL   =0. : MASKED ELEMENT
00088 !| MASKPT         |<->| MASKING PER POINT.
00089 !|                |   | =1. : NORMAL   =0. : MASKED
00090 !| MESH2D         |<->| 2D MESH
00091 !| NELBO3         |-->| ELEMENTS OF THE BORDER
00092 !| NELEM2         |-->| NUMBER OF ELEMENTS IN 2D
00093 !| NELMA2         |-->| MAXIMUM NUMBER OF ELEMENTS IN 2D
00094 !| NETAGE         |-->| NPLAN - 1
00095 !| NPLAN          |-->| NUMBER OF PLANES IN THE 3D MESH OF PRISMS
00096 !| NPOIN2         |-->| NUMBER OF POINTS IN 2D
00097 !| NPTFR          |-->| NUMBER OF BOUNDARY POINTS IN 2D
00098 !| X              |-->| COORDINATE
00099 !| Y              |-->| COORDINATE
00100 !| ZF             |-->| ELEVATION OF BOTTOM
00101 !| ZFE            |-->| ELEVATION OF BOTTOM PER ELEMENT
00102 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00103 !
00104       USE BIEF
00105       IMPLICIT NONE
00106       INTEGER LNG,LU
00107       COMMON/INFO/LNG,LU
00108 !
00109 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00110 !
00111       INTEGER, INTENT(IN)             :: NELEM2, NPOIN2, NETAGE, NPLAN
00112       INTEGER, INTENT(IN)             :: NELMA2, NPTFR
00113       INTEGER, INTENT(INOUT)          :: IFABOR3D(NELEM2,5,NETAGE)
00114       DOUBLE PRECISION, INTENT(INOUT) :: MASKEL(NELEM2,NETAGE)
00115       DOUBLE PRECISION, INTENT(INOUT) :: MASKBR(NPTFR,NETAGE)
00116       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN2), Y(NPOIN2)
00117       DOUBLE PRECISION, INTENT(IN)    :: ZF(NPOIN2), H(NPOIN2)
00118       DOUBLE PRECISION, INTENT(IN)    :: ZFE(NELEM2)
00119       INTEGER, INTENT(IN)             :: NELBO3(NPTFR,NETAGE)
00120       INTEGER, INTENT(INOUT)          :: ITRA01(NELEM2)
00121       INTEGER, INTENT(IN)             :: LT, IELM3
00122       DOUBLE PRECISION, INTENT(IN)    :: HMIN, AT
00123       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH2D
00124       TYPE(BIEF_OBJ) , INTENT(INOUT)  :: MASKPT
00125 !
00126 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00127 !
00128       INTEGER IELEM2,IETAGE,IADR,IPLAN
00129 !
00130 !***********************************************************************
00131 !
00132 ! INITIALISES MASKEL IF MASK!
00133 !  MASKS TIDAL FLATS (MASKBD)
00134 !  MASKS A USER-DEFINED AREA (MASKOB)
00135 !  FILLS IN MASKPT (MASKTO)
00136 !=======================================================================
00137 !
00138       CALL OV('X=C     ',MASKEL,MASKEL,MASKEL,1.D0,NELEM2)
00139 !
00140       CALL MASKBD(MASKEL,ZFE,ZF,H,HMIN,MESH2D%IKLE%I,MESH2D%IFABOR%I,
00141      &            ITRA01,NELEM2,NPOIN2)
00142 !
00143       CALL MASKOB(MASKEL,X,Y,MESH2D%IKLE%I,NELEM2,NELMA2,NPOIN2,AT,LT)
00144 !
00145       CALL MASKTO(MASKEL,MASKPT,IFABOR3D,MESH2D%IKLE%I,
00146      &            MESH2D%IFABOR%I,MESH2D%ELTSEG%I,MESH2D%NSEG,
00147      &            NELEM2,NPOIN2,IELM3,MESH2D)
00148 !
00149 !=======================================================================
00150 !     COPIES MASKEL ON HIGHER LEVELS
00151 !=======================================================================
00152 !
00153       IF(NETAGE.GE.2) THEN
00154         DO IETAGE = 2,NETAGE
00155           DO IELEM2 = 1,NELEM2
00156             MASKEL(IELEM2,IETAGE) = MASKEL(IELEM2,1)
00157           ENDDO
00158         ENDDO
00159       ENDIF
00160 !
00161 !=======================================================================
00162 !     COPIES MASKPT ON HIGHER LEVELS
00163 !=======================================================================
00164 !
00165       DO IPLAN=2,NPLAN
00166         IADR=(IPLAN-1)*NPOIN2
00167         CALL OV('X=Y     ',MASKPT%R(IADR+1:IADR+NPOIN2),
00168      &                     MASKPT%R,MASKPT%R,0.D0,NPOIN2)
00169       ENDDO
00170 !
00171 !=======================================================================
00172 !     INITIALISES MASKBR
00173 !=======================================================================
00174 !
00175       CALL OV ( 'X=C     ',MASKBR,MASKBR,MASKBR,1.D0,NPTFR*NETAGE)
00176 !
00177 !     AND SETS IT WITH THE NEIGHBOURING MASKEL
00178 !
00179       CALL OVBD ('X=Y     ',MASKBR,MASKEL,MASKEL,
00180      &           0.D0,NELBO3,NPTFR*NETAGE)
00181 !
00182 !-----------------------------------------------------------------------
00183 !
00184       RETURN
00185       END

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