Hi Tongchao,
You have forgotten to provide ´sign´ to your injector:
W = addWell(W, G, G.rock, cell_inj, 'name','inj', 'type','bhp','val',pRef*1.1, 'sign', 1);
W = addWell(W, G, G.rock, cell_pump,'name','pump', 'type','bhp','val',pRef*0.9, 'sign', -1);
Without this, none of the wells are treated as injectors when computing injected thermal energy, and since you have not specified BCs, the energy conservation equation is underdetermined.
Regarding your remark that "according to literature on solute/heat transport, Q_{well,energy} = Q_{well,water} * (h_well - h_wellcell)", and "Q_{well,energy} = Q_{well,water} * h_well" is "highly fishy", can you elaborate? To the best of my knowledge, the latter is the standard definition thermal energy flux (and the one implemented in all geothermal simulators I know).
Best,
Øystein Klemetsdal // Research Scientist, SINTEF Digital