32
33
34
35#include "implicit_f.inc"
36#include "comlock.inc"
37
38
39
40#include "com01_c.inc"
41#include "com04_c.inc"
42#include "task_c.inc"
43#include "ige3d_c.inc"
44
45
46
47 INTEGER NSN,NMN,ITASK,NSV(*),MSR(*), NIN
49 . x(3,*), v(3,*), xsav(3,*), stfn(*),
50 . xslv_g(*),xmsr_g(*), vslv_g(*), vmsr_g(*)
51
52
53
54 INTEGER NSNF,NMNF,NSNL,NMNL,I, J, II, N
56 . xslv(6),xmsr(6), vslv(6), vmsr(6)
57
58
59
60
61
62
63
64 DO i = 1, 3
65 xslv(i) = -ep30
66 xslv(3+i) = ep30
67 xmsr(i) = -ep30
68 xmsr(3+i) = ep30
69 vslv(i) = -ep30
70 vslv(3+i) = ep30
71 vmsr(i) = -ep30
72 vmsr(3+i) = ep30
73 END DO
74 nsnf = 1 + itask*nsn / nthread
75 nsnl = (itask+1)*nsn / nthread
76 nmnf = 1 + itask*nmn / nthread
77 nmnl = (itask+1)*nmn / nthread
78
79
80
81 IF(nsn+nmn < numnod+numfakenodigeo)THEN
82
83
84
85 DO i=1,nsn
86 j=nsv(i)
87 IF(stfn(i)/=zero) THEN
88
89 xslv(1)=
max(xslv(1),x(1,j)-xsav(1,i))
90 xslv(2)=
max(xslv(2),x(2,j)-xsav(2,i))
91 xslv(3)=
max(xslv(3),x(3,j)-xsav(3,i))
92 xslv(4)=
min(xslv(4),x(1,j)-xsav(1,i))
93 xslv(5)=
min(xslv(5),x(2,j)-xsav(2,i))
94 xslv(6)=
min(xslv(6),x(3,j)-xsav(3,i))
95
96 vslv(1)=
max(vslv(1),v(1,j))
97 vslv(2)=
max(vslv(2),v(2,j))
98 vslv(3)=
max(vslv(3),v(3,j))
99 vslv(4)=
min(vslv(4),v(1,j))
100 vslv(5)=
min(vslv(5),v(2,j))
101 vslv(6)=
min(vslv(6),v(3,j))
102
103 ENDIF
104 END DO
105
106
107
108 DO i=1,nmn
109 ii = i+nsn
110 j=msr(i)
111 IF(j>0) THEN
112 xmsr(1)=
max(xmsr(1),x(1,j)-xsav(1,ii))
113 xmsr(2)=
max(xmsr(2),x(2,j)-xsav(2,ii))
114 xmsr(3)=
max(xmsr(3),x(3,j)-xsav(3,ii))
115 xmsr(4)=
min(xmsr(4),x(1,j)-xsav(1,ii))
116 xmsr(5)=
min(xmsr(5),x(2,j)-xsav(2,ii))
117 xmsr(6)=
min(xmsr(6),x(3,j)-xsav(3,ii))
118
119 vmsr(1)=
max(vmsr(1),v(1,j))
120 vmsr(2)=
max(vmsr(2),v(2,j))
121 vmsr(3)=
max(vmsr(3),v(3,j))
122 vmsr(4)=
min(vmsr(4),v(1,j))
123 vmsr(5)=
min(vmsr(5),v(2,j))
124 vmsr(6)=
min(vmsr(6),v(3,j))
125 ENDIF
126 END DO
127
128 ELSE
129
130
131 DO i=1,nsn
132 j=nsv(i)
133 IF(stfn(i)/=zero) THEN
134
135 xslv(1)=
max(xslv(1),x(1,j)-xsav(1,j))
136 xslv(2)=
max(xslv(2),x(2,j)-xsav(2,j))
137 xslv(3)=
max(xslv(3),x(3,j)-xsav(3,j))
138 xslv(4)=
min(xslv(4),x(1,j)-xsav(1,j))
139 xslv(5)=
min(xslv(5),x(2,j)-xsav(2,j))
140 xslv(6)=
min(xslv(6),x(3,j)-xsav(3,j))
141
142 vslv(1)=
max(vslv(1),v(1,j))
143 vslv(2)=
max(vslv(2),v(2,j))
144 vslv(3)=
max(vslv(3),v(3,j))
145 vslv(4)=
min(vslv(4),v(1,j))
146 vslv(5)=
min(vslv(5),v(2,j))
147 vslv(6)=
min(vslv(6),v(3,j))
148
149 ENDIF
150 END DO
151
152
153
154 DO i=1,nmn
155 j=msr(i)
156 IF(j>0) THEN
157 xmsr(1)=
max(xmsr(1),x(1,j)-xsav(1,j))
158 xmsr(2)=
max(xmsr(2),x(2,j)-xsav(2,j))
159 xmsr(3)=
max(xmsr(3),x(3,j)-xsav(3,j))
160 xmsr(4)=
min(xmsr(4),x(1,j)-xsav(1,j))
161 xmsr(5)=
min(xmsr(5),x(2,j)-xsav(2,j))
162 xmsr(6)=
min(xmsr(6),x(3,j)-xsav(3,j))
163
164 vmsr(1)=
max(vmsr(1),v(1,j))
165 vmsr(2)=
max(vmsr(2),v(2,j))
166 vmsr(3)=
max(vmsr(3),v(3,j))
167 vmsr(4)=
min(vmsr(4),v(1,j))
168 vmsr(5)=
min(vmsr(5),v(2,j))
169 vmsr(6)=
min(vmsr(6),v(3,j))
170 ENDIF
171 ENDDO
172
173 ENDIF
174
175
176 IF(nspmd==1) THEN
177
178 DO i=1,nsn
179 stfn(i)=
max(stfn(i),zero)
180 ENDDO
181
182 ENDIF
183
184
185
186 xslv_g(1)=
max(xslv_g(1),xslv(1))
187 xslv_g(2)=
max(xslv_g(2),xslv(2))
188 xslv_g(3)=
max(xslv_g(3),xslv(3))
189 xslv_g(4)=
min(xslv_g(4),xslv(4))
190 xslv_g(5)=
min(xslv_g(5),xslv(5))
191 xslv_g(6)=
min(xslv_g(6),xslv(6))
192 xmsr_g(1)=
max(xmsr_g(1),xmsr(1))
193 xmsr_g(2)=
max(xmsr_g(2),xmsr(2))
194 xmsr_g(3)=
max(xmsr_g(3),xmsr(3))
195 xmsr_g(4)=
min(xmsr_g(4),xmsr(4))
196 xmsr_g(5)=
min(xmsr_g(5),xmsr(5))
197 xmsr_g(6)=
min(xmsr_g(6),xmsr(6))
198
199 vslv_g(1)=
max(vslv_g(1),vslv(1))
200 vslv_g(2)=
max(vslv_g(2),vslv(2))
201 vslv_g(3)=
max(vslv_g(3),vslv(3))
202 vslv_g(4)=
min(vslv_g(4),vslv(4))
203 vslv_g(5)=
min(vslv_g(5),vslv(5))
204 vslv_g(6)=
min(vslv_g(6),vslv(6))
205 vmsr_g(1)=
max(vmsr_g(1),vmsr(1))
206 vmsr_g(2)=
max(vmsr_g(2),vmsr(2))
207 vmsr_g(3)=
max(vmsr_g(3),vmsr(3))
208 vmsr_g(4)=
min(vmsr_g(4),vmsr(4))
209 vmsr_g(5)=
min(vmsr_g(5),vmsr(5))
210 vmsr_g(6)=
min(vmsr_g(6),vmsr(6))
211
212
213
214 RETURN