35
36
37
39 USE my_alloc_mod
40 use element_mod , only : nixc,nixtg
41
42
43
44#include "implicit_f.inc"
45
46
47
48 INTEGER IXC(NIXC,*), IXTG(NIXTG,*),
49 . SH4TREE(KSH4TREE,*), (KSH3TREE,*)
50
52 . a(3,*), diag_sms(*)
53
54
55
56#include "com04_c.inc"
57#include "param_c.inc"
58#include "remesh_c.inc"
59
60
61
62 INTEGER N, NN, LEVEL
63 INTEGER SON,M1,M2,M3,M4,MC,N1,N2,N3,N4
64 INTEGER,DIMENSION(:),ALLOCATABLE :: LKINNOD
66 . a1,a2,a3,a4,ac
67
68 CALL my_alloc(lkinnod,numnod)
69 lkinnod=0
70 DO level=levelmax-1,0,-1
71
74
75 son=sh4tree(2,n)
76
77 n1=ixc(2,n)
78 n2=ixc(3,n)
79 n3=ixc(4,n)
80 n4=ixc(5,n)
81
82 mc=ixc(4,son)
83 ac= fourth*diag_sms(mc)
84 diag_sms(n1)=diag_sms(n1)+ac
85 diag_sms(n2)=diag_sms(n2)+ac
86 diag_sms(n3)=diag_sms(n3)+ac
87 diag_sms(n4)=diag_sms(n4)+ac
88
89 diag_sms(mc)=zero
90 lkinnod(mc)=1
91
92 m1=ixc(3,son )
93 IF(lkinnod(m1)==0)THEN
94 lkinnod(m1)=1
95 a1=half*diag_sms(m1)
96 diag_sms(n1)=diag_sms(n1)+a1
97 diag_sms(n2)=diag_sms(n2)+a1
98 diag_sms(m1)=zero
99 END IF
100
101 m2=ixc(4,son+1)
102 IF(lkinnod(m2)==0)THEN
103 lkinnod(m2)=1
104 a2=half*diag_sms(m2)
105 diag_sms(n2)=diag_sms(n2)+a2
106 diag_sms(n3)=diag_sms(n3)+a2
107 diag_sms(m2)=zero
108 END IF
109
110 m3=ixc(5,son+2)
111 IF(lkinnod(m3)==0)THEN
112 lkinnod(m3)=1
113 a3=half*diag_sms(m3)
114 diag_sms(n3)=diag_sms(n3)+a3
115 diag_sms(n4)=diag_sms(n4)+a3
116 diag_sms(m3)=zero
117 END IF
118
119 m4=ixc(2,son+3)
120 IF(lkinnod(m4)==0)THEN
121 lkinnod(m4)=1
122 a4=half*diag_sms(m4)
123 diag_sms(n1)=diag_sms(n1)+a4
124 diag_sms(n4)=diag_sms(n4)+a4
125 diag_sms(m4)=zero
126 END IF
127
128 END DO
129
130
133
134 son=sh3tree(2,n)
135
136 n1=ixtg(2,n)
137 n2=ixtg(3,n)
138 n3=ixtg(4,n)
139
140 m1=ixtg(4,son+3)
141 IF(lkinnod(m1)==0)THEN
142 lkinnod(m1)=1
143 a1=half*diag_sms(m1)
144 diag_sms(n1)=diag_sms(n1)+a1
145 diag_sms(n2)=diag_sms(n2)+a1
146 diag_sms(m1)=zero
147 END IF
148
149 m2=ixtg(2,son+3)
150 IF(lkinnod(m2)==0)THEN
151 lkinnod(m2)=1
152 a2=half*diag_sms(m2)
153 diag_sms(n2)=diag_sms(n2)+a2
154 diag_sms(n3)=diag_sms(n3)+a2
155 diag_sms(m2)=zero
156 END IF
157
158 m3=ixtg(3,son+3)
159 IF(lkinnod(m3)==0)THEN
160 lkinnod(m3)=1
161 a3=half*diag_sms(m3)
162 diag_sms(n3)=diag_sms(n3)+a3
163 diag_sms(n1)=diag_sms(n1)+a3
164 diag_sms(m3)=zero
165 END IF
166
167 END DO
168
169 END DO
170 DEALLOCATE(lkinnod)
171 RETURN
integer, dimension(:), allocatable lsh4kin
integer, dimension(:), allocatable lsh3kin
integer, dimension(:), allocatable psh4kin
integer, dimension(:), allocatable psh3kin