OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
spmd_i21crit.F File Reference
#include "implicit_f.inc"
#include "spmd.inc"
#include "com01_c.inc"
#include "intstamp_c.inc"
#include "task_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine spmd_i21crit (gapinf, vx, vy, vz, dist)

Function/Subroutine Documentation

◆ spmd_i21crit()

subroutine spmd_i21crit ( gapinf,
vx,
vy,
vz,
dist )

Definition at line 33 of file spmd_i21crit.F.

34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37 USE spmd_comm_world_mod, ONLY : spmd_comm_world
38#include "implicit_f.inc"
39C-----------------------------------------------------------------
40C M e s s a g e P a s s i n g
41C-----------------------------------------------
42#include "spmd.inc"
43C-----------------------------------------------
44C C o m m o n B l o c k s
45C-----------------------------------------------
46#include "com01_c.inc"
47#include "intstamp_c.inc"
48#include "task_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
53 . gapinf(*),vx(*),vy(*),vz(*),dist(*)
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57#ifdef MPI
58 INTEGER I, N, MSGTYP, IERROR, LOC_PROC,
59 . SIZE
61 . rbuf(5,nintstamp,nspmd),rrbuf(5,nintstamp)
62C-----------------------------------------------
63C S o u r c e L i n e s
64C-----------------------------------------------
65C
66 loc_proc=ispmd+1
67 SIZE = 5*nintstamp
68C
69 DO n=1,nintstamp
70 rrbuf(1,n) = gapinf(n)
71 rrbuf(2,n) = vx(n)
72 rrbuf(3,n) = vy(n)
73 rrbuf(4,n) = vz(n)
74 rrbuf(5,n) = dist(n)
75 END DO
76C
77 CALL mpi_gather(
78 s rrbuf ,SIZE ,real,
79 r rbuf ,SIZE ,real,it_spmd(1),
80 g spmd_comm_world,ierror)
81 IF(ispmd==0) THEN
82 DO n=1,nintstamp
83 DO i = 2, nspmd
84 IF(rbuf(1,n,i)<rbuf(1,n,1))THEN
85 rbuf(1,n,1) = rbuf(1,n,i)
86 END IF
87 IF(rbuf(2,n,i)>rbuf(2,n,1))THEN
88 rbuf(2,n,1) = rbuf(2,n,i)
89 END IF
90 IF(rbuf(3,n,i)>rbuf(3,n,1))THEN
91 rbuf(3,n,1) = rbuf(3,n,i)
92 END IF
93 IF(rbuf(4,n,i)>rbuf(4,n,1))THEN
94 rbuf(4,n,1) = rbuf(4,n,i)
95 END IF
96 IF(rbuf(5,n,i)<rbuf(5,n,1))THEN
97 rbuf(5,n,1) = rbuf(5,n,i)
98 END IF
99 END DO
100 END DO
101 END IF
102 CALL spmd_rbcast(rbuf,rbuf,SIZE,1,0,2)
103C
104 DO n=1,nintstamp
105 gapinf(n)=rbuf(1,n,1)
106 vx(n) =rbuf(2,n,1)
107 vy(n) =rbuf(3,n,1)
108 vz(n) =rbuf(4,n,1)
109 dist(n) =rbuf(5,n,1)
110 END DO
111C
112#endif
113 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine mpi_gather(sendbuf, cnt, datatype, recvbuf, reccnt, rectype, root, comm, ierr)
Definition mpi.f:56
subroutine spmd_rbcast(tabi, tabr, n1, n2, from, add)
Definition spmd_rbcast.F:62