The Open FUSION Toolkit 1.0.0-beta5
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
Data Types | Functions/Subroutines | Variables
oft_lag_basis Module Reference

Detailed Description

Base Lagrange FE class and basis evaluation.

Authors
Chris Hansen
Date
August 2011

Data Types

type  oft_lag_ops
 Lagrange operator container. More...
 
type  oft_scalar_bfem
 Lagrange operator container. More...
 
type  oft_scalar_fem
 Lagrange operator container. More...
 

Functions/Subroutines

subroutine oft_blag_d2eval (self, cell, dof, f, val, g2op)
 Evaluate lagrange gradient function.
 
subroutine oft_blag_eval (self, face, dof, f, val)
 Evaluate lagrange interpolation function.
 
subroutine oft_blag_geval (self, face, dof, f, val, gop)
 Evaluate lagrange gradient function.
 
subroutine oft_blag_npos (self, cell, dof, f)
 Retrieve lagrange node locations in logical coordinates.
 
subroutine oft_lag_boundary
 Compute surface normals for use in boundary conditions.
 
subroutine oft_lag_d2eval (self, cell, dof, f, val, g2op)
 Evaluate lagrange gradient function.
 
subroutine oft_lag_eval (self, cell, dof, f, val)
 Evaluate lagrange interpolation function.
 
subroutine oft_lag_eval_all (self, cell, f, rop)
 Evaluate all lagrange interpolation functions.
 
subroutine oft_lag_geval (self, cell, dof, f, val, gop)
 Evaluate lagrange gradient function.
 
subroutine oft_lag_geval_all (self, cell, f, rop, gop)
 Evaluate all lagrange interpolation functions.
 
subroutine oft_lag_nodes (order, ed_nodes, fc_nodes, c_nodes)
 Retrieve all lagrange node locations in logical coordinates.
 
subroutine oft_lag_npos (self, cell, dof, f)
 Retrieve lagrange node locations in logical coordinates.
 
subroutine oft_lag_set_level (level)
 Set the current level for lagrange finite elements.
 
subroutine oft_lag_setup (order, minlev)
 Construct lagrange scalar FE on each mesh level.
 
subroutine oft_lag_setup_bmesh (self, tmesh, order)
 Construct lagrange scalar FE for a given order.
 
subroutine oft_lag_setup_vol (self, tmesh, order)
 Construct lagrange scalar FE for a given order.
 
subroutine scalar_bfem_delete (self)
 Destroy boundary FE object.
 
subroutine scalar_fem_delete (self)
 Destroy boundary FE object.
 
subroutine tet_eval_all2 (self, cell, f, rop)
 Needs docs.
 
subroutine tet_eval_all3 (self, cell, f, rop)
 Needs docs.
 
subroutine tet_eval_all4 (self, cell, f, rop)
 Needs docs.
 
subroutine tet_geval_all2 (self, cell, f, gop, rop)
 Needs docs.
 
subroutine tet_geval_all3 (self, cell, f, gop, rop)
 Needs docs.
 
subroutine tet_geval_all4 (self, cell, f, gop, rop)
 Needs docs.
 

Variables

logical, private hex_mesh = .FALSE.
 
type(oft_ml_fem_type), target ml_oft_blagrange
 ML container for all FE representations.
 
type(oft_ml_fem_type), target ml_oft_lagrange
 ML container for all FE representations.
 
type(oft_lag_ops), dimension(:), pointer ml_oft_lagrange_ops
 ML container for all operators.
 
type(oft_ml_fem_comp_typeml_oft_vlagrange
 ML container for vector representation.
 
type(oft_scalar_bfem), pointer oft_blagrange
 Active FE representation.
 
type(oft_scalar_bfem), pointer oft_blagrange_lin
 Highest linear element representation.
 
type(oft_scalar_fem), pointer oft_lagrange
 Active FE representation.
 
integer(i4oft_lagrange_blevel = 0
 Highest level on base meshes.
 
integer(i4), parameter oft_lagrange_id = 1
 FE type ID.
 
integer(i4oft_lagrange_lev = 0
 Active FE level.
 
integer(i4oft_lagrange_level = 0
 Active FE level.
 
type(oft_scalar_fem), pointer oft_lagrange_lin
 Highest linear element representation.
 
integer(i4oft_lagrange_lin_level = 0
 Highest linear element level.
 
integer(i4oft_lagrange_minlev = 0
 Lowest constructed level.
 
integer(i4oft_lagrange_nlevels = 0
 Number of total levels.
 
type(oft_lag_ops), pointer oft_lagrange_ops
 Active operators.
 
type(oft_lag_ops), pointer oft_lagrange_ops_lin
 Highest linear element operators.
 
type(oft_fem_comp_type), pointer oft_vlagrange
 Active vector representation.
 

Function/Subroutine Documentation

◆ oft_blag_d2eval()

subroutine oft_blag_d2eval ( class(oft_scalar_bfem), intent(in)  self,
integer(i4), intent(in)  cell,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(6), intent(out)  val,
real(r8), dimension(6,6), intent(in), optional  g2op 
)

Evaluate lagrange gradient function.

Note
Evaluation is performed in logical coordinates with the resulting gradient with respect to physical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to evaluate
[in]fPosition in cell in logical space
[out]valGradient of lagrange element (dof) at point (f) [3]
[in]gopCell Jacobian matrix at point (f) [3,4]

◆ oft_blag_eval()

subroutine oft_blag_eval ( class(oft_scalar_bfem), intent(in)  self,
integer(i4), intent(in)  face,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(in)  f,
real(r8), intent(out)  val 
)

Evaluate lagrange interpolation function.

Note
Evaluation is performed in logical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to evaluate
[in]fPosition in cell in logical space
[out]valValue of interpolation function (dof) at point (f)

◆ oft_blag_geval()

subroutine oft_blag_geval ( class(oft_scalar_bfem), intent(in)  self,
integer(i4), intent(in)  face,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(3), intent(out)  val,
real(r8), dimension(3,3), intent(in), optional  gop 
)

Evaluate lagrange gradient function.

Note
Evaluation is performed in logical coordinates with the resulting gradient with respect to physical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to evaluate
[in]fPosition in cell in logical space
[out]valGradient of lagrange element (dof) at point (f) [3]
[in]gopCell Jacobian matrix at point (f) [3,4]

◆ oft_blag_npos()

subroutine oft_blag_npos ( class(oft_scalar_bfem), intent(in)  self,
integer(i4), intent(in)  cell,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(out)  f 
)

Retrieve lagrange node locations in logical coordinates.

Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to locate
[out]fPosition of node in logical space

◆ oft_lag_boundary()

subroutine oft_lag_boundary

Compute surface normals for use in boundary conditions.

◆ oft_lag_d2eval()

subroutine oft_lag_d2eval ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(6), intent(out)  val,
real(r8), dimension(6,10), intent(in), optional  g2op 
)

Evaluate lagrange gradient function.

Note
Evaluation is performed in logical coordinates with the resulting gradient with respect to physical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to evaluate
[in]fPosition in cell in logical space
[out]valGradient of lagrange element (dof) at point (f) [3]
[in]gopCell Jacobian matrix at point (f) [3,4]

◆ oft_lag_eval()

subroutine oft_lag_eval ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(in)  f,
real(r8), intent(out)  val 
)

Evaluate lagrange interpolation function.

Note
Evaluation is performed in logical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to evaluate
[in]fPosition in cell in logical space
[out]valValue of interpolation function (dof) at point (f)

◆ oft_lag_eval_all()

subroutine oft_lag_eval_all ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(:), intent(out), contiguous  rop 
)

Evaluate all lagrange interpolation functions.

Note
Evaluation is performed in logical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]fPosition in cell in logical space
[out]ropValue of interpolation functions at point (f) [ncdofs]

◆ oft_lag_geval()

subroutine oft_lag_geval ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(3), intent(out)  val,
real(r8), dimension(:,:), intent(in)  gop 
)

Evaluate lagrange gradient function.

Note
Evaluation is performed in logical coordinates with the resulting gradient with respect to physical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to evaluate
[in]fPosition in cell in logical space
[out]valGradient of lagrange element (dof) at point (f) [3]
[in]gopCell Jacobian matrix at point (f) [3,4]

◆ oft_lag_geval_all()

subroutine oft_lag_geval_all ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(:,:), intent(out), contiguous  rop,
real(r8), dimension(:,:), intent(in)  gop 
)

Evaluate all lagrange interpolation functions.

Note
Evaluation is performed in logical coordinates.
Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]fPosition in cell in logical space
[out]ropValue of interpolation functions at point (f) [3,ncdofs]
[in]gopCell Jacobian matrix at point (f) [3,4]

◆ oft_lag_nodes()

subroutine oft_lag_nodes ( integer(i4), intent(in)  order,
real(r8), dimension(:,:), intent(out), pointer  ed_nodes,
real(r8), dimension(:,:), intent(out), pointer  fc_nodes,
real(r8), dimension(:,:), intent(out), pointer  c_nodes 
)

Retrieve all lagrange node locations in logical coordinates.

Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to locate
[out]fPosition of node in logical space

◆ oft_lag_npos()

subroutine oft_lag_npos ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
integer(i4), intent(in)  dof,
real(r8), dimension(:), intent(out)  f 
)

Retrieve lagrange node locations in logical coordinates.

Parameters
[in]selfLagrange type for evaluation
[in]cellCell for evaluation
[in]dofElement to locate
[out]fPosition of node in logical space

◆ oft_lag_set_level()

subroutine oft_lag_set_level ( integer(i4), intent(in)  level)

Set the current level for lagrange finite elements.

Parameters
[in]levelDesired level

◆ oft_lag_setup()

subroutine oft_lag_setup ( integer(i4), intent(in)  order,
integer(i4), intent(in), optional  minlev 
)

Construct lagrange scalar FE on each mesh level.

Note
Highest supported representation is quartic
Parameters
[in]orderOrder of representation desired

◆ oft_lag_setup_bmesh()

subroutine oft_lag_setup_bmesh ( class(oft_afem_type), intent(out), pointer  self,
class(oft_bmesh), intent(in), target  tmesh,
integer(i4), intent(in)  order 
)

Construct lagrange scalar FE for a given order.

Note
Highest supported representation is quartic
Parameters
[in]orderOrder of representation desired

◆ oft_lag_setup_vol()

subroutine oft_lag_setup_vol ( class(oft_afem_type), intent(out), pointer  self,
class(oft_mesh), intent(in), target  tmesh,
integer(i4), intent(in)  order 
)

Construct lagrange scalar FE for a given order.

Note
Highest supported representation is quartic
Parameters
[in]orderOrder of representation desired

◆ scalar_bfem_delete()

subroutine scalar_bfem_delete ( class(oft_scalar_bfem), intent(inout)  self)

Destroy boundary FE object.

Note
Should only be used via class oft_bfem_type or children

◆ scalar_fem_delete()

subroutine scalar_fem_delete ( class(oft_scalar_fem), intent(inout)  self)

Destroy boundary FE object.

Note
Should only be used via class oft_bfem_type or children

◆ tet_eval_all2()

subroutine tet_eval_all2 ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(10), intent(out)  rop 
)

Needs docs.

◆ tet_eval_all3()

subroutine tet_eval_all3 ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(20), intent(out)  rop 
)

Needs docs.

◆ tet_eval_all4()

subroutine tet_eval_all4 ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(35), intent(out)  rop 
)

Needs docs.

◆ tet_geval_all2()

subroutine tet_geval_all2 ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(3,4), intent(in)  gop,
real(r8), dimension(3,10), intent(out)  rop 
)

Needs docs.

◆ tet_geval_all3()

subroutine tet_geval_all3 ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(3,4), intent(in)  gop,
real(r8), dimension(3,20), intent(out)  rop 
)

Needs docs.

◆ tet_geval_all4()

subroutine tet_geval_all4 ( class(oft_scalar_fem), intent(in)  self,
integer(i4), intent(in)  cell,
real(r8), dimension(:), intent(in)  f,
real(r8), dimension(3,4), intent(in)  gop,
real(r8), dimension(3,35), intent(out)  rop 
)

Needs docs.

Variable Documentation

◆ hex_mesh

logical, private hex_mesh = .FALSE.
private

◆ ml_oft_blagrange

type(oft_ml_fem_type), target ml_oft_blagrange

ML container for all FE representations.

◆ ml_oft_lagrange

type(oft_ml_fem_type), target ml_oft_lagrange

ML container for all FE representations.

◆ ml_oft_lagrange_ops

type(oft_lag_ops), dimension(:), pointer ml_oft_lagrange_ops

ML container for all operators.

◆ ml_oft_vlagrange

type(oft_ml_fem_comp_type) ml_oft_vlagrange

ML container for vector representation.

◆ oft_blagrange

type(oft_scalar_bfem), pointer oft_blagrange

Active FE representation.

◆ oft_blagrange_lin

type(oft_scalar_bfem), pointer oft_blagrange_lin

Highest linear element representation.

◆ oft_lagrange

type(oft_scalar_fem), pointer oft_lagrange

Active FE representation.

◆ oft_lagrange_blevel

integer(i4) oft_lagrange_blevel = 0

Highest level on base meshes.

◆ oft_lagrange_id

integer(i4), parameter oft_lagrange_id = 1

FE type ID.

◆ oft_lagrange_lev

integer(i4) oft_lagrange_lev = 0

Active FE level.

◆ oft_lagrange_level

integer(i4) oft_lagrange_level = 0

Active FE level.

◆ oft_lagrange_lin

type(oft_scalar_fem), pointer oft_lagrange_lin

Highest linear element representation.

◆ oft_lagrange_lin_level

integer(i4) oft_lagrange_lin_level = 0

Highest linear element level.

◆ oft_lagrange_minlev

integer(i4) oft_lagrange_minlev = 0

Lowest constructed level.

◆ oft_lagrange_nlevels

integer(i4) oft_lagrange_nlevels = 0

Number of total levels.

◆ oft_lagrange_ops

type(oft_lag_ops), pointer oft_lagrange_ops

Active operators.

◆ oft_lagrange_ops_lin

type(oft_lag_ops), pointer oft_lagrange_ops_lin

Highest linear element operators.

◆ oft_vlagrange

type(oft_fem_comp_type), pointer oft_vlagrange

Active vector representation.