32
33
34
35
36
37
38
39
40
41
42
43
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "mvsiz_p.inc"
54
55
56
57#include "vect01_c.inc"
58#include "com01_c.inc"
59#include "inter22.inc"
60#include "param_c.inc"
61
62
63
64
65
66
67
68
69 INTEGER :: IXS(NIXS,*)
70 my_real :: voln(mvsiz),rho(mvsiz),iad22(*)
71
72
73
74 INTEGER :: I, J, K, IB, MNOD
75 INTEGER :: NVERTEX,INOd,II, NIN
76 my_real :: m_cell(mvsiz),accel(3,mvsiz)
77 LOGICAL :: debug_outp
78 INTEGER :: idbf,idbl , MCELL
79
80
81
83 IF(int22==0) RETURN
84
85
86
87
88 nin = 1
89
90
91
92
93 DO i=lft,llt
94 ib = nint(iad22(i))
95 IF(ib<=0)cycle
96 ii = i+nft
97 nvertex = 0
98 accel(1:3,i) = zero
100
103 DO k=1,mnod
104 j =
brick_list(nin,ib)%POLY(mcell)%ListNodID(k)
105 inod = ixs(1+j,i+nft)
107 nvertex = nvertex + 1
111 ENDDO
112 IF(nvertex>0)THEN
113 accel(1,i) = accel(1,i) / nvertex
114 accel(2,i) = accel(2,i) / nvertex
115 accel(3,i) = accel(3,i) / nvertex
116 ENDIF
117 enddo
118
119 DO i=lft,llt
120 m_cell(i) = rho(i)*voln(i) !check
if voln is
the supercell volume. should be unchanged since december 2015
121 enddo
122
123 DO i=lft,llt
124 ib = nint(iad22(i))
125 IF(ib<=0)cycle
126 ii = i + nft
130 enddo
131
132
134 debug_outp = .false.
136 do i=lft,llt
137 ii = nft + i
139 debug_outp = .true.
140 idbf = i
141 idbl = i
142 EXIT
143 endif
144 enddo
146 debug_outp=.true.
147 idbf = lft
148 idbl = llt
149 endif
150
151 if(debug_outp)then
152
153 print *, " |----alefvm_gravity.F----|"
154 print *, " | THREAD INFORMATION |"
155 print *, " |------------------------|"
156 print *, " NCYCLE =", ncycle
157 do i=idbf,idbl
158 ii = nft + i
159 ib = nint(iad22(i))
160 IF(ib<=0)cycle
161 print *, " brique=", ixs(11,nft+i)
162 write(*,fmt='(A24,1A26)') " ",
163 . "#--------- cell----------#"
164 write (*,fmt='(A,1E26.14)') " Rho =", rho(i)
165 write (*,fmt='(A,1E26.14)') " Vol =", voln(i)
166 write (*,fmt='(A,1E26.14)') " Mass =", m_cell(i)
167 write (*,fmt='(A,1E26.14)') " Accel-X =", accel(1,i
168 write (*,fmt='(A,1E26.14)') " Accel-Y =", accel
169write'(A,1E26.14)') " Accel-Z =", accel(3,i
170 write(*,fmt='(A24,8A26)') " ",
171 . "#--------- nod_1 ---------""#--------- nod_2 ---------",
172 . "#--------- nod_3 ---------","#--------- nod_4 ---------",
173 . "#--------- nod_5 ---------","#--------- nod_6 ---------",
174 . "#--------- nod_7 ---------""#--------- nod_8 --------#"
175 write (*,fmt=
'(A,8E26.14)')
" acc-X =",
alefvm_buffer%VERTEX(1,ixs(2:9,i))
176 write (*,fmt=
'(A,8E26.14)')
" acc-Y =",
alefvm_buffer%VERTEX(2,ixs(2:9,i))
177 write (*,fmt=
'(A,8E26.14)')
" acc-Z =",
alefvm_buffer%VERTEX(3,ixs(2:9,i))
178 print *, " "
179 enddo
180
181 endif
182 endif
183
184
185
186
187 RETURN
end diagonal values have been computed in the(sparse) matrix id.SOL
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param
type(brick_entity), dimension(:,:), allocatable, target brick_list