41 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
42#include "implicit_f.inc"
55 INTEGER I, PMAIN, NNS_ANIM, NNTR, J, K, KK, L, LL, N1, N2, N3,
56 . ITAG, LEN, MSGOFF, STAT(MPI_STATUS_SIZE), IERR,MSGOFF2
61 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NPTR, NPN
63 . ,
DIMENSION(:,:),
ALLOCATABLE :: vtr, vv
71 IF (ispmd==pmain-1)
THEN
72 nns_anim=
fvdata(i)%NNS_ANIM
74 ALLOCATE(vtr(3,nntr), vv(3,nns_anim), nptr(nntr),
90 IF (
fvdata(i)%MPOLH(j)==zero) cycle
93 DO l=
fvdata(i)%IFVTADR(kk),
94 .
fvdata(i)%IFVTADR(kk+1)-1
97 vtr(1,ll)=vtr(1,ll)+
fvdata(i)%QPOLH(1,j)/
99 vtr(2,ll)=vtr(2,ll)+
fvdata(i)%QPOLH(2,j)/
101 vtr(3,ll)=vtr(3,ll)+
fvdata(i)%QPOLH(3,j)/
107 n1=
fvdata(i)%IFVTRI_ANIM(1,j)
108 n2=
fvdata(i)%IFVTRI_ANIM(2,j)
109 n3=
fvdata(i)%IFVTRI_ANIM(3,j)
114 vvt(1)=vtr(1,j)/nptr(j)
115 vvt(2)=vtr(2,j)/nptr(j)
116 vvt(3)=vtr(3,j)/nptr(j)
122 vv(1,n1)=vv(1,n1)+vvt(1)
123 vv(2,n1)=vv(2,n1)+vvt(2)
124 vv(3,n1)=vv(3,n1)+vvt(3)
125 vv(1,n2)=vv(1,n2)+vvt(1)
126 vv(2,n2)=vv(2,n2)+vvt(2)
127 vv(3,n2)=vv(3,n2)+vvt(3)
128 vv(1,n3)=vv(1,n3)+vvt(1)
129 vv(2,n3)=vv(2,n3)+vvt(2)
130 vv(3,n3)=vv(3,n3)+vvt(3)
142 DEALLOCATE(vtr, vv, nptr, npn)
145 CALL mpi_recv(nns_anim, 1, mpi_integer, it_spmd(pmain),
146 . itag, spmd_comm_world, stat, ierr)
148 ALLOCATE(vv(3,nns_anim))
151 CALL mpi_recv(vv, len, real, it_spmd(pmain),
152 . itag, spmd_comm_world, stat, ierr)
166 IF (ispmd==pmain-1)
THEN
167 nns_anim=
fvdata(i)%NNS_ANIM
169 CALL mpi_send(nns_anim, 1, mpi_integer, it_spmd(1),
170 . itag, spmd_comm_world, ierr)
173 ALLOCATE(vtr(3,nntr), vv(3,nns_anim), nptr(nntr),
189 IF (
fvdata(i)%MPOLH(j)==zero) cycle
192 DO l=
fvdata(i)%IFVTADR(kk),
193 .
fvdata(i)%IFVTADR(kk+1)-1
196 vtr(1,ll)=vtr(1,ll)+
fvdata(i)%QPOLH(1,j)/
198 vtr(2,ll)=vtr(2,ll)+
fvdata(i)%QPOLH(2,j)/
200 vtr(3,ll)=vtr(3,ll)+
fvdata(i)%QPOLH(3,j)/
206 n1=
fvdata(i)%IFVTRI_ANIM(1,j)
207 n2=
fvdata(i)%IFVTRI_ANIM(2,j)
208 n3=
fvdata(i)%IFVTRI_ANIM(3,j)
213 vvt(1)=vtr(1,j)/nptr(j)
214 vvt(2)=vtr(2,j)/nptr(j)
215 vvt(3)=vtr(3,j)/nptr(j)
221 vv(1,n1)=vv(1,n1)+vvt(1)
222 vv(2,n1)=vv(2,n1)+vvt(2)
223 vv(3,n1)=vv(3,n1)+vvt(3)
224 vv(1,n2)=vv(1,n2)+vvt(1)
225 vv(2,n2)=vv(2,n2)+vvt(2)
226 vv(3,n2)=vv(3,n2)+vvt(3)
227 vv(1,n3)=vv(1,n3)+vvt(1)
228 vv(2,n3)=vv(2,n3)+vvt(2)
229 vv(3,n3)=vv(3,n3)+vvt(3)
233 vv(1,j)=vv(1,j)/npn(j)
234 vv(2,j)=vv(2,j)/npn(j)
235 vv(3,j)=vv(3,j)/npn(j)
239 CALL mpi_send(vv, len, real, it_spmd(1),
240 . itag, spmd_comm_world, ierr)
242 DEALLOCATE(vtr, vv, nptr, npn)
subroutine genani(x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, swaft, smas, sxnorm, siad, iparg, pm, geo, ms, sinvert, cont, smater, icut, skew, xcut, fint, itab, sel2fa, fext, fopt, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, mat_param, dd_iad, weight, eani, ipart, cluster, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, ipartur, iparttg, rby, swa4, tors, nom_opt, igrsurf, bufsf, idata, rdata, siadg, bufmat, bufgeo, kxx, ixx, ipartx, suix, sxusr, snfacptx, sixedge, sixfacet, sixsolid, snumx1, snumx2, snumx3, soffx1, soffx2, soffx3, smass1, smass2, smass3, sfunc1, sfunc2, sfunc3, kxsp, ixsp, nod2sp, ipartsp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, iflow, rflow, fncont, ftcont, temp, thke, err_thk_sh4, err_thk_sh3, diag_sms, ipari, fncont2, dr, ale_connectivity, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, dxancg, nod_pxfem, iel_pxfem, zi_ply, vgaz, fcontg, fncontg, ftcontg, fanreac, inod_crk, iel_crk, elcutc, iadc_crk, pdama2, res_sms, weight_md, nodglobxfe, nodedge, fcluster, mcluster, xfem_tab, w, nv46, ipartig3d, kxig3d, ixig3d, sig3dsolid, knot, wige, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, igrnod, h3d_data, subset, multi_fvm, knotlocpc, knotlocel, fcont_max, fncontp2, ftcontp2, glob_therm, drape_sh4n, drape_sh3n, drapeg, output)