Developer Note: Dirac Point Values and Duplicate Handling
Every DiracKernel combines Dirac points that are within a fuzzy-comparison tolerance of one another into a single geometric point. This combining of nearby points is performed internally by DiracKernelInfo and always occurs, regardless of the drop_duplicate_points setting. However, the values at those combined points are not always combined — that behavior depends on drop_duplicate_points.
The drop_duplicate_points parameter controls what happens during residual and Jacobian assembly:
drop_duplicate_points = true(default): The accumulated values of the combined points are ignored and only a single point's contribution fromcomputeQpResidual()is used. Because the default istrue, only a single point's contribution will be applied unlessdrop_duplicate_pointsis explicitly set tofalse.drop_duplicate_points = false: The values passed toaddPoint()for coincident points are accumulated onto the single combined geometric point. During assembly, this accumulated value is used as a multiplier oncomputeQpResidual(). This is needed when multiple sources may coincide and each must contribute its own value.
Because of this design, a leaf class's computeQpResidual() does not return the final residual contribution directly. It returns a kernel term (typically involving only test functions) that is then scaled by the stored point value during assembly in DiracKernel::computeResidual().