[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