Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
|
Public Member Functions | |
recursive subroutine | freematrix (Matrix) |
subroutine | makelistmatrix (Model, Solver, Mesh, List, Reorder, LocalNodes, Equation, DGSolver, GlobalBubbles) |
subroutine | initializematrix (Matrix, n, List, Reorder, InvInitialReorder, DOFs) |
type(matrix_t) function, pointer | creatematrix (Model, Solver, Mesh, Perm, DOFs, MatrixFormat, OptimizeBW, Equation, DGSolver, GlobalBubbles) |
subroutine | rotatematrix (Matrix, Vector, n, DIM, DOFs, NodeIndexes, Normals, Tangent1, Tangent2) |
subroutine | tangentdirections (Normal, Tangent1, Tangent2) |
real(kind=dp) function | volumeintegrate (Model, ElementList, IntegrandFunctionName) |
function | fluxintegrate (Model, ElementList, IntegrandFunctionName) |
real(kind=dp) function, dimension(3) | surfaceintegrate (Model, ElementList, IntegrandFunctionName) |
real(kind=dp) function | lineintegrate (Model, LineElement, LineElementNodes, IntegrandFunctionName, QuadrantTreeExists, RootQuadrant) |
real(kind=dp) function | elementarea (Mesh, Element, N) |
type(matrix_t) function, pointer elementutils::creatematrix | ( | type(model_t) | Model, |
type(solver_t), target | Solver, | ||
type(mesh_t) | Mesh, | ||
integer, dimension(:), target | Perm, | ||
integer | DOFs, | ||
integer | MatrixFormat, | ||
logical | OptimizeBW, | ||
character(len=*), optional | Equation, | ||
logical, optional | DGSolver, | ||
logical, optional | GlobalBubbles | ||
) |
References generalutils::allocatematrix(), bandmatrix::band_creatematrix(), crsmatrix::crs_creatematrix(), crsmatrix::crs_makematrixindex(), crsmatrix::crs_sortmatrix(), generalutils::i2s(), initializematrix(), lists::initialpermutation(), listmatrix::list_freematrix(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetintegerarray(), lists::listgetlogical(), makelistmatrix(), bandwidthoptimize::optimizebandwidth(), solver(), and lists::stringtolowercase().
Referenced by acousticssolver(), mainutils::addequationbasics(), computestress(), computestressandstrain(), modeldescription::getnodalelementsize(), freesurface::poissonsolve(), radiationfactors(), adaptive::refinemesh(), solverutils::solveharmonicsystem(), and meshutils::updatesolvermesh().
real(kind=dp) function elementutils::elementarea | ( | type(mesh_t), pointer | Mesh, |
type(element_t) | Element, | ||
integer | N | ||
) |
References coordinatesystems::coordinatesqrtmetric(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), integration::gausspoints(), nx, and ny.
Referenced by computeaveragevelocity(), radiation::computeradiationcoeff(), radiation::computeradiationload(), diffusegrayradiation(), heatsolver(), localmatrix(), maxwellstresstensorintegrate(), normalizefactors(), surfaceforceintegration(), and updategebhardtfactors().
function elementutils::fluxintegrate | ( | type(model_t) | Model, |
integer, dimension(:) | ElementList, | ||
character(len=*) | IntegrandFunctionName | ||
) |
Integrates the normal component of a user-defined vector function over the specified boundary elements.
model | All model information (mesh, materials, BCs, etc...) |
elementlist | List of elements that belong to the integration boundary |
integrandfunctionname | Name the function has in the .sif file |
References coordinatesystems::coordinatesqrtmetric(), coordinatesystems::coordinatesystemdimension(), elementdescription::elementinfo(), integration::gausspoints(), lists::listgetreal(), normal(), and elementdescription::normalvector().
recursive subroutine elementutils::freematrix | ( | type(matrix_t), pointer | Matrix) |
Frees structures of the matrix.
References directsolve::directsolver(), and solver().
Referenced by mainutils::addequationbasics(), addsolvers(), multigrid::amgsolve(), eigensolve::arpackdampedeigensolve(), bsolver(), multigrid::cmgsolve(), computestress(), eliminatedirichlet(), eliminateperiodic(), fetisolve::fetiproject(), fetisolve::fetisendrecvif(), freemodel(), freesolver(), modeldescription::getnodalelementsize(), magnetodynamics2d(), magnetodynamics2dharmonic(), solverutils::mortarrobinsolver(), radiationfactors(), adaptive::refinemesh(), meshutils::releasemesh(), solverutils::solvesystem(), and solverutils::solvewithlinearrestriction().
subroutine elementutils::initializematrix | ( | type(matrix_t), pointer | Matrix, |
integer | n, | ||
type(listmatrix_t), dimension(:) | List, | ||
integer, dimension(:) | Reorder, | ||
integer, dimension(:) | InvInitialReorder, | ||
integer | DOFs | ||
) |
Initialize a CRS format matrix to the effect that it will be ready to accept values when CRS_GlueLocalMatrix is called (build up the index tables of a CRS format matrix)....
References crsmatrix::crs_sortmatrix().
Referenced by creatematrix().
real(kind=dp) function elementutils::lineintegrate | ( | type(model_t) | Model, |
type(element_t), target | LineElement, | ||
real(kind=dp), dimension(:,:), target | LineElementNodes, | ||
character(len=*) | IntegrandFunctionName, | ||
logical | QuadrantTreeExists, | ||
type(quadrant_t), pointer | RootQuadrant | ||
) |
Integrates the normal component of a user-defined vector function over a specified line element.
References coordinatesystems::coordinatesqrtmetric(), coordinatesystems::coordinatesystemdimension(), elementdescription::elementinfo(), interpolation::findleafelements(), integration::gausspoints(), elementdescription::interpolateinelement(), lists::listgetreal(), normal(), elementdescription::normalvector(), and interpolation::pointinelement().
subroutine elementutils::makelistmatrix | ( | type(model_t) | Model, |
type(solver_t) | Solver, | ||
type(mesh_t) | Mesh, | ||
type(listmatrix_t), dimension(:), pointer | List, | ||
integer, dimension(:), optional | Reorder, | ||
integer | LocalNodes, | ||
character(len=*), optional | Equation, | ||
logical, optional | DGSolver, | ||
logical, optional | GlobalBubbles | ||
) |
Create a list matrix given the mesh, the active domains and the elementtype related to the solver. The list matrix is flexible since it can account for any entries. Also constraints and periodic BCs may give rise to entries in the list matrix topology.
References lists::checkelementequation(), gebhardtfactors(), listmatrix::list_allocatematrix(), listmatrix::list_getmatrixindex(), lists::listgetlogical(), and solver().
Referenced by creatematrix().
subroutine elementutils::rotatematrix | ( | real(kind=dp), dimension(:,:) | Matrix, |
real(kind=dp), dimension(:) | Vector, | ||
integer | n, | ||
integer | DIM, | ||
integer | DOFs, | ||
integer, dimension(:) | NodeIndexes, | ||
real(kind=dp), dimension(:,:), pointer | Normals, | ||
real(kind=dp), dimension(:,:), pointer | Tangent1, | ||
real(kind=dp), dimension(:,:), pointer | Tangent2 | ||
) |
Referenced by solverutils::updateglobalequations(), and solverutils::updateglobalforce().
real(kind=dp) function, dimension(3) elementutils::surfaceintegrate | ( | type(model_t) | Model, |
integer, dimension(:) | ElementList, | ||
character(len=*) | IntegrandFunctionName | ||
) |
Integrates A user-defined vector function over the specified boundary elements.
model | All model information (mesh, materials, BCs, etc...) |
elementlist | List of elements that belong to the integration boundary |
integrandfunctionname | Name the function has in the .sif file |
References coordinatesystems::coordinatesqrtmetric(), coordinatesystems::coordinatesystemdimension(), elementdescription::elementinfo(), integration::gausspoints(), and lists::listgetreal().
subroutine elementutils::tangentdirections | ( | real(kind=dp), dimension(3) | Normal, |
real(kind=dp), dimension(3) | Tangent1, | ||
real(kind=dp), dimension(3) | Tangent2 | ||
) |
Given the normal return the tangent directions. The First tangent direction will always be on the xy-plane if also the normal is in the xy-plane.
References normal().
Referenced by solverutils::averageboundarynormals(), meshutils::clusternodesbydirection(), meshutils::findrigidbodyfixingnodes(), helmholtz_smoluchowski_comp(), navierstokesboundary(), navierstokes::navierstokesboundary(), navierstokescylindrical::navierstokescylindricalboundary(), navierstokes::navierstokeswalllaw(), particledynamicsstuff::particleparticlecontact(), setinitialconditions(), slipmatrix(), stresslocal::stressboundary(), velocityslipmatrix(), and navierstokes::vmswalls().
real(kind=dp) function elementutils::volumeintegrate | ( | type(model_t) | Model, |
integer, dimension(:) | ElementList, | ||
character(len=*) | IntegrandFunctionName | ||
) |
Integrates a user-defined function over the specified bulk elements.
model | All model information (mesh, materials, BCs, etc...) |
elementlist | List of elements that belong to the integration volume |
integrandfunctionname | Name the function has in the .sif file |
References coordinatesystems::coordinatesqrtmetric(), elementdescription::elementinfo(), integration::gausspoints(), and lists::listgetreal().
Referenced by advectiondiffusionsolver().