The Open FUSION Toolkit 1.0.0-beta6
Modeling tools for plasma and fusion research and engineering
Loading...
Searching...
No Matches
tetmesh_type.F90 File Reference
#include "local.h"

Data Types

type  oft_tetmesh
 Tetrahedral volume mesh type. More...

Modules

module  oft_tetmesh_type
 Tetrahedral mesh structure definitions.

Functions/Subroutines

subroutine jacobian_gen ()
subroutine jacobian_quad ()
subroutine log2phys_gen ()
subroutine log2phys_quad ()
subroutine tet_3d_grid (order, xnodes, inodesf, inodesc)
 Needs docs.
subroutine tetmesh_ctang (self, cell, ind, f, tang)
 Compute the curve tangent vector for a given edge on a cell.
subroutine tetmesh_g2inv (jfull, g2op)
 Needs docs.
subroutine tetmesh_get_surf_map (self, face, cell, lmap)
 Get mapping between boundary and volume logical coordinates.
subroutine tetmesh_hessian (self, cell, f, g2op, k)
 Compute the spatial hessian matrices for a given cell at a given logical position.
integer(i4) function tetmesh_in_cell (self, f, tol)
 Test if logical position lies within the base cell.
subroutine tetmesh_invert_cell (self, cell)
 Turn cell "inside out", used to ensure consistent orientations.
subroutine tetmesh_jacinv (jfull, gop, jac)
 Invert a 3x3 matrix.
subroutine tetmesh_jacl (self, cell, gop, j)
 Linear implementation of @tetmesh_jacobian.
subroutine tetmesh_jacobian (self, cell, f, gop, j)
 Compute the spatial jacobian matrix and its determinant for a given cell at a given logical position.
real(r8) function, dimension(3) tetmesh_log2phys (self, cell, f)
 Map from logical to physical coordinates in a given cell.
subroutine tetmesh_phys2log (self, cell, pt, f)
 Map from physical to logical coordinates in a given cell.
real(r8) function, dimension(4) tetmesh_phys2logho (self, i, pt)
real(r8) function, dimension(4) tetmesh_phys2logl (self, i, pt)
subroutine tetmesh_quad_rule (self, order, quad_rule)
 Retrieve suitable quadrature rule for mesh with given order.
subroutine tetmesh_set_order (self, order)
 Set maximum order of spatial mapping.
subroutine tetmesh_setup (self, cad_type)
 Setup mesh with implementation specifics (cell_np, cell_ne, etc.).
subroutine tetmesh_snormal (self, cell, ind, f, norm)
 Compute the surface normal vector for a given face on a cell.
subroutine tetmesh_surf_to_vol (self, fsurf, lmap, fvol)
 Map between surface and volume logical coordinates.
subroutine tetmesh_tessellate (self, rtmp, lctmp, order)
 Tessellate mesh onto lagrange FE nodes of specified order (usually for plotting).
integer(i4) function, dimension(2) tetmesh_tessellated_sizes (self)
 Get sizes of arrays returned by tetmesh_tessellate.
subroutine tetmesh_vlog (self, i, f)
 Get position in logical space of vertex i.
subroutine tm_findcell_error (m, n, uv, err, iflag)
 Evalute the error between a logical point and the current active point.

Variables

integer(i4), private active_cell = 0
 Active cell for high order find_cell.
class(oft_tetmesh), pointer, private active_mesh => NULL()
 Active mesh for high order find_cell.
real(r8), dimension(3), private active_pt = 0.d0
 Active point for high order find_cell.
real(r8), parameter, private ho_find_du =1.d-6
 Step size used for jacobian eval during high order find_cell.
integer(i4), parameter, private ho_find_nsteps =100
 Maximum number of steps during high order find_cell.
real(r8), parameter, private ho_find_tol =1.d-6
 Convergence tolerance for high order find_cell.
integer(i4), dimension(2, 6), parameter tet_ed =RESHAPE((/1,4, 2,4, 3,4, 2,3, 3,1, 1,2/), (/2,6/))
 Tetrahedron edge list.
integer(i4), dimension(3, 4), parameter tet_fc =RESHAPE((/2,3,4,3,1,4,1,2,4,1,2,3/), (/3,4/))
 Tetrahedron face list.
integer(i4), dimension(3, 4), parameter tet_fe =RESHAPE((/2,3,4, 1,3,5, 1,2,6, 4,5,6/), (/3,4/))
 Tetrahedron face edge list.
integer(i4), dimension(2, 3), parameter tri_ed =RESHAPE((/3,2,1,3,2,1/), (/2,3/))
 Triangle edge list.

Function/Subroutine Documentation

◆ jacobian_gen()

subroutine jacobian_gen
private

◆ jacobian_quad()

subroutine jacobian_quad
private

◆ log2phys_gen()

subroutine log2phys_gen
private

◆ log2phys_quad()

subroutine log2phys_quad
private

◆ tetmesh_phys2logho()

real(r8) function, dimension(4) tetmesh_phys2logho ( class(oft_tetmesh), intent(in), target self,
integer(i4), intent(in) i,
real(r8), dimension(3), intent(in) pt )
private

◆ tetmesh_phys2logl()

real(r8) function, dimension(4) tetmesh_phys2logl ( class(oft_tetmesh), intent(in) self,
integer(i4), intent(in) i,
real(r8), dimension(3), intent(in) pt )
private

◆ tm_findcell_error()

subroutine tm_findcell_error ( integer(i4), intent(in) m,
integer(i4), intent(in) n,
real(r8), dimension(n), intent(in) uv,
real(r8), dimension(m), intent(out) err,
integer(i4), intent(inout) iflag )
private

Evalute the error between a logical point and the current active point.

Note
Designed to be used as the error function for minimization in tetmesh_phys2logho
Parameters
[in]mNumber of spatial dimensions (3)
[in]nNumber of parametric dimensions (3)
[in]uvParametric possition [n]
[out]errError vector between current and desired point [3]
[in,out]iflagUnused flag