The TELEMAC-MASCARET system  trunk
inisel.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE inisel
3 ! *****************
4 !
5  &(npoin1,typele,std,nsfond,fusion,ihaut,ngeo,nfo1)
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL V5.2 11/02/93 J.M. JANIN
9 !***********************************************************************
10 !
11 ! FONCTION : RECHERCHE LES NOMBRES TOTAUX DE NOEUDS ET D'ELEMENTS DU
12 ! MAILLAGE DANS LE FICHIER D'ENTREE SELAFIN
13 !
14 !-----------------------------------------------------------------------
15 ! ARGUMENTS
16 ! .________________.____.______________________________________________
17 ! | NOM |MODE| ROLE
18 ! |________________|____|______________________________________________
19 ! | NPOIN1 |<-- | NOMBRE REEL DE POINTS DU MAILLAGE
20 ! | | | (NPOIN REPRESENTE L'INDICE MAX DES NOEUDS CAR
21 ! | | | SUPERTAB LAISSE DES TROUS DANS LA NUMEROTATION
22 ! | TYPELE |<-- | TYPE D'ELEMENTS
23 ! | IHAUT |<-- | NUMERO DE LA VARIABLE HAUTEUR D'EAU
24 ! |________________|____|______________________________________________
25 ! | COMMON: | |
26 ! | GEO: | |
27 ! | MESH |<-- | TYPE DES ELEMENTS DU MAILLAGE
28 ! | NDP | -->| NOMBRE DE NOEUDS PAR ELEMENTS
29 ! | NPOIN |<-- | NOMBRE TOTAL DE NOEUDS DU MAILLAGE
30 ! | NELEM |<-- | NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
31 ! | NPMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
32 ! | | | (NPMAX = NPOIN + 0.1*NELEM)
33 ! | NELMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
34 ! | | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
35 ! | FICH: | |
36 ! | NRES |--> | NUMERO DU CANAL DU FICHIER DE SERAFIN
37 ! | NGEO |--> | NUMERO DU CANAL DU FICHIER MAILLEUR
38 ! | NLIM |--> | NUMERO DU CANAL DU FICHIER DYNAM DE TELEMAC
39 ! | NFO1 |--> | NUMERO DU CANAL DU FICHIER TRIANGLE TRIGRID
40 ! |________________|____|______________________________________________
41 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
42 !-----------------------------------------------------------------------
43 ! APPELE PAR : HOMERE
44 ! APPEL DE : -
45 !***********************************************************************
46 !
49  & typ_elem,typ_bnd_elem,nptir,fformat
50  USE interface_stbtel, ex_inisel => inisel
52  IMPLICIT NONE
53 !
54  INTEGER, INTENT(INOUT) :: NPOIN1,NSFOND
55  CHARACTER(LEN=11), INTENT(INOUT) :: TYPELE
56  CHARACTER(LEN=3), INTENT(IN) :: STD
57  LOGICAL, INTENT(IN) :: FUSION
58  INTEGER, INTENT(INOUT) :: IHAUT
59  INTEGER, INTENT(IN) :: NGEO , NFO1
60 !
61  INTEGER NVAR , I , IB(10)
62 !
63 !
64 ! COMMON
65 !
66  CHARACTER(LEN=16), ALLOCATABLE :: VARUNIT(:), VARNAME(:)
67  INTEGER :: IERR
68 !
69 !
70 !=======================================================================
71 ! LECTURE SEQUENTIELLE DU FICHIER ET RECHERCHE ENREGISTREMENT 5
72 !=======================================================================
73 !
74  CALL get_data_nvar(fformat, ngeo, nvar, ierr)
75  CALL check_call(ierr, 'INISEL:GET_DATA_NVAR')
76 
77  ALLOCATE(varunit(nvar))
78  ALLOCATE(varname(nvar))
79  CALL get_data_var_list(fformat,ngeo,nvar,varname,varunit,ierr)
80  CALL check_call(ierr, 'INISEL:GET_DATA_VAR_LIST')
81 
82  DO i=1,nvar
83  IF( varname(i) .EQ. 'FOND ' .OR.
84  & varname(i) .EQ. 'BOTTOM ' ) nsfond = i
85  IF( varname(i) .EQ. 'HAUTEUR D''EAU ' .OR.
86  & varname(i) .EQ. 'WATER DEPTH ' ) ihaut = i
87  ENDDO
88 
89  DEALLOCATE(varunit)
90  DEALLOCATE(varname)
91 !
92 !=======================================================================
93 ! AFFECTATION DES VALEURS LUES AUX VARIABLES CONCERNEES
94 !=======================================================================
95 !
96  ! TEST FOR TRIANGLE
97  typ_elem = triangle_elt_type
98  CALL get_mesh_nelem(fformat,ngeo,typ_elem,nelem,ierr)
99  CALL check_call(ierr,'inisel:GET_MESH_NELEM:TRIANGLE')
100  ndp = 3
101  IF(nelem.EQ.0) THEN
102  ! TEST FOR QUADRANGLE
103  typ_elem = quadrangle_elt_type
104  CALL get_mesh_nelem(fformat,ngeo,typ_elem,nelem,ierr)
105  CALL check_call(ierr, 'INISEL:GET_MESH_NELEM:QUADRANGLE')
106  ndp = 4
107  IF(nelem.EQ.0) THEN
108  WRITE(lu,*) 'NO 2D ELEMENTS IN A 2D MESH'
109  CALL plante(1)
110  ENDIF
111  ENDIF
112  typ_bnd_elem = point_bnd_elt_type
113 
114  CALL get_mesh_npoin(fformat,ngeo,typ_elem,npoin,ierr)
115  CALL check_call(ierr, 'GET_MESH_NPOIN:TRIA')
116 
117  CALL get_mesh_nptir(fformat,ngeo,nptir,ierr)
118 
119  npoin1= npoin
120 !
121 !=======================================================================
122 ! LECTURE SEQUENTIELLE DU SECOND FICHIER EN CAS DE FUSION
123 !=======================================================================
124 !
125  IF (fusion) THEN
126 !
127  CALL get_mesh_nelem(fformat,nfo1,typ_elem,ib(1),ierr)
128  CALL check_call(ierr,'INISEL:GET_MESH_NELEM:TRIANGLE')
129 
130  CALL get_mesh_npoin(fformat,nfo1,typ_elem,ib(2),ierr)
131  CALL check_call(ierr, 'GET_MESH_NPOIN:TRIA')
132 
133  CALL get_mesh_npoin_per_element(fformat,nfo1,typ_elem,
134  & ib(3),ierr)
135 !
136  nelem = nelem + ib(1)
137  npoin = npoin + ib(2)
138 !
139  IF (ndp.NE.ib(3)) THEN
140  WRITE(lu,3130)
141  3130 FORMAT(' INISEL : TYPES OF MESH INHOMOGENEOUS')
142  CALL plante(1)
143  stop
144  ENDIF
145 !
146  ENDIF
147 !
148 !=======================================================================
149 ! MISE DES VALEURS DE MESH AU STANDARD TELEMAC
150 !=======================================================================
151 !
152  IF (ndp.EQ.4) THEN
153  mesh = 2
154  typele = 'QUADRANGLES'
155  ELSEIF (ndp.EQ.3) THEN
156  mesh = 3
157  typele = 'TRIANGLES '
158  ELSE
159  WRITE(lu,3140) mesh
160  3140 FORMAT(' INISEL : TYPE OF MESH NOT AVAILABLE IN TELEMAC,
161  & MESH = ',i4)
162  CALL plante(1)
163  stop
164  ENDIF
165 !
166  RETURN
167  END
subroutine get_mesh_nptir(FFORMAT, FID, NPTIR, IERR)
Definition: get_mesh_nptir.f:7
subroutine get_mesh_npoin(FFORMAT, FID, TYP_ELEM, NPOIN, IERR)
Definition: get_mesh_npoin.f:7
subroutine get_data_nvar(FFORMAT, FID, NVAR, IERR)
Definition: get_data_nvar.f:7
subroutine get_data_var_list(FFORMAT, FID, NVAR, VARLIST, UNITLIST, IERR)
integer, parameter triangle_elt_type
integer, parameter point_bnd_elt_type
subroutine get_mesh_nelem(FFORMAT, FID, TYP_ELEM, NELEM, IERR)
Definition: get_mesh_nelem.f:7
subroutine get_mesh_npoin_per_element(FFORMAT, FID, TYP_ELEM, NDP, IERR)
subroutine inisel(NPOIN1, TYPELE, STD, NSFOND, FUSION, IHAUT, NGEO, NFO1)
Definition: inisel.f:7
integer, parameter quadrangle_elt_type