thanks, Barray, indeed this is due to this naive mistake. Thanks again.
best, lailai On 04/13/2017 10:34 PM, Barry Smith wrote:
VecCreate() does not take a size argument (perhaps you mean VecCreateSeq()?) hence when you try to get the size it is confused. BarryOn Apr 13, 2017, at 8:29 PM, Lailai Zhu <[email protected]> wrote: Dear petsc developers and users, I am currently using fortran version of petsc 3.7.*. I tried to define Mat or Vec variables in a user-defined structure like below, module myMOD type, public :: myStr Mat A Vec x,b end type myStr interface myStr !! user-defined constructor module procedure new_Str end interface myStr contains function new_Str() type(myStr) :: new_Str call VecCreate(petsc_comm_self,10,new_str%x,ierr) call vecgetsize(new_str%x, size, ierr) end function new_Str end module myMOD then i define an instance of myStr in another file like below type(myStr),save :: mystr1 mystr1 = myStr() It compiles and the veccreate executes without problem, however error occurs on the vecgetsize part, telling me [0]PETSC ERROR: --------------------- Error Message -------------------------------------------------------------- [0]PETSC ERROR: Null argument, when expecting valid pointer [0]PETSC ERROR: Null Object: Parameter # 1 [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting. [0]PETSC ERROR: Petsc Release Version 3.7.5, Jan, 01, 2017 [0]PETSC ERROR: ./nek5000 on a pet3.7.5-mpich-intel named quququ by user Thu Apr 13 21:11:05 2017 [0]PETSC ERROR: Configure options --with-c++-support --with-shared-libraries=1 --known-mpi-shared-libraries=1 --with-batch=0 --with-mpi=1 --with-debugging=1 -download-fblaslapack=1 --download-blacs=1 --download-scalapack=1 --download-plapack=1 --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpifort --download-dscpack=1 [0]PETSC ERROR: #1 VecGetSize() line 667 in /home/user/petsc/3.7.5/mpich_intel/src/vec/vec/interface/vector.c It seems to me that the petsc vector x belong to the derived type variable is recognized in the veccreate subroutine, but not known by the vecgetsize one. Is there way to work this around? or perhaps one cannot use petsc objects in such ways? Thanks in advance, best, lailai
