33
34
35
36 USE my_alloc_mod
39 use element_mod , only : nixs,nixc,nixtg
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "com04_c.inc"
48#include "scr03_c.inc"
49
50
51
52 INTEGER, INTENT(IN) :: TAGXREF(NUMNOD),IXC(NIXC,*),IXTG(NIXTG,*),IXS(NIXS,*)
54 . xrefc(4,3,numelc),xreftg(3,3,numeltg),xrefs(8,3,numels8)
55
56
57
58 INTEGER IE,IN,NN,TEMP_INT,NC,ELEM_ID,WORK(70000)
59 CHARACTER (LEN=255) :: VARNAME
60 DOUBLE PRECISION TEMP_DOUBLE
61 INTEGER, ALLOCATABLE, DIMENSION(:) :: INDEX,ITR1
62
63
64
65
66
67
68
69
71
72 WRITE(varname,'(A)') 'NXREF'
73 temp_int = nxref
74 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
75
76 IF (nxref > 0) THEN
77
78 DO ie = 1,numelc
79 DO in = 1,4
80 nn = ixc(in+1,ie)
81 IF (tagxref(nn) == 1) THEN
82
83 WRITE(varname,'(A)') 'XREFC_NODE'
84 temp_int = nn
85 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
86
87 WRITE(varname,'(A)') 'XREFC_X'
88 temp_double = xrefc(in,1,ie)
89 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
90
91 WRITE(varname,'(A)') 'XREFC_Y'
92 temp_double = xrefc(in,2,ie)
93 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
94
95 WRITE(varname,'(A)') 'XREFC_Z'
96 temp_double = xrefc(in,3,ie)
97 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
98 ENDIF
99 ENDDO
100 ENDDO
101
102 DO ie = 1,numeltg
103 DO in = 1,3
104 nn = ixtg(in+1,ie)
105 IF (tagxref(nn) == 1) THEN
106
107 WRITE(varname,'(A)') 'XREFTG_NODE'
108 temp_int = nn
109 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
110
111 WRITE(varname,'(A)') 'XREFTG_X'
112 temp_double = xreftg(in,1,ie)
113 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
114
115 WRITE(varname,'(A)') 'XREFTG_Y'
116 temp_double = xreftg(in,2,ie)
117 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
118
119 WRITE(varname,'(A)') 'XREFTG_Z'
120 temp_double = xreftg(in,3,ie)
121 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
122 ENDIF
123 ENDDO
124 ENDDO
125
126 DO ie = 1,numels8
127 DO in = 1,8
128 nn = ixs(in+1,ie)
129 IF (tagxref(nn) == 1) THEN
130
131 WRITE(varname,'(A)') 'XREFS_NODE'
132 temp_int = nn
133 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
134
135 WRITE(varname,'(A)') 'XREFS_X'
136 temp_double = xrefs(in,1,ie)
137 CALL qaprint(varname(1:len_trim(varname
138
139 WRITE(varname,'(A)') 'XREFS_Y'
140 temp_double = xrefs(in,2,ie)
141 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
142
143 WRITE(varname,'(A)') 'XREFS_Z'
144 temp_double = xrefs(in,3,ie)
145 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
146 ENDIF
147 ENDDO
148 ENDDO
149
150 ENDIF
151
152 ENDIF
153
154
155
156
158
159 WRITE(varname,'(A)') 'NEREF'
160 temp_int = neref
161 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
162
163 IF (neref > 0) THEN
164
165 CALL my_alloc(index,2*numelc)
166 CALL my_alloc(itr1,numelc)
167
168 DO ie=1,numelc
169 itr1(ie)=ixc(nixc,ie)
170 ENDDO
171 CALL my_orders(0,work,itr1,index,numelc,1)
172
173 DO ie = 1,numelc
174 nc=index(ie)
175 elem_id = ixc(nixc,nc)
176
177 DO in = 1,4
178 nn = ixc(in+1,nc)
179 IF (tagxref(nn) /= 1) THEN
180
181 WRITE(varname,'(A,I0)') 'EREF_SHELL_ELEMENT_NODE ',in
182 temp_int = elem_id
183 CALL qaprint(varname(1:len_trim(varname)),temp_int,0.0_8)
184 IF (xrefc(in,1,nc) > 0) THEN
185
186 WRITE(varname,'(A)') 'EREFC_X'
187 temp_double = xrefc(in,1,nc)
188 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
189 ENDIF
190 IF (xrefc(in,2,nc) > 0) THEN
191
192 WRITE(varname,'(A)') 'EREFC_Y'
193 temp_double = xrefc(in,2,nc)
194 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
195 ENDIF
196 IF (xrefc(in,3,nc) > 0) THEN
197
198 WRITE(varname,'(A)') 'EREFC_Z'
199 temp_double = xrefc(in,3,nc)
200 CALL qaprint(varname(1:len_trim(varname)),0,temp_double)
201 ENDIF
202 ENDIF
203 ENDDO
204
205 ENDDO
206 DEALLOCATE(index,itr1)
207
208 CALL my_alloc(index,2*numeltg)
209 CALL my_alloc(itr1,numeltg)
210
211 DO ie=1,numeltg
212 itr1(ie)=ixtg(nixtg,ie)
213 ENDDO
214 CALL my_orders(0,work,itr1,index,numeltg,1)
215
216 DO ie = 1,numeltg
217 nc=index(ie)
218 elem_id = ixtg(nixtg,nc)
219
220 DO in = 1,3
221 nn = ixtg(in+1,nc)
222 IF (tagxref(nn) /= 1) THEN
223
224 WRITE(varname,'(a,i0)') 'eref_sh3n_element_node ',IN
225 TEMP_INT = ELEM_ID
226 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
227 IF (XREFTG(IN,1,NC) > 0) THEN
228 ! Coordinate X of the node
229 WRITE(VARNAME,'(a)') 'ereftg_x'
230 TEMP_DOUBLE = XREFTG(IN,1,NC)
231 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
232 ENDIF
233 IF (XREFTG(IN,2,NC) > 0) THEN
234 ! Coordinate Y of the node
235 WRITE(VARNAME,'(a)') 'ereftg_y'
236 TEMP_DOUBLE = XREFTG(IN,2,NC)
237 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
238 ENDIF
239 IF (XREFTG(IN,3,NC) > 0) THEN
240 ! Coordinate Z of the node
241 WRITE(VARNAME,'(a)') 'ereftg_z'
242 TEMP_DOUBLE = XREFTG(IN,3,NC)
243 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
244 ENDIF
245 ENDIF
246 ENDDO
247
248 ENDDO
249 DEALLOCATE(INDEX,ITR1)
250
251 CALL MY_ALLOC(INDEX,2*NUMELS8)
252 CALL MY_ALLOC(ITR1,NUMELS8)
253
254 DO IE=1,NUMELS8
255 ITR1(IE)=IXS(NIXS,IE)
256 ENDDO
257 CALL MY_ORDERS(0,WORK,ITR1,INDEX,NUMELS8,1)
258
259 DO IE = 1,NUMELS8
260 NC=INDEX(IE)
261 ELEM_ID = IXS(NIXS,NC)
262
263 DO IN = 1,8
264 NN = IXS(IN+1,NC)
265 IF (TAGXREF(NN) /= 1) THEN
266 ! Id of the element
267 WRITE(VARNAME,'(a,i0)') 'eref_solid_element_node ',IN
268 TEMP_INT = ELEM_ID
269 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),TEMP_INT,0.0_8)
270 IF (XREFS(IN,1,NC) > 0) THEN
271 ! Coordinate X of the node
272 WRITE(VARNAME,'(a)') 'erefs_x'
273 TEMP_DOUBLE = XREFS(IN,1,NC)
274 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
275 ENDIF
276 IF (XREFS(IN,2,NC) > 0) THEN
277 ! Coordinate Y of the node
278 WRITE(VARNAME,'(a)') 'erefs_y'
279 TEMP_DOUBLE = XREFS(IN,2,NC)
280 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
281 ENDIF
282 IF (XREFS(IN,3,NC) > 0) THEN
283 ! Coordinate Z of the node
284 WRITE(VARNAME,'(a)') 'erefs_z'
285 TEMP_DOUBLE = XREFS(IN,3,NC)
286 CALL QAPRINT(VARNAME(1:LEN_TRIM(VARNAME)),0,TEMP_DOUBLE)
287 ENDIF
288 ENDIF
289 ENDDO
290
291 ENDDO
292 DEALLOCATE(INDEX,ITR1)
293
294 ENDIF
295
296 ENDIF
297
298
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
logical function myqakey(value)
@purpose Check if a given value is part of the values set by env variable Useful to make a condition ...
subroutine qaprint(name, idin, value)
@purpose print one entry to QA extract file example of call for real print CALL QAPRINT('MY_LABEL',...