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