Nodes of different colours represent the following:
Solid arrows point from a parent (sub)module to the submodule which is descended from it. Dashed arrows point from a module being used to the module or program unit using it. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
logical, | intent(inout) | :: | ErrorsFound | |||
integer, | intent(inout) | :: | SurfNum | |||
integer, | intent(in) | :: | TotIntMass |
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 GetIntMassSurfaceData(ErrorsFound,SurfNum,TotIntMass)
! SUBROUTINE INFORMATION:
! AUTHOR Linda Lawrie
! DATE WRITTEN May 2000
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! This subroutine gets the Internal Surface Data,
! checks it for errors, etc.
! METHODOLOGY EMPLOYED:
! na
! REFERENCES:
! Internal Mass Surface Definition
!Surface:HeatTransfer:InternalMass,
! \note used to describe internal zone surface area that does not need to be part of geometric representation
! A1 , \field User Supplied Surface Name
! \type alpha
! \reference SurfaceNames
! A2 , \field Construction Name of the Surface
! \note To be matched with a construction in this input file
! \type object-list
! \object-list ConstructionNames
! A3 , \field Interior Environment
! \note Zone the surface is a part of
! \type object-list
! \object-list ZoneNames
! N1, \field View factor to Person (to people?)
! \type real
! \note from the interior of the surface
! N2 ; \field Surface area
! \units m2
! USE STATEMENTS:
USE DataIPShortCuts
USE InputProcessor, ONLY: GetNumObjectsFound, GetObjectItem, FindItemInList, VerifyName
USE Vectors
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(INOUT) :: ErrorsFound ! Error flag indicator (true if errors found)
INTEGER, INTENT(INOUT) :: SurfNum ! Count of Current SurfaceNumber
INTEGER, INTENT(IN) :: TotIntMass ! Number of Internal Mass Surfaces to obtain
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS
! na
! DERIVED TYPE DEFINITIONS
! na
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: IOStat ! IO Status when calling get input subroutine
INTEGER :: SurfaceNumAlpha ! Number of material alpha names being passed
INTEGER :: SurfaceNumProp ! Number of material properties being passed
INTEGER :: ZoneNum ! DO loop counter (zones)
INTEGER :: Loop
LOGICAL :: ErrorInName
LOGICAL :: IsBlank
cCurrentModuleObject='InternalMass'
DO Loop=1,TotIntMass
CALL GetObjectItem(cCurrentModuleObject,Loop,cAlphaArgs,SurfaceNumAlpha, &
rNumericArgs,SurfaceNumProp,IOSTAT, &
AlphaBlank=lAlphaFieldBlanks,NumBlank=lNumericFieldBlanks, &
AlphaFieldnames=cAlphaFieldNames,NumericFieldNames=cNumericFieldNames)
ErrorInName=.false.
IsBlank=.false.
CALL VerifyName(cAlphaArgs(1),SurfaceTmp%Name,SurfNum,ErrorInName,IsBlank,TRIM(cCurrentModuleObject)//' Name')
IF (ErrorInName) THEN
CALL ShowContinueError('...each surface name must not duplicate other surface names (of any type)')
ErrorsFound=.true.
CYCLE
ENDIF
SurfNum=SurfNum+1
SurfaceTmp(SurfNum)%Name = cAlphaArgs(1) ! Set the Surface Name in the Derived Type
SurfaceTmp(SurfNum)%Class= SurfaceClass_IntMass
SurfaceTmp(SurfNum)%HeatTransSurf=.true.
SurfaceTmp(SurfNum)%Construction=FindIteminList(cAlphaArgs(2),Construct%Name,TotConstructs)
IF(SurfaceTmp(SurfNum)%Construction == 0) THEN
ErrorsFound = .true.
CALL ShowSevereError(TRIM(cCurrentModuleObject)//'="'//TRIM(SurfaceTmp(SurfNum)%Name)// &
'", '//TRIM(cAlphaFieldNames(2))//' not found='//TRIM(cAlphaArgs(2)))
ELSEIF (Construct(SurfaceTmp(SurfNum)%Construction)%TypeIsWindow) THEN
ErrorsFound = .true.
CALL ShowSevereError(TRIM(cCurrentModuleObject)//'="'//TRIM(SurfaceTmp(SurfNum)%Name)// &
'", invalid '//TRIM(cAlphaFieldNames(2))//'="'//TRIM(cAlphaArgs(2))// &
'" - has Window materials.')
ELSE
Construct(SurfaceTmp(SurfNum)%Construction)%IsUsed=.true.
SurfaceTmp(SurfNum)%ConstructionStoredInputValue = SurfaceTmp(SurfNum)%Construction
END IF
SurfaceTmp(SurfNum)%ZoneName=cAlphaArgs(3)
ZoneNum=FindItemInList(SurfaceTmp(SurfNum)%ZoneName,Zone%Name,NumOfZones)
IF (ZoneNum /= 0) THEN
SurfaceTmp(SurfNum)%Zone = ZoneNum
ELSE
CALL ShowSevereError(TRIM(cCurrentModuleObject)//'="'//TRIM(SurfaceTmp(SurfNum)%Name)// &
'", invalid '//TRIM(cAlphaFieldNames(3))//'="'//TRIM(cAlphaArgs(3))//'".')
SurfaceTmp(SurfNum)%Class=SurfaceTmp(SurfNum)%Class+100
! SurfaceTmp(SurfNum)%Class=0
SurfaceTmp(SurfNum)%ZoneName='Unknown Zone'
ErrorsFound=.true.
ENDIF
SurfaceTmp(SurfNum)%GrossArea=rNumericArgs(1)
SurfaceTmp(SurfNum)%Area=SurfaceTmp(SurfNum)%GrossArea
SurfaceTmp(SurfNum)%NetAreaShadowCalc = SurfaceTmp(SurfNum)%Area
SurfaceTmp(SurfNum)%Width=SurfaceTmp(SurfNum)%Area
SurfaceTmp(SurfNum)%Height=1.0d0
SurfaceTmp(SurfNum)%Tilt=90.d0
SurfaceTmp(SurfNum)%CosTilt=COS(90.d0*DegToRadians)
SurfaceTmp(SurfNum)%SinTilt=SIN(90.d0*DegToRadians)
SurfaceTmp(SurfNum)%Azimuth=0.0d0
SurfaceTmp(SurfNum)%CosAzim=COS(0.0d0)
SurfaceTmp(SurfNum)%SinAzim=SIN(0.0d0)
! Outward normal unit vector (pointing away from room)
SurfaceTmp(SurfNum)%OutNormVec = SurfaceTmp(SurfNum)%lcsz
SurfaceTmp(SurfNum)%ViewFactorSky=.5d0
SurfaceTmp(SurfNum)%ExtSolar=.false.
SurfaceTmp(SurfNum)%ExtWind=.false.
SurfaceTmp(SurfNum)%BaseSurf = SurfNum
SurfaceTmp(SurfNum)%BaseSurfName=SurfaceTmp(SurfNum)%Name
SurfaceTmp(SurfNum)%ExtBoundCondName=SurfaceTmp(SurfNum)%Name
SurfaceTmp(SurfNum)%ExtBoundCond=UnreconciledZoneSurface
ENDDO
RETURN
END SUBROUTINE GetIntMassSurfaceData