Skip to content

Commit

Permalink
remove and add some inputs to trough iph cmod
Browse files Browse the repository at this point in the history
  • Loading branch information
tyneises committed Feb 3, 2025
1 parent 4a638b5 commit 6ab6bcd
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
25 changes: 15 additions & 10 deletions ssc/cmod_trough_physical_iph.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,10 +173,10 @@ static var_info _cm_vtab_trough_physical_iph[] = {
{ SSC_INPUT, SSC_NUMBER, "pb_pump_coef", "Pumping power to move 1kg of HTF through PB loop", "kW/kg", "", "Heat Sink", "*", "", "" },

{ SSC_INPUT, SSC_NUMBER, "hs_type", "0: ideal model, 1: physical steam model", "", "", "Heat Sink", "?=0", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_N_sub", "Number physical heat sink HX nodes", "", "", "Heat Sink", "hs_type=1", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_tol", "Physical heat sink solve tolerance", "", "", "Heat Sink", "hs_type=1", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_f_mdot_steam_min", "Min steam mdot fraction for physical heat sink", "", "", "Heat Sink", "hs_type=1", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_f_mdot_steam_max", "Max steam mdot fraction for physical heat sink", "", "", "Heat Sink", "hs_type=1", "", "" },
//{ SSC_INPUT, SSC_NUMBER, "hs_phys_N_sub", "Number physical heat sink HX nodes", "", "", "Heat Sink", "hs_type=1", "", "" },
//{ SSC_INPUT, SSC_NUMBER, "hs_phys_tol", "Physical heat sink solve tolerance", "", "", "Heat Sink", "hs_type=1", "", "" },
//{ SSC_INPUT, SSC_NUMBER, "hs_phys_f_mdot_steam_min", "Min steam mdot fraction for physical heat sink", "", "", "Heat Sink", "hs_type=1", "", "" },
//{ SSC_INPUT, SSC_NUMBER, "hs_phys_f_mdot_steam_max", "Max steam mdot fraction for physical heat sink", "", "", "Heat Sink", "hs_type=1", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_T_steam_cold_des", "Steam inlet temperature for physical heat sink", "C", "", "Heat Sink", "hs_type=1", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_P_steam_hot_des", "Steam outlet (and inlet) pressure for physical heat sink", "bar", "", "Heat Sink", "hs_type=1", "", "" },
{ SSC_INPUT, SSC_NUMBER, "hs_phys_Q_steam_hot_des", "Steam outlet quality for physical heat sink", "", "", "Heat Sink", "hs_type=1", "", "" },
Expand Down Expand Up @@ -457,6 +457,7 @@ static var_info _cm_vtab_trough_physical_iph[] = {
{ SSC_OUTPUT, SSC_NUMBER, "m_dot_hs_ext_des", "Heat sink fluid mass flow rate", "kg/s", "", "System Control", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "T_hs_ext_out_des", "Heat sink fluid outlet temperature", "C", "", "System Control", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "hx_min_dT_des", "Heat sink hx min temp difference", "C", "", "System Control", "*", "", "" },
{ SSC_OUTPUT, SSC_NUMBER, "hx_UA_des", "Heat sink hx conductance", "MW/K", "", "System Control", "*", "", "" },


// System Control
Expand Down Expand Up @@ -1579,10 +1580,12 @@ class cm_trough_physical_iph : public compute_module
c_heat_sink_phys.ms_params.m_Q_ext_hot_des = as_double("hs_phys_Q_steam_hot_des"); //[C] Steam quality target
c_heat_sink_phys.ms_params.m_P_ext_cold_des = as_double("hs_phys_P_steam_hot_des") * 100.0; //[kPa] Steam inlet pressure
c_heat_sink_phys.ms_params.m_P_ext_hot_des = as_double("hs_phys_P_steam_hot_des") * 100.0; //[kPa] Steam outlet pressure
c_heat_sink_phys.ms_params.m_f_m_dot_ext_min = as_double("hs_phys_f_mdot_steam_min"); //[] Min fraction Steam mass flow rate
c_heat_sink_phys.ms_params.m_f_m_dot_ext_max = as_double("hs_phys_f_mdot_steam_max"); //[] Max fraction Steam mass flow rate
c_heat_sink_phys.ms_params.m_N_sub_hx = as_double("hs_phys_N_sub"); //[] Number HX nodes
c_heat_sink_phys.ms_params.m_od_tol = as_double("hs_phys_tol"); //[] HX off design tolerance

// 25.01.30 twn: hardcode these for now so users don't have to set them
c_heat_sink_phys.ms_params.m_f_m_dot_ext_min = 0.01; // as_double("hs_phys_f_mdot_steam_min"); //[] Min fraction Steam mass flow rate
c_heat_sink_phys.ms_params.m_f_m_dot_ext_max = 1.5; // as_double("hs_phys_f_mdot_steam_max"); //[] Max fraction Steam mass flow rate
c_heat_sink_phys.ms_params.m_N_sub_hx = 15; // as_double("hs_phys_N_sub"); //[] Number HX nodes
c_heat_sink_phys.ms_params.m_od_tol = 0.001; // as_double("hs_phys_tol"); //[] HX off design tolerance

// Allocate heat sink outputs
c_heat_sink_phys.mc_reported_outputs.assign(C_pc_heat_sink_physical::E_Q_DOT_HEAT_SINK, allocate("q_dot_to_heat_sink", n_steps_fixed), n_steps_fixed);
Expand Down Expand Up @@ -2156,17 +2159,19 @@ class cm_trough_physical_iph : public compute_module
}

// Heat sink
double m_dot_hs_ext_des, T_hs_ext_out_des, hx_min_dT_des;
m_dot_hs_ext_des = T_hs_ext_out_des = hx_min_dT_des = std::numeric_limits<double>::quiet_NaN();
double m_dot_hs_ext_des, T_hs_ext_out_des, hx_min_dT_des, hx_UA_des;
m_dot_hs_ext_des = T_hs_ext_out_des = hx_min_dT_des = hx_UA_des = std::numeric_limits<double>::quiet_NaN();
if (hs_type == 1) {
m_dot_hs_ext_des = c_heat_sink_phys.get_m_dot_ext_des(); //[kg/s]
T_hs_ext_out_des = c_heat_sink_phys.get_T_ext_out_des(); //[C]
hx_min_dT_des = c_heat_sink_phys.get_hx_min_dT_des(); //[C]
hx_UA_des = c_heat_sink_phys.get_hx_UA_des(); //[kW/K]
}

assign("m_dot_hs_ext_des", m_dot_hs_ext_des);
assign("T_hs_ext_out_des", T_hs_ext_out_des);
assign("hx_min_dT_des", hx_min_dT_des);
assign("hx_UA_des", hx_UA_des);
}

// Calculate Costs and assign outputs
Expand Down
3 changes: 2 additions & 1 deletion tcs/csp_solver_pc_heat_sink_physical.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ C_pc_heat_sink_physical::C_pc_heat_sink_physical()

m_m_dot_htf_des = m_m_dot_ext_des = m_m_dot_ext_min =
m_m_dot_ext_max = m_h_ext_cold_des = m_h_ext_hot_des =
m_T_ext_hot_des = std::numeric_limits<double>::quiet_NaN();
m_T_ext_hot_des = m_hx_UA_des = std::numeric_limits<double>::quiet_NaN();

m_did_init_pass = false;
}
Expand Down Expand Up @@ -161,6 +161,7 @@ void C_pc_heat_sink_physical::init(C_csp_power_cycle::S_solved_params &solved_pa
m_m_dot_ext_des = this->m_hx.ms_des_calc_UA_par.m_m_dot_cold_des; //[kg/s]
m_m_dot_ext_min = m_m_dot_ext_des * ms_params.m_f_m_dot_ext_min; //[kg/s]
m_m_dot_ext_max = m_m_dot_ext_des * ms_params.m_f_m_dot_ext_max; //[kg/s]
m_hx_UA_des = mc_hx_des_solved.m_UA_design; //[kW/K]

// Assign Design HTF mdot
m_m_dot_htf_des = m_hx.ms_des_calc_UA_par.m_m_dot_hot_des; //[kg/s]
Expand Down
3 changes: 3 additions & 0 deletions tcs/csp_solver_pc_heat_sink_physical.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ class C_pc_heat_sink_physical : public C_csp_power_cycle
double m_h_ext_hot_des; // [kJ/kg] Steam target outlet enthalpy
double m_T_ext_hot_des; //[C]

double m_hx_UA_des; //[kW/K]

bool m_did_init_pass; //[-]

HTFProperties mc_pc_htfProps;
Expand All @@ -87,6 +89,7 @@ class C_pc_heat_sink_physical : public C_csp_power_cycle
double get_m_dot_ext_des() { return m_m_dot_ext_des; }
double get_T_ext_out_des() { return m_T_ext_hot_des; }
double get_hx_min_dT_des() { return mc_hx_des_solved.m_min_DT_design; }
double get_hx_UA_des() { return m_hx_UA_des; }

struct S_params
{
Expand Down

0 comments on commit 6ab6bcd

Please sign in to comment.