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

Go to the source code of this file.

Functions/Subroutines

subroutine spmd_state_inimap_exch_siz ()

Function/Subroutine Documentation

◆ spmd_state_inimap_exch_siz()

subroutine spmd_state_inimap_exch_siz

Definition at line 35 of file spmd_state_inimap_exch_siz.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43 USE spmd_comm_world_mod, ONLY : spmd_comm_world
44#include "implicit_f.inc"
45#include "spmd.inc"
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "com01_c.inc"
50#include "task_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54C
55C-----------------------------------------------
56C L O C A L V A R I A B L E S
57C-----------------------------------------------
58#ifdef MPI
59 INTEGER STATUS(MPI_STATUS_SIZE),IERROR,MSGOFF
60 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2
61
62 DATA msgoff/10002/
63 DATA msgoff2/10002/
64 INTEGER BUFF_I(4)
65 my_real buff_r(5)
66
67 IF (ispmd/=0) THEN
68 buff_i(1) = state_inimap_buf(1)%NUM_CENTROIDS
69 buff_i(2) = state_inimap_buf(1)%NUM_POINTS
70 buff_i(3) = state_inimap_buf(1)%MLW
71 buff_i(4) = state_inimap_buf(1)%NSUBMAT
72
73 buff_r(1) = state_inimap_buf(1)%LENGTH
74 buff_r(2) = state_inimap_buf(1)%SHIFT_Ny
75 buff_r(3) = state_inimap_buf(1)%SHIFT_Cy
76 buff_r(4) = state_inimap_buf(1)%SHIFT_Nz
77 buff_r(5) = state_inimap_buf(1)%SHIFT_Cz
78
79 msgtyp = msgoff2
80 CALL mpi_send(buff_i, 4,mpi_integer,it_spmd(1),msgtyp,spmd_comm_world,ierror)
81
82 msgtyp = msgoff
83 CALL mpi_send(buff_r, 5, real,it_spmd(1),msgtyp,spmd_comm_world,ierror)
84
85 ELSE
86
87 DO i=2,nspmd
88
89 !Reception du buffer entier des adresses DATA_I
90 msgtyp = msgoff2
91 CALL mpi_probe(it_spmd(i),msgtyp,spmd_comm_world,status,ierror)
92 CALL mpi_get_count(status,mpi_integer,siz,ierror)
93 CALL mpi_recv(buff_i,4,mpi_integer,it_spmd(i),msgtyp,spmd_comm_world,status,ierror)
94
95 ! Reception du buffer flottant double des adresses DATA_I
96 msgtyp = msgoff
97 CALL mpi_recv(buff_r,5,real,it_spmd(i),msgtyp,spmd_comm_world,status,ierror)
98
99 state_inimap_buf(i)%NUM_CENTROIDS = buff_i(1)
100 state_inimap_buf(i)%NUM_POINTS = buff_i(2)
101 state_inimap_buf(i)%MLW = buff_i(3)
102 state_inimap_buf(i)%NSUBMAT = buff_i(4)
103
104 state_inimap_buf(i)%LENGTH = buff_r(1)
105 state_inimap_buf(i)%SHIFT_Ny = buff_r(2)
106 state_inimap_buf(i)%SHIFT_Cy = buff_r(3)
107 state_inimap_buf(i)%SHIFT_Nz = buff_r(4)
108 state_inimap_buf(i)%SHIFT_Cz = buff_r(5)
109
110 ENDDO
111
112 ENDIF
113
114#endif
115 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine mpi_recv(buf, cnt, datatype, source, tag, comm, status, ierr)
Definition mpi.f:461
subroutine mpi_get_count(status, datatype, cnt, ierr)
Definition mpi.f:296
subroutine mpi_send(buf, cnt, datatype, dest, tag, comm, ierr)
Definition mpi.f:480
subroutine mpi_probe(source, tag, comm, status, ierr)
Definition mpi.f:449
type(map_struct), dimension(:), allocatable state_inimap_buf