[petsc-users] nonzero prescribed boundary condition

Tian(ICT) rongtian at ncic.ac.cn
Mon May 9 22:43:01 CDT 2011


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



More information about the petsc-users mailing list