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