[petsc-users] SNESSetConvergenceTest
Dharmendar Reddy
dharmareddy84 at gmail.com
Wed Jan 22 15:31:01 CST 2014
Hello,
I tried using the SNESSetConvergenceTest in ex5f90.F using my
subroutine. Works as expected. I will try to run my code through
valgrind.
Thanks
Reddy
On Wed, Jan 22, 2014 at 2:33 PM, Dharmendar Reddy
<dharmareddy84 at gmail.com> wrote:
> 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
--
-----------------------------------------------------
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