OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
telesc.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| telesc ../engine/source/constraints/general/cyl_joint/telesc.F
25!||--- called by ------------------------------------------------------
26!|| cjoint ../engine/source/constraints/general/cyl_joint/cjoint.F
27!||--- calls -----------------------------------------------------
28!|| my_barrier ../engine/source/system/machine.F
29!|| sum_6_float ../engine/source/system/parit.F
30!||--- uses -----------------------------------------------------
31!|| joint_mod ../engine/share/modules/joint_mod.F
32!|| spmd_mod ../engine/source/mpi/spmd_mod.F90
33!||====================================================================
34 SUBROUTINE telesc(N_JOINT,A,AR,V,VR,X,FS,MS,IN,ITASK)
35!$COMMENT
36! TELESC description
37! telesc computes the inertia/force/acc/... of the secondary node on each processor
38! then reduces the inertia/force/acc/... and update the force/acc of the main & secondary nodes
39!
40! TELESC organization :
41! - mass / position computations for the secondary nodes
42! --> done by the processor with weight = 1
43! - reduction of mass / position (omp reduction + mpi reduction)
44! - inertia / acc / force computations for the secondary nodes
45! --> done by the processor with weight = 1
46! - reduction of inertia / acc / force (omp reduction + mpi reduction)
47! - all the processor (weight = 1 or 0) computes the acc / ... of the secondary nodes
48!
49!$ENDCOMMENT
50 USE spmd_mod
51 USE joint_mod
52C-----------------------------------------------
53C I m p l i c i t T y p e s
54C-----------------------------------------------
55#include "implicit_f.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER, INTENT(in) :: N_JOINT,ITASK
60C REAL
62 . a(3,*), ar(3,*), v(3,*), vr(3,*), x(3,*), fs(*), ms(*),
63 . in(*)
64C-----------------------------------------------
65C C o m m o n B l o c k s
66C-----------------------------------------------
67#include "com08_c.inc"
68#include "task_c.inc"
69#include "com01_c.inc"
70#include "comlock.inc"
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER NSN, NA, NB, I, N
75C REAL
76 my_real :: n1,n2,n3,s,xx, yy, zz, rr,a0
77 my_real :: masse, iner
78 my_real :: ax,ay,az,axx,ayy,azz
79 my_real :: vx,vy,vz,vxx,vyy,vzz
80 my_real :: xcdg, ycdg, zcdg
81
82 INTEGER :: NUMBER_NODE,NUMBER_NODE_WEIGHT
83 INTEGER :: FIRST,LAST
84
85 REAL(kind=8), dimension(:), ALLOCATABLE :: buf_s,buf_r
86C-----------------------------------------------
87 number_node = cyl_join(n_joint)%NUMBER_NODE
88 number_node_weight = cyl_join(n_joint)%NUMBER_NODE_WEIGHT
89C----------------------------
90C DIRECTION LIBRE
91C----------------------------
92 ! --------------------
93 ! initialization
94 na=cyl_join(n_joint)%MAIN_NODE(1) !NOD(1)
95 nb=cyl_join(n_joint)%MAIN_NODE(2) !NOD(2)
96
97 n1=x(1,nb)-x(1,na)
98 n2=x(2,nb)-x(2,na)
99 n3=x(3,nb)-x(3,na)
100 s=sqrt(n1**2+n2**2+n3**2)
101
102 n1=n1/s
103 n2=n2/s
104 n3=n3/s
105
106 masse=zero
107 iner=zero
108
109 ax= zero
110 ay= zero
111 az= zero
112
113 axx= zero
114 ayy= zero
115 azz= zero
116
117 vx= zero
118 vy= zero
119 vz= zero
120
121 vxx= zero
122 vyy= zero
123 vzz= zero
124
125 xcdg=zero
126 ycdg=zero
127 zcdg=zero
128 ! --------------------
129
130 ! --------------------
131 ! allocation
132 IF(itask==0) THEN
133 ALLOCATE( mass(number_node_weight) )
134 ALLOCATE( x_ms(number_node_weight),y_ms(number_node_weight),z_ms(number_node_weight) )
135
136 ALLOCATE( iner_vec(number_node_weight) )
137 ALLOCATE(ax_ms(number_node_weight),ay_ms(number_node_weight),az_ms(number_node_weight))
138 ALLOCATE(axx_vec(number_node_weight),ayy_vec(number_node_weight),azz_vec(number_node_weight))
139 ALLOCATE(vx_ms(number_node_weight),vy_ms(number_node_weight),vz_ms(number_node_weight))
140 ALLOCATE(vxx_vec(number_node_weight),vyy_vec(number_node_weight),vzz_vec(number_node_weight))
141
142 ALLOCATE( mass_6(6,nthread) )
143 ALLOCATE( x_ms_6(6,nthread),y_ms_6(6,nthread),z_ms_6(6,nthread) )
144 ALLOCATE( iner_6(6,nthread) )
145 ALLOCATE( ax_ms_6(6,nthread),ay_ms_6(6,nthread),az_ms_6(6,nthread) )
146 ALLOCATE( axx_6(6,nthread),ayy_6(6,nthread),azz_6(6,nthread) )
147 ALLOCATE( vx_ms_6(6,nthread),vy_ms_6(6,nthread),vz_ms_6(6,nthread) )
148 ALLOCATE( vxx_6(6,nthread),vyy_6(6,nthread),vzz_6(6,nthread) )
149
150 masse_global=zero
151 iner_global=zero
152
153 ax_global= zero
154 ay_global= zero
155 az_global= zero
156C
157 axx_global= zero
158 ayy_global= zero
159 azz_global= zero
160C
161 vx_global= zero
162 vy_global= zero
163 vz_global= zero
164C
165 vxx_global= zero
166 vyy_global= zero
167 vzz_global= zero
168C
169 xcdg_global=zero
170 ycdg_global=zero
171 zcdg_global=zero
172 ENDIF
173 ! --------------------
174
175 CALL my_barrier
176
177 mass_6(1:6,itask+1) = zero
178 x_ms_6(1:6,itask+1) = zero
179 y_ms_6(1:6,itask+1) = zero
180 z_ms_6(1:6,itask+1) = zero
181
182 iner_6(1:6,itask+1) = zero
183
184 ax_ms_6(1:6,itask+1) = zero
185 ay_ms_6(1:6,itask+1) = zero
186 az_ms_6(1:6,itask+1) = zero
187
188 axx_6(1:6,itask+1) = zero
189 ayy_6(1:6,itask+1) = zero
190 azz_6(1:6,itask+1) = zero
191
192 vx_ms_6(1:6,itask+1) = zero
193 vy_ms_6(1:6,itask+1) = zero
194 vz_ms_6(1:6,itask+1) = zero
195
196 vxx_6(1:6,itask+1) = zero
197 vyy_6(1:6,itask+1) = zero
198 vzz_6(1:6,itask+1) = zero
199
200C----------------------------
201C CALCUL DU CDG + MASSE
202C----------------------------
203! partial reduction of masse / XCDG / YCDG / ZCDG
204! --> done by the processor with weight = 1
205
206 IF(number_node_weight>0) THEN
207 ! --------------------
208 ! loop over the secondary nodes with weight = 1
209 first = 1 + itask * number_node_weight / nthread
210 last = (itask+1) * number_node_weight / nthread
211 DO i=first,last
212 n = cyl_join(n_joint)%NODE_WEIGHT(i) ! NOD(I)
213 mass(i) = ms(n)
214 x_ms(i) = x(1,n)*ms(n)
215 y_ms(i) = x(2,n)*ms(n)
216 z_ms(i) = x(3,n)*ms(n)
217 ENDDO
218 ! --------------------
219 ! parith/on ensures with sum_6_float
220 CALL sum_6_float(first,last,mass,mass_6(1,itask+1),1)
221 CALL sum_6_float(first,last,x_ms,x_ms_6(1,itask+1),1)
222 CALL sum_6_float(first,last,y_ms,y_ms_6(1,itask+1),1)
223 CALL sum_6_float(first,last,z_ms,z_ms_6(1,itask+1),1)
224 ! --------------------
225 ENDIF
226
227 CALL my_barrier
228
229 ! --------------------
230 ! mpi communication : reduction
231 IF(itask==0) THEN
232 ALLOCATE( buf_s(13*6) )
233 ALLOCATE( buf_r(13*6) )
234 buf_s(1:6) = mass_6(1:6,1)
235 buf_s(7:12) = x_ms_6(1:6,1)
236 buf_s(13:18) = y_ms_6(1:6,1)
237 buf_s(19:24) = z_ms_6(1:6,1)
238 IF(nthread>1) THEN
239 DO i=2,nthread
240 buf_s(1:6) = buf_s(1:6) + mass_6(1:6,i)
241 buf_s(7:12) = buf_s(7:12) + x_ms_6(1:6,i)
242 buf_s(13:18) = buf_s(13:18) + y_ms_6(1:6,i)
243 buf_s(19:24) = buf_s(19:24) + z_ms_6(1:6,i)
244 ENDDO
245 ENDIF
246 buf_r(1:24) = zero
247 IF(nspmd>1) THEN
248 CALL spmd_allreduce(buf_s,buf_r,24,spmd_sum,cyl_join(n_joint)%COMM_MPI%COMM)
249 ELSE
250 buf_r(1:24) = buf_s(1:24)
251 ENDIF
252
253 DO i=1,6
254 masse_global = masse_global + buf_r(i)
255 xcdg_global = xcdg_global + buf_r(6+i)
256 ycdg_global = ycdg_global + buf_r(12+i)
257 zcdg_global = zcdg_global + buf_r(18+i)
258 ENDDO
259 ENDIF
260 ! --------------------
261 CALL my_barrier
262 ! --------------------
263 ! load *_GLOBAL global variables into a local one
264 masse = masse_global
265 xcdg = xcdg_global
266 ycdg = ycdg_global
267 zcdg = zcdg_global
268
269 IF (masse>zero) THEN
270 xcdg=xcdg/masse
271 ycdg=ycdg/masse
272 zcdg=zcdg/masse
273 ENDIF
274
275C----------------------------
276C CALCUL FORCES,MOMENTS,INERTIE(PTS ALIGNES SUR N)
277C----------------------------
278
279 ! --------------------
280 ! partial reduction of iner / ax / ay / az / axx / ayy / azz / vxx / vyy / vzz
281 ! VX / VY / VZ --> done by 1 proc with weight = 1
282 IF(number_node_weight>0) THEN
283 ! --------------------
284 ! loop over the secondary nodes with weight = 1
285 first = 1 + itask * number_node_weight / nthread
286 last = (itask+1) * number_node_weight / nthread
287 DO i=first,last !NSN
288 n = cyl_join(n_joint)%NODE_WEIGHT(i) !NOD(I)
289
290 xx=x(1,n)-xcdg
291 yy=x(2,n)-ycdg
292 zz=x(3,n)-zcdg
293
294 rr=n1*xx+n2*yy+n3*zz
295 xx=n1*rr
296 yy=n2*rr
297 zz=n3*rr
298
299 iner_vec(i) = rr**2*ms(n)+in(n)
300
301 ax_ms(i) = a(1,n)*ms(n)
302 ay_ms(i) = a(2,n)*ms(n)
303 az_ms(i) = a(3,n)*ms(n)
304
305 axx_vec(i) = ar(1,n)*in(n)+yy*a(3,n)*ms(n)-zz*a(2,n)*ms(n)
306 ayy_vec(i) = ar(2,n)*in(n)+zz*a(1,n)*ms(n)-xx*a(3,n)*ms(n)
307 azz_vec(i) = ar(3,n)*in(n)+xx*a(2,n)*ms(n)-yy*a(1,n)*ms(n)
308
309 vx_ms(i) = v(1,n)*ms(n)
310 vy_ms(i) = v(2,n)*ms(n)
311 vz_ms(i) = v(3,n)*ms(n)
312!
313 vxx_vec(i) = vr(1,n)*in(n)+yy*v(3,n)*ms(n)-zz*v(2,n)*ms(n)
314 vyy_vec(i) = vr(2,n)*in(n)+zz*v(1,n)*ms(n)-xx*v(3,n)*ms(n)
315 vzz_vec(i) = vr(3,n)*in(n)+xx*v(2,n)*ms(n)-yy*v(1,n)*ms(n)
316 ENDDO
317 ! --------------------
318 ! parith/on ensures with sum_6_float
319 CALL sum_6_float(first,last,iner_vec,iner_6(1,itask+1),1)
320 CALL sum_6_float(first,last,ax_ms,ax_ms_6(1,itask+1),1)
321 CALL sum_6_float(first,last,ay_ms,ay_ms_6(1,itask+1),1)
322 CALL sum_6_float(first,last,az_ms,az_ms_6(1,itask+1),1)
323 CALL sum_6_float(first,last,axx_vec,axx_6(1,itask+1),1)
324 CALL sum_6_float(first,last,ayy_vec,ayy_6(1,itask+1),1)
325 CALL sum_6_float(first,last,azz_vec,azz_6(1,itask+1),1)
326 CALL sum_6_float(first,last,vx_ms,vx_ms_6(1,itask+1),1)
327 CALL sum_6_float(first,last,vy_ms,vy_ms_6(1,itask+1),1)
328 CALL sum_6_float(first,last,vz_ms,vz_ms_6(1,itask+1),1)
329 CALL sum_6_float(first,last,vxx_vec,vxx_6(1,itask+1),1)
330 CALL sum_6_float(first,last,vyy_vec,vyy_6(1,itask+1),1)
331 CALL sum_6_float(first,last,vzz_vec,vzz_6(1,itask+1),1)
332 ! --------------------
333 ENDIF
334 ! --------------------
335 CALL my_barrier
336 ! --------------------
337 ! mpi communication : reduction
338 IF(itask==0) THEN
339 buf_s(1:6) = iner_6(1:6,itask+1)
340 buf_s(7:12) = ax_ms_6(1:6,itask+1)
341 buf_s(13:18) = ay_ms_6(1:6,itask+1)
342 buf_s(19:24) = az_ms_6(1:6,itask+1)
343
344 buf_s(25:30) = axx_6(1:6,itask+1)
345 buf_s(31:36) = ayy_6(1:6,itask+1)
346 buf_s(37:42) = azz_6(1:6,itask+1)
347
348 buf_s(43:48) = vx_ms_6(1:6,itask+1)
349 buf_s(49:54) = vy_ms_6(1:6,itask+1)
350 buf_s(55:60) = vz_ms_6(1:6,itask+1)
351
352 buf_s(61:66) = vxx_6(1:6,itask+1)
353 buf_s(67:72) = vyy_6(1:6,itask+1)
354 buf_s(73:78) = vzz_6(1:6,itask+1)
355
356 buf_r(1:78) = zero
357
358 IF(nthread>1) THEN
359 DO i=2,nthread
360 buf_s(1:6) = buf_s(1:6) + iner_6(1:6,i)
361 buf_s(7:12) = buf_s(7:12) + ax_ms_6(1:6,i)
362 buf_s(13:18) = buf_s(13:18) + ay_ms_6(1:6,i)
363 buf_s(19:24) = buf_s(19:24) + az_ms_6(1:6,i)
364
365 buf_s(25:30) = buf_s(25:30) + axx_6(1:6,i)
366 buf_s(31:36) = buf_s(31:36) + ayy_6(1:6,i)
367 buf_s(37:42) = buf_s(37:42) + azz_6(1:6,i)
368
369 buf_s(43:48) = buf_s(43:48) + vx_ms_6(1:6,i)
370 buf_s(49:54) = buf_s(49:54) + vy_ms_6(1:6,i)
371 buf_s(55:60) = buf_s(55:60) + vz_ms_6(1:6,i)
372
373 buf_s(61:66) = buf_s(61:66) + vxx_6(1:6,i)
374 buf_s(67:72) = buf_s(67:72) + vyy_6(1:6,i)
375 buf_s(73:78) = buf_s(73:78) + vzz_6(1:6,i)
376 ENDDO
377 ENDIF
378
379 IF(nspmd>1) THEN
380 CALL spmd_allreduce(buf_s,buf_r,13*6,spmd_sum,cyl_join(n_joint)%COMM_MPI%COMM)
381 ELSE
382 buf_r(1:78) = buf_s(1:78)
383 ENDIF
384
385 DO i=1,6
386 iner_global = iner_global + buf_r(i)
387 ax_global = ax_global + buf_r(6+i)
388 ay_global = ay_global + buf_r(12+i)
389 az_global = az_global + buf_r(18+i)
390
391 axx_global = axx_global + buf_r(24+i)
392 ayy_global = ayy_global + buf_r(30+i)
393 azz_global = azz_global + buf_r(36+i)
394
395 vx_global = vx_global + buf_r(42+i)
396 vy_global = vy_global + buf_r(48+i)
397 vz_global = vz_global + buf_r(54+i)
398
399 vxx_global = vxx_global + buf_r(60+i)
400 vyy_global = vyy_global + buf_r(66+i)
401 vzz_global = vzz_global + buf_r(72+i)
402 ENDDO
403 ENDIF
404 ! --------------------
405
406 CALL my_barrier
407
408 ! load **_GLOBAL global variables into local ones
409 iner = iner_global
410 ax = ax_global
411 ay = ay_global
412 az = az_global
413
414 axx = axx_global
415 ayy = ayy_global
416 azz = azz_global
417
418 vx = vx_global
419 vy = vy_global
420 vz = vz_global
421
422 vxx = vxx_global
423 vyy = vyy_global
424 vzz = vzz_global
425
426 a0=n1*ax+n2*ay+n3*az
427 ax=ax-n1*a0
428 ay=ay-n2*a0
429 az=az-n3*a0
430 a0=n1*axx+n2*ayy+n3*azz
431 axx=axx-n1*a0
432 ayy=ayy-n2*a0
433 azz=azz-n3*a0
434C
435 a0=n1*vx+n2*vy+n3*vz
436 vx=vx-n1*a0
437 vy=vy-n2*a0
438 vz=vz-n3*a0
439 a0=n1*vxx+n2*vyy+n3*vzz
440 vxx=vxx-n1*a0
441 vyy=vyy-n2*a0
442 vzz=vzz-n3*a0
443 ! --------------------
444 ! main proc updates the FSAV array for /TH
445 IF(cyl_join(n_joint)%PROC_MAIN==ispmd+1) THEN
446#include "lockon.inc"
447 fs(1)=fs(1)+ax*dt12
448 fs(2)=fs(2)+ay*dt12
449 fs(3)=fs(3)+az*dt12
450 fs(4)=fs(4)+axx*dt12
451 fs(5)=fs(5)+ayy*dt12
452 fs(6)=fs(6)+azz*dt12
453#include "lockoff.inc"
454 ENDIF
455 ! --------------------
456 IF (masse>zero) THEN
457 ax=ax/masse
458 ay=ay/masse
459 az=az/masse
460 ENDIF
461 IF (iner>zero) THEN
462 axx=axx/iner
463 ayy=ayy/iner
464 azz=azz/iner
465 ENDIF
466 IF (masse>zero) THEN
467 vx=vx/masse
468 vy=vy/masse
469 vz=vz/masse
470 ENDIF
471 IF (iner>zero) THEN
472 vxx=vxx/iner
473 vyy=vyy/iner
474 vzz=vzz/iner
475 ENDIF
476C----------------------------
477C CALCUL ACCELERATIONS
478C----------------------------
479
480 ! --------------------
481 ! loop over the secondary nodes, done by every proc (weight= 1 or 0)
482 first = 1 + itask * number_node / nthread
483 last = (itask+1) * number_node / nthread
484 DO i=first,last !NSN
485 n = cyl_join(n_joint)%NODE(i) !NOD(I)
486C
487 xx=x(1,n)-xcdg
488 yy=x(2,n)-ycdg
489 zz=x(3,n)-zcdg
490C
491 rr=n1*xx+n2*yy+n3*zz
492 xx=n1*rr
493 yy=n2*rr
494 zz=n3*rr
495C
496 a0=n1*a(1,n)+n2*a(2,n)+n3*a(3,n)
497 a(1,n)=ax-yy*azz+zz*ayy+n1*a0
498 a(2,n)=ay-zz*axx+xx*azz+n2*a0
499 a(3,n)=az-xx*ayy+yy*axx+n3*a0
500C
501 a0=n1*ar(1,n)+n2*ar(2,n)+n3*ar(3,n)
502 ar(1,n)=axx+n1*a0
503 ar(2,n)=ayy+n2*a0
504 ar(3,n)=azz+n3*a0
505C
506 a0=n1*v(1,n)+n2*v(2,n)+n3*v(3,n)
507 v(1,n)=vx-yy*vzz+zz*vyy+n1*a0
508 v(2,n)=vy-zz*vxx+xx*vzz+n2*a0
509 v(3,n)=vz-xx*vyy+yy*vxx+n3*a0
510C
511 a0=n1*vr(1,n)+n2*vr(2,n)+n3*vr(3,n)
512 vr(1,n)=vxx+n1*a0
513 vr(2,n)=vyy+n2*a0
514 vr(3,n)=vzz+n3*a0
515 ENDDO
516 ! --------------------
517
518 CALL my_barrier
519
520 ! --------------------
521 ! deallocation
522 IF(itask==0) THEN
523 DEALLOCATE( mass )
524 DEALLOCATE( x_ms,y_ms,z_ms )
525
526 DEALLOCATE( iner_vec )
527 DEALLOCATE(ax_ms,ay_ms,az_ms)
528 DEALLOCATE(axx_vec,ayy_vec,azz_vec)
529 DEALLOCATE(vx_ms,vy_ms,vz_ms)
530 DEALLOCATE(vxx_vec,vyy_vec,vzz_vec)
531
532 DEALLOCATE( mass_6 )
533 DEALLOCATE( x_ms_6,y_ms_6,z_ms_6 )
534 DEALLOCATE( iner_6 )
535 DEALLOCATE( ax_ms_6,ay_ms_6,az_ms_6 )
536 DEALLOCATE( axx_6,ayy_6,azz_6 )
537 DEALLOCATE( vx_ms_6,vy_ms_6,vz_ms_6 )
538 DEALLOCATE( vxx_6,vyy_6,vzz_6 )
539
540 DEALLOCATE( buf_s,buf_r)
541 ENDIF
542 ! --------------------
543
544 CALL my_barrier
545C
546 RETURN
547 END
#define my_real
Definition cppsort.cpp:32
end diagonal values have been computed in the(sparse) matrix id.SOL
for(i8=*sizetab-1;i8 >=0;i8--)
real(kind=8), dimension(:,:), allocatable, save azz_6
Definition joint_mod.F:85
real(kind=8), dimension(:,:), allocatable, save vyy_6
Definition joint_mod.F:87
real(kind=8), dimension(:,:), allocatable, save mass_6
Definition joint_mod.F:81
real(kind=8), dimension(:,:), allocatable, save vy_ms_6
Definition joint_mod.F:86
real(kind=8), dimension(:,:), allocatable, save az_ms_6
Definition joint_mod.F:84
real(kind=8), dimension(:,:), allocatable, save ayy_6
Definition joint_mod.F:85
real(kind=8), dimension(:,:), allocatable, save vzz_6
Definition joint_mod.F:87
real(kind=8), dimension(:,:), allocatable, save ax_ms_6
Definition joint_mod.F:84
real(kind=8), dimension(:,:), allocatable, save y_ms_6
Definition joint_mod.F:82
real(kind=8), dimension(:,:), allocatable, save vz_ms_6
Definition joint_mod.F:86
real(kind=8), dimension(:,:), allocatable, save ay_ms_6
Definition joint_mod.F:84
type(joint_type), dimension(:), allocatable cyl_join
Definition joint_mod.F:61
real(kind=8), dimension(:,:), allocatable, save vx_ms_6
Definition joint_mod.F:86
real(kind=8), dimension(:,:), allocatable, save vxx_6
Definition joint_mod.F:87
real(kind=8), dimension(:,:), allocatable, save iner_6
Definition joint_mod.F:83
real(kind=8), dimension(:,:), allocatable, save x_ms_6
Definition joint_mod.F:82
real(kind=8), dimension(:,:), allocatable, save axx_6
Definition joint_mod.F:85
real(kind=8), dimension(:,:), allocatable, save z_ms_6
Definition joint_mod.F:82
subroutine sum_6_float(jft, jlt, f, f6, n)
Definition parit.F:64
subroutine my_barrier
Definition machine.F:31
subroutine telesc(n_joint, a, ar, v, vr, x, fs, ms, in, itask)
Definition telesc.F:35