def transform_tensor_sphericalPolar_2_cartesian(positionVectorSpherical, tensor
    ):
    """Function changing the basis of a tensor from zonal-meridional-radial basis to a Cartesian basis.

The origin of the Cartesian frame of reference is located at the centre of the sphere, the positive half of x-axis goes through 0 deg E, 0 deg N, the positive half of y-axis goes through 90 deg E, 0 deg N and the positive half of the z-axis goes through the North Pole equivalent."""
    import numpy as np
    from numpy import linalg
    [radius, theta, phi] = positionVectorSpherical
    transformationMatrix = np.array([[np.sin(theta) * np.cos(phi), np.cos(
        theta) * np.cos(phi), -np.sin(phi)], [np.sin(theta) * np.sin(phi), 
        np.cos(theta) * np.sin(phi), np.cos(phi)], [np.cos(theta), -np.sin(
        theta), 0]])
    transposedTransformationMatrix = transformationMatrix.transpose()
    transformed_Tensor = np.dot(transformationMatrix, np.array(tensor))
    transformed_Tensor = np.dot(transformed_Tensor,
        transposedTransformationMatrix)
    return transformed_Tensor
