Dear all, I had some wonderful talking about MPI_type_create_struct adn isend\irecv with Gilles, Gustavo, George, Gus, Tom and Jeff. Now all is more clear and my program works.
Now I have another question. In may program I have matrix: *QQMLS(:,:,:) *that is allocate as *ALLOCATE(QQMLS(9,npt,18)*), where npt is the number of particles QQMLS is double precision. I would like to sent form a CPU to another part of it, for example, sending QQMLS(:,50:100,:). I mean sending the QQMLS of the particles between 50 to 100. I suppose that i could use MPI_Type_vector but I am not sure. The particle that I want to sent could be from 25 to 50 ecc.. ecc..so blocklength changes everytime. Do I have to use MPI_type_create_struct? Do I have correctly understood MPI_Type_vector? Thanks a lot Diego