[petsc-users] including petsc Mat and Vec in a user-defined structure in FORTRAN
Lailai Zhu
lailaizhu00 at gmail.com
Thu Apr 13 20:29:05 CDT 2017
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
More information about the petsc-users
mailing list