40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
66 USE reader_old_mod , ONLY : line
67 USE user_id_mod , ONLY : id_limit
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) ::UNITAB
96 INTEGER,INTENT(IN)::ITAB(*)
97 INTEGER,INTENT(IN)::ITABM1(*)
98 INTEGER,INTENT(IN)::IPART(LIPART1,*)
99 INTEGER,INTENT(IN)::IGEO(NPROPGI,*)
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,N,MID,PID,,NDEGEN,JC,STAT,
109 . IFLAGUNIT,FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,ISHXFEM,IOUTN,IERROR,
110 CHARACTER MESS*40, MESS2*40
111 CHARACTER(LEN=NCHARTITLE) :: TITR
113 INTEGER, DIMENSION(:), ALLOCATABLE :: SUB_QUAD,UID_QUAD
114
115
116
117 INTEGER NINTRN
118 INTEGER USR2SYS
119 DATA mess/'2d quad elements definition '/
120 DATA MESS2/'2d quad elements selection
for th plot
'/
121
122
123
124
125
126 ALLOCATE (SUB_QUAD(NUMELQ),STAT=stat)
127 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,MSGTYPE=MSGERROR,C1='sub_quad')
128 ALLOCATE (UID_QUAD(NUMELQ),STAT=stat)
129 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,MSGTYPE=MSGERROR,C1='uid_quad')
130 SUB_QUAD(1:NUMELQ) = 0
131 UID_QUAD(1:NUMELQ) = 0
132 NDEGEN = 0
133 INDEX_PART = 1
134 UID = -1
135
136
137
138 CALL CPP_QUAD_READ(IXQ,NIXQ,IPARTQ,SUB_QUAD,UID_QUAD)
139
140
141
142 DO I=1,NUMELQ
143
144
145
146 IF(SUB_QUAD(I) /= 0)THEN
147.AND. IF(UID_QUAD(I) == 0 LSUBMODEL(SUB_QUAD(I))%UID /= 0) UID_QUAD(I) = LSUBMODEL(SUB_QUAD(I))%UID
148 ENDIF
149
150
151
152 IF(UID_QUAD(I) /= UID )THEN
153 UID = UID_QUAD(I)
154 IFLAGUNIT = 0
155 DO J=1,UNITAB%NUNITS
156 IF (UNITAB%UNIT_ID(J) == UID) THEN
157 FAC_L = UNITAB%FAC_L(J)
158 IFLAGUNIT = 1
159 ENDIF
160 ENDDO
161.AND. IF (UID/=0IFLAGUNIT==0) THEN
162 CALL ANCMSG(MSGID=643,ANMODE=ANINFO,MSGTYPE=MSGERROR,I1=UID,C1='/quad')
163 ENDIF
164 ENDIF
165
166
167
168 IF( ipart(4,index_part) /= ipartq(i) )THEN
169 DO j=1,npart
170 IF(ipart(4,j)== ipartq(i) ) index_part = j
171 ENDDO
172 ENDIF
173 IF(ipart(4,index_part) /= ipartq(i)) THEN
174 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,c1=
"QUAD",i1=ipartq(i),i2=ipartq(i),prmod=msg_cumu)
175 ENDIF
176 ipartq(i) = index_part
177
178 mt=ipart(1,index_part)
179 ipid=ipart(2,index_part)
180 ixq(1,i)=mt
181 ixq(6,i)=ipid
182 IF (ixq(nixq,i)>id_limit%GLOBAL)THEN
183 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,i1=ixq(nixq,i),c1=line,c2=
'/QUAD')
184 ELSEIF (nadmesh/=0.AND.ixq(nixq,i)>id_limit%ADMESH)THEN
185 CALL ancmsg(msgid=1069,anmode=aninfo,msgtype=msgerror,i1=ixq(nixq,i),c1=line,c2=
'/QUAD')
186 ENDIF
187 IF(( ixq(4,i) == ixq(5,i)) .OR. ( ixq(5,i) == 0 )) THEN
188 ndegen = ndegen + 1
189 CALL ancmsg(msgid=430,msgtype=msgwarning,i1=ixq(nixq,i),anmode=aninfo_blind_2,prmod=msg_cumu)
190 ENDIF
191
192 DO j=2,5
193 ixq(j,i)=
usr2sys(ixq(j,i),itabm1,mess,
id)
194 CALL anodset(ixq(j,i), check_shell)
195 ENDDO
196
197 ENDDO
198
199 IF(ALLOCATED(sub_quad)) DEALLOCATE(sub_quad)
200 IF(ALLOCATED(uid_quad)) DEALLOCATE(uid_quad)
201
202 i1=1
203 i2=min0(50,numelq)
204
205 IF(ipri>=5)THEN
206 90 WRITE (iout,'(//A/A//A,A/)')titre(110),titre(111),titre(102),titre(105)
207 DO i=i1,i2
208 mid = ipm(1,ixq(1,i))
209 pid = igeo(1,ixq(6,i))
210 WRITE (iout,fmt='(8(I10,1X),1PG20.13,1X,1PG20.13)') ixq(nixq,i),i,mid,pid,(itab(ixq(j,i)),j=2,5)
211 ENDDO
212 IF(i2==numelq)GOTO 200
213 i1=i1+50
214 i2=min0(i2+50,numelq)
215 GOTO 90
216 ENDIF
217
218 200 CONTINUE
219
220 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,prmod=msg_print)
221
222
223
224 ids = 79
225 i = 0
226 j = 0
227 CALL vdouble(ixq(nixq,1),nixq,numelq,mess,0,bid)
228 ids = 17
229
230 RETURN
231
void anodset(int *id, int *type)
for(i8=*sizetab-1;i8 >=0;i8--)
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)