Skip to content

Commit

Permalink
Merge pull request #6 from aivanova5/model_expansion
Browse files Browse the repository at this point in the history
Model expansion
  • Loading branch information
aivanova5 committed Mar 6, 2020
2 parents a1f2ae1 + 7728747 commit 7db14bd
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 9 deletions.
4 changes: 2 additions & 2 deletions config/simulation_configuration.csv
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Total Number of Houses per Phase,33
Start Time,2020-01-15 00:00:00 PST
Stop Time,2020-01-16 00:00:00 PST
Start Time,2020-01-01 00:00:00 PST
Stop Time,2021-01-01 00:00:00 PST
Weather File,CA-San_Jose_Intl_Ap.tmy3
,
Run Name,Electrification Fraction
Expand Down
44 changes: 42 additions & 2 deletions model.glm
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ object climate {
#ifdef SOLAR
module generators;
#endif // SOLAR
module powerflow;
module powerflow{
solver_method FBS;
}
module tape;
module residential{
implicit_enduses REFRIGERATOR|LIGHTS|PLUGS|WATERHEATER|RANGE|DRYER|CLOTHESWASHER|FREEZER|MICROWAVE|DISHWASHER;
Expand All @@ -66,16 +68,23 @@ module residential{
}

object meter {
name feeder_node;
name bulk_node;
nominal_voltage 2401 V;
phases ABCN;
bustype SWING;
object recorder {
property measured_real_power[kW], measured_reactive_power[kVAr];
file "output/feeder_power/feeder_${RUN_NAME}.csv";
interval 1h;
};
}

object meter {
name feeder_node;
nominal_voltage 2401 V;
phases ABCN;
}

object overhead_line {
name main_line;
phases ABCN;
Expand All @@ -89,6 +98,37 @@ object overhead_line {
// interval 1h;
// };
}
object regulator {
name main_reg;
phases ABCN;
from bulk_node;
to feeder_node;
configuration rc502;
sense_node main_node;
}

object regulator_configuration {
name rc502;
connect_type WYE_WYE;
band_center 2400.000;
band_width 40.0;
time_delay 30.0;
raise_taps 16;
lower_taps 16;
current_transducer_ratio 50;
power_transducer_ratio 20;
compensator_r_setting_A 0.4;
compensator_x_setting_A 0.4;
CT_phase "A";
PT_phase "A";
regulation 0.10;
Control OUTPUT_VOLTAGE;
Type A;
tap_pos_A -1;
tap_pos_B 0;
tap_pos_C 0;
}

//Line configurations
//ABCN
object overhead_line_conductor {
Expand Down
37 changes: 32 additions & 5 deletions pythontools/feeder_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@
path = 'output/feeder_power/'
max_real = []
max_reac = []
max_timestamp_real = []
max_timestamp_reac = []
energy_per_run = []
real_power_sorted = []
labels_list = []
plt.figure(1)
files = [f for f in listdir(path) if isfile(join(path, f)) and f.endswith( ".csv" )]
files_sorted=sorted(filename_perc, key=lambda x: x[1])
Expand All @@ -39,12 +43,14 @@
real_power.append(float(row[1][:-3]))
reactive_power.append(float(row[2][:-4]))
energy_per_run.append([file[:-4],sum(real_power)])
max_real.append([file[:-4], max(real_power)])
max_reac.append([file[:-4], max(reactive_power)])
max_real.append([file[:-4], max(real_power),time_stamp[real_power.index(max(real_power))]])
max_reac.append([file[:-4], max(reactive_power),time_stamp[reactive_power.index(max(reactive_power))]])
real_power_sorted.append(sorted(real_power, reverse=True))
for p in filename_perc :
if file[7:-4] in p[0] :
tmp_label=round(float(p[1])*100)
plt.plot(time_stamp, real_power, label=str(tmp_label)+'% Electrification')
labels_list.append(str(tmp_label)+'% Electrification')
# plt.plot(time_stamp, reactive_power, label='reactive_'+file[:-4])
plt.gcf().autofmt_xdate()
myFmt = md.DateFormatter('%y-%m-%d %H:%M:%S')
Expand All @@ -58,13 +64,34 @@
tmp.set_size_inches(21.5, 10.5)
tmp.savefig("output/feeder_plot/feeder_timeseries.png")

# Power peak plot
style = dict(size=8, color='gray')
plt.figure(2)
for i in max_real :
for p in filename_perc :
if p[0] in i[0] :
plt.scatter(p[1], i[1])
plt.scatter(i[2], i[1],cmap='gray')
plt.text(i[2],i[1]+0.5,str(round(float(p[1])*100))+'% ' + str(i[2])[-5:],ha='center',va='baseline',**style)
tmp_1 = plt.gcf() # get current figure
plt.gcf().autofmt_xdate()
myFmt = md.DateFormatter('%Y-%m-%d')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.draw()
plt.xlabel("Electrification Fraction")
plt.xlabel("Peak time")
plt.ylabel("Peak feeder power [kW]")
tmp_1.savefig("output/feeder_plot/peak_power.png")
tmp_1.savefig("output/feeder_plot/peak_power.png")

# LOAD DURATION CURVE
plt.figure(3)
for i,item in enumerate(real_power_sorted) :
plt.plot(item,label=labels_list[i])
# t = np.arange(0,len(real_power_sorted),1)
# plt.plot(t,real_power_sorted)
tmp = plt.gcf() # get current figure
plt.legend()
plt.tight_layout()
plt.xlabel("Hours")
plt.ylabel("Power [kW]")
plt.draw()
tmp.set_size_inches(21.5, 10.5)
tmp.savefig("output/feeder_plot/load_duration_curve.png")

0 comments on commit 7db14bd

Please sign in to comment.