Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
 All Classes Files Functions Variables Typedefs Macros Groups Pages
multigrid Module Reference

Public Member Functions

recursive subroutine multigridsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine gmgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine multigridsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine gmgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine pmgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine amgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine cmgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
subroutine msolveractivate (Model, Solver, dt, TransientSimulation)
 
recursive subroutine pmgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine amgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
recursive subroutine cmgsolve (Matrix1, Solution, ForceVector, DOFs, Solver, Level, NewSystem)
 
subroutine msolveractivate (Model, Solver, dt, TransientSimulation)
 

Member Function/Subroutine Documentation

recursive subroutine multigrid::amgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:)  Solution,
real(kind=dp), dimension(:)  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)

Subroutine containing algebraic multigrid solver using roughly the standard Ruge-Stuben interpolation. Also some ideas of compatible relaxation have been tested within the context but their usability has so far been rather limited.

References amgsweep(), amgtest(), choosecoarsenodes(), crsmatrix::crs_ilut(), crsmatrix::crs_incompletelu(), crs_projectmatrixcreate(), crsmatrix::crs_transpose(), directsolve::directsolver(), messages::fatal(), elementutils::freematrix(), messages::info(), itersolve::itersolver(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), lists::listsetnamespace(), mgmv(), mgnorm(), parallelutils::parallelinitsolve(), parallelutils::paralleliter(), parallelutils::parallelmatrix(), parallelutils::parallelupdateresult(), savematrix(), solver(), and messages::warn().

Referenced by multigridsolve().

Here is the call graph for this function:

Here is the caller graph for this function:

recursive subroutine multigrid::amgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:)  Solution,
real(kind=dp), dimension(:)  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)

Subroutine containing algebraic multigrid solver using roughly the standard Ruge-Stuben interpolation. Also some ideas of compatible relaxation have been tested within the context but their usability has so far been rather limited.

References amgsweep(), amgtest(), choosecoarsenodes(), crsmatrix::crs_ilut(), crsmatrix::crs_incompletelu(), crs_projectmatrixcreate(), crsmatrix::crs_transpose(), directsolve::directsolver(), messages::fatal(), elementutils::freematrix(), messages::info(), itersolve::itersolver(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), lists::listsetnamespace(), mgmv(), mgnorm(), parallelutils::parallelinitsolve(), parallelutils::paralleliter(), parallelutils::parallelmatrix(), parallelutils::parallelupdateresult(), savematrix(), solver(), and messages::warn().

Here is the call graph for this function:

recursive subroutine multigrid::cmgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:)  Solution,
real(kind=dp), dimension(:)  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)

Subroutine containing agglomeration or cluster multigrid solver. This provides in princinple an economical approach to multilevel schemes. The utilization of the routines are still not complete.

References clusteringmethods::chooseclusternodes(), cmgsweep(), crs_clustermatrixcreate(), crsmatrix::crs_ilut(), crsmatrix::crs_incompletelu(), directsolve::directsolver(), messages::fatal(), elementutils::freematrix(), messages::info(), itersolve::itersolver(), lists::listgetconstreal(), lists::listgetconstrealarray(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), lists::listsetnamespace(), mgmv(), smoothers::mgsmooth(), parallelutils::parallelinitsolve(), parallelutils::paralleliter(), parallelutils::parallelmatrix(), parallelutils::parallelreduction(), parallelutils::parallelupdateresult(), saveclusters(), solver(), and messages::warn().

Referenced by multigridsolve().

Here is the call graph for this function:

Here is the caller graph for this function:

recursive subroutine multigrid::cmgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:)  Solution,
real(kind=dp), dimension(:)  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)
recursive subroutine multigrid::gmgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:), target  Solution,
real(kind=dp), dimension(:), target  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)
recursive subroutine multigrid::gmgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:), target  Solution,
real(kind=dp), dimension(:), target  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)
subroutine multigrid::msolveractivate ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

References lists::checkelementequation(), lists::listaddinteger(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetstring(), lists::listsetnamespace(), parallelutils::parallelactive(), meshutils::setcurrentmesh(), solver(), and lists::variableget().

Referenced by gmgsolve().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine multigrid::msolveractivate ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

References lists::checkelementequation(), lists::listaddinteger(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetstring(), lists::listsetnamespace(), parallelutils::parallelactive(), meshutils::setcurrentmesh(), solver(), and lists::variableget().

Here is the call graph for this function:

recursive subroutine multigrid::multigridsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:)  Solution,
real(kind=dp), dimension(:)  ForceVector,
integer  DOFs,
type(solver_t)  Solver,
integer  Level,
logical, optional  NewSystem 
)

Multigrid solution subroutine common for all different multilevel strategies. Multigrid methods include own developments of geometric, algebraic, clustering and p-element versions.

References amgsolve(), cmgsolve(), gmgsolve(), messages::info(), lists::listgetlogical(), lists::listgetstring(), pmgsolve(), and solver().

Referenced by amgsweep(), eigensolve::arpackeigensolve(), eigensolve::arpackeigensolvecomplex(), eigensolve::arpackstabeigensolve(), cmgsweep(), gmgsweep(), multigridprec(), paralleleigensolve::parallelarpackeigensolve(), pmgsweep(), and solverutils::solvelinearsystem().

Here is the call graph for this function:

Here is the caller graph for this function:

recursive subroutine multigrid::multigridsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:)  Solution,
real(kind=dp), dimension(:)  ForceVector,
integer  DOFs,
type(solver_t)  Solver,
integer  Level,
logical, optional  NewSystem 
)

Multigrid solution subroutine common for all different multilevel strategies. Multigrid methods include own developments of geometric, algebraic, clustering and p-element versions.

References amgsolve(), cmgsolve(), gmgsolve(), lists::listgetlogical(), lists::listgetstring(), pmgsolve(), and solver().

Here is the call graph for this function:

recursive subroutine multigrid::pmgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:), target  Solution,
real(kind=dp), dimension(:), target  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)

Multigrid solution in the case when different levels are different power of element basis functions.

References generalutils::allocatematrix(), crsmatrix::crs_ilut(), crsmatrix::crs_incompletelu(), directsolve::directsolver(), elementdescription::elementinfo(), messages::info(), itersolve::itersolver(), lists::listaddlogical(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetintegerarray(), lists::listgetlogical(), lists::listgetstring(), lists::listsetnamespace(), mgmv(), mgnorm(), parallelutils::parallelinitsolve(), parallelutils::paralleliter(), parallelutils::parallelmatrix(), parallelutils::parallelupdateresult(), pmggetelementdofs(), pmgsweep(), savematrix(), and solver().

Referenced by multigridsolve().

Here is the call graph for this function:

Here is the caller graph for this function:

recursive subroutine multigrid::pmgsolve ( type(matrix_t), pointer  Matrix1,
real(kind=dp), dimension(:), target  Solution,
real(kind=dp), dimension(:), target  ForceVector,
integer  DOFs,
type(solver_t), target  Solver,
integer  Level,
logical, optional  NewSystem 
)

The documentation for this module was generated from the following files: