34
35
36
37#include "implicit_f.inc"
38
39
40
41 INTEGER NSN, NMN,
42 . IRECT(4,*), MSR(*), NSV(*), IRTL(*), WEIGHT(*),TAGKINE(*)
43 INTEGER ILEV,IREF
45 . a(*), crst(2,*), ms(*), stifn(*), mmass(*),wa(3,*),
46 . skew(lskew,*),tetm(*),tets(*)
47
48
49
50#include "com01_c.inc"
51#include "param_c.inc"
52
53
54
55 INTEGER NIR, I, J, I3, J3, I2, J2, I1, J1, II, L, JJ,JL
57 . h(4), xmsj, ss, tt, xmsi, fxi, fyi, fzi,sp,sm,tp,tm,
58 . p(9),cst,sst,fxr, fyr, fzr
59
60 nir=2
61 IF(n2d==0)nir=4
62 IF(ilev==1)THEN
63 DO i=1,9
64 p(i)=skew(i,iref+1)
65 ENDDO
66 DO ii=1,nmn
67 wa(1,ii)=zero
68 wa(2,ii)=zero
69 wa(3,ii)=zero
70 ENDDO
71 ENDIF
72
73
74 DO ii=1,nmn
75 j=msr(ii)
76 mmass(ii)=ms(j)
77 ENDDO
78
79 DO ii=1,nsn
80 IF(tagkine(ii)>0)THEN
81 i=nsv(ii)
82 l=irtl(ii)
83 ss=crst(1,ii)
84 tt=crst(2,ii)
85 i3=3*i
86 i2=i3-1
87 i1=i2-1
88 xmsi=ms(i)
89 fxi=a(i1)
90 fyi=a(i2)
91 fzi=a(i3)
92 sp=one+ss
93 sm=one-ss
94 tp=fourth*(one+tt)
95 tm=fourth*(one-tt)
96 h(1)=tm*sm
97 h(2)=tm*sp
98 h(3)=tp*sp
99 h(4)=tp*sm
100 IF(ilev==1)THEN
101 IF(tets(ii)<10000. )THEN
102 cst=cos(tets(ii))
103 sst=sin(tets(ii))
104 fxr=fxi*p(1)+fyi*p(2)+fzi*p(3)
105 fyr=fxi*p(4)+fyi*p(5)+fzi*p(6)
106 fzr=fxi*p(7)+fyi*p(8)+fzi*p(9)
107 fxi=fxr
108 fyi= fyr*cst+fzr*sst
109 fzi= -fyr*sst+fzr*cst
110 DO jj=1,nir
111 jl=irect(jj,l)
112 j=msr(jl)
113 wa(1,jl)=wa(1,jl)+fxi*h(jj)
114 wa(2,jl)=wa(2,jl)+fyi*h(jj)
115 wa(3,jl)=wa(3,jl)+fzi*h(jj)
116 ms(j)=ms(j)+xmsi*h(jj)
117 stifn(j)=stifn(j)+stifn(i)*h(jj)
118 ENDDO
119 ELSE
120 DO jj=1,nir
121 j=msr(irect(jj,l))
122 j3=3*j
123 j2=j3-1
124 j1=j2-1
125 a(j1)=a(j1)+fxi*h(jj)
126 a(j2)=a(j2)+fyi*h(jj)
127 a(j3)=a(j3)+fzi*h(jj)
128 ms(j)=ms(j)+xmsi*h(jj)
129 stifn(j)=stifn(j)+stifn(i)*h(jj)
130 ENDDO
131 ENDIF
132 ELSE
133 DO jj=1,nir
134 j=msr(irect(jj,l))
135 j3=3*j
136 j2=j3-1
137 j1=j2-1
138 a(j1)=a(j1)+fxi*h(jj)
139 a(j2)=a(j2)+fyi*h(jj)
140 a(j3)=a(j3)+fzi*h(jj)
141 ms(j)=ms(j)+xmsi*h(jj)
142 stifn(j)=stifn(j)+stifn(i)*h(jj)
143
144 ENDDO
145 ENDIF
146 stifn(i)=em20
147 a(i1)=zero
148 a(i2)=zero
149 a(i3)=zero
150 ENDIF
151 ENDDO
152
153 IF(ilev==1 )THEN
154 DO ii=1,nmn
155 cst=cos(tetm(ii))
156 sst=sin(tetm(ii))
157 fxr=wa(1,ii)
158 fyr=wa(2,ii)*cst-wa(3,ii)*sst
159 fzr=wa(2,ii)*sst+wa(3,ii)*cst
160 wa(1,ii)=fxr*p(1)+fyr*p(4)+fzr*p(7)
161 wa(2,ii)=fxr*p(2)+fyr*p(5)+fzr*p(8)
162 wa(3,ii)=fxr*p(3)+fyr*p(6)+fzr*p(9)
163 j=msr(ii)
164 j3=3*j
165 j2=j3-1
166 j1=j2-1
167 a(j1)=a(j1)+wa(1,ii)
168 a(j2)=a(j2)+wa(2,ii)
169 a(j3)=a(j3)+wa(3,ii)
170 ENDDO
171 ENDIF
172
173 RETURN