Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(BSDFWindowInputStruct), | intent(in) | :: | Input | |||
integer, | intent(in) | :: | IConst | |||
integer, | intent(out) | :: | NBasis |
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 CalculateBasisLength ( Input,IConst,NBasis )
! SUBROUTINE INFORMATION:
! AUTHOR Joe Klems
! DATE WRITTEN August 2011
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Calculates the basis length for a Window6 Non-Symmetric or Axisymmetric basis
! from the input basis matrix
! METHODOLOGY EMPLOYED:
! <description>
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
TYPE (BSDFWindowInputStruct), INTENT(IN) :: Input ! BSDF data input struct for this construction
INTEGER, INTENT(IN) :: IConst !Construction number of input
INTEGER, INTENT(OUT) :: NBasis ! Calculated Basis length
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: I !gen purpose index
IF (Input%BasisMatNcols == 1) THEN
!Axisymmetric basis, No. rows is no. of thetas = basis length
NBasis = Input%BasisMatNrows
RETURN
ENDIF
NBasis = 1
DO I = 2, Input%BasisMatNrows
NBasis = NBasis + FLOOR(Construct(IConst)%BSDFInput%BasisMat(I,2)+0.001)
END DO
RETURN
END SUBROUTINE CalculateBasisLength