Skip to main content

GetIDOF

Get id of degree of freedom by specifying physical variable, spatial component, time component.

What is IDOF

IDOF contains the degree of freedom number. Remember, a space-time component of a physical variable is a degree of freedom.

Calling example:

Interface 1

INTERFACE
MODULE PURE FUNCTION GetIDOF(spacecompo, timecompo, tspacecompo) &
& RESULT(ans)
INTEGER(I4B), INTENT(IN) :: spacecompo
INTEGER(I4B), INTENT(IN) :: timecompo
INTEGER(I4B), INTENT(IN) :: tspacecompo
INTEGER(I4B) :: ans
END FUNCTION GetIDOF
END INTERFACE

Get idof from space, time component.

warning

This is an expert level interface. General user should avoid using this interface.

Interface 2

INTERFACE GetIDOF
MODULE PURE FUNCTION obj_GetIDOF2(obj, ivar, spacecompo, timecompo) &
RESULT(ans)
TYPE(DOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: ivar
!! physical variable number
INTEGER(I4B), INTENT(IN) :: spacecompo
!! space component of physical variable
INTEGER(I4B), INTENT(IN) :: timecompo
!! time component of physical variable
INTEGER(I4B) :: ans
END FUNCTION obj_GetIDOF2
END INTERFACE GetIDOF

Get idof of a physical variable from its space-time components.

Interface 3

INTERFACE GetIDOF
MODULE PURE FUNCTION obj_GetIDOF3(obj, ivar, spacecompo, timecompo) &
RESULT(ans)
TYPE(DOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: ivar
!! physical variable number
INTEGER(I4B), INTENT(IN) :: spacecompo
!! space component of physical variable
INTEGER(I4B), INTENT(IN) :: timecompo(:)
!! time components of physical variable
INTEGER(I4B) :: ans(SIZE(timecompo))
!! idof of each time component
END FUNCTION obj_GetIDOF3
END INTERFACE GetIDOF

Interface 4

INTERFACE GetIDOF
MODULE PURE FUNCTION obj_GetIDOF4(obj, ivar, spacecompo, timecompo) &
RESULT(ans)
TYPE(DOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: ivar
!! physical variable number
INTEGER(I4B), INTENT(IN) :: spacecompo(:)
!! several space components of physical variable
INTEGER(I4B), INTENT(IN) :: timecompo
!! a time component of a physical variable
INTEGER(I4B) :: ans(SIZE(spacecompo))
!! idof of each space component
END FUNCTION obj_GetIDOF4
END INTERFACE GetIDOF

Interface 5

 INTERFACE
MODULE PURE FUNCTION GetIDOF(spacecompo, timecompo, tspacecompo) &
& RESULT(ans)
INTEGER(I4B), INTENT(IN) :: spacecompo
INTEGER(I4B), INTENT(IN) :: timecompo(:)
INTEGER(I4B), INTENT(IN) :: tspacecompo
INTEGER(I4B) :: ans(SIZE(timecompo))
END FUNCTION GetIDOF
END INTERFACE

Interface 6

 INTERFACE
MODULE PURE FUNCTION GetIDOF(spacecompo, timecompo, tspacecompo) &
& RESULT(ans)
INTEGER(I4B), INTENT(IN) :: spacecompo(:)
INTEGER(I4B), INTENT(IN) :: timecompo
INTEGER(I4B), INTENT(IN) :: tspacecompo
INTEGER(I4B) :: ans(SIZE(spacecompo))
END FUNCTION GetIDOF
END INTERFACE

Interface 7

 INTERFACE
MODULE PURE FUNCTION GetIDOF(obj, ivar, idof) &
& RESULT(ans)
TYPE(DOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: ivar
INTEGER(I4B), INTENT(IN) :: idof
INTEGER(I4B) :: ans
END FUNCTION GetIDOF
END INTERFACE

Interface 8

 INTERFACE
MODULE PURE FUNCTION GetIDOF(obj, ivar) &
& RESULT(ans)
TYPE(DOF_), INTENT(IN) :: obj
INTEGER(I4B), INTENT(IN) :: ivar
INTEGER(I4B), ALLOCATABLE :: ans(:)
END FUNCTION GetIDOF
END INTERFACE

Examples

See example
PROGRAM main
USE GlobalData
USE BaseType, ONLY: DOF_
USE DOF_Method
USE Test_Method

IMPLICIT NONE

TYPE(DOF_) :: obj
INTEGER(I4B) :: ii

! Initiate an instance of [DOF_](DOF_.md)
CALL Initiate(obj, tNodes=[10, 5], &
names=["V", "P"], spaceCompo=[3, 1], &
timeCompo=[2, 2], storageFMT=FMT_DOF)

! GetIndex
CALL OK(GetIDOF(spaceCompo=1, timeCompo=1, tSpaceCompo=3) .EQ. 1, 'GetIDOF')
CALL OK(GetIDOF(spaceCompo=1, timeCompo=2, tSpaceCompo=3) .EQ. 4, 'GetIDOF')
CALL Display(GetIDOF(obj=obj, spaceCompo=1, timeCompo=1, ivar=1), 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=1, timeCompo=1, ivar=1) .EQ. 1, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=2, timeCompo=1, ivar=1) .EQ. 2, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=3, timeCompo=1, ivar=1) .EQ. 3, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=1, timeCompo=2, ivar=1) .EQ. 4, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=2, timeCompo=2, ivar=1) .EQ. 5, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=3, timeCompo=2, ivar=1) .EQ. 6, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=1, timeCompo=1, ivar=2) .EQ. 7, 'GetIDOF')
CALL OK(GetIDOF(obj=obj, spaceCompo=1, timeCompo=2, ivar=2) .EQ. 8, 'GetIDOF')

CALL DEALLOCATE (obj)
END PROGRAM main