43
44
45
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "mvsiz_p.inc"
55
56
57
58#include "sms_c.inc"
59
60
61
62 INTEGER IRECT(4,*), NSV(*), CAND_E(*), CAND_N(*),KINET(*),KINI(*),
63 . MSR(*), NODNX_SMS(*), INDEX(*),
64 . JLT, NOINT, IGAP , NSN, , IGSTI
65 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
66 . NSVG(MVSIZ), NSMS(MVSIZ)
67
69 . x(3,*), stf(*), stfn(*), gap_s(*), gap_m(*),
70 . ms(*), v(3,*),
71 . gap, kmin, kmax, gapmax, gapmin
72
74 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
75 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
76 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
77 . xi(mvsiz), yi(mvsiz), zi(mvsiz),
78 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
79 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
80 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
81 . pene(mvsiz),stif(mvsiz) ,gapv(mvsiz),
82 . vxi(mvsiz), vyi(mvsiz), vzi(mvsiz), msi(mvsiz)
83
84
85
86 INTEGER I ,J ,IL, L, IG, ITMP, NN, NI
87
88 IF(igap==0)THEN
89 DO i=1,jlt
90 gapv(i)=gap
91 ENDDO
92 ELSE
93 DO i=1,jlt
94 IF(cand_n(i)<=nsn) THEN
95 gapv(i)=gap_s(cand_n(i))+gap_m(cand_e(i))
96 ELSE
97 gapv(i)=
gapfi(nin)%P(cand_n(i)-nsn)+gap_m(cand_e(i))
98 ENDIF
99 gapv(i)=
min(gapv(i),gapmax)
100 gapv(i)=
max(gapmin,gapv(i))
101 END DO
102 ENDIF
103
104 DO i=1,jlt
105 ni = cand_n(i)
106 IF(ni<=nsn)THEN
107 ig = nsv(ni)
108 nsvg(i) = ig
109
110 kini(i) = kinet(ig)
111 xi(i) = x(1,ig)
112 yi(i) = x(2,ig)
113 zi(i) = x(3,ig)
114 vxi(i) = v(1,ig)
115 vyi(i) = v(2,ig)
116 vzi(i) = v(3,ig)
117 msi(i)= ms(ig)
118 ELSE
119 nn = ni - nsn
120 nsvg(i) = -nn
121 kini(i) =
kinfi(nin)%P(nn)
122 xi(i) =
xfi(nin)%P(1,nn)
123 yi(i) =
xfi(nin)%P(2,nn)
124 zi(i) =
xfi(nin)%P(3,nn)
125 vxi(i)=
vfi(nin)%P(1,nn)
126 vyi(i)=
vfi(nin)%P(2,nn)
127 vzi(i)=
vfi(nin)%P(3,nn)
128 msi(i)=
msfi(nin)%P(nn)
129 END IF
130 END DO
131
132 DO i=1,jlt
133 l=cand_e(i)
134
135 ix1(i)=irect(1,l)
136 ix2(i)=irect(2,l)
137 ix3(i)=irect(3,l)
138 ix4(i)=irect(4,l)
139 END DO
140
141 DO i=1,jlt
142 l=cand_e(i)
143
144 x1(i)=x(1,ix1(i))
145 y1(i)=x(2,ix1(i))
146 z1(i)=x(3,ix1(i))
147
148 x2(i)=x(1,ix2(i))
149 y2(i)=x(2,ix2(i))
150 z2(i)=x(3,ix2(i))
151
152 x3(i)=x(1,ix3(i))
153 y3(i)=x(2,ix3(i))
154 z3(i)=x(3,ix3(i))
155
156 x4(i)=x(1,ix4(i))
157 y4(i)=x(2,ix4(i))
158 z4(i)=x(3,ix4(i))
159
160 END DO
161
162 DO i=1,jlt
163 l = cand_e(i)
164 ni = cand_n(i)
165 IF(ni<=nsn)THEN
166 stif(i)=stf(l)*abs(stfn(ni))
167 ELSE
168 nn = ni - nsn
169 stif(i)=stf(l)*abs(
stifi(nin)%P(nn))
170 END IF
171 ENDDO
172
173 IF(idtmins==2)THEN
174 DO i=1,jlt
175 IF(nsvg(i)>0)THEN
176 nsms(i)=nodnx_sms(nsvg(i))
177 . +nodnx_sms(ix1(i))+nodnx_sms(ix2(i))
178 . +nodnx_sms(ix3(i))+nodnx_sms(ix4(i))
179 ELSE
180 nn=-nsvg(i)
182 . +nodnx_sms(ix1(i))+nodnx_sms(ix2(i))
183 . +nodnx_sms(ix3(i))+nodnx_sms(ix4(i))
184 END IF
185 ENDDO
186 IF(idtmins_int/=0)THEN
187 DO i=1,jlt
188 IF(nsms(i)==0)nsms(i)=-1
189 ENDDO
190 END IF
191 ELSEIF(idtmins_int/=0)THEN
192 DO i=1,jlt
193 nsms(i)=-1
194 ENDDO
195 ENDIF
196
197 RETURN
type(real_pointer2), dimension(:), allocatable vfi
type(real_pointer), dimension(:), allocatable stifi
type(real_pointer), dimension(:), allocatable gapfi
type(int_pointer), dimension(:), allocatable nodnxfi
type(real_pointer), dimension(:), allocatable msfi
type(real_pointer2), dimension(:), allocatable xfi
type(int_pointer), dimension(:), allocatable kinfi