petsc-3.8.4 2018-03-24
Report Typos and Errors

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 on Vec

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
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.

Notes

- If reuse = 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 = 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 DA (2D) and PLEX (triangles 2D).

See Also

DMSwarmSetType(), DMSwarmSetCellDM(), DMSwarmType

Level:beginner
Location:
src/dm/impls/swarm/swarmpic.c
Index of all DMSWARM routines
Table of Contents for all manual pages
Index of all manual pages