[petsc-users] What is the difference between these two approaches?

Jed Brown jed at 59A2.org
Mon Feb 8 15:31:02 CST 2010

On Mon, 08 Feb 2010 16:13:53 -0500, "(Rebecca) Xuefei YUAN" <xy2102 at columbia.edu> wrote:
> Dear all,
> I do have an PDE-constrained optimization problem:
> F1(phi(x,y),c) = L(phi(x,y)) + rho(s1(x,y),s2(x,y)) = 0 (1)
> F2(phi(x,y),c) = int_{domain}(c*rho(s1(x,y),s2(x,y)) - 1.0)dxdy = 0 (2)
> where phi(x,y) is defined at each grid point and c is a scalar  
> parameter that satisfying the equation (2).

Is c the only parameter you are optimizing?  What does your system look
like in "minimize functional subject to PDE" form?

> I have two pieces of codes to solve them by different approaches.
> The first approach is to use DMComposite() to manage unknowns and  
> solve F1&F2 at the same time, and it calls DMMGSolve() once.
> The second approach is to solve F1 with a guess c for some number(i.e.  
> 1) times of nonlinear and linear iteration, and then update c from F2.  
> Solve F1 again with updated c till some conditions satisfied, for  
> example,

Perhaps the iteration has stagnated or found a different local minimum?
Have you compared the objective functions?

> d) the shortcoming of approach one is PETSc has not ready for assemble  
> a Jacobian for object DMComposite, so the second approach is able to  
> write an analytic Jacobian.

Does DMCompositeGetMatrix() not work for you?


More information about the petsc-users mailing list