39#include "implicit_f.inc"
43 INTEGER OPT_A,SET_ID,ELTYP
48 INTEGER I,K,J1,J2,SIZEMAX,NSEG,IEXT,NSEG_EDGE_EXT,
49 . NSEG_EDGE_ALL,NSEG_SURF,LINE_NENTITY
50 INTEGER IWORK(70000),IPERM(4)
54 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: INDEX,IW1,IW2,IW5,IW6
55 INTEGER ,
DIMENSION(:,:),
ALLOCATABLE :: ITRI,LINE_ORD
57 sizemax = clause%NB_LINE_SEG + 4*clause%NB_SURF_SEG
59 IF (sizemax == 0)
RETURN
63 ALLOCATE(line_ord(line_nentity,sizemax))
64 ALLOCATE(itri(3,sizemax))
65 ALLOCATE(index(2*sizemax))
67 ALLOCATE(iw1(4*sizemax))
68 ALLOCATE(iw2(4*sizemax))
69 ALLOCATE(iw5(4*sizemax
70 ALLOCATE(iw6(4*sizemax))
76 line_ord(1,i) = clause%LINE_NODES(i,1)
77 line_ord(2,i) = clause%LINE_NODES(i,2)
78 line_ord(3,i) = clause%LINE_ELTYP(i)
79 line_ord(4,i) = clause%LINE_ELEM(i)
84 nseg_surf = clause%NB_SURF_SEG
85 IF (nseg_surf > 0)
THEN
86!***********************************
101 IF (clause%SURF_NODES(i,j2) /= 0 .AND.
102 . clause%SURF_NODES(i,j1) > clause%SURF_NODES(i,j2))
THEN
104 iw1(k)=clause%SURF_NODES(i,j2)
105 iw2(k)=clause%SURF_NODES(i,j1)
106 iw5(k)=clause%SURF_ELTYP(i)
107 iw6(k)=clause%SURF_ELEM(i)
108 ELSEIF (clause%SURF_NODES(i,j1) /= 0 .AND.
109 . clause%SURF_NODES(i,j1) < clause%SURF_NODES(i,j2))
THEN
111 iw1(k)=clause%SURF_NODES(i,j1)
112 iw2(k)=clause%SURF_NODES(i,j2)
113 iw5(k)=clause%SURF_ELTYP(i)
114 iw6(k)=clause%SURF_ELEM(i)
127 IF (nseg_edge_all > 0)
THEN
132 line_ord(1,nseg) = iw1(index(1))
133 line_ord(2,nseg) = iw2(index(1))
134 line_ord(3,nseg) = iw5(index(1))
135 line_ord(4,nseg) = iw6(index(1))
137 IF (iw1(index(i-1)) /= iw1(index(i)).OR.
138 . iw2(index(i-1)) /= iw2(index(i)))
THEN
140 line_ord(1,nseg) = iw1(index(i))
141 line_ord(2,nseg) = iw2(index(i))
142 line_ord(3,nseg) = iw5(index(i))
143 line_ord(4,nseg) = iw6(index(i))
157 itri(1,i) = line_ord(1,i)
158 itri(2,i) = line_ord(2,i)
159 itri(3,i) = line_ord(4,i) ! elem_id
161 CALL my_orders(0,iwork,itri,index,nseg,3)
165 IF (
ALLOCATED(clause%LINE_NODES))
DEALLOCATE(clause%LINE_NODES)
166 IF (
ALLOCATED(clause%LINE_ELTYP))
DEALLOCATE(clause%LINE_ELTYP)
167 IF (
ALLOCATED(clause%LINE_ELEM))
DEALLOCATE(clause%LINE_ELEM)
169 clause%NB_LINE_SEG = nseg
170 CALL my_alloc(clause%LINE_NODES,nseg,2)
171 CALL my_alloc(clause%LINE_ELTYP,nseg)
172 CALL my_alloc(clause%LINE_ELEM,nseg)
175 clause%LINE_NODES(i,1) = line_ord(1,index(i))
176 clause%LINE_NODES(i,2) = line_ord(2,index(i))
177 clause%LINE_ELTYP(i) = line_ord(3,index(i))
178 clause%LINE_ELEM(i) = line_ord(4,index(i))
181 IF (
ALLOCATED(line_ord))
DEALLOCATE(line_ord)
182 IF (
ALLOCATED(itri))
DEALLOCATE(itri)
183 IF (
ALLOCATED(index))
DEALLOCATE(index)
184 IF (
ALLOCATED(iw1))
DEALLOCATE(iw1)
185 IF (
ALLOCATED(iw2))
DEALLOCATE(iw2)
186 IF (
ALLOCATED(iw5))
DEALLOCATE(iw5)
187 IF (
ALLOCATED(iw6))
DEALLOCATE(iw6)