DGIF Controls
DGIF Controls
=======================================================================
! Generated by : PSCAD v4.6.2.0
!
! Warning: The content of this file is automatically generated.
! Do not modify, as any changes made here will be lost!
!-----------------------------------------------------------------------
! Component : DGIF_Controls
! Description :
!-----------------------------------------------------------------------
!=======================================================================
!---------------------------------------
! Standard includes
!---------------------------------------
INCLUDE 'nd.h'
INCLUDE 'emtconst.h'
INCLUDE 'emtstor.h'
INCLUDE 's0.h'
INCLUDE 's1.h'
INCLUDE 's2.h'
INCLUDE 's4.h'
INCLUDE 'branches.h'
INCLUDE 'pscadv3.h'
INCLUDE 'fnames.h'
INCLUDE 'radiolinks.h'
INCLUDE 'matlab.h'
INCLUDE 'rtconfig.h'
!---------------------------------------
! Function/Subroutine Declarations
!---------------------------------------
! SUBR VSC_filterDyn !
! SUBR Gen_VSCDyn !
! SUBR ChopperDyn !
! SUBR Crowbar_prot_1Dyn !
!---------------------------------------
! Variable Declarations
!---------------------------------------
! Subroutine Arguments
INTEGER, INTENT(IN) :: Filter_Calc
INTEGER, INTENT(IN) :: DBlk_Gr, DBlk_Rtr
REAL, INTENT(IN) :: Ctrl(12)
REAL, INTENT(IN) :: Vdc_crowbar_off
REAL, INTENT(IN) :: freq_cutoff, Mmva
REAL, INTENT(IN) :: Vdc_crowbar_on
REAL, INTENT(IN) :: M_kv, Rst_pu, Lconv
REAL, INTENT(IN) :: DC_cap, freq
REAL, INTENT(IN) :: Vdc_chop_on
REAL, INTENT(IN) :: Vdc_chop_off
REAL, INTENT(IN) :: R_chopper
REAL, INTENT(IN) :: Cfilter_in
REAL, INTENT(IN) :: Cdamp_in, Ldamp_in
REAL, INTENT(IN) :: Rdamp_in, Sbase
REAL, INTENT(IN) :: Cfreq_S, Vdc_base
REAL, INTENT(IN) :: Vacbase, Edc_ord
REAL, INTENT(IN) :: Q_ord, KpdS, TidS
REAL, INTENT(IN) :: KpqS, TiqS, Kp_Q_S
REAL, INTENT(IN) :: Ti_Q_S, Kp_Edc
REAL, INTENT(IN) :: Ti_Edc, Kpd_R
REAL, INTENT(IN) :: Tid_R, Kp_Q_R
REAL, INTENT(IN) :: Ti_Q_R, Kp_P, Ti_P
REAL, INTENT(IN) :: Kpq_R, Tiq_R
REAL, INTENT(IN) :: Pref_pu, Qref_pu
REAL, INTENT(IN) :: Cfreq_R
! Control Signals
INTEGER S1, PIRls, IT_1, S2TMODE, Blk
REAL Ecap, IG2(3), VG2(3), RT_1, RT_2
REAL PG_in, Theta, Qg_in, Vc, Vb, Va
REAL Wpu, Isc, Isb, Isa, PG2
! Internal Variables
! Indexing variables
INTEGER ICALL_NO ! Module call num
INTEGER ISTOI, ISTOF, IT_0 ! Storage Indices
INTEGER ISUBS, SS(3), IBRCH(3), INODE ! SS/Node/Branch/Xfmr
!---------------------------------------
! Local Indices
!---------------------------------------
NTXFR = NTXFR + 1
TXFR(NTXFR,1) = NSTOL
TXFR(NTXFR,2) = NSTOI
TXFR(NTXFR,3) = NSTOF
TXFR(NTXFR,4) = NSTOC
ICALL_NO = NCALL_NO
NCALL_NO = NCALL_NO + 1
ISTOI = NSTOI
NSTOI = NSTOI + 8
ISTOF = NSTOF
NSTOF = NSTOF + 73
NPGB = NPGB + 6
INODE = NNODE + 2
NNODE = NNODE + 14
NCSCS = NCSCS + 0
NCSCR = NCSCR + 0
ISUBS = NSUBS + 0
NSUBS = NSUBS + 3
DO IT_0 = 1,3
SS(IT_0) = SUBS(ISUBS + IT_0)
END DO
IBRCH(1) = NBRCH(SS(1))
NBRCH(SS(1)) = NBRCH(SS(1)) + 3
IBRCH(2) = NBRCH(SS(2))
NBRCH(SS(2)) = NBRCH(SS(2)) + 0
IBRCH(3) = NBRCH(SS(3))
NBRCH(SS(3)) = NBRCH(SS(3)) + 2
!---------------------------------------
! Transfers from storage arrays
!---------------------------------------
S1 = STOI(ISTOI + 4)
PIRls = STOI(ISTOI + 5)
Ecap = STOF(ISTOF + 54)
RT_1 = STOF(ISTOF + 61)
IT_1 = STOI(ISTOI + 6)
RT_2 = STOF(ISTOF + 62)
S2TMODE = STOI(ISTOI + 7)
Blk = STOI(ISTOI + 8)
PG_in = STOF(ISTOF + 63)
Theta = STOF(ISTOF + 64)
Qg_in = STOF(ISTOF + 65)
Vc = STOF(ISTOF + 66)
Vb = STOF(ISTOF + 67)
Va = STOF(ISTOF + 68)
Wpu = STOF(ISTOF + 69)
Isc = STOF(ISTOF + 70)
Isb = STOF(ISTOF + 71)
Isa = STOF(ISTOF + 72)
PG2 = STOF(ISTOF + 73)
!---------------------------------------
! Configuration of Models
!---------------------------------------
IF ( TIMEZERO ) THEN
FILENAME = 'DGIF_Controls.dta'
CALL EMTDC_OPENFILE
SECTION = 'DATADSD:'
CALL EMTDC_GOTOSECTION
ENDIF
!---------------------------------------
! Generated code from module definition
!---------------------------------------
! 610:[VSC_filter]
CALL VSC_filterDyn(DBlk_Gr, freq, Cfreq_S, Sbase, Vdc_base, Vacbas&
&e, Lconv, Edc_ord, Q_ord, Filter_Calc, Ldamp_in, Cfilter_in, Cdamp&
&_in, Rdamp_in, freq_cutoff, KpdS, TidS, KpqS, TiqS, Kp_Q_S, Ti_Q_S&
&, Kp_Edc, Ti_Edc)
! 630:[Gen_VSC]
CALL Gen_VSCDyn(CTRL, Mmva, M_kv, Rst_pu, DBlk_Rtr, freq, Vdc_base&
&, Cfreq_R, Pref_pu, Qref_pu, Kpq_R, Tiq_R, Kpd_R, Tid_R, Kp_P, Ti_&
&P, Kp_Q_R, Ti_Q_R)
! 640:[varrlc] Variable R, L or C
CALL E_VARRLC1_EXE(2 ,SS(3) , (IBRCH(3)+2), 0, DC_cap, 0.0)
! 660:[Chopper]
CALL ChopperDyn(Ecap, Vdc_chop_on, Vdc_chop_off, R_chopper)
! 700:[Crowbar_prot_1]
CALL Crowbar_prot_1Dyn(S1, PIRls, Ecap, Vdc_crowbar_on, Vdc_crowba&
&r_off)
!---------------------------------------
! Feedbacks and transfers to storage
!---------------------------------------
STOI(ISTOI + 1) = Filter_Calc
STOF(ISTOF + 13) = Vdc_crowbar_off
STOF(ISTOF + 14) = freq_cutoff
STOF(ISTOF + 15) = Mmva
STOF(ISTOF + 16) = Vdc_crowbar_on
STOF(ISTOF + 17) = M_kv
STOF(ISTOF + 18) = Rst_pu
STOF(ISTOF + 19) = Lconv
STOF(ISTOF + 20) = DC_cap
STOF(ISTOF + 21) = freq
STOF(ISTOF + 22) = Vdc_chop_on
STOF(ISTOF + 23) = Vdc_chop_off
STOF(ISTOF + 24) = R_chopper
STOF(ISTOF + 25) = Cfilter_in
STOF(ISTOF + 26) = Cdamp_in
STOF(ISTOF + 27) = Ldamp_in
STOF(ISTOF + 28) = Rdamp_in
STOI(ISTOI + 2) = DBlk_Gr
STOF(ISTOF + 29) = Sbase
STOF(ISTOF + 30) = Cfreq_S
STOF(ISTOF + 31) = Vdc_base
STOF(ISTOF + 32) = Vacbase
STOF(ISTOF + 33) = Edc_ord
STOF(ISTOF + 34) = Q_ord
STOF(ISTOF + 35) = KpdS
STOF(ISTOF + 36) = TidS
STOF(ISTOF + 37) = KpqS
STOF(ISTOF + 38) = TiqS
STOF(ISTOF + 39) = Kp_Q_S
STOF(ISTOF + 40) = Ti_Q_S
STOF(ISTOF + 41) = Kp_Edc
STOF(ISTOF + 42) = Ti_Edc
STOF(ISTOF + 43) = Kpd_R
STOF(ISTOF + 44) = Tid_R
STOF(ISTOF + 45) = Kp_Q_R
STOF(ISTOF + 46) = Ti_Q_R
STOF(ISTOF + 47) = Kp_P
STOF(ISTOF + 48) = Ti_P
STOF(ISTOF + 49) = Kpq_R
STOF(ISTOF + 50) = Tiq_R
STOI(ISTOI + 3) = DBlk_Rtr
STOF(ISTOF + 51) = Pref_pu
STOF(ISTOF + 52) = Qref_pu
STOF(ISTOF + 53) = Cfreq_R
STOI(ISTOI + 4) = S1
STOI(ISTOI + 5) = PIRls
STOF(ISTOF + 54) = Ecap
STOF(ISTOF + 61) = RT_1
STOI(ISTOI + 6) = IT_1
STOF(ISTOF + 62) = RT_2
STOI(ISTOI + 7) = S2TMODE
STOI(ISTOI + 8) = Blk
STOF(ISTOF + 63) = PG_in
STOF(ISTOF + 64) = Theta
STOF(ISTOF + 65) = Qg_in
STOF(ISTOF + 66) = Vc
STOF(ISTOF + 67) = Vb
STOF(ISTOF + 68) = Va
STOF(ISTOF + 69) = Wpu
STOF(ISTOF + 70) = Isc
STOF(ISTOF + 71) = Isb
STOF(ISTOF + 72) = Isa
STOF(ISTOF + 73) = PG2
!---------------------------------------
! Transfer to Exports
!---------------------------------------
!---------------------------------------
! Close Model Data read
!---------------------------------------
!=======================================================================
SUBROUTINE DGIF_ControlsOut()
!---------------------------------------
! Standard includes
!---------------------------------------
INCLUDE 'nd.h'
INCLUDE 'emtconst.h'
INCLUDE 'emtstor.h'
INCLUDE 's0.h'
INCLUDE 's1.h'
INCLUDE 's2.h'
INCLUDE 's4.h'
INCLUDE 'branches.h'
INCLUDE 'pscadv3.h'
INCLUDE 'fnames.h'
INCLUDE 'radiolinks.h'
INCLUDE 'matlab.h'
INCLUDE 'rtconfig.h'
!---------------------------------------
! Function/Subroutine Declarations
!---------------------------------------
! SUBR VSC_filterOut !
REAL EMTDC_VVDC !
! SUBR Gen_VSCOut !
REAL P3PH3 !
! SUBR ChopperOut !
! SUBR Crowbar_prot_1Out !
! SUBR PQVI1PH ! P,Q,V,I measurement in a 1p branch
!---------------------------------------
! Variable Declarations
!---------------------------------------
! Electrical Node Indices
INTEGER NT_2, NT_3, NT_4(3)
! Control Signals
REAL Ecap, IG2(3), VG2(3), PG2
! Internal Variables
INTEGER IVD1_1
REAL RVD1_1
! Indexing variables
INTEGER ICALL_NO ! Module call num
INTEGER ISTOL, ISTOI, ISTOF, ISTOC, IT_0 ! Storage Indices
INTEGER IPGB ! Control/Monitoring
INTEGER ISUBS, SS(3), IBRCH(3), INODE ! SS/Node/Branch/Xfmr
!---------------------------------------
! Local Indices
!---------------------------------------
NTXFR = NTXFR + 1
ISTOL = TXFR(NTXFR,1)
ISTOI = TXFR(NTXFR,2)
ISTOF = TXFR(NTXFR,3)
ISTOC = TXFR(NTXFR,4)
ICALL_NO = NCALL_NO
NCALL_NO = NCALL_NO + 1
IPGB = NPGB
NPGB = NPGB + 6
INODE = NNODE + 2
NNODE = NNODE + 14
NCSCS = NCSCS + 0
NCSCR = NCSCR + 0
ISUBS = NSUBS + 0
NSUBS = NSUBS + 3
DO IT_0 = 1,3
SS(IT_0) = SUBS(ISUBS + IT_0)
END DO
IBRCH(1) = NBRCH(SS(1))
NBRCH(SS(1)) = NBRCH(SS(1)) + 3
IBRCH(2) = NBRCH(SS(2))
NBRCH(SS(2)) = NBRCH(SS(2)) + 0
IBRCH(3) = NBRCH(SS(3))
NBRCH(SS(3)) = NBRCH(SS(3)) + 2
!---------------------------------------
! Transfers from storage arrays
!---------------------------------------
!---------------------------------------
! Electrical Node Lookup
!---------------------------------------
NT_2 = NODE(INODE + 8)
NT_3 = NODE(INODE + 9)
!---------------------------------------
! Configuration of Models
!---------------------------------------
IF ( TIMEZERO ) THEN
FILENAME = 'DGIF_Controls.dta'
CALL EMTDC_OPENFILE
SECTION = 'DATADSO:'
CALL EMTDC_GOTOSECTION
ENDIF
!---------------------------------------
! Generated code from module definition
!---------------------------------------
! 610:[VSC_filter]
CALL VSC_filterOut()
! 630:[Gen_VSC]
CALL Gen_VSCOut()
! 650:[multimeter] Multimeter
IVD1_1 = NRTCF
NRTCF = NRTCF + 5
IG2(1) = ( CBR((IBRCH(1)+1), SS(1)))
IG2(2) = ( CBR((IBRCH(1)+2), SS(1)))
IG2(3) = ( CBR((IBRCH(1)+3), SS(1)))
VG2(1) = EMTDC_VVDC(SS(1), NT_4(1), 0)
VG2(2) = EMTDC_VVDC(SS(1), NT_4(2), 0)
VG2(3) = EMTDC_VVDC(SS(1), NT_4(3), 0)
RVD1_1 = RTCF(IVD1_1) * P3PH3(SS(1), (IBRCH(1)+1), (IBRCH(1)+2), (&
&IBRCH(1)+3),RTCF(IVD1_1+2),0)
IF (UPDATE_AG) CALL PSCAD_AGRG2(ICALL_NO,904789960,RVD1_1,"Pd")
PG2 = RVD1_1
IF (FIRSTSTEP) THEN
CALL PSCAD_AGI2(ICALL_NO,904789960,1,"hide1")
CALL PSCAD_AGI2(ICALL_NO,904789960,1,"hide2")
ENDIF
! 660:[Chopper]
CALL ChopperOut()
DO IVD1_1 = 1, 3
PGB(IPGB+1+IVD1_1-1) = VG2(IVD1_1)
ENDDO
DO IVD1_1 = 1, 3
PGB(IPGB+4+IVD1_1-1) = IG2(IVD1_1)
ENDDO
! 700:[Crowbar_prot_1]
CALL Crowbar_prot_1Out()
! 1:[multimeter] Multimeter
IVD1_1 = NRTCF
NRTCF = NRTCF + 5
CALL PQVI1PH(SS(3),NT_3, (IBRCH(3)+1),RTCF(IVD1_1+2))
RVD1_1 = RTCF(IVD1_1) * STORF(NSTORF-2)
IF (UPDATE_AG) CALL PSCAD_AGRG2(ICALL_NO,1346421650,RVD1_1,"Pd")
IF (FIRSTSTEP) THEN
CALL PSCAD_AGI2(ICALL_NO,1346421650,1,"hide1")
CALL PSCAD_AGI2(ICALL_NO,1346421650,1,"hide2")
ENDIF
!---------------------------------------
! Feedbacks and transfers to storage
!---------------------------------------
!=======================================================================
!---------------------------------------
! Standard includes
!---------------------------------------
INCLUDE 'nd.h'
INCLUDE 'emtconst.h'
INCLUDE 's0.h'
INCLUDE 's1.h'
INCLUDE 's4.h'
INCLUDE 'branches.h'
INCLUDE 'pscadv3.h'
INCLUDE 'radiolinks.h'
INCLUDE 'rtconfig.h'
!---------------------------------------
! Function/Subroutine Declarations
!---------------------------------------
! SUBR VSC_filterDyn_Begin !
! SUBR Gen_VSCDyn_Begin !
! SUBR ChopperDyn_Begin !
! SUBR Crowbar_prot_1Dyn_Begin !
!---------------------------------------
! Variable Declarations
!---------------------------------------
! Subroutine Arguments
INTEGER, INTENT(IN) :: Filter_Calc
REAL, INTENT(IN) :: freq_cutoff, Mmva
REAL, INTENT(IN) :: M_kv, Rst_pu, Lconv
REAL, INTENT(IN) :: DC_cap, freq
REAL, INTENT(IN) :: Cfilter_in
REAL, INTENT(IN) :: Cdamp_in, Ldamp_in
REAL, INTENT(IN) :: Rdamp_in, Sbase
REAL, INTENT(IN) :: Cfreq_S, Vdc_base
REAL, INTENT(IN) :: Vacbase, Cfreq_R
! Control Signals
! Internal Variables
! Indexing variables
INTEGER ICALL_NO ! Module call num
INTEGER IT_0 ! Storage Indices
INTEGER ISUBS, SS(3), IBRCH(3), INODE ! SS/Node/Branch/Xfmr
!---------------------------------------
! Local Indices
!---------------------------------------
ICALL_NO = NCALL_NO
NCALL_NO = NCALL_NO + 1
INODE = NNODE + 2
NNODE = NNODE + 14
NCSCS = NCSCS + 0
NCSCR = NCSCR + 0
ISUBS = NSUBS + 0
NSUBS = NSUBS + 3
DO IT_0 = 1,3
SS(IT_0) = SUBS(ISUBS + IT_0)
END DO
IBRCH(1) = NBRCH(SS(1))
NBRCH(SS(1)) = NBRCH(SS(1)) + 3
IBRCH(2) = NBRCH(SS(2))
NBRCH(SS(2)) = NBRCH(SS(2)) + 0
IBRCH(3) = NBRCH(SS(3))
NBRCH(SS(3)) = NBRCH(SS(3)) + 2
!---------------------------------------
! Electrical Node Lookup
!---------------------------------------
!---------------------------------------
! Generated code from module definition
!---------------------------------------
! 610:[VSC_filter]
CALL VSC_filterDyn_Begin(freq, Sbase, Vdc_base, Vacbase, Lconv, Ld&
&_in, Cfilter_in, Cdamp_in, Rdamp_in)
! 630:[Gen_VSC]
CALL Gen_VSCDyn_Begin(Mmva, M_kv, Rst_pu, freq)
! 640:[varrlc] Variable R, L or C
CALL E_VARRLC1_CFG(2 ,SS(3) , (IBRCH(3)+2), 0)
! 660:[Chopper]
CALL ChopperDyn_Begin()
! 700:[Crowbar_prot_1]
CALL Crowbar_prot_1Dyn_Begin()
RETURN
END
!=======================================================================
!---------------------------------------
! Standard includes
!---------------------------------------
INCLUDE 'nd.h'
INCLUDE 'emtconst.h'
INCLUDE 's0.h'
INCLUDE 's1.h'
INCLUDE 's4.h'
INCLUDE 'branches.h'
INCLUDE 'pscadv3.h'
INCLUDE 'radiolinks.h'
INCLUDE 'rtconfig.h'
!---------------------------------------
! Function/Subroutine Declarations
!---------------------------------------
! SUBR VSC_filterOut_Begin !
! SUBR Gen_VSCOut_Begin !
! SUBR ChopperOut_Begin !
! SUBR Crowbar_prot_1Out_Begin !
!---------------------------------------
! Variable Declarations
!---------------------------------------
! Subroutine Arguments
INTEGER, INTENT(IN) :: Filter_Calc
REAL, INTENT(IN) :: freq_cutoff, Mmva
REAL, INTENT(IN) :: M_kv, Rst_pu, Lconv
REAL, INTENT(IN) :: DC_cap, freq
REAL, INTENT(IN) :: Cfilter_in
REAL, INTENT(IN) :: Cdamp_in, Ldamp_in
REAL, INTENT(IN) :: Rdamp_in, Sbase
REAL, INTENT(IN) :: Cfreq_S, Vdc_base
REAL, INTENT(IN) :: Vacbase, Cfreq_R
! Control Signals
! Internal Variables
INTEGER IVD1_1
! Indexing variables
INTEGER ICALL_NO ! Module call num
INTEGER IT_0 ! Storage Indices
INTEGER ISUBS, SS(3), IBRCH(3), INODE ! SS/Node/Branch/Xfmr
!---------------------------------------
! Local Indices
!---------------------------------------
ICALL_NO = NCALL_NO
NCALL_NO = NCALL_NO + 1
! Increment global storage indices
INODE = NNODE + 2
NNODE = NNODE + 14
NCSCS = NCSCS + 0
NCSCR = NCSCR + 0
ISUBS = NSUBS + 0
NSUBS = NSUBS + 3
DO IT_0 = 1,3
SS(IT_0) = SUBS(ISUBS + IT_0)
END DO
IBRCH(1) = NBRCH(SS(1))
NBRCH(SS(1)) = NBRCH(SS(1)) + 3
IBRCH(2) = NBRCH(SS(2))
NBRCH(SS(2)) = NBRCH(SS(2)) + 0
IBRCH(3) = NBRCH(SS(3))
NBRCH(SS(3)) = NBRCH(SS(3)) + 2
!---------------------------------------
! Electrical Node Lookup
!---------------------------------------
NT_2 = NODE(INODE + 8)
NT_3 = NODE(INODE + 9)
!---------------------------------------
! Generated code from module definition
!---------------------------------------
! 610:[VSC_filter]
CALL VSC_filterOut_Begin(freq, Sbase, Vdc_base, Vacbase, Lconv, Ld&
&_in, Cfilter_in, Cdamp_in, Rdamp_in)
! 630:[Gen_VSC]
CALL Gen_VSCOut_Begin(Mmva, M_kv, Rst_pu, freq)
! 650:[multimeter] Multimeter
IVD1_1 = NRTCF
NRTCF = NRTCF + 5
IF (ABS(1.0) .GT. 1.0E-20) THEN
RTCF(IVD1_1) = 1.0/ABS(1.0)
ELSE
RTCF(IVD1_1) = 1.0
ENDIF
RTCF(IVD1_1+2) = 0.02
! 660:[Chopper]
CALL ChopperOut_Begin()
! 700:[Crowbar_prot_1]
CALL Crowbar_prot_1Out_Begin()
! 1:[multimeter] Multimeter
IVD1_1 = NRTCF
NRTCF = NRTCF + 5
IF (ABS(1.0) .GT. 1.0E-20) THEN
RTCF(IVD1_1) = 1.0/ABS(1.0)
ELSE
RTCF(IVD1_1) = 1.0
ENDIF
RTCF(IVD1_1+2) = 0.02
RETURN
END