34
35
36
37 USE elbufdef_mod
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "com01_c.inc"
47#include "param_c.inc"
48
49
50
51 INTEGER FLAG_SLIPRING_UPDATE,FLAG_RETRACTOR_UPDATE
53
54
55
56 INTEGER I,J,L,NODE2,ANCHOR_NODE
57 my_real buf_exch(n_anchor_remote_send,4)
58
59
60 l = 1
61
62
63
64
65
66
67 DO i=1,nslipring
70 IF (abs(
slipring(i)%FRAM(j)%UPDATE)==2) flag_slipring_update = flag_slipring_update + 2
71 anchor_node =
slipring(i)%FRAM(j)%ANCHOR_NODE
73 a(1,anchor_node)=a(1,anchor_node)+a(1,node2)
74 a(2,anchor_node)=a(2,anchor_node)+a(2,node2)
75 a(3,anchor_node)=a(3,anchor_node)+a(3,node2)
76 stifn(anchor_node)=stifn(anchor_node)+stifn(node2)
77 IF (
slipring(i)%FRAM(j)%N_REMOTE_PROC > 0)
THEN
78
79 buf_exch(l,1) = a(1,node2)
80 buf_exch(l,2) = a(2,node2)
81 buf_exch(l,3) = a(3,node2)
82 buf_exch(l,4) = stifn(node2)
83 l = l + 1
84 ENDIF
85 a(1,node2)=zero
86 a(2,node2)=zero
87 a(3,node2)=zero
88 ENDDO
89 ENDDO
90
91
92
93
94
95 DO i=1,nretractor
96 IF (abs(
retractor(i)%UPDATE)==2) flag_retractor_update = flag_retractor_update + 2
99 a(1,anchor_node)=a(1,anchor_node)+a(1,node2)
100 a(2,anchor_node)=a(2,anchor_node)+a(2,node2)
101 a(3,anchor_node)=a(3,anchor_node)+a(3,node2)
102 stifn(anchor_node)=stifn(anchor_node)+stifn(node2)
104
105 buf_exch(l,1) = a(1,node2)
106 buf_exch(l,2) = a(2,node2)
107 buf_exch(l,3) = a(3,node2)
108 buf_exch(l,4) = stifn(node2)
109 l = l + 1
110 ENDIF
111 a(1,node2)=zero
112 a(2,node2)=zero
113 a(3,node2)=zero
114 ENDDO
115
116
117
118
119
120
121
122 IF (nspmd > 1) THEN
124 ENDIF
125
126
127
128
129
130
131 RETURN
132
type(retractor_struct), dimension(:), allocatable retractor
type(slipring_struct), dimension(:), allocatable slipring
subroutine spmd_exch_a_seatbelt(a, stifn, buf_exch)