Skip to content

Commit

Permalink
adding receiver lift parasitic to nameplate
Browse files Browse the repository at this point in the history
  • Loading branch information
qualand committed Dec 12, 2023
1 parent d044bb4 commit 4e7d5ab
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 35 deletions.
19 changes: 9 additions & 10 deletions ssc/cmod_csp_tower_particle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ static var_info _cm_vtab_csp_tower_particle[] = {
{ SSC_INPUT, SSC_NUMBER, "rec_clearsky_fraction", "Weighting fraction on clear-sky DNI for receiver flow control", "", "", "Tower and Receiver", "?=0.0", "", "SIMULATION_PARAMETER"},

// New variables replacing deprecated variable "piping_loss". Variable currently not required so exec() can check if assigned and throw a more detailed error
{ SSC_INPUT, SSC_NUMBER, "transport_deltaT_hot", "Temperature loss for hot particle transport", "K", "", "Tower and Receiver", "*", "", ""},
{ SSC_INPUT, SSC_NUMBER, "transport_deltaT_cold", "Temperature loss for cold particle transport", "K", "", "Tower and Receiver", "*", "", ""},
{ SSC_INPUT, SSC_NUMBER, "transport_deltaT_hot", "Temperature loss for hot particle transport", "K", "", "Tower and Receiver", "*", "", ""},
{ SSC_INPUT, SSC_NUMBER, "transport_deltaT_cold", "Temperature loss for cold particle transport", "K", "", "Tower and Receiver", "*", "", ""},


// Falling particle receiver inputs for SolarPILOT that should *not* be reset during call to this cmod
Expand Down Expand Up @@ -421,11 +421,11 @@ static var_info _cm_vtab_csp_tower_particle[] = {
// Receiver Performance
{ SSC_OUTPUT, SSC_NUMBER, "q_dot_rec_des", "Receiver thermal output at design", "MWt", "", "Tower and Receiver", "*", "", ""},
//{ SSC_OUTPUT, SSC_NUMBER, "eta_rec_thermal_des", "Receiver estimated thermal efficiency at design", "", "", "Tower and Receiver", "*", "", "" },
//{ SSC_OUTPUT, SSC_NUMBER, "W_dot_rec_pump_des", "Receiver estimated pump power at design", "MWe", "", "Tower and Receiver", "*", "", "" },
//{ SSC_OUTPUT, SSC_NUMBER, "W_dot_rec_pump_tower_share_des", "Receiver estimated pump power due to tower height at design", "MWe", "", "Tower and Receiver", "*", "", "" },
//{ SSC_OUTPUT, SSC_NUMBER, "W_dot_rec_pump_rec_share_des", "Receiver estimated pump power due to rec tubes at design", "MWe", "", "Tower and Receiver", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "W_dot_rec_pump_des", "Receiver estimated pump power at design", "MWe", "", "Tower and Receiver", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "W_dot_rec_pump_tower_share_des", "Receiver estimated pump power due to tower height at design", "MWe", "", "Tower and Receiver", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "W_dot_rec_pump_rec_share_des", "Receiver estimated pump power due to rec tubes at design", "MWe", "", "Tower and Receiver", "*", "", "" },
//{ SSC_OUTPUT, SSC_NUMBER, "vel_rec_htf_des", "Receiver estimated tube HTF velocity at design", "m/s", "", "Tower and Receiver", "*", "", "" },
//{ SSC_OUTPUT, SSC_NUMBER, "m_dot_htf_rec_des", "Receiver HTF mass flow rate at design", "kg/s", "", "Tower and Receiver", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "m_dot_htf_rec_des", "Receiver HTF mass flow rate at design", "kg/s", "", "Tower and Receiver", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "m_dot_htf_rec_max", "Receiver max HTF mass flow rate", "kg/s", "", "Tower and Receiver", "*", "", ""},
//{ SSC_OUTPUT, SSC_NUMBER, "q_dot_piping_loss_des", "Receiver estimated piping loss at design", "MWt", "", "Tower and Receiver", "*", "", "" },

Expand Down Expand Up @@ -1788,11 +1788,9 @@ class cm_csp_tower_particle : public compute_module
csp_solver.get_design_parameters(W_dot_bop_design, W_dot_fixed_parasitic_design);

// Calculate net system *generation* capacity including HTF lifts and system parasitics
double plant_net_capacity_calc = W_dot_cycle_des - W_dot_col_tracking_des - //W_dot_rec_pump_des - //TODO(Bill): This needs to be updated
double plant_net_capacity_calc = W_dot_cycle_des - W_dot_col_tracking_des - W_dot_rec_pump_des -
W_dot_pc_pump_des - W_dot_pc_cooling_des - W_dot_bop_design - W_dot_fixed_parasitic_design; //[MWe]

//double plant_net_conv_calc = plant_net_capacity_calc / W_dot_cycle_des; //[-]

double system_capacity = plant_net_capacity_calc * 1.E3; //[kWe], convert from MWe

assign("W_dot_bop_design", W_dot_bop_design); //[MWe]
Expand Down Expand Up @@ -1829,7 +1827,7 @@ class cm_csp_tower_particle : public compute_module

// Two types of TES costs models
double tes_cost, tes_medium_cost, tes_bin_cost, tes_lift_cost, phx_lift_cost;
tes_cost = tes_medium_cost = tes_bin_cost = tes_lift_cost = phx_lift_cost = std::numeric_limits<double>::quiet_NaN();;
tes_cost = tes_medium_cost = tes_bin_cost = tes_lift_cost = phx_lift_cost = std::numeric_limits<double>::quiet_NaN();
if (as_integer("tes_cost_model") == 0) {
double Q_storage = as_double("P_ref") / as_double("design_eff") * as_double("tshours");
tes_cost = N_mspt::tes_cost(Q_storage, as_double("tes_spec_cost")); //energy based method
Expand All @@ -1850,6 +1848,7 @@ class cm_csp_tower_particle : public compute_module
string msg = util::format("'tes_cost_model' must be either 0 (energy-based) or 1 (detailed).");
throw exec_error("csp_tower_particle", msg);
}

assign("tes_medium_cost", (ssc_number_t)tes_medium_cost);
assign("tes_bin_cost", (ssc_number_t)tes_bin_cost);
assign("tes_lift_cost", (ssc_number_t)tes_lift_cost);
Expand Down
2 changes: 1 addition & 1 deletion tcs/csp_dispatch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ void csp_dispatch_opt::init(double cycle_q_dot_des, double cycle_eta_des)
params.e_tes_max = pointers.tes->get_max_charge_energy();
params.tes_degrade_rate = pointers.tes->get_degradation_rate();

//heater params
//heater parameters
if (pointers.par_htr != NULL) {
params.q_eh_min = pointers.par_htr->get_min_power_delivery() * ( 1 + 1e-8 ); // ensures controller doesn't shut down heater at minimum load
params.q_eh_max = pointers.par_htr->get_max_power_delivery(std::numeric_limits<double>::quiet_NaN());
Expand Down
24 changes: 0 additions & 24 deletions tcs/csp_solver_mspt_collector_receiver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -357,30 +357,6 @@ double C_csp_mspt_collector_receiver::get_collector_area()

double C_csp_mspt_collector_receiver::calculate_thermal_efficiency_approx( const C_csp_weatherreader::S_outputs &weather, double q_inc, const C_csp_solver_sim_info& sim)
{
/*
A very approximate thermal efficiency used for quick optimization performance projections
*/

//double T_eff = (mc_pt_receiver.m_T_htf_cold_des + mc_pt_receiver.m_T_htf_hot_des)*.55;
//
//double T_amb = weather.m_tdry + 273.15;
//double T_eff4 = T_eff * T_eff;
//T_eff4 *= T_eff4;
//double T_amb4 = T_amb * T_amb;
//T_amb4 *= T_amb4;
//
//double Arec = mc_pt_receiver.area_proj();
//
//double q_rad = 5.67e-8*mc_pt_receiver.m_epsilon * Arec * (T_eff4 - T_amb4) * 1.e-6; //MWt
//
//double v = weather.m_wspd;
//double v2 = v*v;
//double v3 = v2*v;
//
//double q_conv = q_rad/2. * (-0.001129*v3 + 0.031229*v2 - 0.01822*v +0.962476); //convection is about half radiation, scale by wind speed. surrogate regression from molten salt run.
//
//return max(1. - (q_rad + q_conv)/q_inc, 0.);

return mc_pt_receiver.estimate_thermal_efficiency(weather, q_inc);
}

Expand Down

0 comments on commit 4e7d5ab

Please sign in to comment.