Jason,

Tightening the tolerances did the trick. Thanks. Though I do have a couple
more related questions:

1) Is there a general guideline for choosing tron over blmvm or vice versa?
Also is there another tao type that is also suitable given only bounded
constraints?

2) Is it possible to obtain the total number of KSP and/or PG iterations
from tron?

Thanks,
Justin

On Tue, Apr 21, 2015 at 9:52 AM, Jason Sarich <[email protected]>
wrote:

> Hi Justin,
>
> blmvm believes that it is already sufficiently close to a minimum, so it
> doesn't do anything. You may need to tighten some of the tolerance to force
> an iteration.
>
> Jason
>
>
> On Tue, Apr 21, 2015 at 9:48 AM, Justin Chang <[email protected]> wrote:
>
>>  Time step 1:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0663148
>>   Objective value=-55.5945
>>   total number of iterations=35,                          (max: 2000)
>>   total number of function/gradient evaluations=37,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>>  Time step 2:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0682307
>>   Objective value=-66.9675
>>   total number of iterations=23,                          (max: 2000)
>>   total number of function/gradient evaluations=25,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 3:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0680522
>>   Objective value=-71.8211
>>   total number of iterations=19,                          (max: 2000)
>>   total number of function/gradient evaluations=22,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 4:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0551556
>>   Objective value=-75.1252
>>   total number of iterations=18,                          (max: 2000)
>>   total number of function/gradient evaluations=20,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 5:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0675667
>>   Objective value=-77.4414
>>   total number of iterations=6,                          (max: 2000)
>>   total number of function/gradient evaluations=8,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 6:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.059143
>>   Objective value=-79.5007
>>   total number of iterations=3,                          (max: 2000)
>>   total number of function/gradient evaluations=5,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 7:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0433683
>>   Objective value=-81.3546
>>   total number of iterations=5,                          (max: 2000)
>>   total number of function/gradient evaluations=8,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 8:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0840676
>>   Objective value=-82.9382
>>   total number of iterations=0,                          (max: 2000)
>>   total number of function/gradient evaluations=1,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 9:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0840676
>>   Objective value=-82.9382
>>   total number of iterations=0,                          (max: 2000)
>>   total number of function/gradient evaluations=1,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>> Time step 10:
>>
>> Tao Object: 1 MPI processes
>>   type: blmvm
>>       Gradient steps: 0
>>   TaoLineSearch Object:   1 MPI processes
>>     type: more-thuente
>>   Active Set subset type: subvec
>>   convergence tolerances: fatol=0.0001,   frtol=0.0001
>>   convergence tolerances: gatol=0,   steptol=0,   gttol=0
>>   Residual in Function/Gradient:=0.0840676
>>   Objective value=-82.9382
>>   total number of iterations=0,                          (max: 2000)
>>   total number of function/gradient evaluations=1,      (max: 4000)
>>   Solution converged:   estimated |f(x)-f(X*)|/|f(X*)| <= frtol
>>
>>
>>
>>
>>
>> On Tue, Apr 21, 2015 at 9:28 AM, Jason Sarich <[email protected]>
>> wrote:
>>
>>> Hi Justin,
>>>
>>>  what reason is blmvm giving for stopping the solve? (you can use
>>> -tao_view or -tao_converged_reason to get this)
>>>
>>>  Jason
>>>
>>> On Mon, Apr 20, 2015 at 6:32 PM, Justin Chang <[email protected]>
>>> wrote:
>>>
>>>>   Jason,
>>>>
>>>>  I am using TaoGetSolutionStatus(tao,&its, ...) and it gives me exactly
>>>> what I want. However, I seem to be having an issue with blmvm
>>>>
>>>>  I wrote my own backward euler code for a transient linear diffusion
>>>> problem with lower bounds >= 0 and upper bounds <= 1. For the first several
>>>> time steps I am getting its > 0, and it decreases over time due to the
>>>> nature of the discrete maximum principles. However, at some point my its
>>>> become 0 and the solution does not "update", which seems to me that
>>>> TaoSolve is not doing anything after that. This doesn't happen if I were to
>>>> use tron (my KSP and PC are cg and jacobi respectively).
>>>>
>>>>  Do you know why this behavior may occur?
>>>>
>>>>  Thanks,
>>>>
>>>> On Tue, Apr 14, 2015 at 9:35 AM, Jason Sarich <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi Justin,
>>>>>
>>>>>  I have pushed these changes to the "next" branch, your code snippet
>>>>> should work fine there.
>>>>>
>>>>>  Note that there is also available (since version 3.5.0) the routine
>>>>> TaoGetSolutionStatus(tao,&its,NULL,NULL,NULL,NULL,NULL) which will provide
>>>>> the
>>>>> same information
>>>>>
>>>>>  Jason
>>>>>
>>>>> On Fri, Apr 10, 2015 at 6:28 PM, Justin Chang <[email protected]>
>>>>> wrote:
>>>>>
>>>>>>   Whatever is convenient and/or follow the "PETSc" standards.
>>>>>> Something similar to SNESGetIterationNumber() or KSPGetIterationNumber()
>>>>>> would be nice. Ideally I want my code to look like this:
>>>>>>
>>>>>>  ierr = TaoGetIterationNumber(tao,&its);CHKERRQ(ierr);
>>>>>>  ierr = PetscPrintf(PETSC_COMM_WORLD, "Number of Tao iterations =
>>>>>> %D\n", its);
>>>>>>
>>>>>>  Thanks :)
>>>>>>
>>>>>> On Fri, Apr 10, 2015 at 5:53 PM, Jason Sarich <[email protected]
>>>>>> > wrote:
>>>>>>
>>>>>>> Hi Justin, I'll get this in. I assume that displaying the number of
>>>>>>> iterations with tao_converged_reason is what you are asking for in
>>>>>>> particular? Or did you have something else in mind?
>>>>>>>
>>>>>>> Jason
>>>>>>>  On Apr 10, 2015 16:42, "Smith, Barry F." <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>   Justin,
>>>>>>>>
>>>>>>>>     Sorry TAO simply doesn't even collect this information
>>>>>>>> currently. But yes we should definitely make it available!
>>>>>>>>
>>>>>>>>   Jason,
>>>>>>>>
>>>>>>>>      Could you please add this; almost all the TaoSolve_xxx() have
>>>>>>>> a local variable iter; change that to tao->niter (I'm guess this is 
>>>>>>>> suppose
>>>>>>>> to capture this information) and add a TaoGetIterationNumber() and the 
>>>>>>>> uses
>>>>>>>> can access this. Also modify at the end of TaoSolve() 
>>>>>>>> -tao_converged_reason
>>>>>>>> to also print the iteration count. At the same time since you add this 
>>>>>>>> you
>>>>>>>> can add a tao->totalits which would accumulate all iterations over all 
>>>>>>>> the
>>>>>>>> solves for that Tao object and the routine TaoGetTotalIterations() to
>>>>>>>> access this.  Note that TaoSolve() would initialize tao->niter = 0 at 
>>>>>>>> the
>>>>>>>> top.
>>>>>>>>
>>>>>>>>    Thanks
>>>>>>>>
>>>>>>>>   Barry
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> > On Apr 10, 2015, at 4:16 PM, Justin Chang <[email protected]>
>>>>>>>> wrote:
>>>>>>>> >
>>>>>>>>  > Hi all,
>>>>>>>> >
>>>>>>>> > Is there a way to generically obtain the number of Tao
>>>>>>>> iterations? I am looking through the -help options for Tao and I don't 
>>>>>>>> see
>>>>>>>> any metric where you can output this quantity in the manner that you 
>>>>>>>> could
>>>>>>>> for SNES or KSP solves. I am currently using blmvm and tron, and the 
>>>>>>>> only
>>>>>>>> way I can see getting this metric is by outputting -tao_view and/or
>>>>>>>> -tao_monitor and manually finding this number. I find this cumbersome
>>>>>>>> especially for transient problems where I would like to simply have 
>>>>>>>> this
>>>>>>>> number printed for each step instead of ending up with unnecessary 
>>>>>>>> info.
>>>>>>>> >
>>>>>>>> > Thanks,
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > --
>>>>>>>> > Justin Chang
>>>>>>>> > PhD Candidate, Civil Engineering - Computational Sciences
>>>>>>>> > University of Houston, Department of Civil and Environmental
>>>>>>>> Engineering
>>>>>>>> > Houston, TX 77004
>>>>>>>> > (512) 963-3262
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to