37
38
39
40 USE elbufdef_mod
41 use element_mod , only : nixc,nixtg
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "com01_c.inc"
50#include "param_c.inc"
51#include "units_c.inc"
52#include "task_c.inc"
53#include "scr14_c.inc"
54#include "scr16_c.inc"
55
56
57
58 INTEGER SIZP0
59 INTEGER IXC(NIXC,*),IXTG(NIXTG,*),
60 . IPARG(NPARG,*),IPM(NPROPMI,*),IGEO(NPROPGI,*),
61 . IPARTC(*), IPARTTG(*), IPART_STATE(*),
62 . STAT_INDXC(*), STAT_INDXTG(*)
63 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
64 double precision WA(*),WAP0(*)
65
66
67
68 INTEGER I,J,K,N,JJ,LEN,NG, NEL, NFT, ITY, LFT,
69 . LLT, MLW, IPRT,ID,IOFF
70 CHARACTER*100 LINE
71 TYPE(G_BUFEL_) ,POINTER :: GBUF
72
73
74
75 jj = 0
76 IF(stat_numelc==0) GOTO 200
77
78 DO ng=1,ngroup
79 ity =iparg(5,ng)
80 IF(ity==3) THEN
81 gbuf => elbuf_tab(ng)%GBUF
82 mlw =iparg(1,ng)
83 nel =iparg(2,ng)
84 nft =iparg(3,ng)
85
86 lft =1
87 llt =nel
88 DO i=lft,llt
89 n = i + nft
90
91 iprt=ipartc(n)
92 IF(ipart_state(iprt)==0)cycle
93
94 jj = jj + 1
95 wa(jj) = ixc(nixc,n)
96 jj = jj + 1
97 IF (mlw /= 0 .AND. mlw /= 13) THEN
98 wa(jj) = gbuf%OFF(i)
99 ELSE
100 wa(jj) = zero
101 ENDIF
102 ENDDO
103 ENDIF
104 ENDDO
105
106 200 CONTINUE
107
108 IF(nspmd == 1)THEN
109 len=jj
110 DO j=1,len
111 wap0(j)=wa(j)
112 END DO
113 ELSE
114 len = 0
116 END IF
117
118 IF(ispmd==0.AND.len>0) THEN
119
120 IF (izipstrs == 0) THEN
121 WRITE(iugeo,'(A)')'/INISHE/OFF'
122 WRITE(iugeo,'(A)')
123 . '# SHELLID IOFF'
124 ELSE
125 WRITE(line,'(A)')'/INISHE/OFF'
127 WRITE(line,'(A)')
128 . '# SHELLID IOFF'
130 ENDIF
131 DO n=1,stat_numelc_g
132 k=stat_indxc(n)
133 j=2*(k-1)
135 ioff=nint(wap0(j+2))
136 IF (izipstrs == 0) THEN
137 WRITE(iugeo,
'(2I10)')
id,ioff
138 ELSE
139 WRITE(line,
'(2I10)')
id,ioff
141 ENDIF
142 END DO
143 ENDIF
144
145
146
147
148 jj = 0
149 IF(stat_numeltg==0) GOTO 300
150
151
152 DO ng=1,ngroup
153 ity =iparg(5,ng)
154 IF(ity==7) THEN
155 gbuf => elbuf_tab(ng)%GBUF
156 mlw =iparg(1,ng)
157 nel =iparg(2,ng)
158 nft =iparg(3,ng)
159
160 lft =1
161 llt =nel
162 DO i=lft,llt
163 n = i + nft
164
165 iprt=iparttg(n)
166 IF(ipart_state(iprt)==0)cycle
167
168 jj = jj + 1
169 wa(jj) = ixtg(nixtg,n)
170 jj = jj + 1
171 IF (mlw /= 0 .AND. mlw /= 13) THEN
172 wa(jj) = gbuf%OFF(i)
173 ELSE
174 wa(jj) = zero
175 ENDIF
176 ENDDO
177 ENDIF
178 ENDDO
179
180 300 CONTINUE
181
182 IF(nspmd == 1)THEN
183 len=jj
184 DO j=1,len
185 wap0(j)=wa(j)
186 END DO
187 ELSE
188 len = 0
190 END IF
191
192 IF(ispmd==0.AND.len>0) THEN
193
194 IF (izipstrs == 0) THEN
195 WRITE(iugeo,'(A)')'/INISH3/OFF'
196 WRITE(iugeo,'(A)')
197 . '# SH3NID IOFF'
198 ELSE
199 WRITE(line,'(A)')'/INISH3/OFF'
201 WRITE(line,'(A)')
202 . '# SH3NID IOFF'
204 ENDIF
205
206 DO n=1,stat_numeltg_g
207 k=stat_indxtg(n)
208 j=2*(k-1)
210 ioff=nint(wap0(j+2))
211 IF (izipstrs == 0) THEN
212 WRITE(iugeo,
'(2I10)')
id,ioff
213 ELSE
214 WRITE(line,
'(2I10)')
id,ioff
216 ENDIF
217 END DO
218 ENDIF
219
220 RETURN
subroutine spmd_rgather9_dp(v, len, vp0, lenp0, iad)
subroutine strs_txt50(text, length)