Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | Theta | |||
real(kind=r64), | intent(in) | :: | Phi | |||
integer, | intent(in) | :: | Elem | |||
type(BasisElemDescr), | intent(inout) | :: | BasisElem | |||
real(kind=r64), | intent(in) | :: | LowerTheta | |||
real(kind=r64), | intent(in) | :: | UpperTheta | |||
real(kind=r64), | intent(in) | :: | DPhi | |||
integer, | intent(in) | :: | InputType |
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed arrows point from an interface to procedures which implement that interface. This could include the module procedures in a generic interface or the implementation in a submodule of an interface in a parent module. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
SUBROUTINE FillBasisElement (Theta,Phi,Elem,BasisElem,LowerTheta,UpperTheta,DPhi,InputType)
! SUBROUTINE INFORMATION:
! AUTHOR Joe Klems
! DATE WRITTEN August 2010
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! fill in values for all the components of a basis element
! METHODOLOGY EMPLOYED:
! <n/a>
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
REAL(r64), INTENT (IN) :: Theta !Central polar angle of element
REAL(r64), INTENT (IN) :: Phi !Central azimuthal angle of element
REAL(r64), INTENT (IN) :: LowerTheta !Lower edge of element (polar angle)
REAL(r64), INTENT (IN) :: UpperTheta !Upper edge of element (polar angle)
REAL(r64), INTENT (IN) :: DPhi !Width of element (azimuthal angle)
INTEGER, INTENT (IN) :: Elem !Index number of element in basis
INTEGER, INTENT (IN) :: InputType !Basis type
TYPE (BasisElemDescr), INTENT(INOUT) :: BasisElem
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
IF (InputType == BasisType_WINDOW) THEN
!
!WINDOW6 Type BASIS
!
IF(Elem == 1) THEN
!first element, theta=0, is special case
BasisElem%Theta = Theta
BasisElem%Phi = 0.0d0
BasisElem%dPhi = 2.0d0*Pi
BasisElem%UpprTheta =UpperTheta
BasisElem%dTheta = BasisElem%UpprTheta-Theta
BasisElem%LwrTheta = Theta
BasisElem%LwrPhi = 0.0d0
BasisElem%UpprPhi = 2.0d0*Pi
ELSE
BasisElem%Theta =Theta
BasisElem%Phi = Phi
BasisElem%dPhi = DPhi
BasisElem%LwrPhi = Phi-DPhi/2.0d0
BasisElem%UpprPhi = Phi+DPhi/2.0d0
BasisElem%LwrTheta = LowerTheta
BasisElem%UpprTheta = UpperTheta
BasisElem%dTheta = BasisElem%UpprTheta-BasisElem%LwrTheta
END IF
ELSE
!
!Non-WINDOW6 Type Basis
!
!Currently not implemented
CALL ShowFatalError('WindowComplexManager: Custom basis type not yet implemented.')
END IF
RETURN
END SUBROUTINE FillBasisElement