32
33
34
35#include "implicit_f.inc"
36
37
38
39#include "param_c.inc"
40#include "com04_c.inc"
41#include "units_c.inc"
42
43
44
45 INTEGER IGRV(NIGRV,*), IBUF(*), NSNI, FXBNOD(*), FXBGRVI(*), NSN,
46 . NBML, NBME, IFILE, NFX, IRCM0
48 . fxbgrvr(*), fxbmod(*), ms(*), grav(lfacgrv,*), skew(lskew,*)
49
50
51
52 INTEGER ITAG(NUMNOD), I, IADG, NL, NN, IAD, NNG, NLG, LIST(NSN),
53 . IG, ISK, N2, K1, K2, K3, IADM, IIM, II, NNP, IM, IN, IRCM
55 . fgrv(3), vmod(nsn*6), vv(6)
56
57 ircm=ircm0
58 iadg=0
59 nlg=0
61 DO i=1,numnod
62 itag(i)=0
63 ENDDO
66 DO i=1,nn
67 itag(abs(ibuf(iad+i-1)))=1
68 ENDDO
69 nng=0
70 DO i=1,nsn
71 ii=fxbnod(i)
72 IF (itag(ii)>0) THEN
73 nng=nng+1
74 fxbgrvi(iadg+2+nng)=ii
75 ENDIF
76 ENDDO
77 IF (nng>0) THEN
78 nlg=nlg+1
80 fxbgrvi(iadg+2)=nng
81 iadg=iadg+2+nng
82 ENDIF
83 ENDDO
84
85 iad=0
86 iadg=0
87 DO i=1,3
88 fgrv(i)=zero
89 ENDDO
90 DO ig=1,nlg
92 iadg=iadg+2+fxbgrvi(iadg+2)
95 nnp=0
96 IF (isk<=1) THEN
98 ELSE
99 k1=3*n2-2
100 k2=3*n2-1
101 k3=3*n2
102 fgrv(1)=skew(k1,isk)*grav(1,
nl)
103 fgrv(2)=skew(k2,isk)*grav(1,
nl)
104 fgrv(3)=skew(k3,isk)*grav(1,
nl)
105 ENDIF
106 DO i=1,nsn
107 ii=fxbnod(i)
108 IF (itag(ii)>0) THEN
109 nnp=nnp+1
110 list(nnp)=i
111 ENDIF
112 ENDDO
113
114
115
116 DO im=1,nbme
117 IF (ifile==0) THEN
118 iadm=(im-1)*nsn*6
119 DO i=1,nsn*6
120 vmod(i)=fxbmod(iadm+i)
121 ENDDO
122 ELSEIF (ifile==1) THEN
123 iadm=(im-1)*nsni*6
124 DO i=1,nsni*6
125 vmod(i)=fxbmod(iadm+i)
126 ENDDO
127 iadm=nsni*6
128 DO i=1,nsn-nsni
129 ircm=ircm+1
130 READ(ifxm,rec=ircm) (vv(ii),ii=1,6)
131 DO ii=1,6
132 vmod(iadm+ii)=vv(ii)
133 ENDDO
134 iadm=iadm+6
135 ENDDO
136 ENDIF
137 fxbgrvr(iad+im)=zero
138 DO i=1,nnp
139 in=list(i)
140 iadm=(in-1)*6
141 ii=fxbnod(in)
142 fxbgrvr(iad+im)=fxbgrvr(iad+im)+
143 . vmod(iadm+1)*ms(ii)*fgrv(1)+
144 . vmod(iadm+2)*ms(ii)*fgrv(2)+
145 . vmod(iadm+3)*ms(ii)*fgrv(3)
146 ENDDO
147 ENDDO
148
149
150
151 iim=0
152 DO im=1,nbml
153 IF (ifile==0) THEN
154 iadm=(nbme+im-1)*nsn*6
155 DO i=1,nsn*6
156 vmod(i)=fxbmod(iadm+i)
157 ENDDO
158 ELSEIF (ifile==1) THEN
159 iadm=(nbme+im-1)*nsni*6
160 DO i=1,nsni*6
161 vmod(i)=fxbmod(iadm+i)
162 ENDDO
163 iadm=nsni*6
164 DO i=1,nsn-nsni
165 ircm=ircm+1
166 READ(ifxm,rec=ircm) (vv(ii),ii=1,6)
167 DO ii=1,6
168 vmod(iadm+ii)=vv(ii)
169 ENDDO
170 iadm=iadm+6
171 ENDDO
172 ENDIF
173 fxbgrvr(iad+nbme+iim+1)=zero
174 fxbgrvr(iad+nbme+iim+2)=zero
175 fxbgrvr(iad+nbme+iim+3)=zero
176 fxbgrvr(iad+nbme+iim+4)=zero
177 fxbgrvr(iad+nbme+iim+5)=zero
178 fxbgrvr(iad+nbme+iim+6)=zero
179 fxbgrvr(iad+nbme+iim+7)=zero
180 fxbgrvr(iad+nbme+iim+8)=zero
181 fxbgrvr(iad+nbme+iim+9)=zero
182 DO i=1,nnp
183 in=list(i)
184 iadm=(in-1)*6
185 ii=fxbnod(in)
186 fxbgrvr(iad+nbme+iim+1)=fxbgrvr(iad+nbme+iim+1)+
187 . vmod(iadm+1)*ms(ii)*fgrv(1)
188 fxbgrvr(iad+nbme+iim+2)=fxbgrvr(iad+nbme+iim+2)+
189 . vmod(iadm+2)*ms(ii)*fgrv(1)
190 fxbgrvr(iad+nbme+iim+3)=fxbgrvr(iad+nbme+iim+3)+
191 . vmod(iadm+3)*ms(ii)*fgrv(1)
192 fxbgrvr(iad+nbme+iim+4)=fxbgrvr(iad+nbme+iim+4)+
193 . vmod(iadm+1)*ms(ii)*fgrv(2)
194 fxbgrvr(iad+nbme+iim+5)=fxbgrvr(iad+nbme+iim+5)+
195 . vmod(iadm+2)*ms(ii)*fgrv(2)
196 fxbgrvr(iad+nbme+iim+6)=fxbgrvr(iad+nbme+iim+6)+
197 . vmod(iadm+3)*ms(ii)*fgrv(2)
198 fxbgrvr(iad+nbme+iim+7)=fxbgrvr(iad+nbme+iim+7)+
199 . vmod(iadm+1)*ms(ii)*fgrv(3)
200 fxbgrvr(iad+nbme+iim+8)=fxbgrvr(iad+nbme+iim+8)+
201 . vmod(iadm+2)*ms(ii)*fgrv(3)
202 fxbgrvr(iad+nbme+iim+9)=fxbgrvr(iad+nbme+iim+9)+
203 . vmod(iadm+3)*ms(ii)*fgrv(3)
204 ENDDO
205 iim=iim+9
206 ENDDO
207 iad=iad+nbme+9*nbml
208 ENDDO
209
210 RETURN
character *2 function nl()