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 >>>>>>> >>>>>>> >>>>> >>>> >>> >> >
