Exemplo n.º 1
0
    def select_channel(self, signal_list):
        psspy.delete_all_plot_channels()

        for i in signal_list.keys():
            bus_list = signal_list.get(i)[0]
            if bus_list:
                psspy.bsys(sid=i, numbus=len(bus_list), buses=bus_list)
            variable_list = signal_list.get(i)[1]
            for variable in variable_list:
                f = None
                if variable == 'STATE':
                    f = psspy.state_channel
                elif variable == 'VAR':
                    f = psspy.var_channel

                if f is not None:
                    for j in bus_list:
                        f(status=[-1, j], ident=variable + str(j))
                else:
                    list_ = [
                        -1, -1, -1, 1,
                        map_Signal2Channel.get(variable), 1
                    ]
                    if bus_list:
                        psspy.chsb(i, 0, list_)
                    else:
                        psspy.chsb(0, 1, list_)
        psspy.strt(0, self.out_file)
Exemplo n.º 2
0
# Convert gen & load
# convert generators
ierr = psspy.cong(0)

# convert load
for i in [1, 2, 3]:
    ierr = psspy.conl(0, 1, i, [0, 0], [100, 0, 0, 100])[0]

# save converted case
psspy.save(r'{0}\savnw_C.sav'.format(example_path))

# Load dynamics
ierr = psspy.dyre_new([_i, _i, _i, _i], dyr_case, _s, _s, _s)

# Set output channels
psspy.chsb(sid=0, all=1, status=[-1, -1, -1, 1, 12, 0])
#

# Save snapshot
psspy.snap(sfile=r'{0}\PythonDynTest.snp'.format(example_path))

# Initialize and run the dynamic scenario
psspy.strt(option=0, outfile=out_file)
psspy.run(0, 1, 0, 0, 0)

# 3-phase fault on bus 151 (default bus fault is a 3phase and there is no bus 151)
psspy.dist_bus_fault(ibus=151)

# Run to 3 cycles
time = 3.0 / 60.0
psspy.run(0, 1 + time, 0, 0, 0)
Exemplo n.º 3
0
def Run_SIM(x,dyr_file,out_file): #inputs are strings\
	dyre = r"""C:\Users\psse\Desktop\Phylicia\Error and Accuracy Tracking Project Sp18\RTS96\%s""" %dyr_file
	out = r"""C:\Users\psse\Desktop\Phylicia\Error and Accuracy Tracking Project Sp18\RTS96\Channels\opt_%s.out""" %out_file
	print dyr_file
	ierr = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1] #checking for errors
	output = StringIO.StringIO()
	with silence(output):
		ierr[0] = psspy.psseinit(200000) #need to have this high, otherwise there are not enough output channels
		ierr[1] = psspy.case(r"""C:\Users\psse\Desktop\Phylicia\Error and Accuracy Tracking Project Sp18\RTS96\RTS96DYN.sav""")
		ierr[2] = psspy.fdns([0,0,0,1,1,0,99,0])
		ierr[3] = psspy.cong(0)
		ierr[4] = psspy.conl(0,1,1,[0,0],[ 100.0,0.0,0.0, 100.0])
		ierr[5] = psspy.conl(0,1,2,[0,0],[ 100.0,0.0,0.0, 100.0])
		ierr[6] = psspy.conl(0,1,3,[0,0],[ 100.0,0.0,0.0, 100.0])
		ierr[7] = psspy.ordr(0)
		ierr[8] = psspy.fact()
		ierr[9] = psspy.tysl(0)
		ierr[10] = psspy.dyre_new([1,1,1,1],dyre,"","","") 
		ierr[11] = psspy.chsb(0,1,[-1,-1,-1,1,13,0]) #record voltage
		ierr[12] = psspy.chsb(0,1,[-1,-1,-1,1,12,0]) #record frequency
		ierr[13] = psspy.chsb(0,1,[-1,-1,-1,1,1,0]) #angle
		ierr[14] = psspy.chsb(0,1,[-1,-1,-1,1,16,0]) #line P & Q
		ierr[15] = psspy.strt_2([0,0],out)
		ierr[16] = psspy.run(0, 0.1,1,1,0)
		#ierr[17] = psspy.dist_branch_fault(217,218,r"""1""",1, 230.0,[0.0,-0.2E+10]) #Line Fault, NaN (network no good)
		#ierr[17] = psspy.dist_bus_fault(211,1, 230.0,[0.0,-0.2E+10]) #bus Fault, NaN (network no good)
		#a = int(x[0])
		#b = int(x[1])
		#ierr[17] = psspy.branch_chng_3(a,b,r"""1""",[0,_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f],"") #Line Outage
		x = int(x)
		print "before machine change"
		ierr[17] = psspy.machine_chng_2(x,r"""1""",[0,_i,_i,_i,_i,_i],[_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f,_f]) #Generator Outage
		print "after machine change"
		ierr[18] = psspy.change_channel_out_file(out)
		ierr[19] = psspy.run(0, 0.5,1,1,0) #this was 10
		psspy.dist_clear_fault(1)
		psspy.change_channel_out_file(out)
		psspy.run(1, 10.0,1,1,0)
		ierr[20] = psspy.delete_all_plot_channels()
		print "completed simulation"
	
	print ierr 
	run_output = output.getvalue()
	
	current_error = 0
	
	if "Network not converged" in run_output:
		print "Network not converged" #need to have something in if statement otherwise you get an indentation error
		result = 0 #this will go out to a if condition to rerun the program with a different selection of buses at this accuracy
		current_error = 1
		#raise SystemExit #this will quit the program
	elif "NaN" in run_output:
		print "NaN, network is no good"
		result = 0 #this will go out to a if condition to rerun the program with a different selection of buses at this accuracy
		current_error = 1
		#raise SystemExit #this will quit the program
	if current_error == 0 and "INITIAL CONDITIONS CHECK O.K." in run_output:
		print "continuing with study..."
	
        #Gather the data and output to excel
		data = dyntools.CHNF(out) #getting data from channel.out file
		d,e,z=data.get_data() #gathering data from data in dictionary format
	
        #Concatenate data so all data from one simulation is in one file
		c = 1 #must start at 1, not zero
        #Save Frequency and Voltage
		while c < 726: 
			if c < 100: #Record Angle
				v=z[c]
				new_v = ", ".join(str(i) for i in v) #this removes the brackets at the beginning and end of the list so can be processed in matlab 
				a = np.matrix(new_v) #make it into a matrix
				if c ==1:
					ang_all = np.copy(a)
				else: 
					ang_all = np.concatenate((ang_all,a),axis=0) #changed to concatenate vertically to test them all individually
			if c > 99 and c < 173: #Record Frequency
				v=z[c]
				new_v = ", ".join(str(i) for i in v) #this removes the brackets at the beginning and end of the list so can be processed in matlab 
				f = np.matrix(new_v) #make it into a matrix
				if c ==100:
					f_all = np.copy(f)
				else: 
					f_all = np.concatenate((f_all,f),axis=0) #changed to concatenate vertically to test them all individually
			if c > 172 and c < 246: #Record voltage magnitude
				v=z[c]
				new_v = ", ".join(str(i) for i in v) #this removes the brackets at the beginning and end of the list so can be processed in matlab 
				f = np.matrix(new_v) #make it into a matrix
				if c == 173:
					all = np.copy(f)
				else:
					all = np.concatenate((all,f),axis=0) #changed to concatenate vertically to test them all individually
			if c > 245 and c < 726: #Record P and Q
				if float(c/2) == int(c/2): #P , even numbers
					v=z[c]
					new_v = ", ".join(str(i) for i in v) #this removes the brackets at the beginning and end of the list so can be processed in matlab 
					f = np.matrix(new_v) #make it into a matrix
					if c == 246:
						P_all = np.copy(f)
					else:
						P_all = np.concatenate((P_all,f),axis=0) #changed to concatenate vertically to test them all individually
				else: #Q, odd numbers
					v=z[c]
					new_v = ", ".join(str(i) for i in v) #this removes the brackets at the beginning and end of the list so can be processed in matlab 
					f = np.matrix(new_v) #make it into a matrix
					if c == 247:
						Q_all = np.copy(f)
					else:
						Q_all = np.concatenate((Q_all,f),axis=0) #changed to concatenate vertically to test them all individually
			c = c+1
		result = [all, f_all, ang_all, P_all, Q_all] #0 is voltage, 1 is frequency
	return result
Exemplo n.º 4
0
def Out_Put_Channels():
	psspy.dyre_new([1,1,1,1],Dynamic_File,"","","") #Open our .dyr file that gives the information for dynamic responses of the machines
	psspy.chsb(0,1,[-1,-1,-1,1,4,0]) #Setup Dynamic Simulation channels, Machine voltages in this case
	#psspy.chsb(0,1,[-1,-1,-1,1,14,0]) #Bus voltage and angle
	psspy.chsb(0,1,[-1,-1,-1,1,12,0]) #Frequency
	psspy.chsb(0,1,[-1,-1,-1,1,2,0]) #Machine Real power
	psspy.chsb(0,1,[-1,-1,-1,1,3,0]) #Machine Reactive Power
	#psspy.chsb(0,1,[-1,-1,-1,1,1,0]) #Machine Angle
	psspy.chsb(0,1,[-1,-1,-1,1,7,0]) #Machine Speed
	psspy.chsb(0,1,[-1,-1,-1,1,14,0])
def run_savnw_simulation(datapath, outfile1, outfile2, outfile3, prgfile):

    import psspy
    psspy.psseinit()

    savfile = 'savcnv.sav'
    snpfile = 'savnw.snp'

    if datapath:
        savfile = os.path.join(datapath, savfile)
        snpfile = os.path.join(datapath, snpfile)

    psspy.lines_per_page_one_device(1,90)
    psspy.progress_output(2,prgfile,[0,0]) # directly output to file
    

    ierr = psspy.case(savfile)
    if ierr:
        psspy.progress_output(1,"",[0,0])
        print(" psspy.case Error")
        return
    ierr = psspy.rstr(snpfile)
    if ierr:
        psspy.progress_output(1,"",[0,0])
        print(" psspy.rstr Error")
        return
    
# fault + line trip
    psspy.strt(0,outfile1)
    psspy.chsb(0,1, [-1,-1,-1,1,13,0])
    psspy.run(0, 1.0,1000,1,0)# start from 1 second, 1000 steps, and 1 writing for 1 output step
    psspy.dist_bus_fault(154,1, 230.0,[0.0,-0.2E+10]) # ibus, units, voltage kv
    psspy.run(0, 1.1,1000,1,0)# start from 1.1 second, 1000 steps, and 1 writing for 1 output step
    psspy.dist_clear_fault(1) 
    psspy.dist_branch_trip(3005,3007,'1')
    psspy.run(0,1.2,1000,1,0)
    psspy.dist_machine_trip(3018,'1')
    psspy.run(0, 5.0,1000,1,0)

# line trip (with faults) + generator trip   
    psspy.case(savfile)
    psspy.rstr(snpfile)
    psspy.strt(0,outfile2)
    psspy.chsb(0,1, [-1,-1,-1,1,13,0])
    psspy.run(0, 1.0,1000,1,0)
    psspy.dist_bus_fault(3005,1,230.0,[0.0,-0.2E+10])
    psspy.run(0,1.1,1000,1,0)
    psspy.dist_clear_fault(1)
    psspy.run(0,1.2,1000,1,0)
    psspy.dist_machine_trip(3018,'1')
    psspy.run(0, 5.0,1000,1,0)

    psspy.case(savfile)
    psspy.rstr(snpfile)
    psspy.strt(0,outfile3)
    psspy.chsb(0,1, [-1,-1,-1,1,13,0])
    psspy.run(0, 1.0,1000,1,0)
    psspy.dist_branch_trip(3005,3007,'1')
    psspy.run(0, 5.0,1000,1,0)

    psspy.lines_per_page_one_device(2,10000000)
    psspy.progress_output(1,"",[0,0])
Exemplo n.º 6
0
psspy.ordr(0)

# Factorize Admittance maatrix
psspy.fact()

# Solve switching study network solutions
psspy.tysl()

# Save sav file after conversion

trans_file = raw_file[0:raw_file.find(".")] + "_trans.sav"
psspy.save(trans_file)

# Select Channels
psspy.delete_all_plot_channels()
psspy.chsb(0, 1, [-1, -1, -1, 1, 1, 0])
psspy.chsb(0, 1, [-1, -1, -1, 1, 2, 0])
psspy.voltage_and_angle_channel([-1, -1, -1, 6], ["", ""])
psspy.voltage_and_angle_channel([-1, -1, -1, 7], ["", ""])
psspy.voltage_and_angle_channel([-1, -1, -1, 9], ["", ""])
psspy.voltage_and_angle_channel([-1, -1, -1, 13], ["", ""])
psspy.voltage_and_angle_channel([-1, -1, -1, 14], ["", ""])
psspy.voltage_and_angle_channel([-1, -1, -1, 39], ["", ""])
psspy.branch_p_channel([-1, -1, -1, 6, 7], r"""1""", "")
psspy.branch_p_channel([-1, -1, -1, 13, 14], r"""1""", "")
psspy.branch_p_channel([-1, -1, -1, 39, 9], r"""1""", "")
psspy.branch_mva_channel([-1, -1, -1, 5, 8], r"""1""", "")
psspy.branch_mva_channel([-1, -1, -1, 6, 5], r"""1""", "")
psspy.branch_mva_channel([-1, -1, -1, 4, 5], r"""1""", "")
psspy.load_array_channel([-1, 1, 71], r"""1""", "")
psspy.load_array_channel([-1, 2, 71], r"""1""", "")
def do_simulation():
    global num_sample_id

    # set Samples Path
    sample_path = r'./Sample_9bus_' + input('请输入样本集编号:')
    if os.path.exists(sample_path):
        print('该样本集已存在,请重新输入...\n')
        sample_path = r'./Sample_9bus_' + input('请重新输入样本集编号:')
    else:
        os.makedirs(sample_path)

    # # 1 母线故障——样本编号:1~12*num_bus -> [1,  108]
    # for i in range(num_bus):
    # # for i in range(1):
    # 	for j in range(len(clear_time)):
    # 		# init
    # 		psspy.psseinit(50)
    # 		psspy.case(r""".\Models\9Bus-test\ieee9bus_v32.sav""")
    # 		psspy.fnsl([0, 0, 0, 1, 1, 0, 99, 0])
    # 		psspy.cong(0)
    # 		psspy.conl(0, 1, 1, [0, 0], [100.0, 0.0, 0.0, 100.0])
    # 		psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, 0.0, 100.0])
    # 		psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, 0.0, 100.0])
    # 		psspy.fact()
    # 		psspy.tysl(0)
    # 		psspy.dyre_new([1, 1, 1, 1], r""".\Models\9Bus-test\ieee9bus.dyr""", "", "", "")
    #
    # 		# perform Dynamic Simulation
    # 		# 1) set "Channal Setup Wizard"
    # 		psspy.chsb(0, 1, [-1, -1, -1, 1, 1, 0])    # Angle
    # 		psspy.chsb(0, 1, [-1, -1, -1, 1, 7, 0])    #
    # 		psspy.chsb(0, 1, [-1, -1, -1, 1, 13, 0])  #
    #
    # 		# 2) name output file
    # 		psspy.set_chnfil_type(0)  # 1 for OUTX format, 0 for (old) OUT format
    # 		psspy.strt_2([0, 1], sample_path + '\\t9Bus-PY-00' + str(num_sample_id) + '.out')
    # 		num_sample_id += 1
    #
    # 		# 3) in normal stat, run network to 1 seconds
    # 		psspy.run(0, 1.0, 0, 1, 1)
    #
    # 		# 4) set Balanced_bus_fault with R,X -> [0, 0]
    # 		psspy.dist_bus_fault(bus_id[i], 1, bus_kv[i], [0.0, -2E+2])		# --------  ! important
    #
    # 		# 5) set fault run time
    # 		psspy.run(0, 1 + clear_time[j], 0, 1, 1)
    #
    # 		# 6) clear fault, and run net to 10 seconds
    # 		psspy.dist_clear_fault(1)
    # 		psspy.run(0, 10.0, 0, 1, 1)
    #
    # 		# 7) 关闭本次仿真相关的文件, importaant !!!!!!!!!!!!!!!!!!!!!!
    # 		psspy.pssehalt_2()

    # 2 非变压器支路故障——样本编号: [108+1,  108+360]
    for i in range(num_notrans_brch):
        # for i in range(1):
        for k in range(len(fault_position)):
            # for k in range(1):
            for j in range(len(clear_time)):
                print('\n\n\n\n----------------我是分割线--------------\n')
                print('已仿真第 ' + str(num_sample_id) + ' 条样本\n\n\n\n')

                # init
                psspy.psseinit(50)
                psspy.case(r""".\Models\9Bus-test\ieee9bus_v32.sav""")
                psspy.fnsl([0, 0, 0, 1, 1, 0, 99, 0])
                psspy.cong(0)
                psspy.conl(0, 1, 1, [0, 0], [100.0, 0.0, 0.0, 100.0])
                psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, 0.0, 100.0])
                psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, 0.0, 100.0])
                psspy.fact()
                psspy.tysl(0)
                psspy.dyre_new([1, 1, 1, 1],
                               r""".\Models\9Bus-test\ieee9bus.dyr""", "", "",
                               "")

                # perform Dynamic Simulation
                # 1) set "Channal Setup Wizard"
                psspy.chsb(0, 1, [-1, -1, -1, 1, 1, 0])  # Angle
                psspy.chsb(0, 1, [-1, -1, -1, 1, 7, 0])  #
                psspy.chsb(0, 1, [-1, -1, -1, 1, 13, 0])  #

                # 1.1) set Relative Machine Angle
                psspy.set_relang(1, 1, r"""1""")

                # 2) name output file
                psspy.set_chnfil_type(
                    0)  # 1 for OUTX format, 0 for (old) OUT format
                psspy.strt_2([0, 1], sample_path + '//t9Bus-PY-00' +
                             str(num_sample_id) + '.out')
                num_sample_id += 1

                # 3) in normal stat, run network to 1 seconds
                psspy.run(0, 1.0, 0, 1, 1)

                # 4) set unbalanced_Branch_fault -- 3 Phase -- with R,X -> [0, 0]
                psspy.dist_spcb_fault_2(
                    notrans_brch[i][0], notrans_brch[i][1], r"""1""",
                    [3, 0, 3, 1, 0, 0, 1],
                    [fault_position[k], 0.0, 0.0, 0.0, 0.0
                     ])  # --------  ! important

                # 5) set fault run time
                psspy.run(0, 1 + clear_time[j], 0, 1, 1)

                # 6) clear fault, and run net to 10 seconds
                psspy.dist_clear_fault(1)
                psspy.run(0, 10.0, 0, 1, 1)

                # 7) 关闭本次仿真相关的文件, importaant !!!!!!!!!!!!!!!!!!!!!!
                psspy.pssehalt_2()
def do_simulation(sav_path, dyr_path):
    global num_sample_id

    # set Samples Path
    sample_path = r'./Sample_14bus_' + input('请输入样本集编号:')
    if os.path.exists(sample_path):
        print('该样本集已存在,请重新输入...\n')
        sample_path = r'./Sample_14bus_' + input('请重新输入样本集编号:')
    else:
        os.makedirs(sample_path)

    # # 1 母线故障——样本编号:1~12*num_bus -> [1, 168]
    # for i in range(num_bus):
    # # for i in range(1):
    # 	for j in range(len(clear_time)):
    # 		# init
    # 		psspy.psseinit(50)
    # 		psspy.case(sav_path)
    # 		psspy.fnsl([0, 0, 0, 1, 1, 0, 99, 0])
    # 		psspy.cong(0)
    # 		psspy.conl(0, 1, 1, [0, 0], [100.0, 0.0, 0.0, 100.0])
    # 		psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, 0.0, 100.0])
    # 		psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, 0.0, 100.0])
    # 		psspy.fact()
    # 		psspy.tysl(0)
    # 		psspy.dyre_new([1, 1, 1, 1], dyr_path, "", "", "")
    #
    # 		# perform Dynamic Simulation
    # 		# 1) set "Channal Setup Wizard"
    # 		psspy.chsb(0, 1, [-1, -1, -1, 1, 1, 0])     # Angle -> 发电机功角
    # 		psspy.chsb(0, 1, [-1, -1, -1, 1, 14, 0])    # Volt & Angle -> 电压&相角
    # 		psspy.chsb(0, 1, [-1, -1, -1, 1, 16, 0])    # Flow (P & Q) -> 潮流
    #
    # 		# 2) name output file
    # 		psspy.set_chnfil_type(0)  # 1 for OUTX format, 0 for (old) OUT format
    # 		psspy.strt_2([0, 1], sample_path + '\\t14Bus-PY-00' + str(num_sample_id) + '.out')
    # 		num_sample_id += 1
    #
    # 		# 3) in normal stat, run network to 1 seconds
    # 		psspy.run(0, 1.0, 0, 1, 1)
    #
    # 		# 4) set Balanced_bus_fault; Default with R,X -> [0, -2e+009]
    # 		psspy.dist_bus_fault(bus_id[i], 1, bus_kv[i], [0.0, -2E9])		# --------  ! important
    #
    # 		# bus5 unbalanced fault with [R-LL, X-LL, R-LG, X-LG], 是单相故障 !!!!!!!
    # 		# 事实证明设置LL的RX对稳定毫无影响!!
    # 		# psspy.dist_scmu_fault_2([0, 0, 2, bus_id[i], ], [2E5, 3E5, 0, 0])
    #
    # 		# 5) set fault run time
    # 		psspy.run(0, 1 + clear_time[j], 0, 1, 1)
    #
    # 		# 5) clear fault, and run net to 10 seconds
    # 		psspy.dist_clear_fault(1)
    # 		psspy.run(0, 10.0, 0, 1, 1)

    # 2 非变压器支路故障——样本编号: [bus_id ,bus_id + 960]
    # 根据本循环写的嵌套次序,故障时间每12条仿真为一个循环
    # for i in range(num_notrans_brch):
    for i in range(1):
        # for k in range(len(fault_position)):
        for k in range(3):
            # for j in range(len(clear_time)):
            for j in range(12):
                print('\n\n\n\n----------------我是分割线--------------\n\n\n\n\n')
                print('已仿真第 ' + str(num_sample_id) + ' 条样本')

                # init
                psspy.psseinit(10)
                psspy.case(sav_path)
                psspy.fnsl([0, 0, 0, 1, 1, 0, 99, 0])
                psspy.cong(0)
                psspy.conl(0, 1, 1, [0, 0], [100.0, 0.0, 0.0, 100.0])
                psspy.conl(0, 1, 2, [0, 0], [100.0, 0.0, 0.0, 100.0])
                psspy.conl(0, 1, 3, [0, 0], [100.0, 0.0, 0.0, 100.0])
                psspy.fact()
                psspy.tysl(0)
                psspy.dyre_new([1, 1, 1, 1], dyr_path, "", "", "")

                # perform Dynamic Simulation
                # 1) set "Channal Setup Wizard"
                psspy.chsb(0, 1, [-1, -1, -1, 1, 1, 0])  # Angle -> 发电机功角
                psspy.chsb(0, 1,
                           [-1, -1, -1, 1, 14, 0])  # Volt & Angle -> 电压&相角
                psspy.chsb(0, 1, [-1, -1, -1, 1, 16, 0])  # Flow (P & Q) -> 潮流

                # 2) name output file
                psspy.set_chnfil_type(
                    0)  # 1 for OUTX format, 0 for (old) OUT format
                psspy.strt_2([0, 1], sample_path + '\\t14Bus-PY-00' +
                             str(num_sample_id) + '.out')
                num_sample_id += 1

                # 3) in normal stat, run network to 1 seconds
                psspy.run(0, 1.0, 0, 1, 1)

                # 4) set unbalanced_Branch_fault -- 3 Phase -- with R,X -> [0, 0]
                psspy.dist_spcb_fault_2(
                    notrans_brch[i][0], notrans_brch[i][1], r"""1""",
                    [3, 0, 3, 1, 0, 0, 1],
                    [fault_position[k], 0.0, 0.0, 0.0, 0.0
                     ])  # --------  ! important

                # 5) set fault run time
                psspy.run(0, 1 + clear_time[j], 0, 1, 1)

                # 6) clear fault, and run net to 10 seconds
                psspy.dist_clear_fault(1)
                psspy.run(0, 10.0, 0, 1, 1)

                # 7) 关闭本次仿真相关的文件, importaant !!!!!!!!!!!!!!!!!!!!!!
                psspy.pssehalt_2()