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

Reply via email to