reference cell issues
the getRefCellValue does a global distribution even when the reference value is only used on a single processor (or not used at all).
For certain bcs (e.g. fixedValue) the needReference() is always the same so this reduction could be moved out of the simulation loop altogether.
in dynamic mesh simulations do we want to recalculate the reference cell? For some moving mesh cases we don't, for some e.g. refinement/unrefinement cases we might want to.