import numpy as np import scipy.interpolate as interp import scipy.integrate as integrate def calc_dist_proper(coord, gXX): """ Calculate proper distance along given spatial axis. :param array_like coord: 1D array of spatial coordinates. :param array_like gXX: Values of the XX component of the spatial metric at provided coordinates. :return: array of proper distances from coord[0]. """ r_proper = np.empty_like(coord) sqgXX = interp.interp1d(coord, np.sqrt(gXX)) r_proper[0] = 0.0 for i in xrange(coord.shape[0] - 1): r_proper[i + 1] = r_proper[i] + integrate.quad(sqgXX, coord[i], coord[i + 1])[0] return r_proper