SAM and PVlib's CEC module databases

227 views
Skip to first unread message

Erik Mårtensson

unread,
Oct 19, 2022, 8:01:34 PM10/19/22
to pvlib-python
Hello, 

I am looking at extending the CEC module database I use for PVlib (V0.9.0) since I think the SAM database is meant to be more updated (see here). There are a few things I would like to try and clarify: 
  1. Why is the number of modules in SAM's version less than in the PVlib one (~16 000 vs ~21 000)? 
  2. As far as I can deduced, there are only about 6000 duplicate module models in the two, why is that? 
  3. Since they have the same parameters, I simply joined the into one "database", is that ok to do or can anyone point out any potential issues? 
Lastly, a slightly separate question. If using Sandia's database and subsequent PVlib modelling, would that reduce the power output of the facility since more losses are taken into consideration? 

Kind regards and thank you! 
 

Silvana Ayala

unread,
Oct 20, 2022, 3:39:53 PM10/20/22
to pvlib-python
So, PVLib's CEC module database was the same as SAM, it's just an earlier version. In December 2021 SAM updated their database and removed a bunch of modules, not sure why; their release notes just states "Update CEC module and inverter libraries to December 2021 and February 2022 CEC database versions, respectively. (946)"

It messed up a bunch of my tutorials and examples. They also changed some unicode endings in some of them, so some might be there. I don't see issue in merging both databases. If you want to investigate and no one else here knows perhaps use the SAM forum to know why the change was so radical? 

S.

Silvana Ayala

unread,
Oct 20, 2022, 3:44:47 PM10/20/22
to pvlib-python
I dug up a bit more in the forum, this is the best explanation from Paul Gilman I found:


and this


So IMO yes you can keep using the other modules.

kevina...@gmail.com

unread,
Oct 20, 2022, 3:50:57 PM10/20/22
to pvlib-python
Indeed it's actually the CEC itself that is removing (most) of the entries.  I asked the CEC a while back about it, here's their reply:

> The removal of equipment is intentional, as California Energy Commission staff reserve the right to remove equipment from the eligible equipment lists as needed to ensure the successful implementation of the Solar Equipment List program. For a complete list of reasons for removal, please refer to Appendix A section B of the Guidelines for California’s Solar Electric Incentive Programs (Senate Bill 1), 7th Edition located under the Guidelines section on the Solar Equipment List website: Solar Equipment Lists. Notice of all equipment identified for removal will be provided on the CEC Solar Equipment List webpage in advance of removal on the CEC Equipment Noticed for Removal webpage linked, here: https://www.energy.ca.gov/files/equipment-noticed-removal

Note also that the module and manufacturer names can change between versions (e.g. "Canadian Solar" changed to "CSI Solar Co., Ltd."). 

> If using Sandia's database and subsequent PVlib modelling, would that reduce the power output of the facility since more losses are taken into consideration? 

It depends.  There is no attempt at enforcing consistency between the CEC and Sandia parameters for a given module, meaning even without considering the effect of losses and such, you'll get a different output power just for the PV module model itself.  Regarding the extra factors (losses) considered in the Sandia model, you can recreate those separately for use with the CEC module model (e.g. using pvlib.iam.physical for IAM).  So conceptually you can model the same thing, but the actual nuts and bolts will be different and whether you get a larger or smaller answer is up to chance.

Kevin

Erik Mårtensson

unread,
Oct 20, 2022, 6:46:11 PM10/20/22
to pvlib-python
Hello All, 

Thank you very much for your thorough answers! I think that makes sense to me. I guess there are differences between people/researchers wanting to model panels, and the CEC themselves trying to implement things like the Solar Equipment List program. 

Cheers!

Erik Mårtensson

unread,
Jan 10, 2023, 2:55:35 PM1/10/23
to pvlib-python
To anyone coming across this in the future, here is some code to join the two databasesa. Like Kevin mentioned above though, some panels might occur twice! (I take no responsibility with the data of course). 

```python 
old_cec_modules = pvlib.pvsystem.retrieve_sam('CECMod') 

updated_cec_modules = pvlib.pvsystem.retrieve_sam(path=SAM_URL) 
updated_cec_modules = updated_cec_modules.drop('Manufacturer', axis=0) 

all_modules = pd.concat([old_cec_modules, updated_cec_modules], axis=1) 
all_modules = all_modules.loc[:, ~all_mods.columns.duplicated()] 
all_modules = all_modules.T
```
Reply all
Reply to author
Forward
0 new messages