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, I2, J2, I1, J1, II, L, JJ, NN, JJ3,
59 . JJ2, JJ1
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
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 fsn=(fxi*n1+fyi*n2+fzi*n3)
138 fxn=fsn*n1
139 fyn=fsn*n2
140 fzn=fsn*n3
141
142
143
144 fsm = (fxmi*n1+fymi*n2+fzmi*n3)
145 fxmn = fsm*n1
146 fymn = fsm*n2
147 fzmn = fsm*n3
148
149
150
151 fn(j1) = fn(j1) + fxn - fxmn
152 fn(j2) = fn(j2) + fyn - fymn
153 fn(j3) = fn(j3) + fzn - fzmn
154 msmn(j1) = msmn(j1) + xmss
155
156
157
158 fxt = fxi - fxn
159 fyt = fyi - fyn
160 fzt = fzi - fzn
161 fst = sqrt(fxt*fxt+fyt*fyt+fzt*fzt)
162 fac =
min(one,fric*fsn/
max(em30,fst))
163
164
165
166 fxmt = fxmi - fxmn
167 fymt = fymi - fymn
168 fzmt = fzmi - fzmn
169
170
171
172 ft(j1)=ft(j1) + (fxt - fxmt)*fac
173 ft(j2)=ft(j2) + (fyt - fymt)*fac
174 ft(j3)=ft(j3) + (fzt - fzmt)*fac
175 msmt(j1)=msmt(j1) + xmss*fac
176
177 50 CONTINUE
178 60 CONTINUE
179
180 RETURN
subroutine shapeh(h, s, t)