> Are you sure the Jacobian is correct? Is this a buckling problem, or
> something nonsmooth like plasticity or contact? If not, Newton should
> converge fairly fast.
It should be, running on a 10x2x1 mesh I get convergence and a roughly correct
output (wrt FEAP). The problem is just a bar with an applied load, modelled
with nonlinear hysotropic elasticity (no plasticity, no contact).
> Did you set a near null space (rigid body modes) using
> MatSetNearNullSpace and perhaps MatNullSpaceCreateRigidBody? Are you
> using a nodal basis? How do you enforce boundary conditions?
I'm using Lagrange first order on HEX8 elements. Boundary conditions are set as
in the example:
std::set<boundary_id_type> boundary_ids;
boundary_ids.insert(4); // 3D
...
// Create a ZeroFunction to initialize dirichlet_bc
ZeroFunction<> zf;
DirichletBoundary dirichlet_bc(boundary_ids, variables, &zf);
system.get_dof_map().add_dirichlet_boundary(dirichlet_bc);
> Do you need the line search? with an NL decay rate that slow one of two
> things is happening I'd bet - either the Jacobian is incorrect, so your
> computed dU is not a descent direction(see the increase from steps 2-4) or
> the line search is behaving non-optimally.
Testing on the small 10x2x1 problem, without any option it fails:
> example-opt
> NL step 0, |residual|_2 = 3.464102e-05
> StVen system solved at nonlinear iteration 0 , final nonlinear residual norm:
> 3.464102e-05
With linesearch and JFNK it works:
> example-opt -snes_type ls -snes_linesearch_type basic -snes_mf_operator
> NL step 0, |residual|_2 = 3.464102e-05
> NL step 1, |residual|_2 = 2.417673e-04
> NL step 2, |residual|_2 = 6.139470e-08
> NL step 3, |residual|_2 = 5.468950e-13
> NL step 4, |residual|_2 = 7.179521e-18
> StVen system solved at nonlinear iteration 4 , final nonlinear residual norm:
> 7.179521e-18
Using either linesearch or JFNK it doesn't converge, it looks like I need both.
Apparently I can do without LU, but still it's very slow.
Thanks
Lorenzo
On Nov 25, 2013, at 4:01 PM, Kirk, Benjamin (JSC-EG311) wrote:
>
> On Nov 25, 2013, at 6:23 AM, Lorenzo Zanon <[email protected]>
> wrote:
>
>> Hello,
>>
>> Thanks for the detailed answer!
>>
>> I've just re-run the executable taking off the -snes_mf_operator and LU
>> options, but it doesn't look any better... :
>>
>> Running ./example-opt -snes_type ls -snes_linesearch_type basic -ksp_rtol
>> 1e-4
>> NL step 0, |residual|_2 = 1.936492e-05
>> NL step 1, |residual|_2 = 1.938856e-05
>> NL step 2, |residual|_2 = 1.941222e-05
>> NL step 3, |residual|_2 = 1.943592e-05
>> NL step 4, |residual|_2 = 1.945964e-05
>>
>> Then I stopped it because it didn't look like converging, after one hour or
>> so.
>>
>
> Do you need the line search? with an NL decay rate that slow one of two
> things is happening I'd bet - either the Jacobian is incorrect, so your
> computed dU is not a descent direction(see the increase from steps 2-4) or
> the line search is behaving non-optimally.
>
> I think -snes_info (?) will present more verbose information that may be
> useful to you.
>
> -Ben
>
------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing
conversations that shape the rapidly evolving mobile landscape. Sign up now.
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users