smitc solver convergence

General discussion about Elmer
Post Reply
JohnP
Posts: 4
Joined: 27 Jul 2013, 20:06
Antispam: Yes

smitc solver convergence

Post by JohnP »

I'm a new Elmer user, and I'm running into convergence issues with the smitc solver. I started with the platesEigen test case, and started to adapt it to my problem of interest piece-by-piece. The situation I'm trying to model is a thin plate that is fixed along some of its edges and free on its other edges. It seems that, depending on which edges are fixed or free, the solver either converges or fails to converge. When the solver converges, the results look reasonable in ElmerPost.

Am I missing some basic point in setting up this problem? If not, what solver parameters should I adjust to improve the convergence?

Since I'll eventually need to set up my own geometry, I'm using Gmsh to create a mesh. Here is my Gmsh input file, plates.geo:

Code: Select all

// create mesh with gmsh plates.geo -2
// then, convert to Elmer mesh with ElmerGrid 14 2 plates.msh

w = 0.2; // width
Mesh.CharacteristicLengthMax = w / 20;

Point(1) = {0, 0, 0};
Point(2) = {w/2, 0, 0};
Point(3) = {w/2, w/2, 0};
Point(4) = {w, w/2, 0};
Point(5) = {w, w, 0};
Point(6) = {0, w, 0};

Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 5};
Line(5) = {5, 6};
Line(6) = {6, 1};

Line Loop(7) = {1, 2, 3, 4, 5, 6};
Plane Surface(8) = {7};
Physical Line(101) = {1, 2, 3, 4, 5};
Physical Line(102) = {6};
Physical Surface(201) = {8};
Here is my ElmerSolver input file, plates.sif:

Code: Select all

Header
  Mesh DB "." "plates"
End

Constants
End

Simulation
  Max Output Level = 5
  Coordinate System = Cartesian 2D
  Simulation Type = Steady State
  Steady State Max Iterations = 1
  Output Intervals = 1
  Post File = "plates.ep" 
End

Body 1
  Equation = 1
  Material = 1
  Target Bodies(1) = 201
End

Material 1
   Density = 2330
   Thickness = 0.001
   Youngs Modulus = 900e9
   Poisson Ratio = 0.3
End

Solver 1
  Equation = Plate Solver
  Procedure = "Smitc" "SmitcSolver"
  Linear System Solver = Iterative
  Linear System Max Iterations = 500
  Linear System Residual Output = 0
  Linear System Iterative Method = BiCGStab
  Linear System Preconditioning = ILU0
  Linear System Convergence Tolerance = 1.0e-8
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Newton After Iterations = 20
  Nonlinear System Max Iterations = 1
  Nonlinear System Convergence Tolerance = 1.0e-5
  Nonlinear System Relaxation Factor = 1.0
  Steady State Convergence Tolerance = 1.0e-6

  Eigen Analysis = True
  Eigen System Values = 10
  Eigen System Convergence Tolerance = Real 1.0e-6
  Eigen System Select = smallest magnitude
End

Solver 2 
  Equation = SaveScalars
  Procedure = "SaveData" "SaveScalars"
  Show Norm = True
  Show Norm Index = 1
  Variable 1 = Deflection
  Save EigenValues = Logical True
End


Equation 1
  Active Solvers(1) = 1
! Element = p:2  ! also tried this, but convergence or failure thereof was same
End

Boundary Condition 1
  Target Boundaries(1) = 101   ! converges when only left-hand edge is free
! Target Boundaries(2) = 101 102   ! converges when all edges are fixed
! Target Boundaries(1) = 102   ! fails to converge if only left-hand edge fixed
  Deflection 1 = 0  ! z-deflection
  Deflection 2 = 0  ! x-rotation
  Deflection 3 = 0  ! y-rotation
End
raback
Site Admin
Posts: 4832
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: smitc solver convergence

Post by raback »

Hi

Not seeing you geometry it is difficult to say. Generally convergence would be difficult if there is some undetermined rigid body motion. I don't know whether that's the case.

If it just the solution you could improve ILU i.e. ILU0 -> ILU1 -> ILU2 etc.. Or you could use direct method i.e.

Code: Select all

Linear System Solver = Direct
Linear System Direct Method = umfpack
As the Smitc solver is always 2D this should work pretty well.

Smitc solver is a special formulation that only works with linear triangles and quads and hence p:2 will not work here.

-Peter
JohnP
Posts: 4
Joined: 27 Jul 2013, 20:06
Antispam: Yes

Re: smitc solver convergence

Post by JohnP »

Thanks for the help.

My geometry is essentially the same as the platesEigen test case, a square with the lower right quarter removed. Compared with the test case, I have changed the length scale and some material properties. I'm also trying different combinations of free and fixed edges.

I tried ILU1 and ILU2, but neither gave me converged solutions for cases which ILU0 did not converge.

Going to a direct, umfpack solver gave a converged and reasonable looking solution, so I presume the case doesn't have any free-body motion problems. I've attached an image from ElmerPost showing a solution that I can get with the direct solver but get a failure to converge with the iterative solver. Only the left edge is fixed, so the first mode looks like an L-shaped diving board waving.

I haven't encountered it with this case yet, but with another case, I remember running into the DNAUPD error from the direct, umfpack solver that was reported in another thread. The info code returned was -9999. I'll keep working with the case I have now, changing the geometry to my problem of interest, and see if the same error appears again.
Attachments
First eigenmode of case that fails to converge with iterative solver, but converged with direct solver.
First eigenmode of case that fails to converge with iterative solver, but converged with direct solver.
mode_01.png (10.22 KiB) Viewed 4595 times
raback
Site Admin
Posts: 4832
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: smitc solver convergence

Post by raback »

Hi

Ok, I guess the problem may be difficult to precondition. You should not have null-space problems as it is an eigenmode problem and also deflections are set. Silly of me to think you could.

If you run out of the memory pointer size in "umfpack" and would have it on your computer you can try "big umfpack" instead.

-Peter
JohnP
Posts: 4
Joined: 27 Jul 2013, 20:06
Antispam: Yes

Re: smitc solver convergence

Post by JohnP »

So far, memory hasn't been a problem, but thanks for the advice about big umfpack.

Can the smitc solver accept a tensor for Young's Modulus? I have a case that umfpack solves OK with a scalar Young's Modulus, but it fails when I substitute a 6x6 tensor Young's Modulus. It gives this error message:

Code: Select all

ERROR:: EigenSolve:  Error with DNAUPD, info =        -9999
Post Reply