Yeah, setting the initial trust region from ||f|| is nuts. I have changed the 
code in master to set it based on ||x|| in the master development branch 
http://www.mcs.anl.gov/petsc/developers/index.html.  If you use a 
-snes_tr_delta0 .1 then it will limit the update to 10% as measured in the 2 
norm. I am not sure the trust region algorithms make sense using the max norm.  

   So now the initial size should be much more reasonable. Please let us know 
if this does not help.

  Barry

It will still be valuable for you to non-dimensionalize your variables.




> On May 15, 2015, at 6:37 PM, Mark Lohry <[email protected]> wrote:
> 
> I'm having an issue with SNES where the regular newton line search severely 
> overshoots the solution update, ending up with irrecoverable values (negative 
> densities and temperatures in a fluids code), so it seems newtonTR is a 
> better way to go.
> 
> the manual says to set delta0 using -snes_tr_delta0, where the trust region 
> radius is delta = delta0 * norm2( F ). My F values aren't well scaled and 
> have pretty different values so norm2 of the whole thing isn't particularly 
> meaningful. Ideally I'd like to tell SNES to limit the update to say, 10% of 
> the current value of any given unknown. Is this possible?

Reply via email to