subroutine GenerateDecomposition_DomainDecomposition_t(this,nGlobalElem,maxMsg)
implicit none
class(DomainDecomposition_t),intent(inout) :: this
integer,intent(in) :: nGlobalElem
integer,intent(in) :: maxMsg
call this%setElemToRank(nGlobalElem)
if(allocated(this%requests)) deallocate(this%requests)
if(allocated(this%stats)) deallocate(this%stats)
allocate(this%requests(1:maxMsg))
allocate(this%stats(MPI_STATUS_SIZE,1:maxMsg))
this%maxMsg = maxMsg
print*,__FILE__//" : Rank ",this%rankId+1," : n_elements = ", &
this%offSetElem(this%rankId+2)-this%offSetElem(this%rankId+1)
endsubroutine GenerateDecomposition_DomainDecomposition_t