GetTotalEdgeDOF
The GetTotalEdgeDOF generic method in the FEDOF_Class provides the total number of degrees of freedom (DOF) associated with an edge in a finite element mesh.
Interface
MODULE FUNCTION obj_GetTotalEdgeDOF1(obj, globalEdge, islocal) RESULT(ans)
CLASS(FEDOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: globalEdge
LOGICAL(LGT), INTENT(IN), OPTIONAL :: islocal
INTEGER(I4B) :: ans
END FUNCTION obj_GetTotalEdgeDOF1
MODULE FUNCTION obj_GetTotalEdgeDOF2(obj, globalElement, localEdgeNumber, &
islocal) RESULT(ans)
CLASS(FEDOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: globalElement
!! global or local cell element number
INTEGER(I4B), INTENT(IN) :: localEdgeNumber
!! local edge number in global element
LOGICAL(LGT), INTENT(IN), OPTIONAL :: islocal
!! if true then globalElement is local element
INTEGER(I4B) :: ans
END FUNCTION obj_GetTotalEdgeDOF2
Description
The GetTotalEdgeDOF generic method provides two implementations to retrieve the total edge DOF count:
GetTotalEdgeDOF1- Gets total DOF count directly using a global edge numberGetTotalEdgeDOF2- Gets total DOF count using a global element number and local edge number within that element
Interface 1: GetTotalEdgeDOF1
Parameters
obj- Input,CLASS(FEDOF_), FEDOF object instanceglobalEdge- Input,INTEGER(I4B), global edge numberislocal- Optional Input,LOGICAL(LGT), if true,globalEdgeis treated as a local edge numberans- Output,INTEGER(I4B), total number of DOFs on the specified edge
Implementation Details
The implementation uses the internal edge index array structure to calculate the total DOF count:
ans = obj%edgeIA(globalEdge + 1) - obj%edgeIA(globalEdge)
Interface 2: GetTotalEdgeDOF2
Parameters
obj- Input,CLASS(FEDOF_), FEDOF object instanceglobalElement- Input,INTEGER(I4B), global or local cell element numberlocalEdgeNumber- Input,INTEGER(I4B), local edge number in global elementislocal- Optional Input,LOGICAL(LGT), if true,globalElementis treated as a local elementans- Output,INTEGER(I4B), total number of DOFs on the specified edge
Implementation Details
This implementation first converts the element and local edge information to a global edge number, then calls the first implementation:
INTEGER(I4B) :: globalEdge
globalEdge = obj%mesh%GetGlobalEdgeNumber(globalElement=globalElement, &
islocal=islocal, localEdgeNumber=localEdgeNumber)
ans = obj%GetTotalEdgeDOF(globalEdge=globalEdge, islocal=islocal)
Usage Example
! Example to get total DOFs on an edge
INTEGER(I4B) :: totalDOFs
TYPE(FEDOF_) :: myDOF
! Method 1: Using global edge number
totalDOFs = myDOF%GetTotalEdgeDOF(globalEdge=8)
! Method 2: Using element and local edge number
totalDOFs = myDOF%GetTotalEdgeDOF(globalElement=15, localEdgeNumber=3)
Related Methods
GetEdgeDOF- Retrieves the actual DOF indices for an edgeGetTotalFaceDOF- Similar function but for element facesGetTotalDOF- Gets total DOF count for an entire element or the entire meshGetTotalVertexDOF- Gets total DOF count for vertices