In other words, x = \exp(z) where z = \log(x) is on a regularly spaced grid? So then you can use a method for a regular grid in z,y to interpolate the function B(z,y), from which you can compute A(x,y) = B(e^z, y) and hence \nabla A = ((1/x) \partial B/\partial z, \partial B/\partial y).
Alternatively, whenever your data is on a product of two grids, even if the grids are irregular, you can do a sequence of two 1d interpolations
- for each x value construct an interpolant in the y coordinate.
- you now have a sequence of interpolation coefficients c (at each x) — interpolate these in the x grid to get an interpolated coefficient c(x).
- for any arbitrary (x,y), first interpolate the coefficients c(x) at this x, then use those interpolated coefficients to evaluate at y.