64#include "implicit_f.inc"
73 LOGICAL :: IS_AVAILABLE
74 INTEGER,
INTENT(IN),
DIMENSION(NUMNOD,2) :: ITABM1
76 TYPE(),
INTENT(IN):: LSUBMODEL()
80 INTEGER I,J,NINDX,SEG_MAX,,NOD_2,NOD_3
81INTEGER,
ALLOCATABLE,
DIMENSION(:,:) :: BUFSURF
82 INTEGER,
EXTERNAL :: SET_USRTOS
99 nodsys_1 = set_usrtos(nod_1,itabm1,numnod)
100 IF (nodsys_1 == 0)
THEN
102 CALL ancmsg(msgid=1903,anmode=aninfo,msgtype=msgerror,
103 . i1 = clause%SET_ID,
106 . c1=trim(clause%TITLE),
109 nodsys_1 = itabm1(nodsys_1,2)
112 nodsys_2 = set_usrtos(nod_2,itabm1,numnod)
113 IF (nodsys_2 == 0)
THEN
115 CALL ancmsg(msgid=1903,anmode=aninfo,msgtype=msgerror,
116 . i1 = clause%SET_ID,
119 . c1=trim(clause%TITLE),
122 NODSYS_2 = ITABM1(NODSYS_2,2)
126.AND.
IF (NOD_3 == 0 NOD_4 == 0) THEN
127 LINE_SEG = 1 ! Line SEG
131 NODSYS_3 = SET_USRTOS(NOD_3,ITABM1,NUMNOD)
132 NODSYS_4 = SET_USRTOS(NOD_4,ITABM1,NUMNOD)
135 IF (LINE_SEG == 0) THEN! Surf SEG --> continue Node check existence
136 IF (NODSYS_3 == 0) THEN
137 ! Node was not found. Issue an error.
138 CALL ANCMSG(MSGID=1903,ANMODE=ANINFO,MSGTYPE=MSGERROR,
139 . I1 = CLAUSE%SET_ID,
142 . C1=TRIM(CLAUSE%TITLE),
146 NODSYS_3 = ITABM1(NODSYS_3,2)
150 ! correction to allow for 3 noded surface (triangle)
152 ELSE IF (NODSYS_4 == 0) THEN
153 ! Node was not found. Issue an error.
154 CALL ANCMSG(MSGID=1903,ANMODE=ANINFO,MSGTYPE=MSGERROR,
155 . I1 = CLAUSE%SET_ID,
158 . C1=TRIM(CLAUSE%TITLE),
160 ELSE IF (NODSYS_4 /= 0) THEN
162 NODSYS_4 = ITABM1(NODSYS_4,2)
165 ENDIF ! IF (LINE_SEG == 0)
167 NINDX = NINDX+1 ! nb of CLAUSE SEGs
168 BUFSURF(1,NINDX) = NODSYS_1
169 BUFSURF(2,NINDX) = NODSYS_2
170 BUFSURF(3,NINDX) = NODSYS_3
171 BUFSURF(4,NINDX) = NODSYS_4
173 ENDDO ! DO I=1,SEG_MAX
178 !------------------------------------!
179 ! create SURF clause or LINE clause !
180 !------------------------------------!
182 IF (LINE_SEG == 0) THEN
184 ! SURF seg (4-node SEG)
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))
191 CLAUSE%SURF_NODES(I,1) = BUFSURF(1,I) ! N1
192 CLAUSE%SURF_NODES(I,2) = BUFSURF(2,I) ! N2
193 CLAUSE%SURF_NODES(I,3) = BUFSURF(3,I) ! N3
194 CLAUSE%SURF_NODES(I,4) = BUFSURF(4,I) ! N4
195 CLAUSE%SURF_ELTYP(I) = 0 ! ELTYP
196 CLAUSE%SURF_ELEM(I) = 0 ! ELEM
201 ! LINE seg (2-node SEG)
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))
208 CLAUSE%LINE_NODES(I,1) = BUFSURF(1,I) ! N1
209 CLAUSE%LINE_NODES(I,2) = BUFSURF(2,I) ! N2
210 CLAUSE%LINE_ELTYP(I) = 0 ! ELTYP
211 CLAUSE%LINE_ELEM(I) = 0 ! ELEM
214 ENDIF ! IF (LINE_SEG == 0)
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)