Normal of zero vectors

The normal of a vector is the vector divided by the vector's magnitude.
However, if the vector is the 0 vector, you get 0/0, which results in
non-finite numbers.

There might be legitimate situations where you (unintentionally) try to
normalize a 0 vector. For example, you might be using the derivative of
a field to compute the normal to a contour of the field. If the field is
in a static region or critical point, then the gradient goes to 0.

In these cases, we want the `Normal` and `Normalize` functions to return
something reasonable. These functions now return the 0 vector back. This
is no more "correct" than producing NaN values, but it is less likely to
cause problems later.
33 jobs for !2131 with normalize-zero in 160 minutes and 43 seconds (queued for 9 seconds)
latest detached
Status Name Job ID Coverage
  Build
passed build:centos7_gcc48 #5000401
build vtkm docker linux large-memory

00:55:03

passed build:centos8_sanitizer #5000402
build vtkm docker linux

00:10:05

passed build:rhel8 #5000403
build vtkm docker linux

00:07:36

passed build:rhel8_vtk_types #5000404
build vtkm docker linux

00:10:02

passed build:ubuntu1604_clang5 #5000407
build vtkm docker linux

00:07:48

passed build:ubuntu1604_gcc48 #5000406
build vtkm docker linux

00:06:23

passed build:ubuntu1604_gcc5 #5000503
large-memory linux docker vtkm build

00:25:49

passed build:ubuntu1804_clang8 #5000411
build vtkm docker linux

00:03:53

passed build:ubuntu1804_gcc6 #5000410
build vtkm docker linux

00:04:41

passed build:ubuntu1804_gcc7 #5000504
large-memory linux docker vtkm build

01:21:04

passed build:ubuntu1804_gcc9 #5000408
build vtkm docker linux

00:14:06

passed build:windows_vs2019 #5000412
build vtkm windows vs2019 shell large-memory

00:05:03

failed build:ubuntu1604_gcc5 #5000405
build vtkm docker linux large-memory

00:36:22

failed build:ubuntu1804_gcc7 #5000409
build vtkm docker linux large-memory

00:34:01

 
  Test
passed test:centos7_gcc48 #5000413
test cuda-rt turing vtkm docker linux

00:03:39

passed test:centos8_sanitizer #5000415
test vtkm docker linux privileged

00:04:50

passed test:rhel8 #5000416
test vtkm docker linux

00:01:42

passed test:rhel8_test_centos7 #5000414
test cuda-rt turing vtkm docker linux

00:03:26

passed test:rhel8_vtk_types #5000417
test vtkm docker linux

00:07:39

passed test:ubuntu1604_clang5 #5000419
test vtkm docker linux

00:02:45

passed test:ubuntu1604_gcc48 #5000418
test vtkm docker linux

00:02:15

passed test:ubuntu1804_clang8 #5000423
test vtkm docker linux

00:02:54

passed test:ubuntu1804_gcc6 #5000422
test vtkm docker linux

00:04:10

passed test:ubuntu1804_gcc7 #5000421
test cuda-rt turing vtkm docker linux

00:16:52

passed test:ubuntu1804_gcc9 #5000420
test vtkm docker linux

00:04:36

passed test:windows_vs2019 #5000424
test vtkm windows shell cuda-rt turing

00:02:26

 
  External
passed cdash-buildbot

passed cdash-commit

passed ghostflow-branch-check-master

passed vtk-m-dragnipur-osx-shared-debug+32bit_ids+64bit_coords+clang+tbb

00:10:48

passed vtk-m-dragnipur-osx-static-release+64bit_coords+clang+tbb

00:18:37

passed vtk-m-osheim-windows-shared-debug+ninja-vs-2017+tbb

00:20:53

passed vtk-m-osheim-windows-static-release+ninja-vs-2017+tbb

00:26:51