38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "com04_c.inc"
69
70
71
72 INTEGER JCLAUSE
73 LOGICAL :: IS_AVAILABLE
74 INTEGER, INTENT(IN), DIMENSION(NUMNOD,2) :: ITABM1
75 TYPE (SET_) :: CLAUSE
76 TYPE(SUBMODEL_DATA),INTENT(IN):: LSUBMODEL(NSUBMOD)
77
78
79
80 INTEGER I,J,NINDX,SEG_MAX,NOD_1,NOD_2,NOD_3,NOD_4,NODSYS_1,NODSYS_2,NODSYS_3,NODSYS_4,SEG_ID,LINE_SEG
81 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: BUFSURF
82 INTEGER,EXTERNAL :: SET_USRTOS
83
84
85
86 line_seg = 0
88 ALLOCATE(bufsurf(4,seg_max))
89 nindx = 0
90
91
92
93 DO i=1,seg_max
100 IF (nodsys_1 == 0) THEN
101
102 CALL ancmsg(msgid=1903,anmode=aninfo,msgtype=msgerror,
103 . i1 = clause%SET_ID,
104 . i2=seg_id,
105 . i3=nod_1,
106 . c1=trim(clause%TITLE),
107 . c2='NODE')
108 ELSE
109 nodsys_1 = itabm1(nodsys_1,2)
110 ENDIF
111
113 IF (nodsys_2 == 0) THEN
114
115 CALL ancmsg(msgid=1903,anmode=aninfo,msgtype=msgerror,
116 . i1 = clause%SET_ID,
117 . i2=seg_id,
118 . i3=nod_2,
119 . c1=trim(clause%TITLE),
120 . c2='NODE')
121 ELSE
122 nodsys_2 = itabm1(nodsys_2,2)
123 ENDIF
124
125 line_seg = 0
126 IF (nod_3 == 0 .AND. nod_4 == 0) THEN
127 line_seg = 1
128 nodsys_3 = 0
129 nodsys_4 = 0
130 ELSE
133 ENDIF
134
135 IF (line_seg == 0) then
136 IF (nodsys_3 == 0) THEN
137
138 CALL ancmsg(msgid=1903,anmode=aninfo,msgtype=msgerror,
139 . i1 = clause%SET_ID,
140 . i2=seg_id,
141 . i3=nod_3,
142 . c1=trim(clause%TITLE),
143 . c2='NODE')
144 ELSE
145
146 nodsys_3 = itabm1(nodsys_3,2)
147 ENDIF
148
149 IF (nod_4 == 0) THEN
150
151 nodsys_4 = nodsys_3
152 ELSE IF (nodsys_4 == 0) THEN
153
154 CALL ancmsg(msgid=1903,anmode=aninfo,msgtype=msgerror,
155 . i1 = clause%SET_ID,
156 . i2=seg_id,
157 . i3=nod_4,
158 . c1=trim(clause%TITLE),
159 . c2='NODE')
160 ELSE IF (nodsys_4 /= 0) THEN
161
162 nodsys_4 = itabm1(nodsys_4,2)
163 ENDIF
164
165 ENDIF
166
167 nindx = nindx+1
168 bufsurf(1,nindx) = nodsys_1
169 bufsurf(2,nindx) = nodsys_2
170 bufsurf(3,nindx) = nodsys_3
171 bufsurf(4,nindx) = nodsys_4
172
173 ENDDO
174
175
176
177
178
179
180
181
182 IF (line_seg == 0) THEN
183
184
185 clause%NB_SURF_SEG = nindx
186 ALLOCATE(clause%SURF_NODES(nindx,4))
187 ALLOCATE(clause%SURF_ELTYP(nindx))
188 ALLOCATE(clause%SURF_ELEM(nindx))
189
190 DO i=1,nindx
191 clause%SURF_NODES(i,1) = bufsurf(1,i)
192 clause%SURF_NODES(i,2) = bufsurf(2,i)
193 clause%SURF_NODES(i,3) = bufsurf(3,i)
194 clause%SURF_NODES(i,4) = bufsurf(4,i)
195 clause%SURF_ELTYP(i) = 0
196 clause%SURF_ELEM(i) = 0
197 ENDDO
198
199 ELSE
200
201
202 clause%NB_LINE_SEG = nindx
203 ALLOCATE(clause%LINE_NODES(nindx,2))
204 ALLOCATE(clause%LINE_ELTYP(nindx))
205 ALLOCATE(clause%LINE_ELEM(nindx))
206
207 DO i=1,nindx
208 clause%LINE_NODES(i,1) = bufsurf(1,i)
209 clause%LINE_NODES(i,2) = bufsurf(2,i)
210 clause%LINE_ELTYP(i) = 0
211 clause%LINE_ELEM(i) = 0
212 ENDDO
213
214 ENDIF
215
216
217 DEALLOCATE(bufsurf)
218
219 RETURN
subroutine hm_get_int_array_2indexes(name, ival, index1, index2, is_available, lsubmodel)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
integer function set_usrtos(iu, ipartm1, npart)
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)