TransfiniteMapClass Module

 GradHex8TransfiniteMap: Compute the gradient of the transfinite mapping
 for a hex8 element
 corners = the 8 corners in standard FE orientation
 u       = computational space variable (Xi, Eta, Zeta) in [-1,1]
 grad_x  = physical space gradient
           grad_x(1,:) = (x_Xi, x_Eta, x_Zeta), etc., i.e.
           grad_x(i,j) = dx_(i)/dXi_(j)

<

 GeneralHexTransfiniteMap: Given the six faces and four corners of a hex
 element, and
 cornerPoints = the 8 corners in standard FE orientation
 faceData     = Interpolation data that defines a face.
 u            = Computational space variable (u, v, w) in [-1,1]
 x            = Physical space location

<

 ComputeHexTransfiniteMap: Given the six faces and four corners of a hex 
 element, and
 Compute the transfinite mapping for a general hex element
 xi      = computational space variable (Xi, Zeta, Eta) in [0,1]
 x       = resultant physical space variable (x, y, z)

 face    = face interpolant location for appropriate local face coordinate
 edge    = edge interpolant location for appropriate edge coordinate
 corners = The 8 corners in standard FE format

<

 GradGeneralHexTransfiniteMap: Given the six faces and four cornerss of a 
 hex element, 
 and a computational point xi, return the jacouan matrix 
 grad_x = d x_i/d Xi_j
u            = computational space variable (xi, eta, zeta) in [-1,1]
grad_x = physical space gradient grad_x(:,1) = (x_Xi, x_Eta, x_Zeta), etc.
cornerPoints = the 8 corners in standard fe format
faceData     = interpolant data for the 6 faces

<

 ComputeGradHexTransfiniteMap: Compute the gradient for a general hex
                               element after the incoming face data has
                               been processed.
 xi          = computational space variable (Xi, Eta, Zeta) in [0,1]
 grad_x(1,:) = (x_Xi, x_Eta, x_Zeta), etc., i.e.
                grad_x(i,j) = dx_(i)/dXi_(j)
 face    = face interpolant location for appropriate local face coordinate
 faceDer = face interpolant derivatives for appropriate local face 
           coordinate
 edge    = edge interpolant location for appropriate edge coordinate
 edgeDer = edge interpolant derivative for appropriate edge coordinate
 corners = The 8 corners in standard fe format

<

 GeneralHexGradAndMap: Given the six faces and four cornerss of a 
 hex element, and a computational point xi, return physical space location
 and the jacouan matrix grad_x = d x_i/d Xi_j
xi           = computational space variable (X, Y, Z)
grad_x = physical space gradient grad_x(:,1) = (x_Xi, x_Eta, x_Zeta), etc.
cornerPoints = the 8 corners in standard fe format
faceData     = interpolant data for the 6 faces

<



Derived Types

type, public ::  TransfiniteHexMap

Components

Type Visibility Attributes Name Initial
real(kind=RP), public, DIMENSION(3,8) :: corners
type(FacePatch), public, DIMENSION(:), ALLOCATABLE :: faces

Type-Bound Procedures

procedure, public :: constructWithCorners
procedure, public :: constructWithFaces
procedure, public :: destruct => destructTransfiniteHexMap
procedure, public :: transfiniteMapAt
procedure, public :: metricDerivativesAt
procedure, public :: isHex8
procedure, public :: setCorners

Subroutines

public subroutine Hex8TransfiniteMap(u, x, corners)

Arguments

Type IntentOptional Attributes Name
real(kind=RP), intent(in), DIMENSION(3) :: u
real(kind=RP), intent(out), DIMENSION(3) :: x
real(kind=RP), intent(in), DIMENSION(3,8) :: corners

public subroutine GradHex8TransfiniteMap(u, grad_x, corners)

Arguments

Type IntentOptional Attributes Name
real(kind=RP), intent(in), DIMENSION(3) :: u
real(kind=RP), intent(out), DIMENSION(3,3) :: grad_x
real(kind=RP), intent(in), DIMENSION(3, 8) :: corners

public subroutine GeneralHexTransfiniteMap(u, x, cornerPoints, faceData)

Arguments

Type IntentOptional Attributes Name
real(kind=RP), intent(in), DIMENSION(3) :: u
real(kind=RP), intent(out), DIMENSION(3) :: x
real(kind=RP), intent(in), DIMENSION(3,8) :: cornerPoints
type(FacePatch), intent(in), DIMENSION(6) :: faceData

public subroutine GradGeneralHexTransfiniteMap(u, grad_x, cornerPoints, faceData)

Arguments

Type IntentOptional Attributes Name
real(kind=RP), DIMENSION(3) :: u
real(kind=RP), DIMENSION(3,3) :: grad_x
real(kind=RP), DIMENSION(3,8) :: cornerPoints
type(FacePatch), DIMENSION(6) :: faceData