37
38
39
40 USE elbufdef_mod
41 USE my_alloc_mod
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "com01_c.inc"
50#include "com04_c.inc"
51#include "param_c.inc"
52#include "remesh_c.inc"
53#include "scr17_c.inc"
54#include "spmd_c.inc"
55#include "task_c.inc"
56
57
58
59
60 INTEGER IPARG(NPARG,*),EL2FA(*),NBF,IOFF(*),
61 . IADD(*),NBF_L,NBPART, IADG(NSPMD,*),NODGLOB(*),
62 . IPART(LIPART1,*), IPARTC(*), IPARTTG(*)
63 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
64
65
66
67
68 INTEGER I, NG, NEL, NFT, IAD, ITY, LFT, NPT,
69 . N, J, LLT, MLW, NBX, IP,
70 . NN, K1, K2,MT,JALE, IMID,
71 . N1,N2,N3,N4,
72 . NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,NN10,
73 . N_FA, IHBE, SH_IH, ISTRAIN, IEXPAN, ISEATBELT
74 INTEGER RBUF,ISROT
75 INTEGER,DIMENSION(:),ALLOCATABLE :: IOFFBUF
76 REAL R4
77 TYPE(G_BUFEL_) ,POINTER :: GBUF
78
79 CALL my_alloc(ioffbuf,nbf_l)
80 nn1 = 1
81 nn2 = 1
82 nn3 = 1
83 nn4 = nn3 + numelq
84 nn5 = nn4 + numelc
85 nn6 = nn5 + numeltg
86 nn7 = nn6
87 nn8 = nn7
88 nn9 = nn8
89 nn10= nn9
90
91
92 DO ng=1,ngroup
93 mlw =iparg(1,ng)
94 nel =iparg(2,ng)
95 ity =iparg(5,ng)
96 nft =iparg(3,ng)
97 iad =iparg(4,ng)
98 iseatbelt = iparg(91,ng)
99 lft=1
100 llt=nel
101 nbx = iad - 1
102 gbuf => elbuf_tab(ng)%GBUF
103
104
105
106 IF (ity == 2) THEN
107 n_fa = nn3 + nft
108
109
110
111 ELSEIF(ity == 3)THEN
112 ihbe = iparg(23,ng)
113 npt =iparg(6,ng)
114 istrain=iparg(44,ng)
115 iexpan=iparg(49,ng)
116 n_fa = nn4 + nft
117
118
119
120 ELSEIF(ity == 7)THEN
121 npt =iparg(6,ng)
122 istrain=iparg(44,ng)
123 iexpan=iparg(49,ng)
124 n_fa = nn5 + nft
125
126
127
128 ELSEIF(ity == 50)THEN
129 n_fa = nn9 + nft
130 ELSE
131 ity=0
132 ENDIF
133
134 IF (ity /= 0) THEN
135 IF (mlw == 0 .OR. mlw == 13 .OR. iseatbelt == 1)THEN
136
137
138
139 DO i=lft,llt
140 ioff(el2fa(n_fa+i)) = 1
141 ENDDO
142 ELSE
143
144
145
146 IF (ity == 2) THEN
147 DO i=lft,llt
148 ioff(el2fa(n_fa+i)) = nint(
min(gbuf%OFF(i),one))
149 ENDDO
150 ELSEIF (nadmesh==0 .AND. (ity==3 .OR. ity==7)) THEN
151 DO i=lft,llt
152 ioff(el2fa(n_fa+i)) = nint(
min(gbuf%OFF(i),one))
153 ENDDO
154 ELSEIF (ity == 3) THEN
155 DO i=lft,llt
156 ip=ipartc(nft+i)
157 IF(ipart(10,ip)>0)THEN
158 ioff(el2fa(n_fa+i))=nint(
max(zero,
min(gbuf%OFF(i),one)))
159 ELSE
160 ioff(el2fa(n_fa+i))=nint(
min(gbuf%OFF(i),one))
161 END IF
162 ENDDO
163 ELSEIF (ity ==7 ) THEN
164 DO i=lft,llt
165 ip=iparttg(nft+i)
166 IF(ipart(10,ip)>0)THEN
167 ioff(el2fa(n_fa+i))=nint(
max(zero,
min(gbuf%OFF(i),one)))
168 ELSE
169 ioff(el2fa(n_fa+i))=nint(
min(gbuf%OFF(i),one))
170 END IF
171 ENDDO
172 ENDIF
173 ENDIF
174 ENDIF
175
176 ENDDO
177
178 IF (nspmd == 1) THEN
180 ELSE
181 DO i = 1, nbf_l
182 ioffbuf(i) = ioff(i)
183 ENDDO
184 IF (ispmd == 0) THEN
185 rbuf = (numelqg+numelcg+numeltgg)
187 ELSE
188 rbuf = 1
190 END IF
191 ENDIF
192
193 DEALLOCATE(ioffbuf)
194 RETURN
subroutine spmd_iget_partn(size, nbf_l, np, nbpart, iadg, srbuf, iflag)
void write_c_c(int *w, int *len)