Skip to content

Commit

Permalink
fixing flux maps for particle tower
Browse files Browse the repository at this point in the history
  • Loading branch information
qualand committed Apr 26, 2024
1 parent ae725c0 commit c0db6c2
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 19 deletions.
26 changes: 11 additions & 15 deletions ssc/cmod_csp_tower_particle.cpp
Expand Up @@ -2047,7 +2047,7 @@ class cm_csp_tower_particle : public compute_module
size_t n_rows_eta_map = heliostatfield.ms_params.m_eta_map.nrows(); // Number of solar positions
ssc_number_t *eta_map_out = allocate("eta_map_out", n_rows_eta_map, 3);
size_t n_rows_flux_maps = heliostatfield.ms_params.m_flux_maps.nrows(); // solar positions * number of y flux points
size_t n_cols_flux_maps = heliostatfield.ms_params.m_flux_maps.ncols(); // REMOVED Adding 2 for solar positions
size_t n_cols_flux_maps = heliostatfield.ms_params.m_flux_maps.ncols() + 2;
ssc_number_t *flux_maps_out = allocate("flux_maps_out", n_rows_flux_maps, n_cols_flux_maps);
ssc_number_t *flux_maps_for_import = allocate("flux_maps_for_import", n_rows_flux_maps, n_cols_flux_maps);
size_t rec_n_flux_x = heliostatfield.ms_params.m_n_flux_x;
Expand All @@ -2061,24 +2061,20 @@ class cm_csp_tower_particle : public compute_module
double flux_scaling_mult = as_double("dni_des")*heliostatfield.ms_params.m_A_sf / 1000.0 /
(A_rec_curtain / double(rec_n_flux_x * rec_n_flux_y));

ssc_number_t azi_angle, zen_angle;
for (size_t i = 0; i < n_rows_eta_map; i++) { // for each solar position
azi_angle = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 0); //[deg] Solar azimuth angle
zen_angle = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 1); //[deg] Solar zenith angle
eta_map_out[3 * i] = azi_angle;
eta_map_out[3 * i + 1] = zen_angle;
eta_map_out[3 * i + 2] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 2); //[deg] Solar field optical efficiency
eta_map_out[3 * i] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 0); //[deg] Solar azimuth angle
eta_map_out[3 * i + 1] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 1); //[deg] Solar zenith angle
eta_map_out[3 * i + 2] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 2); //[deg] Solar field optical efficiency
size_t idx;
for (size_t j = 0; j < rec_n_flux_y; j++) { // for all y flux positions
idx = rec_n_flux_y * n_cols_flux_maps * i + n_cols_flux_maps * j;
//flux_maps_for_import[idx] = flux_maps_out[idx] = azi_angle;
//flux_maps_for_import[idx + 1] = flux_maps_out[idx + 1] = zen_angle;
size_t flux_map_row;
for (size_t k = 0; k < n_cols_flux_maps; k++) {
flux_map_row = rec_n_flux_y * i + j;
flux_maps_out[idx + k] =
(ssc_number_t)(heliostatfield.ms_params.m_flux_maps(flux_map_row, k) * heliostatfield.ms_params.m_eta_map(i, 2) * flux_scaling_mult); //[kW/m^2]
flux_maps_for_import[idx + k] = (ssc_number_t)heliostatfield.ms_params.m_flux_maps(flux_map_row, k);
flux_maps_for_import[idx] = flux_maps_out[idx] = eta_map_out[3 * i]; //[deg] Solar azimuth angle
idx++;
flux_maps_for_import[idx] = flux_maps_out[idx] = eta_map_out[3 * i + 1]; //[deg] Solar zenith angle
idx++;
for (size_t k = 0; k < n_cols_flux_maps-2; k++) {
flux_maps_out[idx + k] = (ssc_number_t)(heliostatfield.ms_params.m_flux_maps(rec_n_flux_y * i + j, k) * heliostatfield.ms_params.m_eta_map(i, 2) * flux_scaling_mult); //[kW/m^2]
flux_maps_for_import[idx + k] = (ssc_number_t)heliostatfield.ms_params.m_flux_maps(rec_n_flux_y * i + j, k);
}
}
}
Expand Down
6 changes: 2 additions & 4 deletions ssc/cmod_tcsmolten_salt.cpp
Expand Up @@ -2845,10 +2845,8 @@ class cm_tcsmolten_salt : public compute_module

for( size_t i = 0; i < n_rows_eta_map; i++ )
{
flux_maps_out[n_cols_flux_maps*i] = eta_map_out[3 * i] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 0); //[deg] Solar azimuth angle
flux_maps_out[n_cols_flux_maps*i + 1] = eta_map_out[3 * i + 1] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 1); //[deg] Solar zenith angle
flux_maps_for_import[n_cols_flux_maps*i] = eta_map_out[3 * i] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 0); //[deg] Solar azimuth angle
flux_maps_for_import[n_cols_flux_maps*i + 1] = eta_map_out[3 * i + 1] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 1); //[deg] Solar zenith angle
flux_maps_for_import[n_cols_flux_maps * i] = flux_maps_out[n_cols_flux_maps*i] = eta_map_out[3 * i] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 0); //[deg] Solar azimuth angle
flux_maps_for_import[n_cols_flux_maps * i + 1] = flux_maps_out[n_cols_flux_maps*i + 1] = eta_map_out[3 * i + 1] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 1); //[deg] Solar zenith angle
eta_map_out[3 * i + 2] = (ssc_number_t)heliostatfield.ms_params.m_eta_map(i, 2); //[deg] Solar field optical efficiency
for( size_t j = 2; j < n_cols_flux_maps; j++ )
{
Expand Down

0 comments on commit c0db6c2

Please sign in to comment.