Skip to content

Commit 1af9aa1

Browse files
committed
Replace match case loop with if loop for Python 3.9 support
1 parent 146dd0b commit 1af9aa1

File tree

1 file changed

+57
-50
lines changed

1 file changed

+57
-50
lines changed

files/Pvsamv1Tools.py

Lines changed: 57 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -105,62 +105,69 @@ def size_electrical_parameters(
105105
module_power = 0
106106
module_vmp = 0
107107
module_voc = 0
108-
match module_model:
109-
case 0:
110-
ref = int(model.SimpleEfficiencyModuleModel.spe_reference)
111-
eff_list = [model.SimpleEfficiencyModuleModel.spe_eff0, model.SimpleEfficiencyModuleModel.spe_eff1, model.SimpleEfficiencyModuleModel.spe_eff2, model.SimpleEfficiencyModuleModel.spe_eff3, model.SimpleEfficiencyModuleModel.spe_eff4]
112-
rad_list = [model.SimpleEfficiencyModuleModel.spe_rad0, model.SimpleEfficiencyModuleModel.spe_rad1, model.SimpleEfficiencyModuleModel.spe_rad2, model.SimpleEfficiencyModuleModel.spe_rad3, model.SimpleEfficiencyModuleModel.spe_rad4]
113-
eff = eff_list[ref]
114-
rad = rad_list[ref]
115-
area = model.SimpleEfficiencyModuleModel.spe_area
116-
module_power = eff / 100.0 * rad * area #Wdc
117-
module_vmp = model.SimpleEfficiencyModuleModel.spe_vmp
118-
module_voc = model.SimpleEfficiencyModuleModel.spe_voc
119-
case 1:
120-
module_power = model.CECPerformanceModelWithModuleDatabase.cec_v_mp_ref * model.CECPerformanceModelWithModuleDatabase.cec_i_mp_ref
121-
module_vmp = model.CECPerformanceModelWithModuleDatabase.cec_v_mp_ref
122-
module_voc = model.CECPerformanceModelWithModuleDatabase.cec_v_oc_ref
123-
case 2:
124-
module_vmp = model.CECPerformanceModelWithUserEnteredSpecifications.sixpar_vmp
125-
module_voc = model.CECPerformanceModelWithUserEnteredSpecifications.sixpar_voc
126-
module_power = module_vmp * model.CECPerformanceModelWithUserEnteredSpecifications.sixpar_imp
127-
case 3:
128-
print('This function does not currently work for the Sandia Array Performance Model')
129-
'''
130-
module_power = model.SandiaPVArrayPerformanceModelWithModuleDatabase.snl_ref_pmp
131-
module_vmp = model.SandiaPVArrayPerformanceModelWithModuleDatabase.snl_ref_vmp
132-
module_voc = model.SandiaPVArrayPerformanceModelWithModuleDatabase.snl_ref_voc
133-
'''
134-
case 4:
135-
module_vmp = model.IEC61853SingleDiodeModel.sd11par_Vmp0
136-
module_voc = model.IEC61853SingleDiodeModel.sd11par_Voc0
137-
module_power = module_vmp * model.IEC61853SingleDiodeModel .sd11par_Imp0
138-
case 5:
139-
module_vmp = model.MermoudLejeuneSingleDiodeModel.mlm_V_mp_ref
140-
module_voc = model.MermoudLejeuneSingleDiodeModel.mlm_V_oc_ref
141-
module_power = module_vmp * model.MermoudLejeuneSingleDiodeModel.mlm_I_mp_ref
108+
109+
if(module_model==0):
110+
ref = int(model.SimpleEfficiencyModuleModel.spe_reference)
111+
eff_list = [model.SimpleEfficiencyModuleModel.spe_eff0, model.SimpleEfficiencyModuleModel.spe_eff1, model.SimpleEfficiencyModuleModel.spe_eff2, model.SimpleEfficiencyModuleModel.spe_eff3, model.SimpleEfficiencyModuleModel.spe_eff4]
112+
rad_list = [model.SimpleEfficiencyModuleModel.spe_rad0, model.SimpleEfficiencyModuleModel.spe_rad1, model.SimpleEfficiencyModuleModel.spe_rad2, model.SimpleEfficiencyModuleModel.spe_rad3, model.SimpleEfficiencyModuleModel.spe_rad4]
113+
eff = eff_list[ref]
114+
rad = rad_list[ref]
115+
area = model.SimpleEfficiencyModuleModel.spe_area
116+
module_power = eff / 100.0 * rad * area #Wdc
117+
module_vmp = model.SimpleEfficiencyModuleModel.spe_vmp
118+
module_voc = model.SimpleEfficiencyModuleModel.spe_voc
119+
elif(module_model==1):
120+
module_power = model.CECPerformanceModelWithModuleDatabase.cec_v_mp_ref * model.CECPerformanceModelWithModuleDatabase.cec_i_mp_ref
121+
module_vmp = model.CECPerformanceModelWithModuleDatabase.cec_v_mp_ref
122+
module_voc = model.CECPerformanceModelWithModuleDatabase.cec_v_oc_ref
123+
elif(module_model==2):
124+
module_vmp = model.CECPerformanceModelWithUserEnteredSpecifications.sixpar_vmp
125+
module_voc = model.CECPerformanceModelWithUserEnteredSpecifications.sixpar_voc
126+
module_power = module_vmp * model.CECPerformanceModelWithUserEnteredSpecifications.sixpar_imp
127+
elif(module_model==3):
128+
print('This function does not currently work for the Sandia Array Performance Model')
129+
'''
130+
module_power = model.SandiaPVArrayPerformanceModelWithModuleDatabase.snl_ref_pmp
131+
module_vmp = model.SandiaPVArrayPerformanceModelWithModuleDatabase.snl_ref_vmp
132+
module_voc = model.SandiaPVArrayPerformanceModelWithModuleDatabase.snl_ref_voc
133+
'''
134+
return
135+
elif(module_model==4):
136+
module_vmp = model.IEC61853SingleDiodeModel.sd11par_Vmp0
137+
module_voc = model.IEC61853SingleDiodeModel.sd11par_Voc0
138+
module_power = module_vmp * model.IEC61853SingleDiodeModel .sd11par_Imp0
139+
elif(module_model==5):
140+
module_vmp = model.MermoudLejeuneSingleDiodeModel.mlm_V_mp_ref
141+
module_voc = model.MermoudLejeuneSingleDiodeModel.mlm_V_oc_ref
142+
module_power = module_vmp * model.MermoudLejeuneSingleDiodeModel.mlm_I_mp_ref
143+
else:
144+
print('The module model is not recognized. Please use a valid module model.')
145+
return
142146

143147
inverter_model = model.Inverter.inverter_model
144148
inv_power = 0
145149
vdcmax_inv = 0
146150
v_mppt_max = 0
147151
v_mppt_min = 0
148-
match inverter_model:
149-
case 0:
150-
inv_power = model.InverterCECDatabase.inv_snl_paco
151-
vdcmax_inv = model.InverterCECDatabase.inv_snl_vdcmax
152-
case 1:
153-
inv_power = model.InverterDatasheet.inv_ds_paco
154-
vdcmax_inv = model.InverterDatasheet.inv_ds_vdcmax
155-
case 2:
156-
inv_power = model.InverterPartLoadCurve.inv_pd_paco
157-
vdcmax_inv = model.InverterPartLoadCurve.inv_pd_vdcmax
158-
case 3:
159-
inv_power = model.InverterCECCoefficientGenerator.inv_cec_cg_paco
160-
vdcmax_inv = model.InverterCECCoefficientGenerator.inv_cec_cg_vdcmax
161-
case 4:
162-
inv_power = model.InverterMermoudLejeuneModel .ond_PMaxOUT
163-
vdcmax_inv = model.InverterMermoudLejeuneModel .ond_VAbsMax
152+
153+
if(inverter_model==0):
154+
inv_power = model.InverterCECDatabase.inv_snl_paco
155+
vdcmax_inv = model.InverterCECDatabase.inv_snl_vdcmax
156+
elif (inverter_model==1):
157+
inv_power = model.InverterDatasheet.inv_ds_paco
158+
vdcmax_inv = model.InverterDatasheet.inv_ds_vdcmax
159+
elif (inverter_model==1):
160+
inv_power = model.InverterPartLoadCurve.inv_pd_paco
161+
vdcmax_inv = model.InverterPartLoadCurve.inv_pd_vdcmax
162+
elif (inverter_model==1):
163+
inv_power = model.InverterCECCoefficientGenerator.inv_cec_cg_paco
164+
vdcmax_inv = model.InverterCECCoefficientGenerator.inv_cec_cg_vdcmax
165+
elif (inverter_model==1):
166+
inv_power = model.InverterMermoudLejeuneModel .ond_PMaxOUT
167+
vdcmax_inv = model.InverterMermoudLejeuneModel .ond_VAbsMax
168+
else:
169+
print('The inverter model is not recognized. Please use a valid inverter model.')
170+
return
164171

165172
if vdcmax_inverter is not None:
166173
vdcmax_inv = vdcmax_inverter

0 commit comments

Comments
 (0)