39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
65 USE reader_old_mod , ONLY : line
66 USE user_id_mod , ONLY : id_limit
67 use element_mod , only : nixq
68
69
70
71
72
73
74
75
76#include "implicit_f.inc"
77
78
79
80#include "analyse_name.inc"
81
82
83
84#include "scr17_c.inc"
85#include "com04_c.inc"
86#include "units_c.inc"
87#include "scr03_c.inc"
88#include "param_c.inc"
89#include "titr_c.inc"
90#include "remesh_c.inc"
91
92
93
94
95 TYPE (UNIT_TYPE_),INTENT(IN) ::
96 INTEGER,INTENT(IN)::ITAB(*)
97 INTEGER,INTENT(IN)::ITABM1(*)
98 INTEGER,INTENT(IN)::IPART(LIPART1,*)
99 INTEGER,INTENT(IN)::IGEO(,*)
100 INTEGER,INTENT(IN)::IPM(NPROPMI,*)
101 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(NSUBMOD)
102
103 INTEGER,INTENT(OUT)::IXQ(NIXQ,*)
104 INTEGER,INTENT(OUT)::IPARTQ(*)
105
106
107
108 INTEGER I, J, I1, I2, ID,IDS,IPID,MT,MID,PID,UID,NDEGEN,STAT,
109 . IFLAGUNIT,INDEX_PART
110 CHARACTER *40, MESS2*40
112 INTEGER, DIMENSION(:), ALLOCATABLE :: SUB_QUAD,UID_QUAD
113
114
115
116 INTEGER USR2SYS
117 DATA mess/'2D QUAD ELEMENTS DEFINITION '/
118 DATA mess2/'2D QUAD ELEMENTS SELECTION FOR TH PLOT '/
119
120
121
122
123
124 ALLOCATE (sub_quad(numelq),stat=stat)
125 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'SUB_QUAD')
126 ALLOCATE (uid_quad(numelq),stat=stat)
127 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'UID_QUAD')
128 sub_quad(1:numelq) = 0
129 uid_quad(1:numelq) = 0
130 ndegen = 0
131 index_part = 1
132 uid = -1
133
134
135
136 CALL cpp_quad_read(ixq,nixq,ipartq,sub_quad,uid_quad)
137
138
139
140 DO i=1,numelq
141
142
143
144 IF(sub_quad(i) /= 0)THEN
145 IF(uid_quad(i) == 0 .AND. lsubmodel(sub_quad(i))%UID /= 0) uid_quad(i) = lsubmodel(sub_quad(i))%UID
146 ENDIF
147
148
149
150 IF(uid_quad(i) /= uid )THEN
151 uid = uid_quad(i)
152 iflagunit = 0
153 DO j=1,unitab%NUNITS
154 IF (unitab%UNIT_ID(j) == uid) THEN
155 fac_l = unitab%FAC_L(j)
156 iflagunit = 1
157 ENDIF
158 ENDDO
159 IF (uid/=0.AND.iflagunit==0) THEN
160 CALL ancmsg(msgid=643,anmode=aninfo,msgtype=msgerror,i1=uid,c1=
'/QUAD')
161 ENDIF
162 ENDIF
163
164
165
166 IF( ipart(4,index_part) /= ipartq(i) )THEN
167 DO j=1,npart
168 IF(ipart(4,j)== ipartq(i) ) index_part = j
169 ENDDO
170 ENDIF
171 IF(ipart(4,index_part) /= ipartq(i)) THEN
172 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,c1=
"QUAD",i1=ipartq
173 ENDIF
174 ipartq(i) = index_part
175
176 mt=ipart(1,index_part)
177 ipid=ipart(2,index_part)
178 ixq(1,i)=mt
179 ixq(6,i)=ipid
180 IF (ixq(nixq,i)>id_limit%GLOBAL)THEN
181 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,i1=ixq(nixq,i),c1=line,c2=
'/QUAD')
182 ELSEIF (nadmesh/=0.AND.ixq(nixq,i)>id_limit%ADMESH)THEN
183 CALL ancmsg(msgid=1069,anmode=aninfo,msgtype=msgerror,i1=ixq(nixq,i),c1=line,c2=
'/QUAD')
184 ENDIF
185 IF(( ixq(4,i) == ixq(5,i)) .OR. ( ixq(5,i) == 0 )) THEN
186 ndegen = ndegen + 1
187 CALL ancmsg(msgid=430,msgtype=msgwarning,i1=ixq(nixq,i),anmode=aninfo_blind_2,prmod=msg_cumu)
188 ENDIF
189
190 DO j=2,5
191 ixq(j,i)=
usr2sys(ixq(j,i),itabm1,mess,
id)
192 CALL anodset(ixq(j,i), check_shell)
193 ENDDO
194
195 ENDDO
196
197 IF(ALLOCATED(sub_quad)) DEALLOCATE(sub_quad)
198 IF(ALLOCATED(uid_quad)) DEALLOCATE(uid_quad)
199
200 i1=1
201 i2=min0(50,numelq)
202
203 IF(ipri>=5)THEN
204 90 WRITE (iout,'(//A/A//A,A/)')titre(110),titre(111),titre(102),titre(105)
205 DO i=i1,i2
206 mid = ipm(1,ixq(1,i))
207 pid = igeo(1,ixq(6,i))
208 WRITE (iout,fmt='(8(I10,1X),1PG20.13,1X,1PG20.13)') ixq(nixq,i),i,mid,pid,(itab(ixq(j,i
209 ENDDO
210 IF(i2==numelq)GOTO 200
211 i1=i1+50
212 i2=min0(i2+50,numelq)
213 GOTO 90
214 ENDIF
215
216 200 CONTINUE
217
218 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,prmod=msg_print)
219
220
221
222 ids = 79
223 i = 0
224 j = 0
225 CALL vdouble(ixq(nixq,1),nixq,numelq,mess,0,bid)
226 ids = 17
227
228 RETURN
229
void anodset(int *id, int *type)
integer, parameter nchartitle
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
integer function usr2sys(iu, itabm1, mess, id)
subroutine vdouble(list, ilist, nlist, mess, ir, rlist)