Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
 All Classes Files Functions Variables Typedefs Macros Groups Pages
Dynamically linked solvers

Data Types

module  magnetodynamicsutils
 
module  particledynamicsstuff
 

Functions/Subroutines

subroutine velocitysolver (Model, Solver, dt, TransientSimulation)
 
subroutine advectionreactionsolver (Model, Solver, dt, Transient)
 
subroutine outletcompute (Model, Solver, dt, TransientSimulation)
 
subroutine compressibilityscale (Model, Solver, dt, TransientSimulation)
 
subroutine compressibilitysolver (Model, Solver, dt, TransientSimulation)
 
subroutine optimalsolutionupdate (Model, Solver, dt, TransientSimulation)
 
subroutine datatofieldsolver (Model, Solver, dt, TransientSimulation)
 
subroutine dcrcomplexsolver (Model, Solver, dt, TransientSimulation)
 
subroutine chargedensitysolver (Model, Solver, dt, TransientSimulation)
 
subroutine wavefunctionsolver (Model, Solver, dt, TransientSimulation)
 
subroutine poissonsolver (Model, Solver, dt, TransientSimulation)
 
subroutine distancesolver (Model, Solver, dt, TransientSimulation)
 
subroutine distancesolver1 (Model, Solver, dt, TransientSimulation)
 
subroutine divergencesolver (Model, Solver, dt, Transient)
 
subroutine divergencesolver_init (Model, Solver, dt, Transient)
 
subroutine elasticsolver (Model, Solver, dt, TransientSimulation)
 
subroutine statelecforce (Model, Solver, dt, TransientSimulation)
 
subroutine elementsizesolver (Model, Solver, dt, TransientSimulation)
 
subroutine releaseratesolver (Model, Solver, dt, TransientSimulation)
 
subroutine fourierdiffusionsolver (Model, Solver, dt, TransientSimulation)
 
subroutine fourierdiffusion3dsolver (Model, Solver, dt, TransientSimulation)
 
subroutine filtertimeseries (Model, Solver, dtime, TransientSimulation)
 
subroutine findoptimum (Model, Solver, dt, TransientSimulation)
 
subroutine forcecompute (Model, Solver, dt, TransientSimulation)
 
subroutine fluxsolver (Model, Solver, dt, Transient)
 
subroutine fluxsolver_init (Model, Solver, dt, Transient)
 
subroutine freesurfacereduced (Model, Solver, dt, TransientSimulation)
 
subroutine freesurfacesolver (Model, Solver, dt, TransientSimulation)
 
subroutine heatsolver (Model, Solver, Timestep, TransientSimulation)
 
subroutine helmholtzbemsolver (Model, Solver, dt, TransientSimulation)
 
subroutine helmholtzsolver (Model, Solver, dt, TransientSimulation)
 
subroutine isosurfacesolver (Model, Solver, dt, Transient)
 
subroutine kesolver (Model, Solver, dt, TransientSimulation)
 
subroutine kesolver_init (Model, Solver, dt, TransientSimulation)
 
subroutine komega (Model, Solver, dt, TransientSimulation)
 
subroutine levelsetsolver (Model, Solver, Timestep, TransientSimulation)
 
subroutine levelsetdistance (Model, Solver, Timestep, TransientSimulation)
 
subroutine levelsetintegrate (Model, Solver, Timestep, TransientSimulation)
 
subroutine levelsetcurvature (Model, Solver, Timestep, TransientSimulation)
 
subroutine magneticsolver (Model, Solver, dt, TransientSimulation)
 
subroutine magneticw1solver (Model, Solver, dt, TransientSimulation)
 
subroutine whitneyavsolver_init0 (Model, Solver, dt, Transient)
 
subroutine whitneyavsolver (Model, Solver, dt, Transient)
 
subroutine jfixpotentialsolver (Model, Solver, dt, Transient)
 
subroutine whitneyavharmonicsolver_init0 (Model, Solver, dt, Transient)
 
subroutine whitneyavharmonicsolver (Model, Solver, dt, Transient)
 
subroutine magnetodynamicscalcfields_init0 (Model, Solver, dt, Transient)
 
subroutine magnetodynamicscalcfields_init (Model, Solver, dt, Transient)
 
subroutine magnetodynamicscalcfields (Model, Solver, dt, Transient)
 
subroutine meshsolver (Model, Solver, dt, TransientSimulation)
 
subroutine movingelstatsolver (Model, Solver, dt, TransientSimulation)
 
subroutine normalsolver (Model, Solver, dt, Transient)
 
subroutine normalsolver_init (Model, Solver, dt, Transient)
 
subroutine particleadvector (Model, Solver, dt, TransientSimulation)
 
subroutine particleadvector_init (Model, Solver, dt, TransientSimulation)
 
subroutine particletracker (Model, Solver, dt, TransientSimulation)
 
subroutine phasechangesolve_init (Model, Solver, dt, TransientSimulation)
 
subroutine phasechangesolve (Model, Solver, dt, TransientSimulation)
 
subroutine poissonbemsolver (Model, Solver, dt, TransientSimulation)
 
subroutine poissonboltzmannsolve (Model, Solver, dt, TransientSimulation)
 
subroutine pressuresolver (Model, Solver, dt, TransientSimulation)
 
subroutine projecttoplane (Model, Solver, dt, TransientSimulation)
 
subroutine parallelprojecttoplane (Model, Solver, dt, TransientSimulation)
 
subroutine rateofchangesolver (Model, Solver, dt, TransientSimulation)
 
subroutine reloadsolution (Model, Solver, dt, TransientSimulation)
 
subroutine reloadinput (Model, Solver, dt, TransientSimulation)
 
subroutine resultoutputsolver (Model, Solver, dt, TransientSimulation)
 
recursive subroutine elmerpostoutputsolver (Model, Solver, dt, TransientSimulation, ONOEfound)
 
subroutine gidoutputsolver (Model, Solver, dt, TransientSimulation)
 
subroutine gmshoutputsolver (Model, Solver, dt, TransientSimulation)
 
subroutine vtkoutputsolver (Model, Solver, dt, TransientSimulation)
 
subroutine vtuoutputsolver (Model, Solver, dt, TransientSimulation)
 
subroutine reynoldssolver (Model, Solver, dt, TransientSimulation)
 
subroutine reynoldspostprocess (Model, Solver, dt, TransientSimulation)
 
subroutine reynoldspostprocess_init (Model, Solver, dt, Transient)
 
subroutine richardssolver_init (Model, Solver, dt, Transient)
 
subroutine richardssolver (Model, Solver, dt, Transient)
 
subroutine richardspostprocess_init (Model, Solver, dt, Transient)
 
subroutine richardspostprocess (Model, Solver, dt, Transient)
 
subroutine rigidmeshmapper (Model, Solver, dt, Transient)
 
subroutine particleoutputsolver (Model, Solver, dt, TransientSimulation)
 
subroutine savegriddata (Model, Solver, dt, TransientSimulation)
 
subroutine scalarpotentialsolver_init (Model, Solver, dt, Transient)
 
subroutine scalarpotentialsolver (Model, Solver, dt, Transient)
 
subroutine shearratesolver_init (Model, Solver, dt, Transient)
 
subroutine shearratesolver (Model, Solver, dt, Transient)
 
subroutine shellsolver_init (Model, Solver, dt, Transient)
 
subroutine shellsolver (Model, Solver, dt, TransientSimulation)
 
subroutine smitcsolver (Model, Solver, dt, TransientSimulation)
 
subroutine spalartallmaras (Model, Solver, dt, TransientSimulation)
 
subroutine sstkomega (Model, Solver, dt, TransientSimulation)
 
subroutine statcurrentsolver_init (Model, Solver, dt, TransientSimulation)
 
subroutine statelecsolver_init (Model, Solver, dt, TransientSimulation)
 
subroutine statelecsolver (Model, Solver, dt, TransientSimulation)
 
subroutine statmagsolver (Model, Solver, dt, Transient)
 
subroutine statmagsolver_init (Model, Solver, dt, Transient)
 
subroutine steadyphasechange (Model, Solver, dt, TransientSimulation)
 
subroutine stokessolver (Model, Solver, dt, TransientSimulation)
 
subroutine streamsolver (Model, Solver, dt, TransientSimulation)
 
subroutine structuredflowline (Model, Solver, dt, Transient)
 
subroutine structuredflowline_init (Model, Solver, dt, Transient)
 
subroutine structuredmeshmapper (Model, Solver, dt, Transient)
 
subroutine structuredprojecttoplane (Model, Solver, dt, Transient)
 
subroutine transientphasechange (Model, Solver, dt, TransientSimulation)
 
subroutine transientphasechange_init (Model, Solver, dt, TransientSimulation)
 
subroutine transportequationsolver (Model, Solver, dt, TransientSimulation)
 
subroutine v2f_ldm (Model, Solver, dt, TransientSimulation)
 
subroutine v2f (Model, Solver, dt, TransientSimulation)
 
subroutine vorticitysolver (Model, Solver, dt, Transient)
 
subroutine vorticitysolver_init (Model, Solver, dt, Transient)
 
subroutine advectiondiffusionsolver_init (Model, Solver, Timestep, TransientSimulation)
 
subroutine diffuseconvectivebboundary (BoundaryMatrix, Parent, pn, ParentNodes, Ratio, Element, n, Nodes)
 
subroutine diffuseconvectiveboundary (BoundaryMatrix, BoundaryVector, LoadVector, NodalAlpha, Element, n, Nodes)
 
subroutine diffuseconvectivegencompose (MassMatrix, StiffMatrix, ForceVector, LoadVector, NodalCT, NodalC0, NodalC1, NodalC2, Temperature, EPotential, Ux, Uy, Uz, MUx, MUy, MUz, SoretD, NEC, Compressible, AbsoluteMass, Stabilize, Element, n, Nodes)
 
subroutine diffuseconvectivegenbboundary (BoundaryMatrix, Parent, pn, ParentNodes, Ratio, Element, n, Nodes)
 
subroutine diffuseconvectivegenboundary (BoundaryMatrix, BoundaryVector, LoadVector, NodalAlpha, Element, n, Nodes)
 
subroutine flowsolver_init (Model, Solver, Timestep, TransientSimulation)
 
real(kind=dp) function,
dimension(2) 
flowboundaryresidual (Model, Edge, Mesh, Quant, Perm, Gnorm)
 
subroutine magnetodynamics2d (Model, Solver, dt, TransientSimulation)
 
subroutine inertialmoment (U, A, Element, n, nd)
 
subroutine torque (U, Element, n, nd)
 
subroutine potential (U, A, Element, n, nd)
 
subroutine localmatrix (Element, n, nd)
 
subroutine localmatrixbc (Element, n, nd)
 
subroutine getreluctivity (Material, Acoef, n, Element)
 
subroutine magnetodynamics2dharmonic (Model, Solver, dt, TransientSimulation)
 
subroutine torque (U, Element, n, nd)
 
subroutine potential (U, A, Element, n, nd)
 
subroutine localmatrix (Element, n, nd)
 
subroutine bsolver_init (Model, Solver, dt, Transient)
 
subroutine addlocalfaceterms (STIFF, FORCE)
 
subroutine localjumps (STIFF, Face, n, P1, n1, P2, n2)
 
subroutine savescalars (Model, Solver, dt, TransientSimulation)
 
subroutine addtosavelist (Name, VALUE, ValueIsInteger, ParallelOperator)
 
real(kind=dp) function vectorstatistics (Var, OperName)
 
real(kind=dp) function vectormeandeviation (Var, OperName)
 
real(kind=dp) function bulkintegrals (Var, OperName, GotCoeff, CoeffName)
 
subroutine boundaryintegrals (Var, OperName, GotCoeff, CoeffName, fluxes, areas, fluxescomputed)
 
subroutine boundarystatistics (Var, OperName, GotCoeff, CoeffName, fluxes, fluxescomputed)
 
subroutine polylineintegrals (Var, OperName, GotCoeff, CoeffName, fluxes, areas, fluxescomputed)
 
subroutine lineintersectioncoords (Plane, Line, Inside, x0, y0, z0, frac)
 
subroutine saveline (Model, Solver, dt, TransientSimulation)
 
subroutine globaltolocalcoords (Element, Plane, n, Line, Eps, Inside, Weights, maxind)
 
subroutine boundaryflux (Model, Node, VarName, CoeffName, f1, f2, fn, weight, MaxN)
 

Detailed Description

Function/Subroutine Documentation

subroutine bsolver::addlocalfaceterms ( real(kind=dp), dimension(:,:)  STIFF,
real(kind=dp), dimension(:)  FORCE 
)

References defutils::activeboundaryelement(), coordinatesystems::coordinatesystemdimension(), defutils::getelementnofnodes(), defutils::getmaterial(), localjumps(), and solver().

Here is the call graph for this function:

subroutine savescalars::addtosavelist ( character(len=*)  Name,
real(kind=dp)  VALUE,
logical, optional  ValueIsInteger,
character(len=max_name_len), optional  ParallelOperator 
)

References messages::fatal(), and lists::listgetstring().

Referenced by savescalars().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine advectiondiffusionsolver_init ( type(model_t), target  Model,
type(solver_t)  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Initialization of the main solver: AdvectionDiffusionSolver.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
timestepTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References defutils::getsolverparams(), and lists::listaddinteger().

Here is the call graph for this function:

subroutine advectionreactionsolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Advection-reaction equation solver for scalar fields with discontinous Galerkin method.

Parameters
modelAll model information (mesh, materials, BCs, etc...)
solverLinear & nonlinear equation solver options
dtTimestep size for time dependent simulations
transientSteady state or transient simulation

References defutils::activeboundaryelement(), coordinatesystems::coordinatesystemdimension(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getbc(), defutils::getbodyforce(), defutils::getboundaryelement(), defutils::getconstants(), defutils::getelementdofs(), defutils::getelementnofnodes(), defutils::getequation(), defutils::getinteger(), getlocalalevelocity(), defutils::getlogical(), defutils::getmaterial(), defutils::getmesh(), defutils::getnofactive(), defutils::getreal(), defutils::getsolverparams(), defutils::getstring(), messages::info(), localjumps(), localmatrix(), localmatrixboundary(), defutils::possiblefluxelement(), solver(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine saveline::boundaryflux ( type(model_t)  Model,
integer  Node,
character(len=max_name_len)  VarName,
character(len=max_name_len)  CoeffName,
real(kind=dp)  f1,
real(kind=dp)  f2,
real(kind=dp)  fn,
real(kind=dp)  weight,
integer  MaxN 
)

Compuation of normal flux. Note that this is calculated on the nodal points only using a single boundary element. The direction of the normal may be somewhat different on the nodal point when calculated using a neighboring boundary element. Thus normal flow calculation is useful only when the boundary is relatively smooth. Also quadratic elements are recommended.

References elementdescription::elementinfo(), messages::fatal(), elementdescription::globaltolocal(), lists::listgetinteger(), lists::listgetrealarray(), normal(), elementdescription::normalvector(), lists::variableget(), and messages::warn().

Referenced by saveline().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine savescalars::boundaryintegrals ( type(variable_t), pointer  Var,
character(len=max_name_len)  OperName,
logical  GotCoeff,
character(len=max_name_len)  CoeffName,
real(kind=dp), dimension(:)  fluxes,
real(kind=dp), dimension(:)  areas,
integer, dimension(:)  fluxescomputed 
)

References coordinatesystems::coordinatesystemdimension(), coordinatesystems::coordinatesysteminfo(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), messages::fatal(), integration::gausspoints(), defutils::getparentuvw(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), lists::listgetrealarray(), normal(), elementdescription::normalvector(), and messages::warn().

Referenced by savescalars().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine savescalars::boundarystatistics ( type(variable_t), pointer  Var,
character(len=max_name_len)  OperName,
logical  GotCoeff,
character(len=max_name_len)  CoeffName,
real(kind=dp), dimension(:)  fluxes,
integer, dimension(:)  fluxescomputed 
)

References messages::fatal(), lists::listgetlogical(), and messages::warn().

Referenced by savescalars().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine bsolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: BSolver.

References defutils::getlogical(), defutils::getsolverparams(), lists::listaddstring(), lists::listcheckpresent(), and lists::nextfreekeyword().

Here is the call graph for this function:

real(kind=dp) function savescalars::bulkintegrals ( type(variable_t), pointer  Var,
character(len=max_name_len)  OperName,
logical  GotCoeff,
character(len=max_name_len)  CoeffName 
)

References coordinatesystems::coordinatesystemdimension(), coordinatesystems::coordinatesysteminfo(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), integration::gausspoints(), lists::listgetinteger(), lists::listgetreal(), lists::listgetrealarray(), and messages::warn().

Referenced by savescalars().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine chargedensitysolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Calculate the charge density using the eigenvectors of variable "Wavefunctions" of eigenproblem solver.

References defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::error(), defutils::getactiveelement(), defutils::getconstrealarray(), defutils::getelementdofs(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), messages::info(), localmatrix(), solver(), and messages::warn().

Here is the call graph for this function:

subroutine compressibilityscale ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Subroutine that may be used to normalize the amplitude of artificial compressibility for optimal fluid-structure coupling.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References lists::checkelementequation(), compressibilityintegrate(), coordinatesystems::coordinatesystemdimension(), flowsolver(), defutils::getcreal(), messages::info(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), lists::listgetstring(), pressureintegrate(), meshutils::setcurrentmesh(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine compressibilitysolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Subroutine for computing the artificial compressibility from the volume change of elements. The volume change is obtained by extending the displacement field of a test load to the fluid domain.

A consistent splitting scheme for the incompressible Navier-Stokes equations: The computation of viscous compressibility term.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References coordinatesystems::coordinatesystemdimension(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getelementnofnodes(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetconstreal(), lists::listgetlogical(), localmatrix(), solver(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine datatofieldsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solves by Galerkin method the problem where a continuous field is fitted to data. The data may be created in advance or it may be given as a property of discrete particles. The data has a contribution on the r.h.s. of the equation only. Regularization (i.e. diffusion) may be added to reduce noise from the fitting of the data. Also data may be used only selectively as defined by some mask variable.

Solvers by Galerkin method the problem where a continuous field is fitted to data. The data may be created in advance or it may be given as a property of discrete particles. The data has a contribution on the r.h.s. of the equation only. Regularization (i.e. diffusion) may be added to reduce noise from the fitting of the data.

References asciipointstomesh(), boundaryassembly(), bulkassembly(), solverutils::computechange(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listaddlogical(), lists::listgetcreal(), lists::listgetstring(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine dcrcomplexsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine advectiondiffusionsolver::diffuseconvectivebboundary ( real(kind=dp), dimension(:,:)  BoundaryMatrix,
type(element_t), pointer  Parent,
integer  pn,
type(nodes_t)  ParentNodes,
real(kind=dp)  Ratio,
type(element_t), pointer  Element,
integer  n,
type(nodes_t)  Nodes 
)

Returns element local matrices for a discontinuous flux boundary conditions of diffusion equation.

References elementdescription::elementinfo(), integration::gausspoints(), normal(), and elementdescription::normalvector().

Referenced by advectiondiffusionsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine advectiondiffusionsolver::diffuseconvectiveboundary ( real(kind=dp), dimension(:,:)  BoundaryMatrix,
real(kind=dp), dimension(:)  BoundaryVector,
real(kind=dp), dimension(:)  LoadVector,
real(kind=dp), dimension(:)  NodalAlpha,
type(element_t)  Element,
integer  n,
type(nodes_t)  Nodes 
)

Returns element local matrices and RSH vector for boundary conditions of diffusion convection equation.

References elementdescription::elementinfo(), and integration::gausspoints().

Referenced by addheatfluxbc(), and advectiondiffusionsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine advectiondiffusionsolver::diffuseconvectivegenbboundary ( real(kind=dp), dimension(:,:)  BoundaryMatrix,
type(element_t), pointer  Parent,
integer  pn,
type(nodes_t)  ParentNodes,
real(kind=dp)  Ratio,
type(element_t), pointer  Element,
integer  n,
type(nodes_t)  Nodes 
)

Return element local matrices for a discontinuous flux boundary conditions of diffusion equation in general coordinate system:

References coordinatesystems::coordinatesqrtmetric(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), integration::gausspoints(), normal(), and elementdescription::normalvector().

Referenced by advectiondiffusionsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine advectiondiffusionsolver::diffuseconvectivegenboundary ( real(kind=dp), dimension(:,:)  BoundaryMatrix,
real(kind=dp), dimension(:)  BoundaryVector,
real(kind=dp), dimension(:)  LoadVector,
real(kind=dp), dimension(:)  NodalAlpha,
type(element_t), pointer  Element,
integer  n,
type(nodes_t)  Nodes 
)

Return element local matrices and RSH vector for boundary conditions of diffusion convection equation in general euclidian coordinates.

References coordinatesystems::coordinatesqrtmetric(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), and integration::gausspoints().

Referenced by addheatfluxbc(), and advectiondiffusionsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine advectiondiffusionsolver::diffuseconvectivegencompose ( real(kind=dp), dimension(:,:)  MassMatrix,
real(kind=dp), dimension(:,:)  StiffMatrix,
real(kind=dp), dimension(:)  ForceVector,
real(kind=dp), dimension(:)  LoadVector,
real(kind=dp), dimension(:)  NodalCT,
real(kind=dp), dimension(:)  NodalC0,
real(kind=dp), dimension(:)  NodalC1,
real(kind=dp), dimension(:,:,:)  NodalC2,
real(kind=dp), dimension(:)  Temperature,
real(kind=dp), dimension(:)  EPotential,
real(kind=dp), dimension(:)  Ux,
real(kind=dp), dimension(:)  Uy,
real(kind=dp), dimension(:)  Uz,
real(kind=dp), dimension(:)  MUx,
real(kind=dp), dimension(:)  MUy,
real(kind=dp), dimension(:)  MUz,
real(kind=dp), dimension(:)  SoretD,
real(kind=dp), dimension(:)  NEC,
logical  Compressible,
logical  AbsoluteMass,
logical  Stabilize,
type(element_t), pointer  Element,
integer  n,
type(nodes_t)  Nodes 
)

Diffuse-convective local matrix computing for general euclidian coordinates. Returns element local matrices and RSH vector for diffusion-convection equation.

References coordinatesystems::coordinatesystemdimension(), coordinatesystems::coordinatesysteminfo(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), messages::error(), and integration::gausspoints().

Referenced by advectiondiffusionsolver(), and heatsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine distancesolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solves the equation: (grad(d),grad(d))=1. The solution of this gives the closest distance a to boundary where distance is forced to zero.

References defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getcreal(), defutils::getelementnofbdofs(), defutils::getelementnofdofs(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getmesh(), defutils::getnofactive(), defutils::getsolverparams(), messages::info(), lcondensate(), lists::listaddconstreal(), localmatrix(), and solver().

Here is the call graph for this function:

subroutine distancesolver1 ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine divergencesolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)
subroutine divergencesolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver, i.e. DivergenceSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), defutils::getstring(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function:

subroutine elementsizesolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solves a simple equation for the elementsize using the Galerkin method.

References defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getelementnofnodes(), defutils::getmesh(), defutils::getnofactive(), messages::info(), lists::listgetcreal(), lists::listgetlogical(), localmatrix(), and solver().

Here is the call graph for this function:

recursive subroutine elmerpostoutputsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation,
logical, optional  ONOEfound 
)

A fork of the ElmerPost output utility which also includes use of masks.

References defutils::eigenorharmonicanalysis(), generalutils::formatdate(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getstring(), messages::info(), lists::listgetintegerarray(), lists::listgetlogical(), lists::listgetstring(), meshutils::makepermusingmask(), freesurface::moveboundary(), parallelutils::parallelreduction(), solver(), lists::variableget(), and messages::warn().

Referenced by resultoutputsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine filtertimeseries ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dtime,
logical  TransientSimulation 
)

Subroutine for avaraging transient data over timesteps. Also more complicated operations may be performed, such as definition of Fourier series components.

References messages::fatal(), defutils::getcreal(), defutils::getinteger(), messages::info(), lists::listgetlogical(), lists::listgetstring(), parametername(), solver(), lists::variableadd(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

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

This solver may be used for optimization. It is not intended to provide a full featured solution for optimization problems. However, sometimes its nice that the optimization may be performed in one sweep without the need for restarting the solver for each optimization trial. This is a dynamically loaded solver with a standard interface.

References bisectoptimize(), messages::fatal(), geneticoptimize(), defutils::getcreal(), guessoptimum(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), randomparameter(), scanparameter(), secantsearch(), simplexoptimize(), solver(), and messages::warn().

Here is the call graph for this function:

real(kind=dp) function, dimension(2) flowboundaryresidual ( type(model_t)  Model,
type( element_t ), pointer  Edge,
type( mesh_t ), pointer  Mesh,
real(kind=dp), dimension(:)  Quant,
integer, dimension(:)  Perm,
real(kind=dp)  Gnorm 
)

Compute the residual of the Navier-Stokes equation for the boundary elements.

References coordinatesystems::coordinatesystemdimension(), coordinatesystems::coordinatesysteminfo(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), integration::gausspoints(), linearalgebra::invertmatrix(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetreal(), lists::listgetstring(), normal(), elementdescription::normalvector(), and lists::variableget().

Referenced by flowsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine flowsolver_init ( type(model_t), target  Model,
type(solver_t)  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Initialization of the main solver: AdvectionDiffusionSolver.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
timestepTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References defutils::getsolverparams(), and lists::listaddinteger().

Here is the call graph for this function:

subroutine fluxsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for computing fluxes and gradients of scalar fields. For example, one may compute the the heat flux as the negative gradient of temperature field multiplied by the heat conductivity.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientSteady state or transient simulation

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetstring(), solver(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine fluxsolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver, FluxSolver.

References coordinatesystems::coordinatesystemdimension(), messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddlogical(), lists::listaddstring(), lists::listcheckpresent(), lists::nextfreekeyword(), and messages::warn().

Here is the call graph for this function:

subroutine forcecompute ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Subroutine for computing the force a fluid exerts to surfaces. Note that here integration points of the boundary elements are used to estimate the force resulting to a suboptimal accuracy.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), messages::fatal(), forceintegrate(), defutils::getlogical(), defutils::getmesh(), defutils::getstring(), messages::info(), lists::listaddconstreal(), lists::listgetconstrealarray(), lists::listgetcreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), lists::listgetstring(), solver(), generalutils::sortf(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

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

A solver for the Fourier transformed time-dependent diffusion equation with a constant frequency forcing term, (nabla^2 - iw) B(x) = -f(x,w)

Here we are solving specifically the magnetic problem (nabla^2/(mu*sigma) - iw) B(x) = iw B_ac(x) This version solves for a vector field, i.e., the AC field is B_ac(x,y,z,t) = B_ac(x,y,z) exp(iwt) is a vector If requested, the time-averaged Lorentz force due to induced field B, < 1/mu (curl B) x B >, is calculated and written in the result files.

References lists::checkelementequation(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getangularfrequency(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), lists::listgetstring(), localmatrix(), lorentzforceave(), solver(), solverutils::updateglobalequations(), lists::variableaddvector(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

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

A solver for the Fourier transformed time-dependent diffusion equation with a constant frequency forcing term, (nabla^2 - iw) B(x) = -f(x,w)

Here we are solving specifically the magnetic problem (nabla^2/(mu*sigma) - iw) B(x) = iw B_ac(x) This version solves for a scalar field, i.e., the AC field is B_ac(x,y,z,t) = B_ac(x,y,z) exp(iwt) e_z If requested, the time-averaged Lorentz force due to induced field B, < 1/mu (curl B) x B >, is calculated and written in the result files.

References lists::checkelementequation(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getangularfrequency(), messages::info(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), lists::listgetstring(), localmatrix(), localmatrixboundary(), lorentzforceave(), defutils::possiblefluxelement(), solver(), solverutils::updateglobalequations(), lists::variableaddvector(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

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

Solve the equation resulting from 1D drawing process. May be applied to 2D and axisymetric cases. Possible uses include drawing of viscous fibers or sheets.

References coordinatesystems::currentcoordinatesystem(), meshutils::findneighbournodes(), defutils::getcreal(), messages::info(), lists::listaddconstreal(), lists::listgetinteger(), lists::listgetlogical(), solver(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine getreluctivity ( type(valuelist_t), pointer  Material,
real(kind=dp), dimension(:)  Acoef,
integer  n,
type(element_t), optional  Element 
)

References defutils::getconstreal(), and defutils::getreal().

Referenced by localmatrix(), and localmatrixbc().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gidoutputsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Saves results in a format understood by the pre-/postprocessing software GiD.

References coordinatesystems::coordinatesystemdimension(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetinteger(), solver(), and lists::variableget().

Referenced by resultoutputsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine saveline::globaltolocalcoords ( type(element_t), pointer  Element,
type(nodes_t)  Plane,
integer  n,
type(nodes_t)  Line,
real (kind=dp)  Eps,
logical  Inside,
real (kind=dp), dimension(:)  Weights,
integer  maxind 
)

This subroutine tests whether the line segment goes through the current face of the element. If true the weights and index to the closest node are returned.

References elementdescription::elementinfo(), messages::fatal(), and linearalgebra::invertmatrix().

Referenced by saveline().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine gmshoutputsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Saves results in ascii format understood by the pre-/postprocessing software Gmsh.

References coordinatesystems::coordinatesystemdimension(), elmertogmshindex(), defutils::getbcid(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetinteger(), lists::listgetstring(), generalutils::nextfreefilename(), solver(), lists::variableget(), and messages::warn().

Referenced by resultoutputsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine heatsolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Subroutine for solving the energy a.k.a. heat equation in various coordinate systems.

References defutils::activeboundaryelement(), addglobaltime(), addheatfluxbc(), generalutils::advanceoutput(), checklatentheat(), solverutils::computechange(), solverutils::condensate(), coordinatesystems::currentcoordinatesystem(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), diffuseconvectivecompose(), diffuseconvectivegencompose(), effectiveheatcapacity(), elementutils::elementarea(), messages::fatal(), findgapindexes(), defutils::getactiveelement(), defutils::getbc(), defutils::getbodyforce(), defutils::getbodyforceid(), defutils::getboundaryelement(), defutils::getconstants(), defutils::getconstreal(), defutils::getcreal(), defutils::getelementdofs(), defutils::getelementnodes(), defutils::getelementnofnodes(), defutils::getequation(), defutils::getinteger(), defutils::getlogical(), defutils::getmaterial(), defutils::getmatrix(), defutils::getnofactive(), defutils::getreal(), defutils::getlocalsolution::getscalarlocalsolution(), defutils::getsolverparams(), defutils::getstring(), defutils::getlocalsolution::getvectorlocalsolution(), heatboundaryresidual(), heatedgeresidual(), heatinsideresidual(), messages::info(), solverutils::initializetimestep(), lists::listaddconstreal(), lists::listaddlogical(), lists::listcheckpresent(), lists::listcheckpresentanybc(), lists::listcheckpresentanybodyforce(), lists::listgetconstreal(), lists::listgetconstrealarray(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetrealarray(), defutils::possiblefluxelement(), radiationfactors(), adaptive::refinemesh(), solver(), solverutils::solvesystem(), generalutils::startadvanceoutput(), solverutils::updateglobalequations(), lists::variableget(), and messages::warn().

Referenced by mainutils::addequationbasics().

Here is the caller graph for this function:

subroutine helmholtzbemsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solves the Helmholtz equation using BEM! This solver can only deal with rather small problems as it does not use any multilevel strategies.

References computepotential(), coordinatesystems::currentcoordinatesystem(), messages::fatal(), defutils::getangularfrequency(), integratematrix(), invalidatevariable(), lists::listgetreal(), lists::listgetstring(), matvec(), potential(), precond(), solvefull(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine helmholtzsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine inertialmoment ( real(kind=dp)  U,
real(kind=dp)  A,
type(element_t)  Element,
integer  n,
integer  nd 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getelementnodes(), defutils::getmaterial(), and defutils::getreal().

Referenced by calculatelumped(), and magnetodynamics2dharmonic().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine isosurfacesolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for extracting isosurfaces in 3d and isolines in 2d. The result will be a new mesh which will be added to the list of meshes.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientSteady state or transient simulation

References allocatemesh(), createnodes(), createsurfaces(), messages::error(), meshutils::findmeshedges2d(), meshutils::findmeshedges3d(), defutils::getelementfamily(), elementdescription::getelementtype(), defutils::getlogical(), defutils::getmesh(), defutils::getsolverparams(), defutils::getstring(), generalutils::i2s(), messages::info(), lists::listgetconstrealarray(), lists::listgetcreal(), meshutils::releasemesh(), meshutils::releasemeshedgetables(), remap(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine jfixpotentialsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

The current density given as a source must be divergence free to allow a hope for a solution. This solver may be used to enforce a given current density to be divergence free by solving for an equivalent potential so that the vector field is a gradient of the potential.

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), defutils::getcreal(), defutils::getmatrix(), defutils::getmesh(), defutils::getsolverparams(), lists::listaddconstreal(), lists::listaddstring(), lists::listcheckpresent(), lists::listsetnamespace(), solver(), lists::variableaddvector(), and lists::variableget().

Referenced by whitneyavharmonicsolver(), and whitneyavsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine kesolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Initialization for the primary solver: KESolver.

References defutils::getsolverparams(), defutils::getstring(), and lists::listaddstring().

Here is the call graph for this function:

subroutine levelsetcurvature ( type(model_t), target  Model,
type(solver_t)  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Computes the curvature from the level set function. Additional diffusion may be added in order to limit the singular curvature peaks.

References coordinatesystems::currentcoordinatesystem(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), messages::fatal(), messages::info(), lists::listgetconstreal(), lists::listgetlogical(), lists::listgetstring(), localboundary(), localmatrix(), defutils::possiblefluxelement(), solver(), solverutils::solvesystem(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine levelsetdistance ( type(model_t), target  Model,
type(solver_t)  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Renormalizes the levelset function using straight-forward geometric search Also includes an option to do the covection at the same time as an alternavtive for using a separate solver for the advection.

References computedistance(), computedistancewithdirection(), coordinatesystems::currentcoordinatesystem(), extractzerolevel(), messages::fatal(), messages::info(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), solver(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine levelsetintegrate ( type(model_t), target  Model,
type(solver_t)  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Compute the volume and area in 3D or area and line intgral in 2D over the levelset function. This is better done within a dedicated solver since it is crucial for the accuracy that the Heaviside and Delta function are computed at Gaussian integration points.

References coordinatesystems::coordinatesystemdimension(), messages::fatal(), heavisideintegrate(), messages::info(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), solver(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine levelsetsolver ( type(model_t), target  Model,
type(solver_t)  Solver,
real(kind=dp)  Timestep,
logical  TransientSimulation 
)

Solve the advection equation for the Levelset-function using stabilization or bubbless. For the accuracy it is advisable to use 2nd order time-stepping and courant number smaller than one.

References solverutils::condensate(), coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), messages::info(), lists::listaddconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), localmatrix(), and solver().

Here is the call graph for this function:

subroutine savescalars::lineintersectioncoords ( type(nodes_t)  Plane,
type(nodes_t)  Line,
logical  Inside,
real (kind=dp)  x0,
real (kind=dp)  y0,
real (kind=dp)  z0,
real (kind=dp)  frac 
)

This subroutine tests whether the line segment goes through the current face of the element.

References linearalgebra::invertmatrix().

Referenced by polylineintegrals().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine bsolver::localjumps ( real(kind=dp), dimension(:,:)  STIFF,
type(element_t), pointer  Face,
integer  n,
type(element_t), pointer  P1,
integer  n1,
type(element_t), pointer  P2,
integer  n2 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getelementnodes(), and defutils::getparentuvw().

Here is the call graph for this function:

subroutine magnetodynamics2dharmonic::localmatrix ( type(element_t), pointer  Element,
integer  n,
integer  nd 
)
subroutine magnetodynamics2d::localmatrix ( type(element_t)  Element,
integer  n,
integer  nd 
)

References generalutils::derivatecurve(), elementdescription::elementinfo(), integration::gausspoints(), defutils::getbodyforce(), defutils::getelementnodes(), defutils::getmaterial(), defutils::getreal(), getreluctivity(), generalutils::interpolatecurve(), lists::listfind(), and solver().

Here is the call graph for this function:

subroutine localmatrixbc ( type(element_t), pointer  Element,
integer  n,
integer  nd 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getelementnodes(), defutils::getmaterial(), getreluctivity(), normal(), and elementdescription::normalvector().

Here is the call graph for this function:

subroutine magneticsolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine magneticw1solver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solver for the MHD Maxwell equations (induction equation or eddy current equation) with Whitney elements (cartesian 3D coordinates) in terms of H.

References solverutils::add1stordertime(), lists::checkelementequation(), coordinatesystems::coordinatesystemdimension(), crossproduct(), coordinatesystems::currentcoordinatesystem(), messages::fatal(), messages::info(), solverutils::initializetozero(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), normal(), sparitersolve::solve(), solver(), solverutils::updateglobalequations(), lists::variableaddvector(), lists::variableget(), messages::warn(), and elementdescription::whitneyelementinfo().

Here is the call graph for this function:

subroutine magnetodynamics2d ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solver the magnetic vector potential in cartesian 2D case. The solver may take into account rotating boundary conditions. Also optionally compute moments and inertia.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References calculatelumped(), crsmatrix::crs_sortmatrix(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), elementutils::freematrix(), defutils::getactiveelement(), defutils::getbc(), defutils::getboundaryelement(), defutils::getcouplediter(), defutils::getcreal(), defutils::getelementnofdofs(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getmesh(), defutils::getnofactive(), defutils::getnofboundaryelements(), defutils::getsolverparams(), localmatrix(), localmatrixbc(), parallelutils::parallelreduction(), meshutils::periodicprojector(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine magnetodynamics2dharmonic ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solver the magnetic vector potential in cartesian 2D & complex case. The solver may take into account rotating boundary conditions. Also optionally compute moments and inertia.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References solverutils::addtomatrixelement(), generalutils::allocatematrix(), calculatelumped(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), elementdescription::elementinfo(), elementutils::freematrix(), integration::gausspoints(), defutils::getactiveelement(), defutils::getbc(), defutils::getbodyforce(), defutils::getbodyforceid(), defutils::getbodyparams(), defutils::getboundaryelement(), defutils::getcouplediter(), defutils::getcreal(), defutils::getelementnodes(), defutils::getelementnofdofs(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getmaterial(), defutils::getmesh(), defutils::getnofactive(), defutils::getnofboundaryelements(), defutils::getreal(), defutils::getsolverparams(), generalutils::i2s(), inertialmoment(), listmatrix::list_tocrsmatrix(), lists::listaddconstreal(), localmatrix(), localmatrixbc(), parallelutils::parallelreduction(), meshutils::periodicprojector(), potential(), solver(), torque(), and lists::variableget().

Here is the call graph for this function:

subroutine magnetodynamicscalcfields_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

References messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), generalutils::i2s(), lists::listaddlogical(), lists::listaddstring(), lists::listcheckpresent(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine magnetodynamicscalcfields_init0 ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

References defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), generalutils::i2s(), lists::listaddintegerarray(), lists::listaddlogical(), lists::listaddstring(), lists::listgetintegerarray(), and solver().

Here is the call graph for this function:

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

Subroutine for extending displacement in mesh smoothly over the domain. The intended use of the solver is in fluid-structure interaction, for example. In transient cases the solver also computes the mesh velocity. This is a dynamically loaded solver with a standard interface. May be also loaded internally to mimic the old static implementation.

An alternative fork for mesh update solver. The intended use for this is, for example, in geometry optimization when the normal MeshUpdate is not always suitable as it may be needed to extent real physical displacements. This is a dynamically loaded solver with a standard interface.

References defutils::activeboundaryelement(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), meshutils::displacemesh(), messages::fatal(), defutils::getactiveelement(), defutils::getbc(), defutils::getboundaryelement(), defutils::getelementnofbdofs(), defutils::getelementnofdofs(), defutils::getelementnofnodes(), defutils::getmaterial(), defutils::getreal(), messages::info(), lists::listgetinteger(), lists::listgetlogical(), localmatrix(), meshboundary(), defutils::possiblefluxelement(), solver(), and lists::variableget().

Referenced by mainutils::addequationbasics().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Solver for the computation the capacitance and sensitivity of capacitance for a rigid system with rotations and translations. The solver includes features of electrostatics and mesh solver within one solver and its usability is limited to cartesian coordinates. Probably of very limited use.

References coordinatesystems::coordinatesystemdimension(), electricforceintegrate(), elementenergy(), messages::fatal(), solverutils::finishassembly(), messages::info(), solverutils::initializetozero(), laplacecompose(), lists::listgetconstreal(), lists::listgetconstrealarray(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), normal(), elementdescription::normalvector(), solverutils::setdirichletboundaries(), solverutils::setdirichletpoint(), solver(), solverutils::solvesystem(), solverutils::updateglobalequations(), and lists::variableaddvector().

Here is the call graph for this function:

subroutine normalsolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Solver for computing average normals for nodes using the Galerkin method. For real meshes the direction of the normal is discrete for curved surfaces and this solution should give a smoother normal direction.

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), generalutils::i2s(), messages::info(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine normalsolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: NormalSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), lists::listaddinteger(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function:

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

This subroutine performs a single GCR step to solve the fully coupled incompressible Navier-Stokes system. The search direction is obtained by solving decoupled equations which arise from the consistent splitting algorithm. This solver assumes that such equations are already solved. The search direction can thus be constructed without performing linear solves in this module.

References defutils::activeboundaryelement(), coordinatesystems::coordinatesystemdimension(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), messages::fatal(), gcrupdate(), defutils::getactiveelement(), defutils::getbc(), defutils::getbodyforce(), defutils::getboundaryelement(), defutils::getelementdofs(), defutils::getelementfamily(), defutils::getelementnofbdofs(), defutils::getelementnofnodes(), defutils::getlogical(), defutils::getmaterial(), defutils::getnofactive(), defutils::getreal(), defutils::getsolverparams(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), localmatrix(), localmatrixboundary(), orthogonalize(), parallelutils::parallelinitmatrix(), parallelutils::parallelinitsolve(), parallelutils::parallelmatrix(), parallelutils::parallelupdateresult(), parallelutils::parallelupdatesolve(), setboundaryconditions(), solver(), updateglobalpreconditioner(), and lists::variableget().

Here is the call graph for this function:

subroutine outletcompute ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine parallelprojecttoplane ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

This subroutine may be used to convert field computed in cartesian 3D coordinates on a 2D axisymmetric or cartesian mesh. There are currently a serial and a parallel version of this subroutine - this is the parallel one.

References allocatemorespace(), computeintegrals(), computemissingintegrals(), messages::fatal(), gatherresults(), defutils::getelementnofnodes(), elementdescription::getelementtype(), getlineartrianglefaces(), defutils::getlogical(), messages::info(), linefaceintersect(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetintegerarray(), lists::listgetlogical(), lists::listgetstring(), elementdescription::nodalbasisfunctions(), parallelutils::parallelreduction(), receivepoints(), sendpoints(), solver(), and lists::variableget().

Here is the call graph for this function:

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

Subroutine for advecting fields in time using particles to follow them backwards in time, and taking the field value from the given point. This should overcome all problems with diffusion. This is a dynamically loaded solver with a standard interface.

References coordinatesystems::coordinatesystemdimension(), defutils::getinteger(), defutils::getlogical(), particleutils::getparticletimestep(), messages::info(), initializeparticles(), particleutils::locateparticles(), particleutils::particleadvancetimestep(), particleutils::particleinformation(), particleutils::particlevariablecreate(), particleutils::particlevariableget(), particleutils::releasewaitingparticles(), setadvectedfield(), setfixedparticles(), particleutils::setparticlepreliminaries(), setparticlevelocities(), and solver().

Here is the call graph for this function:

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

Initialization for the primary solver: ParticleAdvector.

References lists::listaddconstreal(), lists::listaddinteger(), lists::listaddlogical(), lists::listaddstring(), lists::listcheckpresent(), and solver().

Here is the call graph for this function:

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

This subroutine provides a shared library handle to the internal subroutine in order to enable more flexible use of the routine.

References messages::info(), particleutils::saveparticledata(), and solver().

Here is the call graph for this function:

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

Subroutines for tracking a particle in presense of convection and electrostatic fields. This is the first generation solver of the topic and will not be further developed.

References closeparticlefile(), computefieldsatpoint(), coordinatesystems::coordinatesystemdimension(), evaluatecostfunction(), messages::fatal(), generalutils::freequadranttree(), defutils::getcreal(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), messages::info(), initializeparticles(), lists::listgetconstrealarray(), lists::listgetstring(), openparticlefile(), saveparticlestep(), solver(), lists::variableget(), messages::warn(), and writenamesfile().

Here is the call graph for this function:

subroutine phasechangesolve ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine phasechangesolve_init ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Initialization for the primary solver: PhaseChangeSolve.

References defutils::getsolverparams(), defutils::getstring(), lists::listaddstring(), lists::listgetlogical(), and lists::nextfreekeyword().

Here is the call graph for this function:

subroutine poissonbemsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Poisson equation solver using the boundary element method. This solver can only deal with rather small problems as it does not use any multilevel strategies.

References computepotential(), coordinatesystems::currentcoordinatesystem(), messages::fatal(), defutils::getlogical(), integratematrix(), integratesource(), invalidatevariable(), lists::listgetinteger(), lists::listgetreal(), lists::listgetstring(), matvec(), potential(), precond(), solvefull(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine poissonboltzmannsolve ( type(model_t)  Model,
type(solver_t), target  Solver,
real (kind=dp)  dt,
logical  TransientSimulation 
)
subroutine poissonsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine savescalars::polylineintegrals ( type(variable_t), pointer  Var,
character(len=max_name_len)  OperName,
logical  GotCoeff,
character(len=max_name_len)  CoeffName,
real(kind=dp), dimension(:)  fluxes,
real(kind=dp), dimension(:)  areas,
integer, dimension(:)  fluxescomputed 
)

References coordinatesystems::coordinatesystemdimension(), coordinatesystems::coordinatesysteminfo(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), messages::fatal(), integration::gausspoints(), elementdescription::getelementtype(), messages::info(), lineintersectioncoords(), lists::listgetinteger(), lists::listgetreal(), lists::listgetrealarray(), normal(), elementdescription::normalvector(), interpolation::pointinelement(), and messages::warn().

Referenced by savescalars().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine magnetodynamics2dharmonic::potential ( complex(kind=dp)  U,
real(kind=dp)  A,
type(element_t)  Element,
integer  n,
integer  nd 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getangularfrequency(), and defutils::getelementnodes().

Here is the call graph for this function:

subroutine magnetodynamics2d::potential ( real(kind=dp)  U,
real(kind=dp)  A,
type(element_t)  Element,
integer  n,
integer  nd 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getelementnodes(), defutils::gettimestep(), and solver().

Referenced by calculatelumped(), computepotential(), electricboundaryresidual(), electricedgeresidual(), electricinsideresidual(), generalcurrent(), generalelectricflux(), helmholtzbemsolver(), magnetodynamics2dharmonic(), poissonbemsolver(), poissonboltzmannsolve(), statcurrentsolver(), statelecforce(), and statelecsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine pressuresolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine projecttoplane ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

This subroutine may be used to convert field computed in cartesian 3D coordinates on a 2D axisymmetric or cartesian mesh. There are currently a serial and a parallel version of this subroutine - this is the serial one. The reason for the fork is that the parallel version uses techniques that are not optimal in the serial problem. Therefore the user should herself choose the correct version. Optimally these two approaches should of course be fused.

References allocatemorespace(), elementdescription::elementinfo(), messages::error(), messages::fatal(), defutils::getactiveelement(), defutils::getelementnofnodes(), elementdescription::getelementtype(), getlineartrianglefaces(), defutils::getlogical(), defutils::getstring(), messages::info(), linefaceintersect(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetintegerarray(), lists::listgetlogical(), elementdescription::nodalbasisfunctions(), interpolation::pointinelement(), solver(), generalutils::sortr(), and lists::variableget().

Here is the call graph for this function:

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

This subroutine solves the Galerkin approximation to the rate of change of the field subject to the convection operator. This approximation is used by the wave equation solver for the convective transport equation (TransportEquationSolver). The field subject to the convection operator is declared using sif-file flag Advection Variable and must be available to the solver.

References lists::checkelementequation(), coordinatesystems::coordinatesystemdimension(), messages::fatal(), messages::info(), solverutils::initializetozero(), lists::listgetinteger(), lists::listgetreal(), lists::listgetstring(), localmatrix(), solverutils::setdirichletboundaries(), solver(), solverutils::solvesystem(), solverutils::updateglobalequations(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine releaseratesolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solves the energy release rate for crack propagation.

References messages::fatal(), defutils::getactiveelement(), defutils::getelementnofnodes(), defutils::getlocalsolution::getvectorlocalsolution(), localreleaserate(), localstress(), and solver().

Here is the call graph for this function:

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

Reaload input file from disk to get some dynamic control over solver parameters. This should be used carefully since not all information may be read without introducing problems.

References modeldescription::loadinputfile().

Here is the call graph for this function:

subroutine reloadsolution ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Module for repeated reading of an existing solution file. The intended use for this is in postprocessing if the user needs to perform some additional step that was not done initially.

References defutils::getinteger(), defutils::getlogical(), defutils::getstring(), messages::info(), modeldescription::loadrestartfile(), and solver().

Here is the call graph for this function:

subroutine resultoutputsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Exports data to other suitable postprocessing software. Currently supported formats are ElmerPost, GiD, VTK legacy, VTK XML, and Open DX. This is a dynamically loaded solver with a standard interface.

References lists::createlistforsaving(), dxoutputsolver(), elmerpostoutputsolver(), defutils::getinteger(), defutils::getlogical(), defutils::getstring(), gidoutputsolver(), gmshoutputsolver(), messages::info(), lists::listaddinteger(), lists::listaddstring(), meshutils::setcurrentmesh(), solver(), lists::stringtolowercase(), vtkoutputsolver(), vtuoutputsolver(), and messages::warn().

Here is the call graph for this function:

subroutine reynoldspostprocess ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine reynoldspostprocess_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization of the primary solver, i.e. ReynoldsPostprocess.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddstring(), lists::listcheckpresent(), lists::listgetinteger(), lists::listgetlogical(), and lists::nextfreekeyword().

Here is the call graph for this function:

subroutine reynoldssolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine richardspostprocess ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Solve the flux resulting from the solution of the Richards equation using the Galerkin method. The solver is somewhat complicated because the components of the flux (f_x,f_y,f_z) are computed one-by-one.

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getconstreal(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine richardspostprocess_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: RichardsPostprocess.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function:

subroutine richardssolver_init ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: RichardsSolver.

References defutils::getlogical(), defutils::getsolverparams(), lists::listaddlogical(), lists::listaddstring(), lists::listcheckpresent(), and lists::nextfreekeyword().

Here is the call graph for this function:

subroutine rigidmeshmapper ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for mapping the mesh using analytical commands of scaling, rotation, translation and smoothing. Additionally may include a grading field in [0,1] that may be solved from a Laplace equation. Provides often the most economical way of distorting the mesh.

References coordinatesystems::coordinatesystemdimension(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), defutils::getactiveelement(), defutils::getcreal(), defutils::getelementnodes(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getnofactive(), defutils::getreal(), defutils::getsolverparams(), messages::info(), invalidatevariable(), lists::listaddconstreal(), lists::listgetconstrealarray(), lists::listgetcreal(), lists::listgetinteger(), localmatrix(), solver(), lists::variableaddvector(), and lists::variableget().

Here is the call graph for this function:

subroutine savegriddata ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

This subroutine is used to save results in a uniform grid. This is achieved by first creating particles at the positions, and then saving them with more generic routines.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References coordinatesystems::coordinatesystemdimension(), creategridparticles(), lists::createlistforsaving(), defutils::getlogical(), messages::info(), lists::listgetlogical(), lists::listgetstring(), particleutils::particleoutputtable(), particleutils::particleoutputvti(), particleutils::particleoutputvtu(), solver(), and messages::warn().

Here is the call graph for this function:

subroutine saveline ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine scalarpotentialsolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for computing the potential corresponding to a given flux.

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetstring(), and solver().

Here is the call graph for this function:

subroutine scalarpotentialsolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: ScalarPotentialSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), messages::info(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function:

subroutine shearratesolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for computing the shearrate of a given velocity field.

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine shearratesolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initilization for the primary solver: ShearrateSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddstring(), lists::listcheckpresent(), and lists::nextfreekeyword().

Here is the call graph for this function:

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

Solve the Reissner-Mindlin facet shell equations!

References messages::fatal(), defutils::getconstreal(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), messages::info(), solvenonlinear(), and solver().

Here is the call graph for this function:

subroutine shellsolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: ShellSolver.

References defutils::getsolverparams(), lists::listaddinteger(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function:

subroutine smitcsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine spalartallmaras ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine sstkomega ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)
subroutine statcurrentsolver_init ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Initialization of the primary solver, i.e. StatCurrentSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), lists::listaddstring(), lists::listgetlogical(), and lists::nextfreekeyword().

Here is the call graph for this function:

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

Calculates the force due to static electric field by integrating Maxwell stress tensor over specified boundaries.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References coordinatesystems::coordinatesystemdimension(), messages::fatal(), defutils::getstring(), messages::info(), invalidatevariable(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetrealarray(), lists::listgetstring(), maxwellstresstensorintegrate(), potential(), meshutils::setcurrentmesh(), solver(), lists::variableaddvector(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

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

Solves the Poisson equation for the electric potential and compute the electric field, flux, energy and capacitance as requested using nodal averaging.

Note that the permittivity of vacuum is divided into the right hand side of the equation. This has to be accounted for in setting the body forces and assigning flux boundary conditions

References boundaryassembly(), bulkassembly(), coordinatesystems::coordinatesystemdimension(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), electricboundaryresidual(), electricedgeresidual(), electricinsideresidual(), messages::fatal(), generalelectricflux(), defutils::getsolverparams(), generalutils::getvarname(), messages::info(), invalidatevariable(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), solverutils::matrixvectormultiply(), potential(), adaptive::refinemesh(), solver(), and lists::variableget().

Here is the call graph for this function:

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

Initialization of the primary solver, i.e. StatElecSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), lists::listaddinteger(), lists::listaddlogical(), lists::listaddstring(), lists::listgetlogical(), and lists::nextfreekeyword().

Here is the call graph for this function:

subroutine statmagsolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real (kind=dp)  dt,
logical  Transient 
)

Solver for static or harmonic magnetic field with vector potential formulation. Note that this solver has a long history and all choices do not reflect the current best practices. Currently this solver is the best choice only for axisymmetric problems.

References differentials::axiscurl(), differentials::curl(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getangularfrequency(), defutils::getconstreal(), defutils::getelementnofnodes(), harmmagaxiscompose(), messages::info(), invalidatevariable(), jouleintegrate(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), solver(), statmagaxiscompose(), statmagcartesiancompose(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine statmagsolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: StatMagSolver.

References coordinatesystems::coordinatesystemdimension(), defutils::getlogical(), defutils::getsolverparams(), lists::listaddinteger(), lists::listaddstring(), lists::listgetlogical(), lists::nextfreekeyword(), and messages::warn().

Here is the call graph for this function:

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

Lagrangian steady-state phase change solver for the liquid/solid interface. This phase change solver is based on the finding of a isotherm and mapping the interface to the new isotherm. Also the previous temperature gradient may be used to estimate the distance from the interface.

References boxmovemesh(), coordinatesystems::coordinatesystemdimension(), createisotherm(), coordinatesystems::currentcoordinatesystem(), elementdescription::elementinfo(), messages::fatal(), integration::gausspoints(), defutils::getbc(), defutils::getboundaryelement(), defutils::getcreal(), defutils::getelementfamily(), defutils::getelementnofnodes(), defutils::getlogical(), messages::info(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), solver(), lists::variableadd(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine streamsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solve the StreamFunction of a two-dimensional steady state flow field. The intended usage of the solver is mainly for postprocessing purposes.

Parameters
solverLinear & nonlinear equation solver options
modelAll model information (mesh, materials, BCs, etc...)
dtTimestep size for time dependent simulations
transientsimulationSteady state or transient simulation

References defutils::activeboundaryelement(), solverutils::addtomatrixelement(), coordinatesystems::currentcoordinatesystem(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getboundaryelement(), defutils::getconstreal(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), localmatrix(), localmatrixbc(), solver(), lists::variableget(), messages::warn(), and solverutils::zerorow().

Here is the call graph for this function:

subroutine structuredflowline ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for solving steady-state free surface problems for structured meshes. Intended applications include drawing and extrusion processes. This solver assumes that the mesh is structural so that it could have been obtained by extrusion in the direction of interest. For the given direction the corresponding top and bottom node is computed for every node and this information is used to perform linear mapping in between.

References computeveloatpoint(), coordinatesystems::coordinatesystemdimension(), messages::fatal(), generalutils::freequadranttree(), defutils::getconstreal(), defutils::getcreal(), defutils::getelementnodes(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetconstreal(), meshutils::makepermusingmask(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine structuredflowline_init ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization of the primary solver: StrcuturedFlowLine.

References coordinatesystems::coordinatesystemdimension(), defutils::getsolverparams(), defutils::getstring(), lists::listaddinteger(), lists::listaddlogical(), and lists::listaddstring().

Here is the call graph for this function:

subroutine structuredmeshmapper ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for mapping the mesh between given top and bottom surfaces. This solver assumes that the mesh is structural so that it could have been obtained by extrusion in the direction of interest. For the given direction the corresponding top and bottom node is computed for every node and this information is used to perform linear mapping in between.

References meshutils::detectextrudedstructure(), messages::fatal(), defutils::getbc(), defutils::getboundaryelement(), defutils::getcreal(), defutils::getelementnofnodes(), defutils::getlogical(), defutils::getreal(), defutils::getstring(), messages::info(), lists::listcheckpresent(), lists::listcheckpresentanybc(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine structuredprojecttoplane ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for projecting results in structured 3d mesh to a 2d surface. This solver assumes that the mesh is structural so that it could have been obtained by extrusion in the direction of interest. For the given direction the corresponding top and bottom node is computed for every node and this information is used to perform projection to the top or bottom plane, or alternatively to the whole body.

References meshutils::detectextrudedstructure(), messages::fatal(), defutils::getinteger(), messages::info(), lists::listgetconstreal(), lists::listgetlogical(), lists::listgetstring(), solver(), lists::variableaddvector(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

subroutine magnetodynamics2dharmonic::torque ( complex(kind=dp)  U,
type(element_t)  Element,
integer  n,
integer  nd 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getbodyparams(), defutils::getcreal(), and defutils::getelementnodes().

Here is the call graph for this function:

subroutine magnetodynamics2d::torque ( real(kind=dp)  U,
type(element_t)  Element,
integer  n,
integer  nd 
)

References elementdescription::elementinfo(), integration::gausspoints(), defutils::getbodyparams(), defutils::getcreal(), and defutils::getelementnodes().

Referenced by calculatelumped(), and magnetodynamics2dharmonic().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Lagrangian & transient phase change solver for the liquid/solid interface. The equation is solved in two phases. First the velocity of the interface is computed and then the displacement. This enables independent smoothing of either velocity or displacement. There are also two different options for the flux computations: internally or externally using the loads from the matrix residual. The latter one gives the more accurate approximation. The solver includes some tailored pull control features that are originally intended for the modeling of Cz crystal growth but may also find other uses. Solve the free surface in the phase change problem using a transient algorithm.

References coordinatesystems::coordinatesystemdimension(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishboundaryassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), messages::fatal(), findpullboundary(), defutils::getactiveelement(), defutils::getbc(), defutils::getboundaryelement(), defutils::getcreal(), defutils::getelementnodes(), defutils::getelementnofdofs(), defutils::getelementnofnodes(), defutils::getmaterialid(), messages::info(), lists::listaddconstreal(), lists::listgetconstreal(), lists::listgetcreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetreal(), lists::listgetstring(), solver(), solverutils::solvesystem(), surfacelocalmatrix(), lists::variableget(), velocitylocalmatrix(), and messages::warn().

Here is the call graph for this function:

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

Initialization for the primary solver: TransientPhaseChange.

References defutils::getsolverparams(), defutils::getstring(), lists::listaddinteger(), lists::listaddstring(), lists::listcheckpresent(), and lists::nextfreekeyword().

Here is the call graph for this function:

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

This is the wave equation solver for the convective transport equation. As initial data one has to specify the field subject to the convection operator. This field should be declared using the sif-file flag Advection Variable. The rate of change of the field subject to the convection operator which is needed as initial condition at the beginning of time step is solved using RateOfChangeSolver and should be available to the solver (the name of this variable should be declared using the flag Rate Of Change Equation Variable).

References add2ndordertime2(), lists::checkelementequation(), coordinatesystems::coordinatesystemdimension(), defutils::defaultdirichletbcs(), defutils::defaultsolve(), messages::fatal(), solverutils::finishassembly(), messages::info(), solverutils::initializetimestep(), solverutils::initializetozero(), lists::listgetinteger(), lists::listgetreal(), lists::listgetstring(), localmatrix(), localmatrixboundary(), modifyboundaryvalues(), solver(), solverutils::updateglobalequations(), lists::variableget(), and messages::warn().

Here is the call graph for this function:

real(kind=dp) function savescalars::vectormeandeviation ( type(variable_t), pointer  Var,
character(len=max_name_len)  OperName 
)

Referenced by savescalars().

Here is the caller graph for this function:

real(kind=dp) function savescalars::vectorstatistics ( type(variable_t), pointer  Var,
character(len=max_name_len)  OperName 
)

References messages::warn().

Referenced by savescalars().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine velocitysolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

A consistent splitting scheme for the incompressible Navier-Stokes equations: The computation of the velocity update.

It is assumed by default that this solver is used for preconditioning purposes, i.e. this module is used to generate search directions for minimal residual methods. In this connection the convection term is expressed in the standard form.

References defutils::activeboundaryelement(), coordinatesystems::coordinatesystemdimension(), defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getactiveelement(), defutils::getbc(), defutils::getbodyforce(), defutils::getboundaryelement(), defutils::getelementdofs(), defutils::getelementfamily(), defutils::getelementnofbdofs(), defutils::getelementnofnodes(), defutils::getlogical(), defutils::getmaterial(), defutils::getmesh(), defutils::getnofactive(), defutils::getnofboundaryelements(), defutils::getreal(), defutils::getsolverparams(), lists::listaddlogical(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), localmatrix(), localmatrixboundary(), setboundaryconditions(), solver(), and lists::variableget().

Referenced by gcrouteriteration(), preconditioningiteration(), and stokessolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine vorticitysolver ( type(model_t)  Model,
type(solver_t), target  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Subroutine for computing vorticity of vector fields. May be used to compute either the whole vorticity vector (3D) or just its z-component (2D).

References bulkassembly(), coordinatesystems::coordinatesystemdimension(), coordinatesystems::currentcoordinatesystem(), defutils::defaultfinishassembly(), defutils::defaultfinishbulkassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetstring(), solver(), and lists::variableget().

Here is the call graph for this function:

subroutine vorticitysolver_init ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Initialization for the primary solver: VorticitySolver.

References coordinatesystems::coordinatesystemdimension(), messages::fatal(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), lists::listaddconstreal(), lists::listaddinteger(), lists::listaddstring(), lists::listcheckpresent(), and lists::nextfreekeyword().

Here is the call graph for this function:

subroutine vtkoutputsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(dp)  dt,
logical  TransientSimulation 
)

Subroutine for legacy VTK output. Note that this has been replaced by the more concurrent XML VTK cased formats.

References defutils::getstring(), solver(), and writedata().

Referenced by resultoutputsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine vtuoutputsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(dp)  dt,
logical  TransientSimulation 
)

Subroutine for saving the results in XML based VTK format (VTU). Both ascii and binary output is available, in single or double precision. The format is understood by visualization softwares Paraview and ViSit, for example.

References generalutils::filenamequalified(), defutils::getelementfamily(), defutils::getinteger(), defutils::getlogical(), defutils::getsolverparams(), defutils::getstring(), messages::info(), lists::listgetintegerarray(), lists::listgetlogical(), meshutils::makepermusingmask(), parallelutils::parallelreduction(), solver(), lists::variableget(), messages::warn(), writepvdfile(), writepvtufile(), and writevtufile().

Referenced by resultoutputsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine wavefunctionsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  TransientSimulation 
)

Solve the eigenproblem -(1/2) * Lap(phi_i) + U * phi_i = e_i * phi_i of Kohn Sham equations. Calculating the XC potential here!

References defutils::defaultdirichletbcs(), defutils::defaultfinishassembly(), defutils::defaultinitialize(), defutils::defaultsolve(), messages::error(), messages::fatal(), defutils::getactiveelement(), defutils::getconstreal(), defutils::getelementnofdofs(), defutils::getelementnofnodes(), defutils::getinteger(), defutils::getlocalsolution::getscalarlocalsolution(), defutils::getsolverparams(), defutils::getstring(), messages::info(), localmatrix(), solver(), and messages::warn().

Here is the call graph for this function:

subroutine whitneyavharmonicsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)
subroutine whitneyavharmonicsolver_init0 ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

References defutils::getsolverparams(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function:

subroutine whitneyavsolver ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

Solve vector potential A.

sigma / + rot (1/mu) rot A = J^s + curl(M^s) - sigma grad(V^s) -div(sigma*(/+grad(V))=0 . using edge elements (Nedelec/Whitney basis of lowest degree)+nodal basis for V.

References dosolve(), messages::fatal(), defutils::getinteger(), defutils::getlogical(), defutils::getmesh(), defutils::getsolverparams(), jfixpotentialsolver(), lists::listaddinteger(), and solver().

Here is the call graph for this function:

subroutine whitneyavsolver_init0 ( type(model_t)  Model,
type(solver_t)  Solver,
real(kind=dp)  dt,
logical  Transient 
)

References defutils::getlogical(), defutils::getsolverparams(), lists::listaddlogical(), lists::listaddstring(), and lists::listcheckpresent().

Here is the call graph for this function: