There is a serious issue multiplying matrices time vectors in numpy and the action of numpy matrices times numpy vectors.
#!python
from SimPEG import utils as ut
import numpy as np
import matplotlib.pyplot as plt
from SimPEG import TensorMesh
from scipy import sparse as sp
from SimPEG import utils as ut
import scipy.sparse.linalg.dsolve as dsl
#!python
h = [np.array([1,1,1,1]),np.array([1,1,1,1]),np.array([1,1,1,1])]
M = TensorMesh(h)
G = M.nodalGrad
I = sp.eye(125)
A = G.T*G
A = A+I
C = np.matrix(np.random.randn(4,125))
b = np.random.randn(125)
#!python
b = ut.mkvc(b,2)
#!python
print np.shape(b.T*b), np.shape(np.inner(b,b)), np.shape(np.outer(b,b))
sigh ...