The current FieldLayout class handles two separate functions. The first is defining the positions, number, etc. of the field degrees of freedom. The second is setting up the reverse ReversePartitionMap2, EntOffsets, etc. that are dealing with the field communication.
I would suggest that we split the class
FieldLayout into:
FieldDOFLayout and FieldCommunicationLayout