31
32
33
35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "com04_c.inc"
43#include "param_c.inc"
44
45
46
47 INTEGER,INTENT(IN) :: NIXX
48 INTEGER,INTENT(IN) :: IXS(NIXS,NUMELS)
49 INTEGER,INTENT(IN) :: IXC(NIXC,NUMELC)
50 INTEGER,INTENT(IN) :: IXTG(NIXTG,NUMELTG)
51 INTEGER,INTENT(IN) :: IXQ(NIXQ,NUMELQ)
52 INTEGER,INTENT(IN) :: IXP(NIXP,NUMELP)
53 INTEGER,INTENT(IN) :: IXR(NIXR,NUMELR)
54 INTEGER,INTENT(IN) :: IXT(NIXT,NUMELT)
55 INTEGER,INTENT(IN) :: KXX(NIXX,NUMELX)
56 TYPE(SURF_),INTENT(INOUT), DIMENSION(NSURF) :: IGRSURF
57
58
59
60 INTEGER I,J,IAD_L,NN,ELEM,ELEM_G,N1,N2,N3,N4,ITYP,K,IADG2,IADIBUF,IT,IAD
61 INTEGER, DIMENSION(:), ALLOCATABLE :: IBUFSSG_TRI,IWORK,INDEX
62 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ITRI
63
64
65
66 ALLOCATE (iwork(80000))
67
68 DO k=1,nsurf
69 nn = igrsurf(k)%NSEG
70
71 ALLOCATE (ibufssg_tri(nisx*nn))
72 ALLOCATE (itri(2,nn))
73 ALLOCATE (index(3*nn))
74
75 DO i=1,nn
76 ibufssg_tri(6*(i-1)+1) = igrsurf(k)%NODES(i,1)
77 ibufssg_tri(6*(i-1)+2) = igrsurf(k)%NODES(i,2)
78 ibufssg_tri(6*(i-1)+3) = igrsurf(k)%NODES(i,3)
79 ibufssg_tri(6*(i-1)+4) = igrsurf(k)%NODES(i,4)
80 ibufssg_tri(6*(i-1)+5) = igrsurf(k)%ELTYP(i)
81 ibufssg_tri(6*(i-1)+6) = igrsurf(k)%ELEM(i)
82
83 elem = igrsurf(k)%ELEM(i)
84 ityp = igrsurf(k)%ELTYP(i)
85
86
87
88
89
90
91
92
93
94
95
96 itri(1,i) = ityp
97 itri(2,i) = 0
98
99 SELECT CASE (ityp)
100 CASE ( 0 )
101 itri(2,i) = 0
102 CASE ( 1 )
103 itri(2,i) = ixs(nixs,elem)
104 CASE ( 2 )
105 itri(2,i) = ixq(nixq,elem)
106 CASE ( 3 )
107 itri(2,i) = ixc(nixc,elem)
108 CASE ( 4 )
109 itri(2,i) = ixt(nixt,elem)
110 CASE ( 5 )
111 itri(2,i) = ixp(nixp,elem)
112 CASE ( 6 )
113 itri(2,i) = ixr(nixr,elem)
114 CASE ( 7 )
115 itri(2,i) = ixtg(nixtg,elem)
116 CASE ( 8 )
117 itri(2,i) = kxx(nixx,elem)
118 END SELECT
119
120 index(i) = i
121
122 ENDDO
123
125
126 DO i=1,nn
127 it = index(i)
128 igrsurf(k)%NODES(i,1) = ibufssg_tri(6*(it-1)+1)
129 igrsurf(k)%NODES(i,2) = ibufssg_tri(6*(it-1)+2)
130 igrsurf(k)%NODES(i,3) = ibufssg_tri(6*(it-1)+3)
131 igrsurf(k)%NODES(i,4) = ibufssg_tri(6*(it-1)+4)
132 igrsurf(k)%ELTYP(i) = ibufssg_tri(6*(it-1)+5)
133 igrsurf(k)%ELEM(i) = ibufssg_tri(6*(it-1)+6)
134 ENDDO
135
136 DEALLOCATE(ibufssg_tri)
137 DEALLOCATE(itri)
138 DEALLOCATE(index)
139
140 ENDDO
141
142 RETURN
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)