41
42
43
44#include "implicit_f.inc"
45
46
47
48#include "mvsiz_p.inc"
49
50
51
52#include "param_c.inc"
53
54
55
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER NC1(*),NC2(*),IEQUIL(*)
58
60 . f(3,*),forx(*),fory(*),forz(*),xm(3,*),xmom(*),ymom(*),
61 . zmom(*),sti(3,*),stir(3,*),stifn(*),stifr(*),
62 . fx1(mvsiz),fy1(mvsiz),fz1(mvsiz),
63 . fx2(mvsiz),fy2(mvsiz),fz2(mvsiz),
64 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
65 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),
66 . geo(npropg,*),x1(*),x2(*),y1(*),y2(*),
67 . z1(*),z2(*),
68 . exx(mvsiz), eyx(mvsiz), ezx(mvsiz), exy(mvsiz),
69 . eyy(mvsiz), ezy(mvsiz), exz(mvsiz), eyz(mvsiz), ezz(mvsiz)
70
71
72
73 INTEGER I, J
74
76 . mmx, mmy, mmz, xx
77
78
79
80
81 DO i=1,nel
82 fx2(i)=exx(i)*forx(i)+exy(i)*fory(i)+exz(i)*forz(i)
83 fy2(i)=eyx(i)*forx(i)+eyy(i)*fory(i)+eyz(i)*forz(i)
84 fz2(i)=ezx(i)*forx(i)+ezy(i)*fory(i)+ezz(i)*forz(i)
85 fx1(i) = -fx2(i)
86 fy1(i) = -fy2(i)
87 fz1(i) = -fz2(i)
88 ENDDO
89
90
91
92 DO i=1,nel
93 f(1,nc1(i))=f(1,nc1(i))-fx1(i)
94 f(2,nc1(i))=f(2,nc1(i))-fy1(i)
95 f(3,nc1(i))=f(3,nc1(i))-fz1(i)
96 stifn(nc1(i))=stifn(nc1(i))+sti(1,i)
97 f(1,nc2(i))=f(1,nc2(i))-fx2(i)
98 f(2,nc2(i))=f(2,nc2(i))-fy2(i)
99 f(3,nc2(i))=f(3,nc2(i))-fz2(i)
100 stifn(nc2(i))=stifn(nc2(i))+sti(2,i)
101 ENDDO
102
103
104
105 DO i=1,nel
106 mx2(i)=exx(i)*xmom(i)+exy(i)*ymom(i)+exz(i)*zmom(i)
107 my2(i)=eyx(i)*xmom(i)+eyy(i)*ymom(i)+eyz(i)*zmom(i)
108 mz2(i)=ezx(i)*xmom(i)+ezy(i)*ymom(i)+ezz(i)*zmom(i)
109 mx1(i) = -mx2(i)
110 my1(i) = -my2(i)
111 mz1(i) = -mz2(i)
112 ENDDO
113
114 DO i=1,nel
115 IF (iequil(i) == 1) THEN
116 mmx = half*((y2(i)-y1(i))*fz2(i) - (z2(i)-z1(i))*fy2(i))
117 mmy = half*((z2(i)-z1(i))*fx2(i) - (x2(i)-x1(i))*fz2(i))
118 mmz = half*((x2(i)-x1(i))*fy2(i) - (y2(i)-y1(i))*fx2(i))
119 mx1(i) = mx1(i) - mmx
120 my1(i) = my1(i) - mmy
121 mz1(i) = mz1(i) - mmz
122 mx2(i) = mx2(i) - mmx
123 my2(i) = my2(i) - mmy
124 mz2(i) = mz2(i) - mmz
125 xx = (x2(i)-x1(i))*(x2(i)-x1(i))
126 . + (y2(i)-y1(i))*(y2(i)-y1(i))
127 . + (z2(i)-z1(i))*(z2(i)-z1(i))
128 stir(1,i) = stir(1,i) + sti(2,i)*xx
129 stir(2,i) = stir(2,i) + sti(1,i)*xx
130 ENDIF
131 ENDDO
132
133
134
135 DO i=1,nel
136 xm(1,nc1(i))=xm(1,nc1(i))-mx1(i)
137 xm(2,nc1(i))=xm(2,nc1(i))-my1(i)
138 xm(3,nc1(i))=xm(3,nc1(i))-mz1(i)
139 stifr(nc1(i))=stifr(nc1(i))+stir(1,i)
140 xm(1,nc2(i))=xm(1,nc2(i))-mx2(i)
141 xm(2,nc2(i))=xm(2,nc2(i))-my2(i)
142 xm(3,nc2(i))=xm(3,nc2(i))-mz2(i)
143 stifr(nc2(i))=stifr(nc2(i))+stir(2,i)
144 ENDDO
145
146 RETURN