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:
GetIDOF(spaceCompo, timeCompo, tspaceCompo)
Interface 1GetIDOF(obj, ivar, spaceCompo, timeCompo)
Interface 2GetIDOF(obj, ivar, spaceCompo, timeCompo(:) )
Interface 3GetIDOF(obj, ivar, spaceCompo(:), timeCompo)
Interface 4GetIDOF(spaceCompo, timeCompo(:), tspaceCompo)
Interface 5GetIDOF(spaceCompo(:), timeCompo, tspaceCompo)
Interface 6GetIDOF(obj, ivar, idof)
Interface 7GetIDOF(obj, ivar)
Interface 8
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