Ozzy,

     I cannot say why it is implemented as >=  (could be in error). Just try 
changing the PETSc code (just run make gnumake in the PETSc directory after you 
change the source to update the library) and see how it affects your code run.

   Barry

> On May 28, 2015, at 3:15 AM, Asbjørn Nilsen Riseth <[email protected]> 
> wrote:
> 
> Dear PETSc developers,
> 
> Is the active set in NewtonRSLS defined differently from the reference* you 
> give in the documentation on purpose?
> The reference defines the active set as:
> x_i = 0 and F_i > 0,
> whilst the PETSc code defines it as x_i = 0 and F_i >= 0 (vi.c: 356) :
> !((PetscRealPart(x[i]) > PetscRealPart(xl[i]) + 1.e-8 || (PetscRealPart(f[i]) 
> < 0.0)
> So PETSc freezes the variables if f[i] == 0.
> 
> I've been using the Newton RSLS method to ensure positivity in a subsurface 
> flow problem I'm working on. My solution stays almost constant for two 
> timesteps (seemingly independent of the size of the timestep), before it goes 
> towards the expected solution.
> From my initial conditions, certain variables are frozen because x_i = 0 and 
> f[i] = 0, and I was wondering if that could be the cause of my issue.
> 
> 
> *:
> - T. S. Munson, and S. Benson. Flexible Complementarity Solvers for 
> Large-Scale Applications, Optimization Methods and Software, 21 (2006).
> 
> 
> Regards,
> Ozzy

Reply via email to