The TELEMAC-MASCARET system  trunk
set_mesh.f
Go to the documentation of this file.
1 ! *******************
2  SUBROUTINE set_mesh
3 ! *******************
4 !
5  &(fformat,file_id,mesh_dim,typelm,ndp,nptfr,
6  & nptir,nelem,npoin,ikle,ipobo,
7  & knolg,x,y,nplan,date,time,x_orig,y_orig,ierr,z,in_place)
8 !
9 !***********************************************************************
10 ! HERMES V7P0 01/05/2014
11 !***********************************************************************
12 !
13 !brief Writes the mesh geometry in the file
14 !
15 !history Y AUDOUIN (LNHE)
16 !+ 24/03/2014
17 !+ V7P0
18 !+
19 !
20 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21 !| FFORMAT |-->| FORMAT OF THE FILE
22 !| FILE_ID |-->| FILE DESCRIPTOR
23 !| MESH_DIM |-->| DIMENSION OF THE MESH
24 !| TYPELM |-->| TYPE OF THE MESH ELEMENTS
25 !| NDP |-->| NUMBER OF POINTS PER ELEMENT
26 !| NPTFR |-->| NUMBER OF BOUNDARY POINT
27 !| NPTIR |-->| NUMBER OF INTERFACE POINT
28 !| NELEM |-->| NUMBER OF ELEMENT IN THE MESH
29 !| NPOIN |-->| NUMBER OF POINTS IN THE MESH
30 !| IKLE |<->| CONNECTIVITY ARRAY FOR THE MAIN ELEMENT
31 !| IPOBO |-->| IS A BOUNDARY POINT ? ARRAY
32 !| KNOLG |-->| LOCAL TO GLOBAL NUMBERING ARRAY
33 !| X |-->| X COORDINATES OF THE MESH POINTS
34 !| Y |-->| Y COORDINATES OF THE MESH POINTS
35 !| NPLAN |-->| NUMBER OF PLANES
36 !| DATE |-->| DATE OF THE CREATION OF THE MESH
37 !| TIME |-->| TIME OF THE CREATION OF THE MESH
38 !| X_ORIG |-->| Off set of the X coordinates
39 !| Y_ORIG |-->| Off set of the Y coordinates
40 !| IERR |<--| 0 IF NO ERROR DURING THE EXECUTION
41 !| Z (OPTIONAL) |-->| Z COORDINATES OF THE MESH POINTS
42 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43 !
44  USE utils_serafin
45  USE utils_med
46  USE utils_vtk
47  USE utils_cgns
49  IMPLICIT NONE
50 !
51 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
52 !
53  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
54  INTEGER, INTENT(IN) :: FILE_ID,NPLAN
55  INTEGER, INTENT(IN) :: DATE(3)
56  INTEGER, INTENT(IN) :: TIME(3)
57  INTEGER, INTENT(IN) :: MESH_DIM
58  INTEGER, INTENT(IN) :: TYPELM
59  INTEGER, INTENT(IN) :: NDP
60  INTEGER, INTENT(IN) :: NPTFR
61  INTEGER, INTENT(IN) :: NPTIR
62  INTEGER, INTENT(IN) :: NELEM
63  INTEGER, INTENT(IN) :: NPOIN
64  INTEGER, INTENT(IN) :: X_ORIG
65  INTEGER, INTENT(IN) :: Y_ORIG
66  INTEGER, INTENT(INOUT) :: IKLE(nelem*ndp)
67  INTEGER, INTENT(IN) :: IPOBO(*)
68  INTEGER, INTENT(IN) :: KNOLG(*)
69  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
70  INTEGER, INTENT(OUT) :: IERR
71  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: Z(*)
72  LOGICAL, INTENT(IN), OPTIONAL :: IN_PLACE
73 !
74 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
75 !
76  DOUBLE PRECISION, ALLOCATABLE :: COORD(:)
77  INTEGER :: I
78 !
79 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
80 !
81  SELECT CASE (fformat(1:7))
82  CASE ('SERAFIN')
83  CALL set_mesh_srf(fformat,file_id,mesh_dim,typelm,ndp,nptfr,
84  & nptir,nelem,npoin,ikle,ipobo,
85  & knolg,x,y,nplan,date,time,x_orig,y_orig,
86  & ierr,
87  & in_place=in_place)
88  CASE ('MED ')
89 ! STORE COORDINATES
90  ALLOCATE(coord(npoin*mesh_dim),stat=ierr)
91  IF(ierr.NE.0) THEN
92  error_message = 'ERROR IN ALLOCATING SET_MESH:COORD'
93  RETURN
94  ENDIF
95  DO i=1,npoin
96  coord(i) = x(i)
97  coord(i+npoin) = y(i)
98  ENDDO
99  IF (PRESENT(z).AND.(mesh_dim.EQ.3)) THEN
100  DO i=1,npoin
101  coord(i+2*npoin) = z(i)
102  ENDDO
103  ENDIF
104 !
105  CALL set_mesh_med(file_id,mesh_dim,mesh_dim,typelm,ndp,
106  & nptir,nelem,npoin,ikle,knolg,coord,nplan,
107  & date,time,x_orig,y_orig,ierr)
108  DEALLOCATE(coord)
109  CASE ('VTK ')
110  CALL set_mesh_vtk(file_id,mesh_dim,typelm,ndp,
111  & nelem,npoin,ikle,x,y,ierr)
112  CASE ('CGNS ')
113  IF (PRESENT(z).AND.(mesh_dim.EQ.3)) THEN
114  CALL set_mesh_cgns(file_id,mesh_dim,typelm,ndp,nptfr,
115  & nptir,nelem,npoin,ikle,ipobo,knolg,x,y,nplan,ierr,z)
116  ELSE
117  CALL set_mesh_cgns(file_id,mesh_dim,typelm,ndp,nptfr,
118  & nptir,nelem,npoin,ikle,ipobo,knolg,x,y,nplan,ierr)
119  ENDIF
120  CASE DEFAULT
122  WRITE(error_message,*) 'SET_MESH: BAD FILE FORMAT: ',fformat
123  RETURN
124  END SELECT
125 !
126 !-----------------------------------------------------------------------
127 !
128  RETURN
129  END
130 
131 
subroutine set_mesh_med(FILE_ID, NB_DIM_PB, NB_DIM_MESH, TYPE_ELEM, NDP, NPTIR, NELEM, NPOIN, IKLE, KNOLG, COORD, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR)
Definition: utils_med.F:3201
subroutine set_mesh(FFORMAT, FILE_ID, MESH_DIM, TYPELM, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR, Z, IN_PLACE)
Definition: set_mesh.f:9
character(len=200) error_message
subroutine set_mesh_srf(FFORMAT, FILE_ID, MESH_DIM, TYPELT, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR, IN_PLACE)
subroutine set_mesh_vtk(FILE_ID, NB_DIM_MESH, TYPE_ELEM, NDP, NELEM, NPOIN, IKLE, X, Y, IERR)
Definition: utils_vtk.F:261
subroutine set_mesh_cgns(FILE_ID, MESH_DIM, TYPELT, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, IERR, Z)
Definition: utils_cgns.F:2002
integer, parameter hermes_unknown_file_format_err