This would make it easier to solve 2D problems with a 3D code. It currently crashes or produces NaN because the scatter is set up incorrectly:
==10402== Invalid read of size 2 ==10402== at 0x4C26C2C: memcpy (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==10402== by 0x6D87D01: opal_convertor_pack (in /usr/lib/openmpi/libmpi.so.1.0.1) ==10402== by 0xF33D0C8: ??? (in /usr/lib/openmpi/openmpi/mca_btl_sm.so) ==10402== by 0xEB1F1B7: ??? (in /usr/lib/openmpi/openmpi/mca_pml_ob1.so) ==10402== by 0xEB0DC0C: ??? (in /usr/lib/openmpi/openmpi/mca_pml_ob1.so) ==10402== by 0x6CD6650: PMPI_Isend (in /usr/lib/openmpi/libmpi.so.1.0.1) ==10402== by 0x551F85A: PetscGatherMessageLengths (mpimesg.c:128) ==10402== by 0x580D5AC: VecScatterCreate_PtoS (vpscat.c:1621) ==10402== by 0x5823C9F: VecScatterCreate (vscat.c:1316) ==10402== by 0x518A547: DACreate_3D (da3.c:957) ==10402== by 0x51D1ACA: DASetType (dareg.c:48) ==10402== by 0x5194FA7: DASetTypeFromOptions_Private (dacreate.c:65) ==10402== Address 0xbc33562 is 498 bytes inside a block of size 516 alloc'd ==10402== at 0x4C23918: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==10402== by 0x53E3D3B: PetscMallocAlign (mal.c:30) ==10402== by 0x5566432: PetscTrMallocDefault (mtr.c:192) ==10402== by 0x580D2B4: VecScatterCreate_PtoS (vpscat.c:1601) ==10402== by 0x5823C9F: VecScatterCreate (vscat.c:1316) ==10402== by 0x518A547: DACreate_3D (da3.c:957) ==10402== by 0x51D1ACA: DASetType (dareg.c:48) ==10402== by 0x5194FA7: DASetTypeFromOptions_Private (dacreate.c:65) ==10402== by 0x5195A81: DASetFromOptions (dacreate.c:131) ==10402== by 0x518FFF5: DACreate3d (da3.c:1742) ==10402== by 0x40669A: multi_init(int, char**) (multi_petsc.cpp:115) ==10402== by 0x403AF5: main (mhd_main.cpp:351) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20110419/c7651400/attachment.html>
