Skip to content

Commit

Permalink
Minor updates to falling particle receiver model
Browse files Browse the repository at this point in the history
  • Loading branch information
jannamartinek committed Sep 13, 2023
1 parent fecad40 commit 4f5584b
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 45 deletions.
26 changes: 14 additions & 12 deletions ssc/cmod_csp_tower_particle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ static var_info _cm_vtab_csp_tower_particle[] = {
{ SSC_OUTPUT, SSC_ARRAY, "defocus", "Field optical focus fraction", "", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "sf_adjust_out", "Field availability adjustment factor", "", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "rec_defocus", "Receiver component defocus", "", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_dot_rec_inc", "Receiver incident thermal power", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_dot_rec_inc", "Receiver incident thermal power on particle curtain", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "eta_therm", "Receiver efficiency", "", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "Q_thermal", "Receiver thermal power to HTF less particle transport loss", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "pparasi", "Field tracking power", "MWe", "", "", "sim_type=1", "", ""},
Expand All @@ -537,10 +537,10 @@ static var_info _cm_vtab_csp_tower_particle[] = {
{ SSC_OUTPUT, SSC_ARRAY, "q_startup", "Receiver startup thermal energy consumed", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "T_rec_in", "Receiver HTF inlet temperature", "C", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "T_rec_out", "Receiver HTF outlet temperature", "C", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_transport_losses", "Receiver particle transport losses", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_thermal_loss", "Receiver reflection, convection and emission losses", "MWt", "", "", "sim_type=1", "", ""},
//{ SSC_OUTPUT, SSC_ARRAY, "q_dot_reflection_loss", "Receiver reflection losses", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "P_tower_lift", "Receiver and tower particle lift power", "MWe", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_transport_loss", "Receiver particle transport losses", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_thermal_loss", "Receiver convection and emission losses", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "q_reflection_loss", "Receiver reflection losses", "MWt", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_ARRAY, "P_tower_lift", "Receiver and tower particle lift power", "MWe", "", "", "sim_type=1", "", ""},

{ SSC_OUTPUT, SSC_ARRAY, "clearsky", "Predicted clear-sky beam normal irradiance", "W/m2", "", "CR", "sim_type=1&rec_clearsky_fraction>0", "", "" },

Expand Down Expand Up @@ -654,8 +654,9 @@ static var_info _cm_vtab_csp_tower_particle[] = {
{ SSC_OUTPUT, SSC_NUMBER, "annual_W_cycle_gross", "Electrical source - power cycle gross output", "kWhe", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_W_cooling_tower", "Total of condenser operation parasitics", "kWhe", "", "PC", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_q_rec_inc", "Annual receiver incident thermal power", "MWt-hr", "", "Tower and Receiver", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_q_rec_loss", "Annual receiver reflective, advective, and radiative losses", "MWt-hr", "", "Tower and Receiver", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_eta_rec_th_incl_refl", "Annual receiver efficiency including reflective loss", "", "", "Tower and Receiver", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_q_rec_reflection_loss", "Annual receiver reflection losses", "MWt-hr", "", "Tower and Receiver", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_q_rec_thermal_loss", "Annual receiver advective and radiative losses", "MWt-hr", "", "Tower and Receiver", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "annual_eta_rec", "Annual receiver efficiency including reflective, advective, radiative loss", "", "", "Tower and Receiver", "sim_type=1", "", ""},

{ SSC_OUTPUT, SSC_NUMBER, "conversion_factor", "Gross to net conversion factor", "%", "", "", "sim_type=1", "", ""},
{ SSC_OUTPUT, SSC_NUMBER, "capacity_factor", "Capacity factor", "%", "", "", "sim_type=1", "", ""},
Expand Down Expand Up @@ -1184,9 +1185,9 @@ class cm_csp_tower_particle : public compute_module
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_Q_DOT_STARTUP, allocate("q_startup", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_T_HTF_IN, allocate("T_rec_in", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_T_HTF_OUT, allocate("T_rec_out", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_Q_DOT_PIPE_LOSS, allocate("q_transport_losses", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_Q_DOT_PIPE_LOSS, allocate("q_transport_loss", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_Q_DOT_LOSS, allocate("q_thermal_loss", n_steps_fixed), n_steps_fixed);
//collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_Q_DOT_REFL_LOSS, allocate("q_dot_reflection_loss", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_Q_DOT_REFL_LOSS, allocate("q_reflection_loss", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_W_DOT_TRACKING, allocate("pparasi", n_steps_fixed), n_steps_fixed);
collector_receiver.mc_reported_outputs.assign(C_csp_mspt_collector_receiver::E_W_DOT_PUMP, allocate("P_tower_lift", n_steps_fixed), n_steps_fixed);

Expand Down Expand Up @@ -2158,10 +2159,11 @@ class cm_csp_tower_particle : public compute_module
accumulate_annual_for_year("P_cycle", "annual_W_cycle_gross", 1000.0*sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed/steps_per_hour); //[kWe-hr]
accumulate_annual_for_year("P_cooling_tower_tot", "annual_W_cooling_tower", 1000.0*sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed / steps_per_hour); //[kWe-hr]

accumulate_annual_for_year("q_dot_rec_inc", "annual_q_rec_inc", sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed / steps_per_hour); //[MWt-hr]
accumulate_annual_for_year("q_thermal_loss", "annual_q_rec_loss", sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed / steps_per_hour);
accumulate_annual_for_year("q_dot_rec_inc", "annual_q_rec_inc", sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed / steps_per_hour); //[MWt-hr] // Incident power on particle curtain not including reflection (note that this is different than the definition of "incident" in the MSPT model)
accumulate_annual_for_year("q_reflection_loss", "annual_q_rec_reflection_loss", sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed / steps_per_hour);
accumulate_annual_for_year("q_thermal_loss", "annual_q_rec_thermal_loss", sim_setup.m_report_step / 3600.0, steps_per_hour, 1, n_steps_fixed / steps_per_hour);

assign("annual_eta_rec_th_incl_refl", (ssc_number_t)(1.0 - as_number("annual_q_rec_loss") / as_number("annual_q_rec_inc")));
assign("annual_eta_rec", (ssc_number_t)(1.0 - (as_number("annual_q_rec_thermal_loss") + as_number("annual_q_rec_reflection_loss"))/ as_number("annual_q_rec_inc")));


accumulate_annual_for_year("disp_objective", "disp_objective_ann", sim_setup.m_report_step / 3600.0 / as_double("disp_frequency"), steps_per_hour, 1, n_steps_fixed/steps_per_hour);
Expand Down
Loading

0 comments on commit 4f5584b

Please sign in to comment.