why not make the interface consistent with PETScVector `PETScVector(const PetscInt vec_size, const bool is_global_size = true)`? I mean about local and global size. Global size is not needed if local size is given