@@ -118,6 +118,8 @@ static var_info _cm_vtab_csp_tower_particle[] = {
118118 { SSC_INPUT, SSC_NUMBER, " washing_frequency" , " Mirror washing frequency" , " none" , " " , " Heliostat Field" , " *" , " " , " " },
119119 { SSC_INPUT, SSC_NUMBER, " check_max_flux" , " Check max flux at design point" , " " , " " , " Heliostat Field" , " ?=0" , " " , " " },
120120 { SSC_INPUT, SSC_NUMBER, " sun_loc_des" , " Sun location at design point (0 = Summer solstice, 1 = Equinox, 2 = Winter solstice)" , " " , " " , " Heliostat Field" , " ?=0" , " " , " " },
121+ { SSC_INPUT, SSC_NUMBER, " solar_field_des_factor" , " Solar field design factor" , " " , " " , " Heliostat Field" , " ?=1" , " " , " " },
122+
121123
122124 // Inputs required for user-defined SF performance when field_model_type = 4
123125 // Values can be defined by mapping to equivalent _calc output for simulation results with field_model_type < 3
@@ -404,6 +406,7 @@ static var_info _cm_vtab_csp_tower_particle[] = {
404406 { SSC_OUTPUT, SSC_NUMBER, " total_land_area_calc" , " Total land area - out" , " acre" , " " , " Heliostat Field" , " *" , " " , " " },
405407 { SSC_OUTPUT, SSC_NUMBER, " W_dot_col_tracking_des" , " Collector tracking power at design" , " MWe" , " " , " Heliostat Field" , " *" , " " , " " },
406408
409+
407410 // Receiver Geometry
408411 { SSC_OUTPUT, SSC_ARRAY, " rec_height_calc" , " Receiver height - out" , " m" , " " , " Tower and Receiver" , " *" , " " , " " },
409412 { SSC_OUTPUT, SSC_ARRAY, " rec_width_calc" , " Receiver width - out" , " m" , " " , " Tower and Receiver" , " *" , " " , " " },
@@ -946,13 +949,14 @@ class cm_csp_tower_particle : public compute_module
946949 refl_image_error = std::sqrt (2 . * helio_optical_error_mrad * 2 . * helio_optical_error_mrad * 2 .); // [mrad]
947950 assign (" refl_image_error" , refl_image_error); // [mrad]
948951 assign (" helio_optical_error" , (ssc_number_t )(helio_optical_error_mrad * 1 .E -3 ));
952+ double solar_field_des_factor = as_number (" solar_field_des_factor" );
953+ assign (" q_design" , q_dot_rec_des * solar_field_des_factor); // [MWt]
949954
950955 if (field_model_type < 4 ) {
951956 // Field types 0-3 Requires solarPILOT
952957 if (field_model_type == 0 && sim_type == 1 ) {
953958 // Run heliostat field / receiver optimization first
954959 solarpilot_invoke spi_opt (this );
955- assign (" q_design" , q_dot_rec_des); // [MWt]
956960
957961 // Optimize design field and tower/receiver geometry without flux_map calculations
958962 assign (" is_optimize" , 1 );
@@ -1008,7 +1012,6 @@ class cm_csp_tower_particle : public compute_module
10081012 }
10091013
10101014 solarpilot_invoke spi (this );
1011- assign (" q_design" , q_dot_rec_des); // [MWt]
10121015
10131016 // TODO: Check 'n_flux_x' and 'n_flux_y'?
10141017 // - n_flux_y must be greater than the number of troughs in the curtain
0 commit comments