41
42
43
45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "mvsiz_p.inc"
53
54
55
56#include "com01_c.inc"
57#include "com04_c.inc"
58#include "vect01_c.inc"
59#include "sms_c.inc"
60
61
62
63 INTEGER, INTENT(IN) :: IMAS_DS
64 INTEGER, INTENT(IN) :: NINTEMP
65 INTEGER IPART(*), IX1(*), IX2(*), IX3(*), IX4(*)
67 . rho(*), ms(*),x(3,*),v(3,*),partsav(20,*),msnf(*), mss(8,*),
68 . mssf(8,*),wma(*), rhocp(*),mcps(8,*),temp(*),temp0(*),mcp(*),
69 . mssa(*), fill(*), volu(*)
70
71
72
73 INTEGER I,IP,I1,I2,I3,I4,j
75 . xx,yy,zz,xy,yz,zx, mass(mvsiz),rcp,ptg(4,mvsiz)
76
77
78 IF(isms==0)
79 .
CALL s4fraca(x,ix1 ,ix2,ix3 ,ix4 ,ptg ,imas_ds )
80 DO i=lft,llt
81 mass(i)=fill(i)*rho(i)*volu(i)*fourth
82
83 i1 = ix1(i)
84 i2 = ix2(i)
85 i3 = ix3(i)
86 i4 = ix4(i)
87
88 IF(isms==0)THEN
89 mss(1,i)=mass(i)*ptg(1,i)
90 mss(3,i)=mass(i)*ptg(2,i)
91 mss(6,i)=mass(i)*ptg(3,i)
92 mss(5,i)=mass(i)*ptg(4,i)
93 ELSE
94 mss(1,i)=mass(i)
95 mss(3,i)=mass(i)
96 mss(6,i)=mass(i)
97 mss(5,i)=mass(i)
98 END IF
99
100 mss(2,i)=zero
101 mss(4,i)=zero
102 mss(7,i)=zero
103 mss(8,i)=zero
104
105 ip=ipart(i)
106 partsav(1,ip)=partsav(1,ip) + four*mass(i)
107 partsav(2,ip)=partsav(2,ip)
108 . + mass(i)*(x(1,i1)+x(1,i2)+x(1,i3)+x(1,i4))
109 partsav(3,ip)=partsav(3,ip)
110 . + mass(i)*(x(2,i1)+x(2,i2)+x(2,i3)+x(2,i4))
111 partsav(4,ip)=partsav(4,ip)
112 . + mass(i)*(x(3,i1)+x(3,i2)+x(3,i3)+x(3,i4))
113 xx = (x(1,i1)*x(1,i1)+x(1,i2)*x(1,i2)
114 . +x(1,i3)*x(1,i3)+x(1,i4)*x(1,i4))
115 xy = (x(1,i1)*x(2,i1)+x(1,i2)*x(2,i2)
116 . +x(1,i3)*x(2,i3)+x(1,i4)*x(2,i4))
117 yy = (x(2,i1)*x(2,i1)+x(2,i2)*x(2,i2)
118 . +x(2,i3)*x(2,i3)+x(2,i4)*x(2,i4))
119 yz = (x(2,i1)*x(3,i1)+x(2,i2)*x(3,i2)
120 . +x(2,i3)*x(3,i3)+x(2,i4)*x(3,i4))
121 zz = (x(3,i1)*x(3,i1)+x(3,i2)*x(3,i2)
122 . +x(3,i3)*x(3,i3)+x(3,i4)*x(3,i4))
123 zx = (x(3,i1)*x(1,i1)+x(3,i2)*x(1,i2)
124 . +x(3,i3)*x(1,i3)+x(3,i4)*x(1,i4))
125 partsav(5,ip) =partsav(5,ip) + mass(i) * (yy+zz)
126 partsav(6,ip) =partsav(6,ip) + mass(i) * (zz+xx)
127 partsav(7,ip) =partsav(7,ip) + mass(i) * (xx+yy)
128 partsav(8,ip) =partsav(8,ip) - mass(i) * xy
129 partsav(9,ip) =partsav(9,ip) - mass(i) * yz
130 partsav(10,ip)=partsav(10,ip) - mass(i) * zx
131
132 partsav(11,ip)=partsav(11,ip)
133 . + mass(i)*(v(1,i1)+v(1,i2)+v(1,i3)+v(1,i4))
134 partsav(12,ip)=partsav(12,ip)
135 . + mass(i)*(v(2,i1)+v(2,i2)+v(2,i3)+v(2,i4))
136 partsav(13,ip)=partsav(13,ip)
137 . + mass(i)*(v(3,i1)+v(3,i2)+v(3,i3)+v(3,i4))
138 partsav(14,ip)=partsav(14,ip) + half * mass(i) *
139 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1)
140 . +v(1,i2)*v(1,i2)+v(2,i2)*v(2,i2)+v(3,i2)*v(3,i2)
141 . +v(1,i3)*v(1,i3)+v(2,i3)*v(2,i3)+v(3,i3)*v(3,i3)
142 . +v(1,i4)*v(1,i4)+v(2,i4)*v(2,i4)+v(3,i4)*v(3,i4))
143 ENDDO
144
145 IF(irest_mselt /= 0)THEN
146 DO i=lft,llt
147 mssa(nft+i)=mass(i)
148 ENDDO
149 ENDIF
150
151 IF(jale+jeul > 0)THEN
152 DO i=lft,llt
153 i1 = ix1(i)
154 i2 = ix2(i)
155 i3 = ix3(i)
156 i4 = ix4(i)
157 mssf(1,i)=mass(i)
158 mssf(3,i)=mass(i)
159 mssf(6,i)=mass(i)
160 mssf(5,i)=mass(i)
161 mssf(2,i)=zero
162 mssf(4,i)=zero
163 mssf(7,i)=zero
164 mssf(8,i)=zero
165 ENDDO
166 ENDIF
167
168 IF(jthe < 0 ) THEN
169 DO i=lft,llt
170 rcp=fill(i)*rhocp(i)*volu(i)*fourth
171 mcps(1,i) = rcp
172 mcps(3,i) = rcp
173 mcps(5,i) = rcp
174 mcps(6,i) = rcp
175 mcps(2,i) = zero
176 mcps(4,i) = zero
177 mcps(7,i) = zero
178 mcps(8,i) = zero
179 ENDDO
180 ENDIF
181
182 IF(jale > 0 .AND.
ale%GRID%NWALE == 4)
THEN
183 DO i=lft,llt
184 i1 = ix1(i)
185 i2 = ix2(i)
186 i3 = ix3(i)
187 i4 = ix4(i)
188 wma(i1)=wma(i1)+three_half
189 wma(i2)=wma(i2)+three_half
190 wma(i3)=wma(i3)+three_half
191 wma(i4)=wma(i4)+three_half
192 ENDDO
193 ENDIF
194
195 IF(jthe < 0 ) THEN
196 IF(nintemp > 0 ) THEN
197 DO i=lft,llt
198 i1 = ix1(i)
199 i2 = ix2(i)
200 i3 = ix3(i)
201 i4 = ix4(i)
202 IF(temp(i1)== zero) temp(i1) = temp0(i)
203 IF(temp(i2)== zero) temp(i2) = temp0(i)
204 IF(temp(i3)== zero) temp(i3) = temp0(i)
205 IF(temp(i4)== zero) temp(i4) = temp0(i)
206 ENDDO
207 ELSE
208 DO i=lft,llt
209 i1 = ix1(i)
210 i2 = ix2(i)
211 i3 = ix3(i)
212 i4 = ix4(i)
213 temp(i1) = temp0(i)
214 temp(i2) = temp0(i)
215 temp(i3) = temp0(i)
216 temp(i4) = temp0(i)
217 ENDDO
218 ENDIF
219 ENDIF
220
221 RETURN
subroutine s4fraca(x, ix1, ix2, ix3, ix4, ptg, imas_ds)