SPEED
READ_DIME_FILEMESH.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine read_dime_filemesh (gridfile, nb_mate, lab_mate, nb_dirix, lab_dirix, nb_diriy, lab_diriy, nb_diri
 Reads dimensions in gridfile (*.mesh)
 

Function/Subroutine Documentation

◆ read_dime_filemesh()

subroutine read_dime_filemesh ( character*70  gridfile,
integer*4  nb_mate,
integer*4, dimension(nb_mate)  lab_mate,
integer*4  nb_dirix,
integer*4, dimension(nb_dirix)  lab_dirix,
integer*4  nb_diriy,
integer*4, dimension(nb_diriy)  lab_diriy,
  nb_diri 
)

Reads dimensions in gridfile (*.mesh)

Author
Ilario Mazzieri
Date
September, 2013
Version
1.0
Parameters
[in]gridfilefile name (*.mesh)
[in]nb_matenumber of blocks (materials)
[in]lab_matetag for materials
[in]nb_diriXnumber of Dirichlet b.c. (x-dir)
[in]nb_diriYnumber of Dirichlet b.c. (y-dir)
[in]nb_diriZnumber of Dirichlet b.c. (z-dir)
[in]lab_diriXlabel for Dirichlet b.c. (x-dir)
[in]lab_diriYlabel for Dirichlet b.c. (y-dir)
[in]lab_diriZlabel for Dirichlet b.c. (z-dir)
[in]nb_neuXnumber of Neumann boundary loads (x-dir)
[in]nb_neuYnumber of Neumann boundary loads (y-dir)
[in]nb_neuZnumber of Neumann boundary loads (z-dir)
[in]lab_neuXlabel for Neumann boundary loads (x-dir)
[in]lab_neuYlabel for Neumann boundary loads (y-dir)
[in]lab_neuZlabel for Neumann boundary loads (z-dir)
[in]nb_neuNnumber of Neumann boundary loads (normal direction)
[in]lab_neuNlabel for Neumann boundary loads
[in]nnb_abcnumber of absorbing boundary conditions
[in]lab_abclabel for absorbing boundary condition
[in]nnb_dgnumber of discontinuos interfaces (where DG scheme is applied)
[in]lab_dglabel for DG interface conditions
[out]nb_nodenumber of mesh node
[out]nb_hexanumber of hexahedral elements
[out]nb_quadnumber of quadrilateral elements

Definition at line 50 of file READ_DIME_FILEMESH.f90.

52 nb_neux,lab_neux,nb_neuy,lab_neuy,nb_neuz,lab_neuz,&
53 nb_neun,lab_neun, &
54 nb_abc,lab_abc,&
55 nb_dg,lab_dg,&
56 nb_node,nb_hexa,nb_quad)
57
58
59 implicit none
60
61 character*70 :: gridfile
62 character*80 :: inline
63 character*20 :: el_code
64
65 integer*4 :: nb_mate,nb_diriX,nb_diriY,nb_diriZ,nb_neuX,nb_neuY,nb_neuZ,nb_abc,nb_dg
66 integer*4 :: nb_neuN
67 integer*4 :: nb_elem,ie,i,mat_code,ileft,iright,sl,trash,status,control
68
69 integer*4, dimension(nb_mate) :: lab_mate
70
71 integer*4, dimension(nb_diriX) :: lab_diriX
72 integer*4, dimension(nb_diriY) :: lab_diriY
73 integer*4, dimension(nb_diriZ) :: lab_diriZ
74 integer*4, dimension(nb_neuX) :: lab_neuX
75 integer*4, dimension(nb_neuY) :: lab_neuY
76 integer*4, dimension(nb_neuZ) :: lab_neuZ
77 integer*4, dimension(nb_neuN) :: lab_neuN
78 integer*4, dimension(nb_abc) :: lab_abc
79 integer*4, dimension(nb_dg) :: lab_dg
80 integer*4 :: nb_node,nb_hexa,nb_quad
81
82
83 nb_node = 0; nb_hexa = 0; nb_quad = 0
84
85 open(40,file=gridfile)
86
87 do
88 read(40,'(A)') inline
89 if (inline(1:1) .ne. '#') exit
90 enddo
91
92 read(inline,*)nb_node,nb_elem
93
94 do i = 1,nb_node
95 read(40,'(A)')inline
96 enddo
97
98 do ie = 1,nb_elem
99 read(40,'(A)')inline
100
101 sl = len(inline)
102 ileft = 0
103 iright = 0
104 do i = 1,sl
105 if (inline(i:i).ge.'A') exit
106 enddo
107 ileft = i
108 do i = ileft,sl
109 if (inline(i:i).lt.'A') exit
110 enddo
111 iright = i
112
113 el_code = inline(ileft:iright)
114
115 read(inline(1:ileft),*)trash,mat_code
116
117 if ((el_code.eq.'hex').or.(el_code.eq.'HEX')) then
118 control = 0
119 do i = 1,nb_mate
120 if (lab_mate(i).eq.mat_code) control = 1
121 enddo
122 !
123 if (control.ne.0) nb_hexa = nb_hexa +1
124 !
125 elseif ((el_code.eq.'quad').or.(el_code.eq.'QUAD')) then
126 control = 0
127 do i = 1,nb_dirix
128 if (lab_dirix(i).eq.mat_code) control = 1
129 enddo
130 do i = 1,nb_diriy
131 if (lab_diriy(i).eq.mat_code) control = 1
132 enddo
133 do i = 1,nb_diriz
134 if (lab_diriz(i).eq.mat_code) control = 1
135 enddo
136 do i = 1,nb_neux
137 if (lab_neux(i).eq.mat_code) control = 1
138 enddo
139 do i = 1,nb_neuy
140 if (lab_neuy(i).eq.mat_code) control = 1
141 enddo
142 do i = 1,nb_neuz
143 if (lab_neuz(i).eq.mat_code) control = 1
144 enddo
145 do i = 1,nb_neun
146 if (lab_neun(i).eq.mat_code) control = 1
147 enddo
148 do i = 1,nb_abc
149 if (lab_abc(i).eq.mat_code) control = 1
150 enddo
151 do i = 1,nb_dg
152 if (lab_dg(i).eq.mat_code) control = 1
153 enddo
154
155
156 if (control.ne.0) nb_quad = nb_quad +1
157 endif
158 enddo
159
160 close(40)
161
162 return

Referenced by read_input_files().

Here is the caller graph for this function: