Dear Elmer developers,
I setup a case under ElmerGUI (a code very nicely done!). When I used BiCGStab for N-S, the case ran without any problem. When I switched to multigrid, I got the following error:
It looks like ElmerGUI does not write out the sif file correctly?
Is there any general guideline for applying multigrid when solving N-S?
Pei-Ying
------------------------------------------
ResultOutputSolver: Time used for saving: 3.8129999999999997
ResultOutputSolver: -------------------------------------
FlowSolve:
FlowSolve:
FlowSolve: -------------------------------------
FlowSolve: NAVIER-STOKES ITERATION 1
FlowSolve: -------------------------------------
FlowSolve:
FlowSolve: Starting Assembly...
FlowSolve: Assembly done
FlowSolve: Dirichlet conditions done
WARNING:: ListFind:
WARNING:: ListFind: Requested property: [Linear System Convergence Tolerance], not found
WARNING:: ListFind:
MeshName:.
ERROR:: LoadMesh: Unable to load mesh: ./mgrid2
Could not open ./mgrid2/mesh.header
multi grid error
-
- Site Admin
- Posts: 4868
- Joined: 22 Aug 2009, 11:57
- Antispam: Yes
- Location: Espoo, Finland
- Contact:
Re: multi grid error
Hi Pei-Ying
Generally none of the provided multigrid method does not converge particularly well for monolithic Navier-Stokes. With the segragated version you may have better luck but that does not have all the bells and whisles, and is not available via ElmerGUI.
-Peter
Don'tphsieh2005 wrote: Is there any general guideline for applying multigrid when solving N-S?
Generally none of the provided multigrid method does not converge particularly well for monolithic Navier-Stokes. With the segragated version you may have better luck but that does not have all the bells and whisles, and is not available via ElmerGUI.
-Peter
Re: multi grid error
HI, i don't know if MG can help in N-S (i'm trying to do this too) but probably your error is given because of a GUI bug. From the GUI you can adjust your option for MG either preconditioning or solver but then the GUI pre-processor doesn't write command lines in the .sif file. For example i manually added the MG lines:
Solver 2
Equation = Navier-Stokes
Variable = Flow Solution[Velocity:2 Pressure:1]
Procedure = "FlowSolve" "FlowSolver"
Exec Solver = Always
Stabilize = True
Bubbles = False
Lumped Mass Matrix = False
Optimize Bandwidth = True
Steady State Convergence Tolerance = 1.0e-5
Nonlinear System Convergence Tolerance = 1.0e-8
Nonlinear System Max Iterations = 20
Nonlinear System Newton After Iterations = 3
Nonlinear System Newton After Tolerance = 1.0e-3
Nonlinear System Relaxation Factor = 0.5
Linear System Solver = Multigrid
MG Levels= 4
MG Equal Split = True
MG Mesh Name = prova
MG Max Iterations = 2
MG Convergence Tolerance = 1e-05
MG Smoother = Jacobi
MG Pre Smoothing Iterations = 5
MG Post Smoothing Iterations = 5
MG Preconditioning = ILUT
MG ILUT Tolerance = 1e-03
Solver 2
Equation = Navier-Stokes
Variable = Flow Solution[Velocity:2 Pressure:1]
Procedure = "FlowSolve" "FlowSolver"
Exec Solver = Always
Stabilize = True
Bubbles = False
Lumped Mass Matrix = False
Optimize Bandwidth = True
Steady State Convergence Tolerance = 1.0e-5
Nonlinear System Convergence Tolerance = 1.0e-8
Nonlinear System Max Iterations = 20
Nonlinear System Newton After Iterations = 3
Nonlinear System Newton After Tolerance = 1.0e-3
Nonlinear System Relaxation Factor = 0.5
Linear System Solver = Multigrid
MG Levels= 4
MG Equal Split = True
MG Mesh Name = prova
MG Max Iterations = 2
MG Convergence Tolerance = 1e-05
MG Smoother = Jacobi
MG Pre Smoothing Iterations = 5
MG Post Smoothing Iterations = 5
MG Preconditioning = ILUT
MG ILUT Tolerance = 1e-03
Re: multi grid error
Hi Everyone,
I've been trying to use the Multigrid option as a preconditioner but i didnt make it work since either it always crashes or i get the following message:
ERROR:: LoadMesh: Unable to load mesh: ./mgrid2
or
ERROR:: LoadMesh: Unable to load mesh: ./mgrid3
I wrote the following commands in the .sif file (while trying i wrote other options too, but unsuccessfully anyway):
Procedure = "StressSolve" "StressSolver"
...
Linear System Preconditioning = Multigrid
MG Levels = 4
MG Equal Split = True
MG Max Iterations = 4
MG Convergence Tolerance = 1e-5
In this example, ElmerSolver crashes. What is missing in there? Is something wrong defined?
Thanks in advance
Supituki
Pd: I have only defined one mess. After reading the documentation i seems it should be that way, since i don't want them to be introduced manually with the "MG Mesh Name" command
I've been trying to use the Multigrid option as a preconditioner but i didnt make it work since either it always crashes or i get the following message:
ERROR:: LoadMesh: Unable to load mesh: ./mgrid2
or
ERROR:: LoadMesh: Unable to load mesh: ./mgrid3
I wrote the following commands in the .sif file (while trying i wrote other options too, but unsuccessfully anyway):
Procedure = "StressSolve" "StressSolver"
...
Linear System Preconditioning = Multigrid
MG Levels = 4
MG Equal Split = True
MG Max Iterations = 4
MG Convergence Tolerance = 1e-5
In this example, ElmerSolver crashes. What is missing in there? Is something wrong defined?
Thanks in advance
Supituki
Pd: I have only defined one mess. After reading the documentation i seems it should be that way, since i don't want them to be introduced manually with the "MG Mesh Name" command
-
- Site Admin
- Posts: 4868
- Joined: 22 Aug 2009, 11:57
- Antispam: Yes
- Location: Espoo, Finland
- Contact:
Re: multi grid error
Hi
The geometric multigrid (GMG) assumes a hierarchy of meshes. They may either be given by the user, or created internally by mesh multiplication i.e. splitting the initial mesh recursively a few times. This is controlled by the "Mesh Levels" keyword in Simulation section. The downside of this is that the initial coarse mesh must be able to describe the geometetry and mesh grading accurately enough.
-Peter
The geometric multigrid (GMG) assumes a hierarchy of meshes. They may either be given by the user, or created internally by mesh multiplication i.e. splitting the initial mesh recursively a few times. This is controlled by the "Mesh Levels" keyword in Simulation section. The downside of this is that the initial coarse mesh must be able to describe the geometetry and mesh grading accurately enough.
-Peter
Re: multi grid error
Hi peter,
Thanks for your repply.
I have read the Meshing Utilities chapter and added the necessary command to the .sif file.
Elmersolver now correctly splits the mesh although sometimes it crashes. This is probably due to the mesh¿?, as depending on it sometimes elmer runs until the assembly part.
At this point i always get the following:
"Operating system error: No error"
"Out of memory"
or
"Error: BANDSOLVER: Memory allocation error."
It is something strange to me, because the mesh is not extremely big nor complex. What could be the reason?
Supituki.
Pd: These are the lines of the .sif file:
Thanks for your repply.
I have read the Meshing Utilities chapter and added the necessary command to the .sif file.
Elmersolver now correctly splits the mesh although sometimes it crashes. This is probably due to the mesh¿?, as depending on it sometimes elmer runs until the assembly part.
At this point i always get the following:
"Operating system error: No error"
"Out of memory"
or
"Error: BANDSOLVER: Memory allocation error."
It is something strange to me, because the mesh is not extremely big nor complex. What could be the reason?
Supituki.
Pd: These are the lines of the .sif file:
Code: Select all
Simulation
Max Output Level = 4
Coordinate System = Cartesian
Coordinate Mapping(3) = 1 2 3
Simulation Type = Steady state
Steady State Max Iterations = 1
Output Intervals = 1
Solver Input File = Flexo_DynExperts_Modal_EigenValues_1.sif
Post File = Results_Flexo_DynExperts_Modal_EigenValues_1.ep
Mesh Levels = 2
Mesh Keep Grading = True
Mesh Grading Power = 3
End
Code: Select all
Solver 1
Equation = Linear elasticity
Procedure = "StressSolve" "StressSolver"
Variable = -dofs 3 Displacement
Exec Solver = Always
Stabilize = True
Bubbles = False
Lumped Mass Matrix = False
Optimize Bandwidth = True
Steady State Convergence Tolerance = 1.0e-7
Linear System Solver = Iterative
Linear System Max Iterations = 10000
Linear System Iterative Method = BiCGstabl
BiCGstabl polynomial degree = 3
Linear System Convergence Tolerance = 5.0e-7
Linear System Preconditioning = Multigrid
MG Levels = 2
MG Equal Split = True
MG Max Iterations = 4
MG Convergence Tolerance = 1e-5
Linear System Abort Not Converged = False
Linear System Residual Output = 1
Linear System Precondition Recompute = 1
Solver Timing Cumulative = True
Linear System Timing Cumulative = True
Eigen Analysis = True
Eigen System Values = 3
Eigen System Max Iterations = 5000
Eigen System Select = Smallest Magnitude
End
-
- Site Admin
- Posts: 4868
- Joined: 22 Aug 2009, 11:57
- Antispam: Yes
- Location: Espoo, Finland
- Contact:
Re: multi grid error
Hi
Note that if you split a 3D mesh n times you will have 2^3^n more elements. So four levels would give 4096 times the amount of elements. Therefore the initial mesh density should be rather sparse. Probably your system becomes too big for the memory.
-Peter
Note that if you split a 3D mesh n times you will have 2^3^n more elements. So four levels would give 4096 times the amount of elements. Therefore the initial mesh density should be rather sparse. Probably your system becomes too big for the memory.
-Peter
Re: multi grid error
Hi Peter,
Upsssssssssssssssssssssssssssssss. That was a huge mistake.
Thanks very much for your help
Supituki
Upsssssssssssssssssssssssssssssss. That was a huge mistake.
Thanks very much for your help
Supituki