35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "com01_c.inc"
43#include "scr08_a_c.inc"
44#include "param_c.inc"
45
46
47
48 INTEGER IRECT(4,*), LMSR(4,*), MSR(*), NSV(*), ILOC(*), IRTL(*),
49 . LCODE(*), ISKEW(*)
50
52 . x(3,*), skew(lskew,*), a(*), fn(*), ft(*), msmn(*), msmt(*),
53 . crst(2,*), ms(*), nor(3,*), fric
54 INTEGER, INTENT(in) :: NMN,NSN
55
56
57
58 INTEGER NIR, I, J, I3, J3, , J2, I1, J1, II, L, JJ, , JJ3,
59 . JJ2, JJ1, ISK, LCOD
60
62 . h(4), n1, n2, n3, aa(3), ss, tt, xmss, fxi, fyi, fzi, fsn,
63 . fxn, fyn, fzn, fxt, fyt, fzt, fst, fac, fxmi, fymi, fzmi,
64 . fsm, fxmn, fymn, fzmn, fxmt, fymt, fzmt, fsmt
65
66
67 IF(n2d==0)THEN
68 nir=4
69 ELSE
70 nir=2
71 ENDIF
72
73 DO 10 i=1,nmn
74 j=msr(i)
75 i3=3*i
76 i2=i3-1
77 i1=i2-1
78 msmn(i1)=ms(j)
79 msmt(i1)=ms(j)
80 fn(i1)=zero
81 fn(i2)=zero
82 fn(i3)=zero
83 ft(i1)=zero
84 ft(i2)=zero
85 ft(i3)=zero
86 10 CONTINUE
87
88 DO 60 ii=1,nsn
89 i=nsv(ii)
90 j=iloc(ii)
91 IF(j<1) GO TO 60
92 l=irtl(ii)
93 DO 20 jj=1,nir
94 nn=irect(jj,l)
95 20 iy(jj)=nn
96
97 ss=crst(1,ii)
98 tt=crst(2,ii)
99 n1=nor(1,ii)
100 n2=nor(2,ii)
101 n3=nor(3,ii)
102
103 i3=3*i
104 i2=i3-1
105 i1=i2-1
106
107 aa(1)=a(i1)
108 aa(2)=a(i2)
109 aa(3)=a(i3)
110
111 IF(n2d==0)THEN
113 ELSE
114 h(1) = half*(one - ss)
115 h(2) = half*(one + ss)
116 ENDIF
117 DO 50 jj=1,nir
118 j3=3*iy(jj)
119 j2=j3-1
120 j1=j2-1
121 jj3=3*msr(iy(jj))
122 jj2=jj3-1
123 jj1=jj2-1
124
125 xmss=ms(i)*h(jj)
126
127
128
129 fxi=aa(1)*xmss
130 fyi=aa(2)*xmss
131 fzi=aa(3)*xmss
132 fxmi=a(jj1)*xmss
133 fymi=a(jj1)*xmss
134 fzmi=a(jj1)*xmss
135
136
137
138 fsn=(fxi*n1+fyi*n2+fzi*n3)
139 fxn=fsn*n1
140 fyn=fsn*n2
141 fzn=fsn*n3
142
143
144
145 fsm = (fxmi*n1+fymi*n2+fzmi*n3)
146 fxmn = fsm*n1
147 fymn = fsm*n2
148 fzmn = fsm*n3
149
150
151
152 fn(j1) = fn(j1) + fxn - fxmn
153 fn(j2) = fn(j2) + fyn - fymn
154 fn(j3) = fn(j3) + fzn - fzmn
155 msmn(j1) = msmn(j1) + xmss
156
157
158
159 fxt = fxi - fxn
160 fyt = fyi - fyn
161 fzt = fzi - fzn
162 fst = sqrt(fxt*fxt+fyt*fyt+fzt*fzt)
163 fac =
min(one,fric*fsn/
max(em30,fst))
164
165
166
167 fxmt = fxmi - fxmn
168 fymt = fymi - fymn
169 fzmt = fzmi - fzmn
170
171
172
173 ft(j1)=ft(j1) + (fxt - fxmt)*fac
174 ft(j2)=ft(j2) + (fyt - fymt)*fac
175 ft(j3)=ft(j3) + (fzt - fzmt)*fac
176 msmt(j1)=msmt(j1) + xmss*fac
177
178 50 CONTINUE
179 60 CONTINUE
180
181 RETURN
subroutine shapeh(h, s, t)