Always respond to ALL on mailing lists, otherwise you may never get an answer.

  Since xx_v() is a PetscScalar, pointer ::  xx_v(:)   I believe it is best if 
your myroutine() takes a PetscScalar, pointer ::  xx_v(:) argument, not a real::

  Also by default PetscScalar is a double precision number. If you wish PETSc 
to use single precision numbers then you must ./configure it with 
—with-precision=single

  Barry

On May 9, 2014, at 9:23 AM, Antonios Mylonakis <[email protected]> wrote:

> Thanks for your help.
> 
> So if I understand well I should do sth like this (?):
> 
> myroutine(x)
> real:: x(2)
> 
> ....
> 
> end
> 
> 
> anotherroutine(y)
> vec y
> PetscScalar, pointer ::  xx_v(:)
> 
> call myroutine(y)
> VecGetArrayF90(y,xx_v,ierr)
> edit xx_v
> VecRestoreArray(y,xx_v,ierr)
> ...
> end
> 
> 
> 
>> Subject: Re: [petsc-users] Errors in running
>> From: [email protected]
>> Date: Fri, 9 May 2014 08:00:29 -0500
>> CC: [email protected]
>> To: [email protected]
>> 
>> 
>> On May 9, 2014, at 7:29 AM, Antonios Mylonakis <[email protected]> wrote:
>> 
>>> Dear Sir or Madam
>>> 
>>> I am a new PETSc user. I am using PETSc library with fortran. 
>>> I have the following problem. I want to use the matrix-free form of krylov 
>>> solvers. So I am starting by using the example ex14f.F.
>>> In this example, within subroutine mymult() I try call another subroutine 
>>> which calculates the vector I need as the result of the matrix-vector 
>>> multiplication.In this second subroutine the vector is defined as a simple 
>>> array. (Is this the problem?) 
>> 
>> A PETSc Vec is NOT a simple array you cannot do something like
>> 
>> myroutine( x)
>> double x(*)
>> ….
>> 
>> 
>> anotherroutine(y)
>> Vec y
>> call myroutine(y)
>> 
>> to access local entries in PETSc Vec directly you need to call VecGetArray() 
>> or VecGetArrayF90()
>> 
>> Barry
>> 
>> 
>>> The problem is that I receive errors when I'm attempting to run the 
>>> program. The problem seems to be related with memory, but I am not sure.
>>> 
>>> The first line of errors can be seen below:
>>> "Caught signal number 11 SEGV: Segmentation Violation, probably memory 
>>> access out of range"
>>> 
>>> 
>>> Could you help me?
>>> 
>>> Thanks in advance
>> 

Reply via email to