FrontISTR  5.2.0
Large-scale structural analysis program with finit element method
elementinfo Module Reference

This module encapsulate the basic functions of all elements provide by this software. More...

Functions/Subroutines

integer(kind=kind(2)) function getspacedimension (etype)
 Obtain the space dimension of the element. More...
 
integer(kind=kind(2)) function getnumberofnodes (etype)
 Obtain number of nodes of the element. More...
 
integer(kind=kind(2)) function getnumberofsubface (etype)
 Obtain number of sub-surface. More...
 
subroutine getsubface (intype, innumber, outtype, nodes)
 Find the definition of surface of the element. More...
 
integer function numofquadpoints (fetype)
 Obtains the number of quadrature points of the element. More...
 
subroutine getquadpoint (fetype, np, pos)
 Fetch the coordinate of gauss point. More...
 
real(kind=kreal) function getweight (fetype, np)
 Fetch the weight value in given gauss point. More...
 
subroutine getshapederiv (fetype, localcoord, shapederiv)
 Calculate deivatives of shape fucntion in natural coordiante system. More...
 
subroutine getshape2ndderiv (fetype, localcoord, shapederiv)
 Calculate the 2nd derivative of shape function in natural coodinate system. More...
 
subroutine getshapefunc (fetype, localcoord, func)
 Calculate the shape function in natural coodinate system. More...
 
subroutine getnodalnaturalcoord (fetype, nncoord)
 
subroutine getglobalderiv (fetype, nn, localcoord, elecoord, det, gderiv)
 Calculate shape derivative in global coordinate system. More...
 
real(kind=kreal) function getdeterminant (fetype, nn, localcoord, elecoord)
 Calculate shape derivative in global coordinate system. More...
 
subroutine getjacobian (fetype, nn, localcoord, elecoord, det, jacobian, inverse)
 calculate Jacobian matrix, its determinant and inverse More...
 
real(kind=kreal) function, dimension(3) surfacenormal (fetype, nn, localcoord, elecoord)
 Calculate normal of 3d-surface. More...
 
real(kind=kreal) function, dimension(2) edgenormal (fetype, nn, localcoord, elecoord)
 Calculate normal of 2d-edge. More...
 
subroutine tangentbase (fetype, nn, localcoord, elecoord, tangent)
 Calculate base vector of tangent space of 3d surface. More...
 
subroutine curvature (fetype, nn, localcoord, elecoord, l2ndderiv, normal, curv)
 Calculate curvature tensor at a point along 3d surface. More...
 
subroutine getelementcenter (fetype, localcoord)
 Return natural coordinate of the center of surface element. More...
 
integer function isinsideelement (fetype, localcoord, clearance)
 if a point is inside a surface element -1: No; 0: Yes; >0: Node's (vertex) number More...
 
subroutine getvertexcoord (fetype, cnode, localcoord)
 Get the natural coord of a vertex node. More...
 
subroutine extrapolatevalue (lpos, fetype, nnode, pvalue, ndvalue)
 This subroutine extrapolate a point value into elemental nodes. More...
 
subroutine interapolatevalue (lpos, fetype, nnode, pvalue, ndvalue)
 This subroutine interapolate element nodes value into a point value. More...
 
subroutine gauss2node (fetype, gaussv, nodev)
 This subroutine extroplate value in quadrature point to element nodes. More...
 
real(kind=kreal) function getreferencelength (fetype, nn, localcoord, elecoord)
 This function calculates reference length at a point in surface. More...
 

Variables

integer, parameter fe_unknown = -1
 
integer, parameter fe_line2n = 111
 
integer, parameter fe_line3n = 112
 
integer, parameter fe_tri3n = 231
 
integer, parameter fe_tri6n = 232
 
integer, parameter fe_tri6nc = 2322
 
integer, parameter fe_quad4n = 241
 
integer, parameter fe_quad8n = 242
 
integer, parameter fe_truss = 301
 
integer, parameter fe_tet4n = 341
 
integer, parameter fe_tet4n_pipi = 3414
 
integer, parameter fe_tet10n = 342
 
integer, parameter fe_tet10nc = 3422
 
integer, parameter fe_prism6n = 351
 
integer, parameter fe_prism15n = 352
 
integer, parameter fe_hex8n = 361
 
integer, parameter fe_hex20n = 362
 
integer, parameter fe_hex27n = 363
 
integer, parameter fe_beam2n = 611
 
integer, parameter fe_beam3n = 612
 
integer, parameter fe_beam341 = 641
 
integer, parameter fe_tri6n_shell = 732
 
integer, parameter fe_dsg3_shell = 733
 
integer, parameter fe_mitc3_shell = 731
 
integer, parameter fe_mitc4_shell = 741
 
integer, parameter fe_mitc8_shell = 742
 
integer, parameter fe_mitc9_shell = 743
 
integer, parameter fe_mitc3_shell361 = 761
 
integer, parameter fe_mitc4_shell361 = 781
 
integer, parameter fe_tri3n_patch = 1031
 
integer, parameter fe_tri6n_patch = 1032
 
integer, parameter fe_quad4n_patch = 1041
 
integer, parameter fe_quad8n_patch = 1042
 

Detailed Description

This module encapsulate the basic functions of all elements provide by this software.

After providing a specified elemental type, this module provide functions to fetch

  1. Space dimension
  2. Number of elements' nodes
  3. Suggested number of quadrature points
  4. Quadrature position and weight
  5. Shape function, first and second derivatives of shape functions in natural coordinate
  6. Elemental surfaces (Nodes' number)

    Those would be supposed to adopt this module include

  • Those need to calculate shape function, shape derivatives in global or user-defined coordinate system.
  • Those need to do quadrature calculation.
  • Those need to fetch the information of sub-surfaces ( when calculate external surface load, e.g.)
  • And something else ...

    Author
    Xi YUAN (AdavanceSoft)
    Date
    2009/04/16
    Version
    0.00

Function/Subroutine Documentation

◆ curvature()

subroutine elementinfo::curvature ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(2), intent(in)  localcoord,
real(kind=kreal), dimension(3,nn), intent(in)  elecoord,
real(kind=kreal), dimension(3,2,2), intent(out)  l2ndderiv,
real(kind=kreal), dimension(3), intent(in), optional  normal,
real(kind=kreal), dimension(2,2), intent(out), optional  curv 
)

Calculate curvature tensor at a point along 3d surface.

Parameters
[in]fetypetype of surface element
[in]nnnumber of elemental nodes
[in]localcoordposition
[in]elecoordnodes coordinates of element
[out]l2ndderiv2nd derivative of shape function
[in]normalnoraml direction of surface
[out]curvcurvature tensor

Definition at line 959 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ edgenormal()

real(kind=kreal) function, dimension(2) elementinfo::edgenormal ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(1), intent(in)  localcoord,
real(kind=kreal), dimension(2,nn), intent(in)  elecoord 
)

Calculate normal of 2d-edge.

Parameters
[in]fetypetype of surface element
[in]nnnumber of elemental nodes
[in]localcoordposition
[in]elecoordnodes coordinates of element

Definition at line 897 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ extrapolatevalue()

subroutine elementinfo::extrapolatevalue ( real(kind=kreal), dimension(:), intent(in)  lpos,
integer, intent(in)  fetype,
integer, intent(in)  nnode,
real(kind=kreal), dimension(:), intent(in)  pvalue,
real(kind=kreal), dimension(:,:), intent(out)  ndvalue 
)

This subroutine extrapolate a point value into elemental nodes.

Parameters
[in]lpospoisition of value given
[in]fetypeelement type
[in]nnodenumber of element node
[in]pvaluevalue to be extropolated
[out]ndvalueequivalent nodal value

Definition at line 1120 of file element.f90.

Here is the call graph for this function:

◆ gauss2node()

subroutine elementinfo::gauss2node ( integer, intent(in)  fetype,
real(kind=kreal), dimension(:,:), intent(in)  gaussv,
real(kind=kreal), dimension(:,:), intent(out)  nodev 
)

This subroutine extroplate value in quadrature point to element nodes.

Parameters
[in]fetypeelement type
[in]gaussvvalues in quadrature points
[out]nodevvalues in nodes

Definition at line 1153 of file element.f90.

Here is the call graph for this function:

◆ getdeterminant()

real(kind=kreal) function elementinfo::getdeterminant ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(:), intent(in)  localcoord,
real(kind=kreal), dimension(:,:), intent(in)  elecoord 
)

Calculate shape derivative in global coordinate system.

Parameters
[in]fetypeelement type
[in]nnnumber of elemental nodes
[in]localcoordcurr position with natural coord
[in]elecoordnodal coord of curr element

Definition at line 784 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getelementcenter()

subroutine elementinfo::getelementcenter ( integer, intent(in)  fetype,
real(kind=kreal), dimension(2), intent(out)  localcoord 
)

Return natural coordinate of the center of surface element.

Parameters
[in]fetypetype of surface element
[out]localcoordcenter coordinate

Definition at line 1004 of file element.f90.

Here is the caller graph for this function:

◆ getglobalderiv()

subroutine elementinfo::getglobalderiv ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(:), intent(in)  localcoord,
real(kind=kreal), dimension(:,:), intent(in)  elecoord,
real(kind=kreal), intent(out)  det,
real(kind=kreal), dimension(:,:), intent(out)  gderiv 
)

Calculate shape derivative in global coordinate system.

Parameters
[in]fetypeelement type
[in]nnnumber of elemental nodes
[in]localcoordcurr position with natural coord
[in]elecoordnodal coord of curr element
[out]detnodal coord of curr element
[out]gderivshape deivative in global coordinate system

Definition at line 733 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getjacobian()

subroutine elementinfo::getjacobian ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(:), intent(in)  localcoord,
real(kind=kreal), dimension(:,:), intent(in)  elecoord,
real(kind=kreal), intent(out)  det,
real(kind=kreal), dimension(:,:), intent(out)  jacobian,
real(kind=kreal), dimension(:,:), intent(out)  inverse 
)

calculate Jacobian matrix, its determinant and inverse

Parameters
[in]fetypeelement type
[in]nnnumber of element nodes
[in]localcoordcurr position with natural coord
[in]elecoordnodal coord of curr element
[out]detnodal coord of curr element
[out]inverseinverse of jacobian

Definition at line 812 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getnodalnaturalcoord()

subroutine elementinfo::getnodalnaturalcoord ( integer, intent(in)  fetype,
real(kind = kreal), dimension(:, :), intent(out)  nncoord 
)

Definition at line 691 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getnumberofnodes()

integer(kind=kind(2)) function elementinfo::getnumberofnodes ( integer, intent(in)  etype)

Obtain number of nodes of the element.

Parameters
[in]etypeelement type

Definition at line 125 of file element.f90.

Here is the caller graph for this function:

◆ getnumberofsubface()

integer(kind=kind(2)) function elementinfo::getnumberofsubface ( integer, intent(in)  etype)

Obtain number of sub-surface.

Parameters
[in]etypeelement type

Definition at line 162 of file element.f90.

Here is the caller graph for this function:

◆ getquadpoint()

subroutine elementinfo::getquadpoint ( integer, intent(in)  fetype,
integer, intent(in)  np,
real(kind=kreal), dimension(:), intent(out)  pos 
)

Fetch the coordinate of gauss point.

Parameters
[in]fetypeelement type
[in]npnumber of curr quadrature point
[out]posnatural coord of curr quadrature point

Definition at line 481 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getreferencelength()

real(kind=kreal) function elementinfo::getreferencelength ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(2), intent(in)  localcoord,
real(kind=kreal), dimension(3,nn), intent(in)  elecoord 
)

This function calculates reference length at a point in surface.

Parameters
[in]fetypesurface element type
[in]nnnumber of elemental nodes
[in]localcoordnatural coordinates
[in]elecoordnodes coordinates of surface element

Definition at line 1208 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getshape2ndderiv()

subroutine elementinfo::getshape2ndderiv ( integer, intent(in)  fetype,
real(kind=kreal), dimension(:), intent(in)  localcoord,
real(kind=kreal), dimension(:,:,:), intent(out)  shapederiv 
)

Calculate the 2nd derivative of shape function in natural coodinate system.

Parameters
[in]fetypeelemental type
[in]localcoordnatural points
[out]shapederiv2nd order shape derivatives

Definition at line 614 of file element.f90.

Here is the call graph for this function:

◆ getshapederiv()

subroutine elementinfo::getshapederiv ( integer, intent(in)  fetype,
real(kind=kreal), dimension(:), intent(in)  localcoord,
real(kind=kreal), dimension(:,:), intent(out)  shapederiv 
)

Calculate deivatives of shape fucntion in natural coordiante system.

Parameters
[in]fetypeinput element type
[in]localcoordnatural points
[out]shapederivdeivative of shape function

Definition at line 570 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getshapefunc()

subroutine elementinfo::getshapefunc ( integer, intent(in)  fetype,
real(kind=kreal), dimension(:), intent(in)  localcoord,
real(kind=kreal), dimension(:), intent(out)  func 
)

Calculate the shape function in natural coodinate system.

Parameters
[in]fetypeinput element type
[in]localcoordnatural points
[out]funcshape function

Definition at line 639 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getspacedimension()

integer(kind=kind(2)) function elementinfo::getspacedimension ( integer, intent(in)  etype)

Obtain the space dimension of the element.

Parameters
[in]etypeelement type

Definition at line 111 of file element.f90.

Here is the caller graph for this function:

◆ getsubface()

subroutine elementinfo::getsubface ( integer, intent(in)  intype,
integer, intent(in)  innumber,
integer, intent(out)  outtype,
integer, dimension(:), intent(out)  nodes 
)

Find the definition of surface of the element.

Parameters
[in]intypeinput element type, with space dimension n
[in]innumbernumber of sub-surface
[out]outtypeoutput element type, with space dimension n-1
[out]nodesoutput face nodes' ID

Definition at line 187 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getvertexcoord()

subroutine elementinfo::getvertexcoord ( integer, intent(in)  fetype,
integer, intent(in)  cnode,
real(kind=kreal), dimension(2), intent(out)  localcoord 
)

Get the natural coord of a vertex node.

Parameters
[in]fetypetype of surface element
[in]cnodecurrent node
[out]localcoordnatural coord

Definition at line 1085 of file element.f90.

Here is the caller graph for this function:

◆ getweight()

real(kind=kreal) function elementinfo::getweight ( integer, intent(in)  fetype,
integer, intent(in)  np 
)

Fetch the weight value in given gauss point.

Parameters
[in]fetypeelement type
[in]npnumber of curr quadrature point

Definition at line 527 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ interapolatevalue()

subroutine elementinfo::interapolatevalue ( real(kind=kreal), dimension(:), intent(in)  lpos,
integer, intent(in)  fetype,
integer, intent(in)  nnode,
real(kind=kreal), dimension(:), intent(out)  pvalue,
real(kind=kreal), dimension(:,:), intent(in)  ndvalue 
)

This subroutine interapolate element nodes value into a point value.

Parameters
[in]lpospoisition of value given
[in]fetypeelement type
[in]nnodenumber of element node
[out]pvaluevalue to be extropolated
[in]ndvalueequivalent nodal value

Definition at line 1136 of file element.f90.

Here is the call graph for this function:

◆ isinsideelement()

integer function elementinfo::isinsideelement ( integer, intent(in)  fetype,
real(kind=kreal), dimension(2), intent(inout)  localcoord,
real(kind=kreal), optional  clearance 
)

if a point is inside a surface element -1: No; 0: Yes; >0: Node's (vertex) number

Parameters
[in]fetypetype of surface element
[in,out]localcoordnatural coord
clearanceclearance used for judgement

Definition at line 1021 of file element.f90.

Here is the caller graph for this function:

◆ numofquadpoints()

integer function elementinfo::numofquadpoints ( integer, intent(in)  fetype)

Obtains the number of quadrature points of the element.

Parameters
[in]fetypeelement type

Definition at line 444 of file element.f90.

Here is the caller graph for this function:

◆ surfacenormal()

real(kind=kreal) function, dimension(3) elementinfo::surfacenormal ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(2), intent(in)  localcoord,
real(kind=kreal), dimension(3,nn), intent(in)  elecoord 
)

Calculate normal of 3d-surface.

Parameters
[in]fetypetype of surface element
[in]nnnumber of elemental nodes
[in]localcoordposition
[in]elecoordnodes coordinates of element

Definition at line 862 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ tangentbase()

subroutine elementinfo::tangentbase ( integer, intent(in)  fetype,
integer, intent(in)  nn,
real(kind=kreal), dimension(2), intent(in)  localcoord,
real(kind=kreal), dimension(3,nn), intent(in)  elecoord,
real(kind=kreal), dimension(3,2), intent(out)  tangent 
)

Calculate base vector of tangent space of 3d surface.

Parameters
[in]fetypetype of surface element
[in]nnnumber of elemental nodes
[in]localcoordposition
[in]elecoordnodes coordinates of element
[out]tangenttwo tangent vectors

Definition at line 925 of file element.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ fe_beam2n

integer, parameter elementinfo::fe_beam2n = 611

Definition at line 85 of file element.f90.

◆ fe_beam341

integer, parameter elementinfo::fe_beam341 = 641

Definition at line 87 of file element.f90.

◆ fe_beam3n

integer, parameter elementinfo::fe_beam3n = 612

Definition at line 86 of file element.f90.

◆ fe_dsg3_shell

integer, parameter elementinfo::fe_dsg3_shell = 733

Definition at line 90 of file element.f90.

◆ fe_hex20n

integer, parameter elementinfo::fe_hex20n = 362

Definition at line 82 of file element.f90.

◆ fe_hex27n

integer, parameter elementinfo::fe_hex27n = 363

Definition at line 83 of file element.f90.

◆ fe_hex8n

integer, parameter elementinfo::fe_hex8n = 361

Definition at line 81 of file element.f90.

◆ fe_line2n

integer, parameter elementinfo::fe_line2n = 111

Definition at line 67 of file element.f90.

◆ fe_line3n

integer, parameter elementinfo::fe_line3n = 112

Definition at line 68 of file element.f90.

◆ fe_mitc3_shell

integer, parameter elementinfo::fe_mitc3_shell = 731

Definition at line 91 of file element.f90.

◆ fe_mitc3_shell361

integer, parameter elementinfo::fe_mitc3_shell361 = 761

Definition at line 96 of file element.f90.

◆ fe_mitc4_shell

integer, parameter elementinfo::fe_mitc4_shell = 741

Definition at line 92 of file element.f90.

◆ fe_mitc4_shell361

integer, parameter elementinfo::fe_mitc4_shell361 = 781

Definition at line 97 of file element.f90.

◆ fe_mitc8_shell

integer, parameter elementinfo::fe_mitc8_shell = 742

Definition at line 93 of file element.f90.

◆ fe_mitc9_shell

integer, parameter elementinfo::fe_mitc9_shell = 743

Definition at line 94 of file element.f90.

◆ fe_prism15n

integer, parameter elementinfo::fe_prism15n = 352

Definition at line 80 of file element.f90.

◆ fe_prism6n

integer, parameter elementinfo::fe_prism6n = 351

Definition at line 79 of file element.f90.

◆ fe_quad4n

integer, parameter elementinfo::fe_quad4n = 241

Definition at line 72 of file element.f90.

◆ fe_quad4n_patch

integer, parameter elementinfo::fe_quad4n_patch = 1041

Definition at line 101 of file element.f90.

◆ fe_quad8n

integer, parameter elementinfo::fe_quad8n = 242

Definition at line 73 of file element.f90.

◆ fe_quad8n_patch

integer, parameter elementinfo::fe_quad8n_patch = 1042

Definition at line 102 of file element.f90.

◆ fe_tet10n

integer, parameter elementinfo::fe_tet10n = 342

Definition at line 77 of file element.f90.

◆ fe_tet10nc

integer, parameter elementinfo::fe_tet10nc = 3422

Definition at line 78 of file element.f90.

◆ fe_tet4n

integer, parameter elementinfo::fe_tet4n = 341

Definition at line 75 of file element.f90.

◆ fe_tet4n_pipi

integer, parameter elementinfo::fe_tet4n_pipi = 3414

Definition at line 76 of file element.f90.

◆ fe_tri3n

integer, parameter elementinfo::fe_tri3n = 231

Definition at line 69 of file element.f90.

◆ fe_tri3n_patch

integer, parameter elementinfo::fe_tri3n_patch = 1031

Definition at line 99 of file element.f90.

◆ fe_tri6n

integer, parameter elementinfo::fe_tri6n = 232

Definition at line 70 of file element.f90.

◆ fe_tri6n_patch

integer, parameter elementinfo::fe_tri6n_patch = 1032

Definition at line 100 of file element.f90.

◆ fe_tri6n_shell

integer, parameter elementinfo::fe_tri6n_shell = 732

Definition at line 89 of file element.f90.

◆ fe_tri6nc

integer, parameter elementinfo::fe_tri6nc = 2322

Definition at line 71 of file element.f90.

◆ fe_truss

integer, parameter elementinfo::fe_truss = 301

Definition at line 74 of file element.f90.

◆ fe_unknown

integer, parameter elementinfo::fe_unknown = -1

Definition at line 65 of file element.f90.