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