DMSwarmProjectFields#
Project a set of swarm fields onto the cell DM
Synopsis#
#include "petscdmswarm.h"
PETSC_EXTERN PetscErrorCode DMSwarmProjectFields(DM dm, PetscInt nfields, const char *fieldnames[], Vec **fields, PetscBool reuse)
Collective
Input parameters#
dm - the
DMSWARM
nfields - the number of swarm fields to project
fieldnames - the textual names of the swarm fields to project
fields - an array of Vec’s of length nfields
reuse - flag indicating whether the array and contents of fields should be re-used or internally allocated
Notes#
Currently, the only available projection method consists of
phi_i = \sum_{p=0}^{np} N_i(x_p) phi_p dJ / \sum_{p=0}^{np} N_i(x_p) dJ
where phi_p is the swarm field at point p,
N_i() is the cell DM basis function at vertex i,
dJ is the determinant of the cell Jacobian and
phi_i is the projected vertex value of the field phi.
If reuse
is PETSC_FALSE
, this function will allocate the array of Vec
’s, and each individual Vec
.
The user is responsible for destroying both the array and the individual Vec
objects.
Only swarm fields registered with data type of PETSC_REAL
can be projected onto the cell DM
.
Only swarm fields of block size = 1 can currently be projected.
The only projection methods currently only support the DMDA
(2D) and DMPLEX
(triangles 2D).
See Also#
Level#
beginner
Location#
Examples#
src/dm/tutorials/ex21.c
src/ksp/ksp/tutorials/ex70.c
Index of all DMSwarm routines
Table of Contents for all manual pages
Index of all manual pages