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

Go to the source code of this file.

Functions/Subroutines

subroutine spmd_wrt_crk_xyznor (icrk, xnorm, num)

Function/Subroutine Documentation

◆ spmd_wrt_crk_xyznor()

subroutine spmd_wrt_crk_xyznor ( integer icrk,
xnorm,
integer num )

Definition at line 33 of file spmd_wrt_crk_xyznor.F.

34C-----------------------------------------------
35 USE crackxfem_mod
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39 USE spmd_comm_world_mod, ONLY : spmd_comm_world
40#include "implicit_f.inc"
41#include "spmd.inc"
42C-----------------------------------------------
43C C o m m o n B l o c k s
44C-----------------------------------------------
45#include "com01_c.inc"
46#include "scr14_c.inc"
47#include "task_c.inc"
48#include "param_c.inc"
49C-----------------------------------------------
50C D u m m y A r g u m e n t s
51C-----------------------------------------------
52 INTEGER ICRK,NUM
54 . xnorm(3,*)
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,EMPL
60 INTEGER SIZ,MSGTYP,I,K,NG,NREC,MSGOFF2,SI,MSGTYP2,SIZ0
61C
62 INTEGER,DIMENSION(:,:),ALLOCATABLE :: RNGLOB,IBUF
63
64C Tableau utilise par proc 0
66 . s3000,s,xn1,xn2,xn3,ixnn
67C-----------------------------------------------
68 DATA msgoff/7066/
69 DATA msgoff2/7067/
70C-----------------------------------------------
71 ALLOCATE(ibuf(4,ncrknodg))
72 ALLOCATE(rnglob(3,num))
73C-----------------------------------------------
74
75 s3000 = three1000
76 ixnn = s3000
77 IF(fmt_ani==4)ixnn=0
78C---
79 IF (ispmd/=0) THEN
80
81 siz = 0
82 DO i=1,crknod(icrk)%CRKNUMNODS
83 empl = crknod(icrk)%XFENODES(i)
84C S = SQRT(XNORM(1,I)**2 + XNORM(2,I)**2 + XNORM(3,I)**2)
85 s = zero
86 xn1 = 0
87 xn2 = 0
88 xn3 = ixnn
89 siz = siz + 1
90 ibuf(1,siz) = crknod(icrk)%XFECRKNODID(i)
91 ibuf(2,siz) = xn1
92 ibuf(3,siz) = xn2
93 ibuf(4,siz) = xn3
94 END DO
95C
96C a cause de la version simple precision, on ne peux pas metre l'entier
97C dans le buffer flottant car on n a que 2puiss 24 bits dispo ~ 16 Million
98C de noeuds au max
99
100 msgtyp = msgoff2
101 CALL mpi_send(ibuf,4*siz,mpi_integer,it_spmd(1),msgtyp,
102 . spmd_comm_world,ierror)
103
104 ELSE
105
106C proc 0
107 siz0 = 0
108 DO i=1,crknod(icrk)%CRKNUMNODS
109 empl = crknod(icrk)%XFENODES(i)
110c NG = CRKNOD(ICRK)%XFECRKNODID(I)
111C
112 siz0 = siz0 + 1
113c S = SQRT(XNORM(1,I)**2 + XNORM(2,I)**2 + XNORM(3,I)**2)
114 s = zero
115 xn1 = 0
116 xn2 = 0
117 xn3 = ixnn
118c RNGLOB(1,NG) = XN1
119c RNGLOB(2,NG) = XN2
120c RNGLOB(3,NG) = XN3
121 rnglob(1,siz0) = xn1
122 rnglob(2,siz0) = xn2
123 rnglob(3,siz0) = xn3
124 END DO
125
126 DO i=2,nspmd
127
128 msgtyp = msgoff2
129
130 CALL mpi_probe(it_spmd(i),msgtyp,
131 . spmd_comm_world,status,ierror)
132 CALL mpi_get_count(status,mpi_integer,siz,ierror)
133
134 CALL mpi_recv(ibuf,siz,mpi_integer,it_spmd(i),msgtyp,
135 . spmd_comm_world,status,ierror)
136
137 nrec = siz / 4
138
139
140 DO k = 1, nrec
141c NG = IBUF(1,K)
142c RNGLOB(1,NG) = IBUF(2,K)
143c RNGLOB(2,NG) = IBUF(3,K)
144c RNGLOB(3,NG) = IBUF(4,K)
145 siz0 = siz0 + 1
146 rnglob(1,siz0) = ibuf(2,k)
147 rnglob(2,siz0) = ibuf(3,k)
148 rnglob(3,siz0) = ibuf(4,k)
149 ENDDO
150 ENDDO
151
152C DO I=1,NCRKNODG
153 DO i=1,siz0
154 CALL write_s_c(rnglob(1,i),1)
155 CALL write_s_c(rnglob(2,i),1)
156 CALL write_s_c(rnglob(3,i),1)
157 END DO
158 END IF
159
160 DEALLOCATE(ibuf)
161 DEALLOCATE(rnglob)
162C
163#endif
164 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(xfem_nodes_), dimension(:), allocatable crknod
void write_s_c(int *w, int *len)