@@ -294,12 +294,12 @@ def calcparams_desoto(poa_global, temp_cell, alpha_isc, module_parameters,
294294 database. The module_parameters dict must contain the
295295 following 5 fields:
296296
297- * A_ref - modified diode ideality factor parameter at
297+ * a_ref - modified diode ideality factor parameter at
298298 reference conditions (units of eV), a_ref can be calculated
299299 from the usual diode ideality factor (n),
300300 number of cells in series (Ns),
301301 and cell temperature (Tcell) per equation (2) in [1].
302- * I_l_ref - Light-generated current (or photocurrent)
302+ * I_L_ref - Light-generated current (or photocurrent)
303303 in amperes at reference conditions. This value is referred to
304304 as Iph in some literature.
305305 * I_o_ref - diode reverse saturation current in amperes,
@@ -447,8 +447,8 @@ def calcparams_desoto(poa_global, temp_cell, alpha_isc, module_parameters,
447447 '''
448448
449449 M = np .max (M , 0 )
450- a_ref = module_parameters ['A_ref ' ]
451- IL_ref = module_parameters ['I_l_ref ' ]
450+ a_ref = module_parameters ['a_ref ' ]
451+ IL_ref = module_parameters ['I_L_ref ' ]
452452 I0_ref = module_parameters ['I_o_ref' ]
453453 Rsh_ref = module_parameters ['R_sh_ref' ]
454454 Rs_ref = module_parameters ['R_s' ]
@@ -472,13 +472,13 @@ def calcparams_desoto(poa_global, temp_cell, alpha_isc, module_parameters,
472472
473473def retrieve_sam (name = None , samfile = None ):
474474 '''
475- Retrieve lastest module and inverter info from SAM website.
475+ Retrieve latest module and inverter info from SAM website.
476476
477477 This function will retrieve either:
478478
479479 * CEC module database
480480 * Sandia Module database
481- * Sandia Inverter database
481+ * CEC Inverter database
482482
483483 and return it as a pandas dataframe.
484484
@@ -489,7 +489,8 @@ def retrieve_sam(name=None, samfile=None):
489489 Name can be one of:
490490
491491 * 'CECMod' - returns the CEC module database
492- * 'SandiaInverter' - returns the Sandia Inverter database
492+ * 'CECInverter' - returns the CEC Inverter database
493+ * 'SandiaInverter' - returns the CEC Inverter database (CEC is only current inverter db available; tag kept for backwards compatibility)
493494 * 'SandiaMod' - returns the Sandia Module database
494495
495496 samfile : String
@@ -503,14 +504,14 @@ def retrieve_sam(name=None, samfile=None):
503504 Returns
504505 -------
505506 A DataFrame containing all the elements of the desired database.
506- Each column representa a module or inverter, and a specific dataset
507- can be retreived by the command
507+ Each column represents a module or inverter, and a specific dataset
508+ can be retrieved by the command
508509
509510 Examples
510511 --------
511512
512513 >>> from pvlib import pvsystem
513- >>> invdb = pvsystem.retrieve_sam(name='SandiaInverter ')
514+ >>> invdb = pvsystem.retrieve_sam(name='CECInverter ')
514515 >>> inverter = invdb.AE_Solar_Energy__AE6_0__277V__277V__CEC_2012_
515516 >>> inverter
516517 Vac 277.000000
@@ -534,11 +535,11 @@ def retrieve_sam(name=None, samfile=None):
534535 name = name .lower ()
535536
536537 if name == 'cecmod' :
537- url = 'https://sam.nrel.gov/sites/sam.nrel.gov/files/sam-library-cec-modules-2014-1-14 .csv'
538+ url = 'https://sam.nrel.gov/sites/sam.nrel.gov/files/sam-library-cec-modules-2015-6-30 .csv'
538539 elif name == 'sandiamod' :
539- url = 'https://sam.nrel.gov/sites/sam.nrel.gov/files/sam-library-sandia-modules-2014-1-14 .csv'
540- elif name == ' sandiainverter':
541- url = 'https://sam.nrel.gov/sites/sam.nrel.gov/files/sam-library-sandia -inverters-2014-1-14 .csv'
540+ url = 'https://sam.nrel.gov/sites/sam.nrel.gov/files/sam-library-sandia-modules-2015-6-30 .csv'
541+ elif name in [ 'cecinverter' , ' sandiainverter']: # Allowing either, to provide for old code, while aligning with current expectations
542+ url = 'https://sam.nrel.gov/sites/sam.nrel.gov/files/sam-library-cec -inverters-2015-6-30 .csv'
542543 elif samfile is None :
543544 raise ValueError ('invalid name {}' .format (name ))
544545
@@ -561,13 +562,22 @@ def retrieve_sam(name=None, samfile=None):
561562
562563
563564def _parse_raw_sam_df (csvdata ):
564- df = pd .read_csv (csvdata , index_col = 0 )
565+ df = pd .read_csv (csvdata , index_col = 0 , skiprows = [1 ,2 ])
566+ colnames = df .columns .values .tolist ()
567+ parsedcolnames = []
568+ for cn in colnames :
569+ parsedcolnames .append (cn .replace (' ' , '_' ))
570+
571+ df .columns = parsedcolnames
572+
565573 parsedindex = []
566574 for index in df .index :
567575 parsedindex .append (index .replace (' ' , '_' ).replace ('-' , '_' )
568576 .replace ('.' , '_' ).replace ('(' , '_' )
569577 .replace (')' , '_' ).replace ('[' , '_' )
570- .replace (']' , '_' ).replace (':' , '_' ))
578+ .replace (']' , '_' ).replace (':' , '_' )
579+ .replace ('+' , '_' ).replace ('/' , '_' )
580+ .replace ('"' , '_' ).replace (',' , '_' ))
571581
572582 df .index = parsedindex
573583 df = df .transpose ()
@@ -635,7 +645,7 @@ def sapm(module, poa_direct, poa_diffuse, temp_cell, airmass_absolute, aoi):
635645 reference condition (1/C)
636646 Aimp Maximum power current temperature coefficient at
637647 reference condition (1/C)
638- Bvoc Open circuit voltage temperature coefficient at
648+ Bvoco Open circuit voltage temperature coefficient at
639649 reference condition (V/C)
640650 Mbvoc Coefficient providing the irradiance dependence for the BetaVoc
641651 temperature coefficient at reference irradiance (V/C)
@@ -644,7 +654,7 @@ def sapm(module, poa_direct, poa_diffuse, temp_cell, airmass_absolute, aoi):
644654 Mbvmp Coefficient providing the irradiance dependence for the
645655 BetaVmp temperature coefficient at reference irradiance (V/C)
646656 N Empirically determined "diode factor" (dimensionless)
647- #Series Number of cells in series in a module's cell string(s)
657+ Cells_in_Series Number of cells in series in a module's cell string(s)
648658 IXO Ix at reference conditions
649659 IXXO Ixx at reference conditions
650660 FD Fraction of diffuse irradiance used by module
@@ -693,12 +703,12 @@ def sapm(module, poa_direct, poa_diffuse, temp_cell, airmass_absolute, aoi):
693703 (1 + module ['Aimp' ]* (temp_cell - T0 )) )
694704
695705 dfout ['v_oc' ] = (( module ['Voco' ] +
696- module ['#Series ' ]* delta * np .log (Ee ) + Bvoco * (temp_cell - T0 ) )
706+ module ['Cells_in_Series ' ]* delta * np .log (Ee ) + Bvoco * (temp_cell - T0 ) )
697707 .clip_lower (0 ))
698708
699709 dfout ['v_mp' ] = ( module ['Vmpo' ] +
700- module ['C2' ]* module ['#Series ' ]* delta * np .log (Ee ) +
701- module ['C3' ]* module ['#Series ' ]* ((delta * np .log (Ee )) ** 2 ) +
710+ module ['C2' ]* module ['Cells_in_Series ' ]* delta * np .log (Ee ) +
711+ module ['C3' ]* module ['Cells_in_Series ' ]* ((delta * np .log (Ee )) ** 2 ) +
702712 Bvmpo * (temp_cell - T0 ) ).clip_lower (0 )
703713
704714 dfout ['p_mp' ] = dfout ['i_mp' ] * dfout ['v_mp' ]
0 commit comments