Use -pc_type lu -ksp_monitor_true_residual -snes_monitor -ksp_monitor and send the outputs
Barry On May 9, 2011, at 10:43 PM, Tian(ICT) wrote: > by the way, the increment size is like that > for a 100 lengh model, the increment is set to 0.05, > the engineering strain is around 5%% per load step. > This is already too small increment size for a large deformation analysis. > a 0.5 increment size leads to both linear search and trust region failed. > linear search failed for 0.05 while trust region converges with 17 Newton > iterations each load step. > Rong > > ----- Original Message ----- From: "Tian(ICT)" <rongtian at ncic.ac.cn> > To: "PETSc users list" <petsc-users at mcs.anl.gov> > Sent: Tuesday, May 10, 2011 11:37 AM > Subject: Re: [petsc-users] nonzero prescribed boundary condition > > >> First, thanks again, the issue was gone. >> >> I just followed up with some test results. >> I have tested SNES using one finite element for a geometric large >> deformation problem. >> Those are just the very early test results so they may be not telling what >> happened exactly. >> For the displacement controlled load, I found that convergence is much >> slower than that of force loading. >> Even worse, linear search is so sensitive to the displacement increment and >> diverged no matter what the increment size was used (too small incremnt also >> led to diverged soloution (-6 reason), trust region works well in the sense >> of not sensitive to the displacement increment, but during each load step, >> it requires around ten to several tens of Newton interations whereas for the >> force loading case and the almost same amount of deformation, this is >> normally 3. This is against my expectation. Any hint? >> >> Rong >> >> ----- Original Message ----- From: "Barry Smith" <bsmith at mcs.anl.gov> >> To: "PETSc users list" <petsc-users at mcs.anl.gov> >> Sent: Tuesday, May 10, 2011 10:22 AM >> Subject: Re: [petsc-users] nonzero prescribed boundary condition >> >> >> >> On May 9, 2011, at 9:15 PM, Tian(ICT) wrote: >> >>> Dear Barry, Thanks a lot for quick answering. >>> I checked the development documents and found the new version of >>> MatZeroRows() does support the nonzero prescribed boundary conditions. >>> >>> I followed up with more details. >>> I am using Petasc 2.3.3. to solve a nonlinear problem, e.g. using SNES >>> solvers. >>> I used a displacement-controlled load (as this type of loading works well >>> for all cases). >>> This is the reason the nonzero prescribed boundary came up. >>> >>> In FormJacobian, I modified Jacobian and residual to satisfy the nonzero >>> prescribed boundary. >>> In FormFunction, I modified the solution to the known solution(this should >>> not be necessary as the modified Jacobian and rhs should give the >>> prescribed solution also) >> >> You should not do it this way. See below. >>> >>> Now I found another issue, no matter if I prescried the solution or not in >>> FormFunction, >>> SNES solver always call FormFunction and never call FormJacobian. >> >> The only reason it would not call FormJacobian is if decided that the >> residual norm was small enough before any Newton steps; for example if the >> FormFunction() computed exactly the zero function initially. When you run >> with -snes_monitor -ksp_monitor what does it print for residual norms. >> >>> Of course the solver finally diverged or converged to a zero solution. >>> >>> So my quick follow up question is How a displacement-controled load is done >>> corrently in Petsc 2.3.3? >> >> To do it in 2.3.3 simply have for those components of F() the formula F_i = >> x_i - givenvalue_i and in your Jacobian just use MatZeroRows() for those rows >> >> We strongly urge you to upgrade to the latest PETSc before doing anything >> further. >> >> >> Barry >> >>> >>> Rong >>> >>> ----- Original Message ----- From: "Barry Smith" <bsmith at mcs.anl.gov> >>> To: "PETSc users list" <petsc-users at mcs.anl.gov> >>> Sent: Tuesday, May 10, 2011 9:31 AM >>> Subject: Re: [petsc-users] nonzero prescribed boundary condition >>> >>> >>> >>> In petsc-dev http://www.mcs.anl.gov/petsc/petsc-as/developers/index.html we >>> have modified the calling sequence for MatZeroRows() so that it can >>> automatically adjust the appropriate right hand side values for the zeroed >>> rows to support zero or non-zero prescribed boundary conditions easily. >>> >>> Barry >>> >>> On May 9, 2011, at 8:18 PM, Tian(ICT) wrote: >>> >>>> Dear all, >>>> >>>> I got this question long ago and searched the prior posting but did not >>>> find the solution. >>>> The question is about nonzero prescribed boundary condition. >>>> My understanding is that MatZeroRows() works only for zero prescribed >>>> value, not non-zero value. >>>> For the non-zero values, we have to remove the rows associated with the >>>> boundary, but this >>>> will lead to a zero dignal and accordingly the rows in r.h.s should also >>>> be removed. >>>> My question is that does MatZeroRows() also works for nonzero prescribed >>>> boundary and if so how to do it simply? >>>> >>>> Rong >>> >>> >> >> >
