39
40
41
42
43
44! - secondary nodes:
45
46! accumulation
47
48
49
50
51
52
53
54 USE multi_fvm_mod
56 USE elbufdef_mod
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "mvsiz_p.inc"
65
66
67
68#include "param_c.inc"
69#include "com04_c.inc"
70#include "com01_c.inc"
71
72
73
74 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
75 INTEGER JLT, NIN,INTTH,JTASK,IGROUPS(NUMELS),IPARG(NPARG,*),
76 . IX1(MVSIZ),IX2(MVSIZ),IX3(MVSIZ),IX4(MVSIZ),NSVG(MVSIZ),IXS(NIXS,*)
77 my_real,
DIMENSION(2*MVSIZ),
INTENT(in) :: msi
79 . dt, h1(mvsiz),h2(mvsiz),h3(mvsiz),h4(mvsiz),stif(mvsiz),
80 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
81 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
82 . fx3(mvsiz),fy3(mvsiz),fz3(mvsiz),
83 . fx4(mvsiz),fy4(mvsiz),fz4(mvsiz),
84 . fxi(mvsiz),fyi(mvsiz),fzi(mvsiz),
85 . a(3,*), x(3,*), stifn(*), v(3,*)
86 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
87
88
89
90 INTEGER I, J1, IG, ISHIFT, , NG, ILOC, NEL, NFT
91 INTEGER :: SHIFT_FORCE_INT
93
94
95
96
97 DO i=1,jlt
98 j1=ix1(i)
99 a(1,j1)=a(1,j1)+fx1(i)
100 a(2,j1)=a(2,j1)+fy1(i)
101 a(3,j1)=a(3,j1)+fz1(i)
102 stifn(j1) = stifn(j1) + stif(i)*abs(h1(i))
103
104 j1=ix2(i)
105 a(1,j1)=a(1,j1)+fx2(i)
106 a(2,j1)=a(2,j1)+fy2(i)
107 a(3,j1)=a(3,j1)+fz2(i)
108 stifn(j1) = stifn(j1) + stif(i)*abs(h2(i))
109
110 j1=ix3(i)
111 a(1,j1)=a(1,j1)+fx3(i)
112 a(2,j1)=a(2,j1)+fy3(i)
113 a(3,j1)=a(3,j1)+fz3(i)
114 stifn(j1) = stifn(j1) + stif(i)*abs(h3(i))
115
116 j1=ix4(i)
117 a(1,j1)=a(1,j1)+fx4(i)
118 a(2,j1)=a(2,j1)+fy4(i)
119 a(3,j1)=a(3,j1)+fz4(i)
120 stifn(j1) = stifn(j1) + stif(i)*abs(h4(i))
121 ENDDO
122
124 ishift = nodfi*(jtask-1)
125 DO i=1,jlt
126 ig=nsvg(i)
127
128
129 IF (ig > 0) THEN
130 ig = ig - numnod
131 ng = igroups(ig)
132 nft=iparg(3,ng)
133 nel=iparg(2,ng)
134 iloc=ig-nft
135
136 shift_force_int = (jtask-1)*numels
137 multi_fvm%FORCE_INT(1,ig+shift_force_int) = multi_fvm%FORCE_INT(1,ig+shift_force_int) - dt*fxi(i)
138 multi_fvm%FORCE_INT(2,ig+shift_force_int) = multi_fvm%FORCE_INT(2,ig+shift_force_int
139 multi_fvm%FORCE_INT(3,ig+shift_force_int) = multi_fvm%FORCE_INT(3,ig+shift_force_int) - dt*fzi(i)
140
141
142 ELSE
143 ig = - ig
144 afi(nin)%P(1,ig+ishift) =
afi(nin)%P(1,ig+ishift) - dt * fxi(i)
145 afi(nin)%P(2,ig+ishift) =
afi(nin)%P(2,ig+ishift) - dt * fyi(i)
146 afi(nin)%P(3,ig+ishift) =
afi(nin)%P(3,ig+ishift) - dt * fzi(i)
147 ENDIF
148
149 ENDDO
type(real_pointer2), dimension(:), allocatable afi
integer, dimension(:), allocatable nlskyfi