[petsc-users] SNESSetConvergenceTest

Dharmendar Reddy dharmareddy84 at gmail.com
Wed Jan 22 14:33:57 CST 2014


Hello,
         I will also try to create a stand alone test case.

Thanks
Reddy

On Wed, Jan 22, 2014 at 1:53 PM, Matthew Knepley <knepley at gmail.com> wrote:
> On Wed, Jan 22, 2014 at 1:52 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>
>>
>>   We need more information to track this down. Could you make a simple
>> standalone code that reproduces the problem? Just creates a this, creates a
>> SNES, sets the function, sets the test code and then crashes when runs.
>>
>>    But since it is not crashing in the SNESConvergenceTest_snes routine I
>> suspect it may be memory corruption. Have you run your code under valgrind?
>> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
>
>
> I am putting his convergence test into ex5f right now. This can be
> valgrinded. I will send an update when it runs.
>
>   Matt
>
>>
>>
>>    Barry
>>
>> On Jan 20, 2014, at 7:14 PM, Dharmendar Reddy <dharmareddy84 at gmail.com>
>> wrote:
>>
>> > Hello,
>> >         I am getting a segmentation fault when i use
>> > SNESSetConvergenceTest from Fortran.
>> >
>> > I use the following:
>> >
>> > call SNESSetConvergenceTest(this%snes, SNESConvergenceTest_snes,
>> > this,PETSC_NULL_FUNCTION, ierr)   (Line 1)
>> >
>> > where the soubtoutine is
>> >
>> > subroutine
>> > SNESConvergenceTest_snes(snes,it,xnorm,gnorm,fnorm,reason,this, ierr)
>> >  implicit none
>> > #include "finclude/petsc.h"
>> >  ! IO Variables
>> >  SNES :: snes
>> >  integer :: it
>> >  PetscReal :: xnorm
>> >  PetscReal :: gnorm
>> >  PetscReal :: fnorm
>> >  SNESConvergedReason :: reason
>> >  type(Solver_t) :: this
>> >  PetscErrorCode :: ierr
>> >  ! Local Variables
>> >  Vec :: X, dX
>> >  Vec :: F, W, G
>> >  real(WP) :: lambda
>> >  print*, 'Calling custom test',it,xnorm,fnorm,gnorm
>> >  !call SNESLineSearchGetLambda(this%linesearch, lambda, ierr)
>> >  !call SNESLineSearchGetVecs(this%linesearch, X, F, dX, W, G, ierr)
>> >  !call this%SNESConvergenceTest(it, fnorm, lambda, X, dX, reason, ierr)
>> >  reason = SNES_DIVERGED_FUNCTION_COUNT
>> > end subroutine SNESConvergenceTest_snes
>> >
>> > Code works fine if  the call at Line 1 is commented i.e, if i donot
>> > set the convergencetest
>> >
>> > I have attached the stack trace when the code fails (traceFail.log)
>> > and stack trace of the code which runs well (tracePass.log).
>> >
>> >
>> >
>> > Thanks
>> > Reddy
>> > <traceFail.log><tracePass.log>
>>
>
>
>
> --
> What most experimenters take for granted before they begin their experiments
> is infinitely more interesting than any results to which their experiments
> lead.
> -- Norbert Wiener



-- 
-----------------------------------------------------
Dharmendar Reddy Palle
Graduate Student
Microelectronics Research center,
University of Texas at Austin,
10100 Burnet Road, Bldg. 160
MER 2.608F, TX 78758-4445
e-mail: dharmareddy84 at gmail.com
Phone: +1-512-350-9082
United States of America.
Homepage: https://webspace.utexas.edu/~dpr342


More information about the petsc-users mailing list