Skip to content

Commit

Permalink
changed design point tolerance and max iterations
Browse files Browse the repository at this point in the history
-for particle receiver
  • Loading branch information
qualand committed Dec 13, 2023
1 parent b4dd3a0 commit 804726c
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 15 deletions.
4 changes: 2 additions & 2 deletions ssc/cmod_csp_tower_particle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1704,8 +1704,8 @@ class cm_csp_tower_particle : public compute_module
rec_pump_coef_des, rec_vel_htf_des, m_dot_htf_rec_des, m_dot_htf_rec_max, q_dot_piping_loss_des);
assign("q_dot_rec_des", q_dot_rec_des); //[MWt]
assign("eta_rec_thermal_des", eta_rec_thermal_des); //[-]
assign("P_tower_lift_des", W_dot_rec_lift_des); //[MWe]
assign("Q_transport_loss_des", q_dot_piping_loss_des); //MWt
assign("P_tower_lift_des", W_dot_rec_lift_des); //[MWe]
assign("Q_transport_loss_des", q_dot_piping_loss_des); //[MWt]
assign("m_dot_htf_rec_des", m_dot_htf_rec_des); //[kg/s]
assign("m_dot_htf_rec_max", m_dot_htf_rec_max); //[kg/s]

Expand Down
10 changes: 5 additions & 5 deletions tcs/csp_dispatch.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class csp_dispatch_opt : public base_dispatch_opt
std::vector<double> delta_rs; //expected proportion of time step used for receiver start up
std::vector<double> f_pb_op_limit; //[-] Maximum normalized cycle output

//TODO: This is not used and probabily should be removed.
//TODO: This is not used and probably should be removed.
std::vector<double> eta_sf_expected; //Expected solar field thermal efficiency (normalized)

// Parameters
Expand All @@ -58,10 +58,10 @@ class csp_dispatch_opt : public base_dispatch_opt
double e_tes_max; //[kWht] maximum allowable energy capacity in TES
double e_pb_startup_cold; //[kWht] energy requirement to start up the power block from cold state
double e_pb_startup_hot; //[kWht] energy requirement to start up the power block from standby
double e_rec_startup; //[kWht] energy requirement to start up the reciever
double dt_pb_startup_cold; //[hr] time requiremeent to start up the power block from cold state
double dt_pb_startup_hot; //[hr] time requiremeent to start up the power block from hot state
double dt_rec_startup; //[hr] time requirement to start up the reciever
double e_rec_startup; //[kWht] energy requirement to start up the receiver
double dt_pb_startup_cold; //[hr] time requirement to start up the power block from cold state
double dt_pb_startup_hot; //[hr] time requirement to start up the power block from hot state
double dt_rec_startup; //[hr] time requirement to start up the receiver
double tes_degrade_rate; //IN [1/hr] Fractional energy loss from tes per hour
double q_pb_standby; //[kWt] power requirement to maintain the power block in standby mode
double q_pb_des; //[kWe] design cycle thermal power input
Expand Down
12 changes: 4 additions & 8 deletions tcs/csp_solver_falling_particle_receiver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,6 @@ void C_falling_particle_receiver::init()
m_m_dot_htf_des = m_q_rec_des / (c_htf_des * (m_T_htf_hot_des - m_T_htf_cold_des)); //[kg/s]
m_m_dot_htf_max = m_m_dot_htf_max_frac * m_m_dot_htf_des; //[kg/s]
m_q_dot_inc_min = m_q_rec_des * m_f_rec_min / m_eta_therm_des_est; //[W] Minimum receiver thermal power
m_W_dot_pumping_tower_share = (m_m_dot_htf_des * m_h_tower * 9.8067 / m_eta_pump) / 1.e6; // [MWe]
m_W_dot_pumping_rec_share = (m_m_dot_htf_des * m_curtain_height * 9.8067 / m_eta_pump) / 1.e6; // [MWe]
m_W_dot_rec_pump_des_calc = m_W_dot_pumping_tower_share + m_W_dot_pumping_rec_share;


// If no startup requirements, then receiver is always ON
// ... in the sense that the controller doesn't need to worry about startup
Expand Down Expand Up @@ -785,9 +781,9 @@ void C_falling_particle_receiver::design_point_steady_state(double v_wind_10, do
// Solve for incident power needed to achieve design point thermal power to particles (assuming uniform solar flux on the curtain)
double q_dot_inc_avg, Qtot, tol;
q_dot_inc_avg = m_q_rec_des / 0.85 / m_curtain_area; // Initial guess for average incident solar flux on curtain [W/m2]
tol = 1e-2;
tol = 1e-6;

for (int j = 0; j < 10; j++)
for (int j = 0; j < 20; j++)
{
soln_des.q_dot_inc.resize_fill(m_n_y, m_n_x, q_dot_inc_avg);
solve_for_mass_flow(soln_des);
Expand Down Expand Up @@ -1300,8 +1296,8 @@ void C_falling_particle_receiver::calculate_steady_state_soln(s_steady_state_sol

double Tp_out_after_transport = Tp_out - m_deltaT_transport_hot; // Outlet temperature accounting from loss from hot particle transport

double Q_dot_transport_loss_hot = soln.m_dot_tot * cp_hot * m_deltaT_transport_hot;
double Q_dot_transport_loss_cold = soln.m_dot_tot * cp_cold * m_deltaT_transport_cold;
double Q_dot_transport_loss_hot = soln.m_dot_tot * cp * m_deltaT_transport_hot;
double Q_dot_transport_loss_cold = soln.m_dot_tot * cp * m_deltaT_transport_cold;

if (Tp_out <= T_cold_in || Q_thermal != Q_thermal)
{
Expand Down

0 comments on commit 804726c

Please sign in to comment.