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 |
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 GetWeatherStation(ErrorsFound)
! SUBROUTINE INFORMATION:
! AUTHOR Peter Graham Ellis
! DATE WRITTEN January 2006
! MODIFIED na
! RE-ENGINEERED na
! PURPOSE OF THIS SUBROUTINE:
! Reads the input data for the WEATHER STATION object.
! METHODOLOGY EMPLOYED:
! na
! USE STATEMENTS:
USE DataIPShortCuts
USE InputProcessor, ONLY: GetNumObjectsFound, GetObjectItem
USE General, ONLY: RoundSigDigits
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! SUBROUTINE ARGUMENT DEFINITIONS:
LOGICAL, INTENT(INOUT) :: ErrorsFound
! SUBROUTINE LOCAL VARIABLE DECLARATIONS:
INTEGER :: NumObjects
INTEGER :: NumAlphas ! Number of elements in the alpha array
INTEGER :: NumNums ! Number of elements in the numeric array
INTEGER :: IOStat ! IO Status when calling get input subroutine
CHARACTER(len=MaxNameLength),DIMENSION(1) :: AlphArray ! Character string data
REAL(r64), DIMENSION(4) :: NumArray ! Numeric data
REAL(r64) :: WeatherFileWindSensorHeight ! Height of the wind sensor at the weather station, i.e., weather file
REAL(r64) :: WeatherFileWindExp ! Exponent for the wind velocity profile at the weather station
REAL(r64) :: WeatherFileWindBLHeight ! Boundary layer height for the wind velocity profile at the weather station (m)
REAL(r64) :: WeatherFileTempSensorHeight ! Height of the air temperature sensor at the weather station (m)
! SUBROUTINE PARAMETER DEFINITIONS:
! na
! FLOW:
cCurrentModuleObject='Site:WeatherStation'
NumObjects = GetNumObjectsFound(cCurrentModuleObject)
! Default conditions for a weather station in an open field at a height of 10 m. (These should match the IDD defaults.)
WeatherFileWindSensorHeight = 10.0d0
WeatherFileWindExp = 0.14d0
WeatherFileWindBLHeight = 270.0d0
WeatherFileTempSensorHeight = 1.5d0
IF (NumObjects == 1) THEN
CALL GetObjectItem(cCurrentModuleObject,1,AlphArray,NumAlphas,NumArray,NumNums,IOStat)
IF (NumNums > 0) WeatherFileWindSensorHeight = NumArray(1)
IF (NumNums > 1) WeatherFileWindExp = NumArray(2)
IF (NumNums > 2) WeatherFileWindBLHeight = NumArray(3)
IF (NumNums > 3) WeatherFileTempSensorHeight = NumArray(4)
ELSE IF (NumObjects > 1) THEN
CALL ShowSevereError(TRIM(cCurrentModuleObject)//': Too many objects entered. Only one allowed.')
ErrorsFound = .TRUE.
END IF
WeatherFileWindModCoeff = (WeatherFileWindBLHeight / WeatherFileWindSensorHeight) ** WeatherFileWindExp
WeatherFileTempModCoeff = AtmosphericTempGradient * EarthRadius * WeatherFileTempSensorHeight / &
(EarthRadius + WeatherFileTempSensorHeight)
! Write to the initialization output file
WRITE(OutputFileInits,'(A)') '! <Environment:Weather Station>,Wind Sensor Height Above Ground {m},'// &
'Wind Speed Profile Exponent {},Wind Speed Profile Boundary Layer Thickness {m},'// &
'Air Temperature Sensor Height Above Ground {m},Wind Speed Modifier Coefficient [Internal],'// &
'Temperature Modifier Coefficient [Internal]'
WRITE(OutputFileInits,720) TRIM(RoundSigDigits(WeatherFileWindSensorHeight,3)), TRIM(RoundSigDigits(WeatherFileWindExp,3)), &
TRIM(RoundSigDigits(WeatherFileWindBLHeight,3)),TRIM(RoundSigDigits(WeatherFileTempSensorHeight,3)), &
TRIM(RoundSigDigits(WeatherFileWindModCoeff,3)),TRIM(RoundSigDigits(WeatherFileTempModCoeff,3))
720 FORMAT('Environment:Weather Station',6(',',A))
RETURN
END SUBROUTINE GetWeatherStation