Skip to content

Conversation

@mjprilliman
Copy link
Collaborator

-new cross_axis_slope function to calculate cross axis slope from terrain tilt and azimuth
-PVsamv1 allows for terrain effects on shadeFraction for non-zero terrain inputs
-Additional inputs to shadeFraction function, given 0 values for flat terrain for all non-pvsamv1 instances
-Added test for non-zero terrain inputs
-Reference: https://www.nrel.gov/docs/fy20osti/76626.pdf

@mjprilliman mjprilliman added the pv photovoltaic, pvsam, pvwatts label Nov 9, 2021
@mjprilliman mjprilliman added this to the SAM Fall 2021 Release milestone Nov 9, 2021
@mjprilliman mjprilliman self-assigned this Nov 9, 2021
@janinefreeman janinefreeman removed the request for review from dguittet November 11, 2021 17:55
Copy link
Collaborator

@janinefreeman janinefreeman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the one comment about changing the input to irradproc, looks good to me!

{ SSC_INPUT, SSC_NUMBER, "rotlim", "Rotational limit on tracker", "deg", "", "Irradiance Processor", "?=45", "MIN=0,MAX=90", "" },
{ SSC_INPUT, SSC_NUMBER, "backtrack", "Enable backtracking", "0/1", "", "Irradiance Processor", "?=0", "BOOLEAN", "" },
{ SSC_INPUT, SSC_NUMBER, "gcr", "Ground coverage ratio", "0..1", "", "Irradiance Processor", "backtrack=1", "MIN=0,MAX=1", "" },
{ SSC_INPUT, SSC_NUMBER, "cross_axis_slope", "Cross axis slope", "deg", "", "Irradiance Processor", "backtrack=1", "MIN=0,MAX=1", "" },
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we don't want this input to be required, but rather to be set by default to zero (?=0).

@mjprilliman mjprilliman merged commit 44f15ca into develop Nov 12, 2021
@mjprilliman mjprilliman deleted the cross_axis_slope branch November 12, 2021 18:09
Copy link
Member

@kandersolar kandersolar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi folks, thanks again for finishing this up! Here are some comments, maybe too little too late at this point.

@mikofski fyi

else if (en_backtrack) {
// TODO: add cross-axis slope angle parameter
double backtracking_rotation = backtrack(truetracking_rotation * 180 / M_PI, gcr);
double axis_slope = cross_axis_slope(slope_tilt, azm, slope_azm);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

axis_slope has potential to be misinterpreted as axis tilt if not reading carefully. Maybe rename the function to calc_cross_axis_slope and then the variable can be named cross_axis_slope? Just an idea :)

Also, I think the comment in the line above can be removed now. Similar comments appear in this file in a couple other places.

* \return fraction shaded (0-1) if system is shaded (0 for unshaded)
*/
double shadeFraction1x(double solar_azimuth, double solar_zenith, double axis_tilt, double axis_azimuth, double gcr, double rotation);
double shadeFraction1x(double solar_azimuth, double solar_zenith, double axis_tilt, double axis_azimuth, double gcr, double rotation, double slope_tilt, double slope_azimuth);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do these new parameters need to be listed in the docs comment above?

* \return updated rotation angle in degrees after backtracking
*/
double backtrack(double truetracking_rotation, double gcr);
double backtrack(double truetracking_rotation, double gcr, double axis_slope);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment re: listing new param in the doc comment

{SSC_INPUT, SSC_NUMBER, "subarray2_rotlim", "Sub-array 2 Tracker rotation limit", "deg", "", "System Design", "?=45", "MIN=0,MAX=85", "" },
{SSC_INPUT, SSC_NUMBER, "subarray2_shade_mode", "Sub-array 2 Shading mode (fixed tilt or 1x tracking)","0/1/2", "0=none,1=standard(non-linear),2=thin film(linear)", "Shading", "subarray2_enable=1", "INTEGER,MIN=0,MAX=2", "" },
{SSC_INPUT, SSC_NUMBER, "subarray2_gcr", "Sub-array 2 Ground coverage ratio", "0..1", "", "System Design", "?=0.3", "MIN=0.01,MAX=0.99", "" },
{SSC_INPUT, SSC_NUMBER, "subarray2_slope_tilt", "Sub-array 1 Cross axis slope", "deg", "", "System Design", "?=0.0", "", "" },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is for subarray2 but says "Sub-array 1 Cross axis slope". Same for subarrays 3 and 4

{SSC_INPUT, SSC_NUMBER, "subarray1_shade_mode", "Sub-array 1 shading mode (fixed tilt or 1x tracking)","0/1/2", "0=none,1=standard(non-linear),2=thin film(linear)", "Shading", "*", "INTEGER,MIN=0,MAX=2", "" },
{SSC_INPUT, SSC_NUMBER, "subarray1_gcr", "Sub-array 1 Ground coverage ratio", "0..1", "", "System Design", "?=0.3", "MIN=0.01,MAX=0.99", "" },
{SSC_INPUT, SSC_NUMBER, "subarray1_slope_tilt", "Sub-array 1 Cross axis slope", "deg", "", "System Design", "?=0.0", "", "" },
{SSC_INPUT, SSC_NUMBER, "subarray1_slope_azm", "Sub-array 1 Cross axis slope", "deg", "", "System Design", "?=0.0", "", "" },
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there are two issues in the description here -- first, Sub-array 1 Cross axis slope is used for both slope_tilt and slope_azm inputs. Second, I don't think either of these is actually a cross-axis slope :)

And same for subarrays 2-4

@mjprilliman
Copy link
Collaborator Author

Thanks Kevin! I'll add your edits in a separate commit as that will help eliminate a lot of confusion for anyone looking at this code in ssc. @janinefreeman these are all just text changes so I think I'll just commit them to develop

cpaulgilman added a commit to NREL/SAM that referenced this pull request Feb 17, 2022
Revise description of load data time convention.

Remove O&M cost content from Installation Costs topics.

Add ETES topics and fix broken help links.

Fix typo on battery storage FOM "BTM" insteasd of "FOM"

Wind resource files can now be .csv in addition to .srw

Revise capacity factor descriptions for PV and Battery storage configs, #905

Wave resource instructions for converting from time series to JPD, #892

Revise PV land area calculations to account for GCR and tilt angle, #928

Add pvlib column headings to SAM CSV format description, NREL/ssc#754

Revised Operating Cost input pages

Check for "annual energy" vs new "electricity to grid".

Change "battery autonomy" to "autonomy".

Revise power tower heliostat field to better explain how check box vs button works.

Add note for degradation by year that Year 1 value should be zero, #755

Remove debt from payback period description. Also remove detailed cash flow descriptions and replace with mention of send-to-Excel with equations and spreadsheets on website. See Amir Nashed email 1/19/21 and https://sam.nrel.gov/forum/forum-general/1052

Revise Electricity Purchases page to be specific for FOM projects

New LCOS metrics: #529

Electricity rates revisions from Brian.

Reporting of electricity bill in time series results, see NREL/ssc#652

New parametrics features

Parametrics description of how to work with SchedNumeric variables like PPA price. See Brian email 7/21/2021

Update Heliostat Field per #717

New PV slope inputs on System Design page. See #742, NREL/ssc#648

New "Limit debt fraction" Input on Financial Parameters page for PPA models

New ETES model.

Fix outdated description of NSRDB in Location and Resource topic

UDPC updates from Ty, see Revisions 2021 folder. Also post new PDF version of Ty and Matt's description under "CSP Power Cycle Models"  on SAM website https://sam.nrel.gov/concentrating-solar-power/csp-publications.html,  https://sam.nrel.gov/images/web_page_files/Neises-DRAFT-user-defined-power-cycle-v3-2018.pdf

Fix excess generation descriptions in help: https://sam.nrel.gov/forum/forum-general/3485. Also maybe change "Excess generation" to "Excess generation for net metering" or similar.

Note for URDB download that demand ratchet data in URDB is unreliable, so check with data sheet.

Demand charges with ratcheting lookback months. See Revision Notes mirletz-RE Adding billing demand lookback to SAM.msg, see [[F:\OneDrive\SAM\Utility Rates\Demand Ratchets\Initial Tests May 2021]]

Update pv smoothing per Steve's email 12/9/2021 "pv smoothing question"

Improve description of FOM automated dispatch. See https://sam.nrel.gov/forum/forum-general/3681

Revise electricity rates page

Consolidate weekday/weekend schedule descriptions.

SWH remove old hot water draw import instructions.

Revise electricity purchases PPA price option not available with Specify IRR target, and purchases treated as tax-deductible operating expense.

Move electricity purchases page to from Battery section to Electricity Rates and Load section

Edit Lifetime Data add note about pasting data from Excel: Thousands comma separator causes paste not to work correctly, e.g, 1,000 is pasted as 1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pv photovoltaic, pvsam, pvwatts

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants