Sat2scn Subroutine

public subroutine Sat2scn(cn2, s0, soilsat, scn)

compute actual soil retention capacity S of the SCS-CN method
given soil saturation

Arguments

Type IntentOptional Attributes Name
real(kind=float), intent(in) :: cn2

curve number for mean soil moisture

real(kind=float), intent(in) :: s0

storativity (mm)

real(kind=float), intent(in) :: soilsat

soil saturation

real(kind=float), intent(out) :: scn

soil retention capacity [mm]


Variables

Type Visibility Attributes Name Initial
real(kind=float), public :: cn1
real(kind=float), public :: cn3
real(kind=float), public :: s1
real(kind=float), public :: s2
real(kind=float), public :: s3

Source Code

SUBROUTINE Sat2scn &
  !
  (cn2, s0, soilsat, scn)

IMPLICIT NONE

!arguments with intent in:
REAL (KIND = float), INTENT(IN) :: cn2 !!curve number for mean soil moisture 
REAL (KIND = float), INTENT(IN) :: s0 !!storativity (mm)
REAL (KIND = float), INTENT(IN) :: soilsat !!soil saturation

!arguments with intent out:
REAL (KIND = float), INTENT(OUT) :: scn !!soil retention capacity [mm]

!local declarations:
REAL (KIND = float) :: cn1, cn3, s1, s2, s3
!-------------------------end of declarations----------------------------------
	!compute cn1 and cn3 from cn2
	cn1 = cn2 - (20. * (100. - cn2) ) / &
        (100. - cn2 + EXP(2.533 - .0636 * (100. - cn2) ) )
  
	IF (cn1 < 0.4 * CN2) cn1 = .4 * cn2
  
	cn3 = cn2 * EXP( .00673 * (100. - cn2) )
  
	!compute s1, s2, and s3
	s1 = s0 * (100. / cn1 - 1.)
	s2 = s0 * (100. / cn2 - 1.)
	s3 = s0 * (100. / cn3 - 1.)
	
	!compute actual S
	scn = s1 - soilsat * (s1 - s3)    

RETURN
  END SUBROUTINE sat2scn