1. The problem statement, all variables and given/known data My problem is, I have a scalar field and I take the gradient of this field. It is known that the gradient of a scalar function is a conservative vector field; but I need to run a procedure in this field that will modify the vector field; the modified vector field could be a non-conservative vector field, creating some problems to continue passing through another processing step. I want to find a conservative vector field that is as close as possible to this possible non-conservative vector field. 2. The attempt at a solution A vector field is considered conservative if its curl is 0 and if it is simply-connected; considering that the field that I'm working is simply-connected, I need to make the curl of the modified vector field equals 0 (ZERO). I was studying the Helmholtz decomposition (http://en.wikipedia.org/wiki/Helmholtz_decomposition) to decompose the modified vector field into 2 components (for more explanations see the link), and I was wondering that if I just use the component that has curl=0 and generate a new vector field, this vector field would look similar. Another way that I was thinking is about to obtain a scalar field that represents the non-conservative vector field, making easy to calculate the gradient of this scalar field to find a conservative vector field. Which way I should take to achieve the result I want? In pratical, I have a non-conservative vector field and I just want to turn it into a conservative one. Thank you.