Lines Matching refs:sw
183 static PetscErrorCode CreateSwarm(DM dm, DM *sw, AppCtx *user) in CreateSwarm() argument
191 PetscCall(DMCreate(PetscObjectComm((PetscObject)dm), sw)); in CreateSwarm()
192 PetscCall(PetscObjectSetName((PetscObject)*sw, "Particles")); in CreateSwarm()
193 PetscCall(DMSetType(*sw, DMSWARM)); in CreateSwarm()
194 PetscCall(DMSetDimension(*sw, dim)); in CreateSwarm()
195 PetscCall(DMSwarmSetType(*sw, DMSWARM_PIC)); in CreateSwarm()
196 PetscCall(DMSwarmSetCellDM(*sw, dm)); in CreateSwarm()
197 PetscCall(DMSwarmRegisterPetscDatatypeField(*sw, "w_q", 1, PETSC_SCALAR)); in CreateSwarm()
198 PetscCall(DMSwarmRegisterPetscDatatypeField(*sw, "x_q", 2, PETSC_SCALAR)); in CreateSwarm()
199 PetscCall(DMSwarmFinalizeFieldRegister(*sw)); in CreateSwarm()
200 PetscCall(DMSwarmInsertPointsUsingCellDM(*sw, DMSWARMPIC_LAYOUT_GAUSS, Npc)); in CreateSwarm()
201 PetscCall(DMSetFromOptions(*sw)); in CreateSwarm()
203 PetscCall(DMSwarmGetLocalSize(*sw, &Np)); in CreateSwarm()
204 PetscCall(DMSwarmGetField(*sw, DMSwarmPICField_coor, NULL, NULL, (void **)&coords)); in CreateSwarm()
205 PetscCall(DMSwarmGetField(*sw, "w_q", NULL, NULL, (void **)&wvals)); in CreateSwarm()
206 PetscCall(DMSwarmGetField(*sw, "x_q", NULL, NULL, (void **)&xvals)); in CreateSwarm()
211 PetscCall(DMSwarmRestoreField(*sw, DMSwarmPICField_coor, NULL, NULL, (void **)&coords)); in CreateSwarm()
212 PetscCall(DMSwarmRestoreField(*sw, "w_q", NULL, NULL, (void **)&wvals)); in CreateSwarm()
213 PetscCall(DMSwarmRestoreField(*sw, "x_q", NULL, NULL, (void **)&xvals)); in CreateSwarm()
215 PetscCall(DMViewFromOptions(*sw, NULL, "-sw_view")); in CreateSwarm()
219 static PetscErrorCode computeParticleMoments(DM sw, Vec u, PetscReal moments[3], AppCtx *user) in computeParticleMoments() argument
228 PetscCall(DMGetDimension(sw, &dim)); in computeParticleMoments()
229 PetscCall(DMSwarmGetCellDM(sw, &dm)); in computeParticleMoments()
231 PetscCall(DMSwarmSortGetAccess(sw)); in computeParticleMoments()
232 PetscCall(DMSwarmGetFieldInfo(sw, user->field ? "x_q" : "w_q", &Nc, NULL)); in computeParticleMoments()
233 PetscCall(DMSwarmGetField(sw, DMSwarmPICField_coor, NULL, NULL, (void **)&coords)); in computeParticleMoments()
239 PetscCall(DMSwarmSortGetPointsPerCell(sw, cell, &Np, &pidx)); in computeParticleMoments()
250 PetscCall(DMSwarmSortRestorePointsPerCell(sw, cell, &Np, &pidx)); in computeParticleMoments()
253 PetscCall(DMSwarmRestoreField(sw, DMSwarmPICField_coor, NULL, NULL, (void **)&coords)); in computeParticleMoments()
254 PetscCall(DMSwarmSortRestoreAccess(sw)); in computeParticleMoments()
255 …PetscCallMPI(MPIU_Allreduce(mom, moments, 3, MPIU_REAL, MPI_SUM, PetscObjectComm((PetscObject)sw))… in computeParticleMoments()
303 static PetscErrorCode TestParticlesToField(DM sw, DM dm, Vec fhat, AppCtx *user) in TestParticlesToField() argument
311 PetscCall(DMSwarmProjectFields(sw, dm, 1, fieldnames, fields, SCATTER_FORWARD)); in TestParticlesToField()
313 PetscCall(DMSwarmCreateGlobalVectorFromField(sw, fieldnames[0], &f)); in TestParticlesToField()
314 PetscCall(computeParticleMoments(sw, f, pmoments, user)); in TestParticlesToField()
316 PetscCall(DMSwarmDestroyGlobalVectorFromField(sw, fieldnames[0], &f)); in TestParticlesToField()
331 static PetscErrorCode TestFieldToParticles(DM sw, DM dm, Vec fhat, AppCtx *user) in TestFieldToParticles() argument
339 PetscCall(DMSwarmProjectFields(sw, dm, 1, fieldnames, fields, SCATTER_REVERSE)); in TestFieldToParticles()
341 PetscCall(DMSwarmCreateGlobalVectorFromField(sw, fieldnames[0], &f)); in TestFieldToParticles()
342 PetscCall(computeParticleMoments(sw, f, pmoments, user)); in TestFieldToParticles()
343 PetscCall(DMSwarmDestroyGlobalVectorFromField(sw, fieldnames[0], &f)); in TestFieldToParticles()
357 static PetscErrorCode TestParticlesToGradientField(DM sw, DM dm, Vec fhat, AppCtx *user) in TestParticlesToGradientField() argument
365 PetscCall(DMSwarmProjectGradientFields(sw, dm, 1, fieldnames, fields, SCATTER_FORWARD)); in TestParticlesToGradientField()
367 PetscCall(DMSwarmCreateGlobalVectorFromField(sw, fieldnames[0], &f)); in TestParticlesToGradientField()
368 PetscCall(computeParticleMoments(sw, f, pmoments, user)); in TestParticlesToGradientField()
370 PetscCall(DMSwarmDestroyGlobalVectorFromField(sw, fieldnames[0], &f)); in TestParticlesToGradientField()
378 DM dm, subdm, sw; in main() local
388 PetscCall(CreateSwarm(dm, &sw, &user)); in main()
394 PetscCall(TestParticlesToField(sw, subdm, fhat, &user)); in main()
395 PetscCall(TestFieldToParticles(sw, subdm, fhat, &user)); in main()
408 PetscCall(TestParticlesToGradientField(sw, subdm, fhat, &user)); in main()
419 PetscCall(DMDestroy(&sw)); in main()