Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=r64), | intent(in) | :: | Tc | |||
real(kind=r64), | intent(in) | :: | Ee | |||
real(kind=r64), | intent(in) | :: | Voc0 | |||
real(kind=r64), | intent(in) | :: | NcellSer | |||
real(kind=r64), | intent(in) | :: | DiodeFactor | |||
real(kind=r64), | intent(in) | :: | BVoc0 | |||
real(kind=r64), | intent(in) | :: | mBVoc |
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.
REAL(r64) FUNCTION SandiaVoc(Tc,Ee,Voc0,NcellSer,DiodeFactor, &
BVoc0,mBVoc)
! FUNCTION INFORMATION:
! AUTHOR G Barker
! DATE WRITTEN <unknown>
! MODIFIED na
! RE-ENGINEERED B Griffith Jan 2004 F77 -> f90
! PURPOSE OF THIS FUNCTION:
! Returns Open-Circuit Voltage (V)
! METHODOLOGY EMPLOYED:
! <description>
! REFERENCES:
! na
! USE STATEMENTS:
! na
IMPLICIT NONE ! Enforce explicit typing of all variables in this routine
! FUNCTION ARGUMENT DEFINITIONS:
REAL(r64), INTENT(IN) :: Tc ! cell temperature (deg C)
REAL(r64), INTENT(IN) :: Ee ! effective irradiance
REAL(r64), INTENT(IN) :: Voc0 ! Voc at SRC (1000 W/m2, 25 C) (V)
REAL(r64), INTENT(IN) :: NcellSer ! # cells in series
REAL(r64), INTENT(IN) :: DiodeFactor ! module-specIFic empirical constant
REAL(r64), INTENT(IN) :: BVoc0 ! Voc temperature coefficient (V/C)
REAL(r64), INTENT(IN) :: mBVoc ! change in BVoc with irradiance
! FUNCTION PARAMETER DEFINITIONS:
! na
! INTERFACE BLOCK SPECIFICATIONS:
! na
! DERIVED TYPE DEFINITIONS:
! na
! FUNCTION LOCAL VARIABLE DECLARATIONS:
! na
REAL(r64) :: dTc !working variable
REAL(r64) :: BVocEe !working variable
IF (Ee.GT.0.0d0) THEN
dTc=DiodeFactor*((1.38066d-23*(Tc + KelvinConv))/1.60218d-19)
BVocEe = BVoc0 + mBVoc * (1.0d0 - Ee)
SandiaVoc=Voc0+NcellSer*dTc*Log(Ee)+BVocEe*(Tc-25.0d0)
ELSE
SandiaVoc = 0.0d0
ENDIF
END FUNCTION SandiaVoc