FUNCTION CycleA( Model, n, t ) RESULT( on )
!DEC$ATTRIBUTES DLLEXPORT :: PumpA
  USE Types
  TYPE(Model_t) :: Model
  INTEGER :: n, zero
  REAL(KIND=dp) :: t,xx,yy,on,T0,T1,T2,Ttot

!  xx = Model % Nodes % x(n)
!  yy = Model % Nodes % y(n)
  
! initialize cycle
  T0 = 60

!vertical cycle
  T1 = 40.0

! lateral cycle
  T2 = 40.0
  Ttot = T1 + T2
  
  IF( t < T0 ) THEN
    on = 1.0
  ELSE IF( MOD(t-T0,Ttot) < T1) THEN
    on = -1.0
  ELSE
    on = 1.0
  END IF

END FUNCTION CycleA


FUNCTION CycleB( Model, n, t ) RESULT( on )
!DEC$ATTRIBUTES DLLEXPORT :: CycleB
  USE Types
  TYPE(Model_t) :: Model
  INTEGER :: n, zero
  REAL(KIND=dp) :: t,xx,yy,on,T0,T1,T2,Ttot

!  xx = Model % Nodes % x(n)
!  yy = Model % Nodes % y(n)
  
! initialize cycle
  T0 = 60

!vertical cycle
  T1 = 40.0

! lateral cycle
  T2 = 40.0
  Ttot = T1 + T2
  
! all walues opposite to CycleA
  IF( t < T0 ) THEN
    on = -1.0
  ELSE IF( MOD(t-T0,Ttot) < T1) THEN
    on = 1.0
  ELSE
    on = -1.0
  END IF

END FUNCTION CycleB

