Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt5 import QtCore
- from PyQt5.QtWidgets import QStackedWidget, QApplication, QMainWindow, QSizePolicy, QWidget, QComboBox, QLabel, QRadioButton, QMenu,QVBoxLayout, QCheckBox, QGridLayout, QLineEdit, QPushButton, QPushButton, QAction, QSizePolicy
- from PyQt5.QtGui import *
- from PyQt5.QtCore import *
- import matplotlib
- matplotlib.use("Qt5Agg")
- from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
- from matplotlib.figure import Figure
- import matplotlib.patches as mpatches
- import matplotlib as mpl
- from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
- import matplotlib.pyplot as plt
- import backend
- import random
- import xlrd
- import xlsxwriter
- import pandas
- import numpy as np
- workbook = xlrd.open_workbook('maindatafromneckelandlabs.xlsx')
- Data = pandas.read_excel("maindatafromneckelandlabs.xlsx")
- Lambda = list(Data.loc[:,"Wavelength"])
- ETS = list(Data.loc[:,"Spectrum"])
- a_w = list(Data.loc[:,"aw"])
- a_o = list(Data.loc[:,"ao"])
- a_u = list(Data.loc[:,"au"])
- Number = len(Lambda)
- CO_excel = xlrd.open_workbook('Carbon_monoxide.xlsx')
- CO_data = pandas.read_excel("Carbon_monoxide.xlsx")
- CO_values = list(CO_data.loc[:,"absorp"])
- Methane_excel = xlrd.open_workbook('Methane.xlsx')
- Methane_data = pandas.read_excel("Methane.xlsx")
- Methane_values = list(Methane_data.loc[:,"absorp"])
- Ammonium_excel = xlrd.open_workbook('Ammonium.xlsx')
- Ammonium_data = pandas.read_excel("Ammonium.xlsx")
- Ammonium_values = list(Ammonium_data.loc[:,"absorp"])
- HCL_excel = xlrd.open_workbook('Hydrogen_Chloride.xlsx')
- HCL_data = pandas.read_excel("Hydrogen_Chloride.xlsx")
- HCL_values = list(HCL_data.loc[:,"absorp"])
- SD_excel = xlrd.open_workbook('Sulphur_Dioxide.xlsx')
- SD_data = pandas.read_excel("Sulphur_Dioxide.xlsx")
- SD_values = list(SD_data.loc[:,"absorp"])
- ND_excel = xlrd.open_workbook('Nitrogen_Dioxide.xlsx')
- ND_data = pandas.read_excel("Nitrogen_Dioxide.xlsx")
- ND_values = list(ND_data.loc[:,"absorp"])
- NM_excel = xlrd.open_workbook('Nitrogen_Monoxide.xlsx')
- NM_data = pandas.read_excel("Nitrogen_Monoxide.xlsx")
- NM_values = list(NM_data.loc[:,"absorp"])
- DM_excel = xlrd.open_workbook('Dinitrogen_monoxide.xlsx')
- DM_data = pandas.read_excel("Dinitrogen_monoxide.xlsx")
- DM_values = list(DM_data.loc[:,"absorp"])
- Solid_values = [1]*Number
- TG = [1]*Number
- class MyCanvas(FigureCanvas):
- def __init__(self, parent=None, width=6, height=4, dpi=100):
- fig = Figure(figsize=(width, height), dpi=dpi)
- self.axes = fig.add_subplot(111)
- self.compute_figure()
- FigureCanvas.__init__(self, fig)
- self.setParent(parent)
- FigureCanvas.setSizePolicy(self,
- 600,
- 400)
- FigureCanvas.updateGeometry(self)
- def compute_figure(self):
- pass
- class App(QMainWindow):
- def __init__(self):
- super().__init__()
- self.left = 30
- self.top = 30
- self.title = 'Irradiance calculator'
- self.width = 900
- self.height =500
- self.initUI()
- def initUI(self):
- self.setWindowTitle(self.title)
- self.setGeometry(self.left, self.top, self.width, self.height)
- mainMenu = self.menuBar()
- fileMenu = mainMenu.addMenu('File')
- editMenu = mainMenu.addMenu('Edit')
- viewMenu = mainMenu.addMenu('View')
- searchMenu = mainMenu.addMenu('Search')
- toolsMenu = mainMenu.addMenu('Tools')
- helpMenu = mainMenu.addMenu('Help')
- exitButton = QAction(QIcon('exit24.png'), 'Exit', self)
- exitButton.setShortcut('Ctrl+Q')
- exitButton.setStatusTip('Exit application')
- exitButton.triggered.connect(self.close)
- fileMenu.addAction(exitButton)
- self.Index = 0
- self.main_widget = QWidget(self)
- Main = QGridLayout(self.main_widget)
- InputsL = QLabel("Inputs",self)
- Main.addWidget(InputsL,0,3,1,1)
- VariL = QLabel("Variables",self)
- Main.addWidget(VariL,0,4,1,1)
- GasL = QLabel("Gas Variables",self)
- Main.addWidget(GasL,0,5,1,1)
- PathL = QLabel("Height of gas (km)",self)
- Main.addWidget(PathL,0,6,1,1)
- PathL = QLabel("Concentration(mol/m^2))",self)
- Main.addWidget(PathL,0,7,1,1)
- self.DayV = QLineEdit("10",self)
- Main.addWidget(self.DayV,1,3,1,1)
- DayL = QLabel("Day (1-365)",self)
- Main.addWidget(DayL,1,4,1,1)
- self.PressureV = QLineEdit("1013",self)
- Main.addWidget(self.PressureV,2,3,1,1)
- PressureL = QLabel("Pressure at surface (mb)",self)
- Main.addWidget(PressureL,2,4,1,1)
- self.WaterV = QLineEdit("2.5",self)
- Main.addWidget(self.WaterV,3,3,1,1)
- WaterL = QLabel("Precitable water vapour (cm)",self)
- Main.addWidget(WaterL,3,4,1,1)
- self.HeightV = QLineEdit("22",self)
- Main.addWidget(self.HeightV,4,3,1,1)
- HeightL = QLabel("Ozone Height (km)",self)
- Main.addWidget(HeightL,4,4,1,1)
- self.OzoneV = QLineEdit("0.344",self)
- Main.addWidget(self.OzoneV,5,3,1,1)
- OzoneL = QLabel("Ozone amount (atm-cm)",self)
- Main.addWidget(OzoneL,5,4,1,1)
- self.TiltV = QLineEdit("0",self)
- Main.addWidget(self.TiltV,6,3,1,1)
- TiltL = QLabel("Tilt angle towards equator",self)
- Main.addWidget(TiltL,6,4,1,1)
- self.TurbV = QLineEdit("0.1",self)
- Main.addWidget(self.TurbV,7,3,1,1)
- TurbL = QLabel("Turbidity at 0.5",self)
- Main.addWidget(TurbL,7,4,1,1)
- self.drop = QComboBox()
- self.drop.addItem( "User inputs of Zenith and Incidence Angles",0)
- self.drop.addItem( "User inputs of Time and Latitude",1)
- Main.addWidget(self.drop,8,3,1,2)
- self.drop1 = QComboBox()
- Main.addWidget(self.drop1,1,5,1,1)
- self.drop1.addItem( "None",0)
- self.drop1.addItem( "Carbon Monoxide",1)
- self.drop1.addItem( "Methane",2)
- self.drop1.addItem( "Ammonium",3)
- self.drop1.addItem( "Hydrogen Chloride",4)
- self.drop1.addItem( "Sulphur Dioxide",5)
- self.drop1.addItem( "Nitrogen Dioxide",6)
- self.drop1.addItem( "Nitrogen Monoxide",7)
- self.drop1.addItem( "Dinitorgen Monoxide",8)
- self.drop1.addItem( "Solid",9)
- self.drop1.activated.connect(self.display1)
- self.path1 = QLineEdit("0",self)
- Main.addWidget(self.path1,1,6,1,1)
- self.mass1 = QLineEdit("0",self)
- Main.addWidget(self.mass1,1,7,1,1)
- self.drop2 = QComboBox()
- Main.addWidget(self.drop2,2,5,1,1)
- self.drop2.addItem( "None",0)
- self.drop2.addItem( "Carbon Monoxide",1)
- self.drop2.addItem( "Methane",2)
- self.drop2.addItem( "Ammonium",3)
- self.drop2.addItem( "Hydrogen Chloride",4)
- self.drop2.addItem( "Sulphur Dioxide",5)
- self.drop2.addItem( "Nitrogen Dioxide",6)
- self.drop2.addItem( "Nitrogen Monoxide",7)
- self.drop2.addItem( "Dinitorgen Monoxide",8)
- self.drop2.addItem( "Solid",9)
- self.drop2.activated.connect(self.display2)
- self.path2 = QLineEdit("0",self)
- Main.addWidget(self.path2,2,6,1,1)
- self.mass2 = QLineEdit("0",self)
- Main.addWidget(self.mass2,2,7,1,1)
- self.drop3 = QComboBox()
- Main.addWidget(self.drop3,3,5,1,1)
- self.drop3.addItem( "None",0)
- self.drop3.addItem( "Carbon Monoxide",1)
- self.drop3.addItem( "Methane",2)
- self.drop3.addItem( "Ammonium",3)
- self.drop3.addItem( "Hydrogen Chloride",4)
- self.drop3.addItem( "Sulphur Dioxide",5)
- self.drop3.addItem( "Nitrogen Dioxide",6)
- self.drop3.addItem( "Nitrogen Monoxide",7)
- self.drop3.addItem( "Dinitorgen Monoxide",8)
- self.drop3.addItem( "Solid",9)
- self.drop3.activated.connect(self.display3)
- self.path3 = QLineEdit("0",self)
- Main.addWidget(self.path3,3,6,1,1)
- self.mass3 = QLineEdit("0",self)
- Main.addWidget(self.mass3,3,7,1,1)
- self.drop4 = QComboBox()
- Main.addWidget(self.drop4,4,5,1,1)
- self.drop4.addItem( "None",0)
- self.drop4.addItem( "Carbon Monoxide",1)
- self.drop4.addItem( "Methane",2)
- self.drop4.addItem( "Ammonium",3)
- self.drop4.addItem( "Hydrogen Chloride",4)
- self.drop4.addItem( "Sulphur Dioxide",5)
- self.drop4.addItem( "Nitrogen Dioxide",6)
- self.drop4.addItem( "Nitrogen Monoxide",7)
- self.drop4.addItem( "Dinitorgen Monoxide",8)
- self.drop4.addItem( "Solid",9)
- self.drop4.activated.connect(self.display4)
- self.path4 = QLineEdit("0",self)
- Main.addWidget(self.path4,4,6,1,1)
- self.mass4 = QLineEdit("0",self)
- Main.addWidget(self.mass4,4,7,1,1)
- self.drop5 = QComboBox()
- Main.addWidget(self.drop5,5,5,1,1)
- self.drop5.addItem( "None",0)
- self.drop5.addItem( "Carbon Monoxide",1)
- self.drop5.addItem( "Methane",2)
- self.drop5.addItem( "Ammonium",3)
- self.drop5.addItem( "Hydrogen Chloride",4)
- self.drop5.addItem( "Sulphur Dioxide",5)
- self.drop5.addItem( "Nitrogen Dioxide",6)
- self.drop5.addItem( "Nitorgen Monoxide",7)
- self.drop5.addItem( "Dinitorgen Monoxide",8)
- self.drop5.addItem( "Solid",9)
- self.drop5.activated.connect(self.display5)
- self.path5 = QLineEdit("0",self)
- Main.addWidget(self.path5,5,6,1,1)
- self.mass5 = QLineEdit("0",self)
- Main.addWidget(self.mass5,5,7,1,1)
- self.drop6 = QComboBox()
- Main.addWidget(self.drop6,6,5,1,1)
- self.drop6.addItem( "None",0)
- self.drop6.addItem( "Carbon Monoxide",1)
- self.drop6.addItem( "Methane",2)
- self.drop6.addItem( "Ammonium",3)
- self.drop6.addItem( "Hydrogen Chloride",4)
- self.drop6.addItem( "Sulphur Dioxide",5)
- self.drop6.addItem( "Nitrogen Dioxide",6)
- self.drop6.addItem( "Nitorgen Monoxide",7)
- self.drop6.addItem( "Dinitorgen Monoxide",8)
- self.drop6.addItem( "Solid",9)
- self.drop6.activated.connect(self.display6)
- self.path6 = QLineEdit("0",self)
- Main.addWidget(self.path6,6,6,1,1)
- self.mass6 = QLineEdit("0",self)
- Main.addWidget(self.mass6,6,7,1,1)
- self.drop7 = QComboBox()
- Main.addWidget(self.drop7,7,5,1,1)
- self.drop7.addItem( "None",0)
- self.drop7.addItem( "Carbon Monoxide",1)
- self.drop7.addItem( "Methane",2)
- self.drop7.addItem( "Ammonium",3)
- self.drop7.addItem( "Hydrogen Chloride",4)
- self.drop7.addItem( "Sulphur Dioxide",5)
- self.drop7.addItem( "Nitrogen Dioxide",6)
- self.drop7.addItem( "Nitorgen Monoxide",7)
- self.drop7.addItem( "Dinitorgen Monoxide",8)
- self.drop7.addItem( "Solid",9)
- self.drop1.activated.connect(self.display7)
- self.path7 = QLineEdit("0",self)
- Main.addWidget(self.path7,7,6,1,1)
- self.mass7 = QLineEdit("0",self)
- Main.addWidget(self.mass7,7,7,1,1)
- Solar1L = QLabel("Solar Panel Inputs",self)
- Main.addWidget(Solar1L,9,5,1,1)
- Solar2L = QLabel("Solar Panel Variables",self)
- Main.addWidget(Solar2L,9,7,1,1)
- self.AreaV = QLineEdit("1",self)
- Main.addWidget(self.AreaV,10,5,1,2)
- AreaL = QLabel("Area (m^2)",self)
- Main.addWidget(AreaL,10,7,1,1)
- self.EffV = QLineEdit("0.3",self)
- Main.addWidget(self.EffV,11,5,1,2)
- EffL = QLabel("Efficiency (%)",self)
- Main.addWidget(EffL,11,7,1,1)
- self.PerV = QLineEdit("0.3",self)
- Main.addWidget(self.PerV,12,5,1,2)
- PerL = QLabel("Performance",self)
- Main.addWidget(PerL,12,7,1,1)
- self.EPV = QLineEdit("0.3",self)
- Main.addWidget(self.EPV,13,4,1,1)
- EPL = QLabel("Energy produced (kW)",self)
- Main.addWidget(EPL,13,3,1,1)
- self.EDV = QLineEdit("0.3",self)
- Main.addWidget(self.EDV,14,4,1,1)
- EDL = QLabel("Energy produced over a day (kJ)",self)
- Main.addWidget(EDL,14,3,1,1)
- self.EYV = QLineEdit("0.3",self)
- Main.addWidget(self.EYV,15,4,1,1)
- EYL = QLabel("Energy produced over a year (kJ)",self)
- Main.addWidget(EYL,15,3,1,1)
- self.Incidence_Zenith = QWidget()
- self.Incidence_Zenith_UI()
- self.Time_Latitude = QWidget()
- self.Time_Latitude_UI()
- self.Stack = QStackedWidget(self)
- self.Stack.addWidget(self.Incidence_Zenith)
- self.Stack.addWidget(self.Time_Latitude)
- Main.addWidget(self.Stack,9,3,3,2)
- self.variables()
- self.drop.activated.connect(self.display)
- sc = PlotCanvas(self.main_widget)
- Main.addWidget(sc,0,0,15,3)
- Button_Plot = QPushButton("Initalize current values",self)
- Main.addWidget(Button_Plot,12,4,1,1)
- Button_Plot.clicked.connect(self.plot)
- Button_Day = QPushButton("Display curve for the day",self)
- Main.addWidget(Button_Day,15,2,1,1)
- Button_Day.clicked.connect(self.plot_day)
- Button_Elements = QPushButton("Display individual sources",self)
- Main.addWidget(Button_Elements,15,0,1,1)
- Button_Elements.clicked.connect(self.plot_current_elements)
- Button_Year = QPushButton("Display curve for the year",self)
- Main.addWidget(Button_Year,15,1,1,1)
- Button_Year.clicked.connect(self.plot_year)
- Button_Current = QPushButton("Display current curve",self)
- Main.addWidget(Button_Current,12,3,1,1)
- Button_Current.clicked.connect(self.plot_current)
- Button_Energy = QPushButton("Calcualte Energy",self)
- Main.addWidget(Button_Energy,13,5,1,2)
- Button_Energy.clicked.connect(self.energy)
- Button_Energy = QPushButton("Display Normal vs gases",self)
- Main.addWidget(Button_Energy,13,7,3,3)
- Button_Energy.clicked.connect(self.plot_gas_normal)
- Button_Day = QPushButton("Display Energy produced over a day",self)
- Main.addWidget(Button_Day,14,5,1,2)
- Button_Day.clicked.connect(self.plot_energy_day)
- Button_Year = QPushButton("Display Energy produced over a year",self)
- Main.addWidget(Button_Year,15,5,1,2)
- Button_Year.clicked.connect(self.plot_energy_year)
- Button_Gases = QPushButton("Add gases",self)
- Main.addWidget(Button_Gases,8,5,1,3)
- Button_Gases.clicked.connect(self.change_TG)
- self.Index1 = 0
- self.Index2 = 0
- self.Index3 = 0
- self.Index4 = 0
- self.Index5 = 0
- self.Index6 = 0
- self.Index7 = 0
- self.change_TG
- self.main_widget.setFocus()
- self.setCentralWidget(self.main_widget)
- self.show()
- def plot_gas_normal(self):
- self.variables()
- self.change_TG()
- plot_gas_normal()
- def plot_current_elements(self):
- self.variables()
- plot_current_elements()
- def change_TG(self):
- global TG
- TG = []
- Mass1 = float(self.mass1.text())
- Path1 = float(self.path1.text())
- TG1 = []
- if self.Index1 == 0:
- TG1 = [1]*Number
- else:
- pass
- if self.Index1 == 1:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,CO_values[i])]
- else:
- pass
- if self.Index1 == 2:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,Methane_values[i])]
- else:
- pass
- if self.Index1 == 3:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,Ammonium_values[i])]
- else:
- pass
- if self.Index1 == 4:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index1 == 9:
- for i in range (Number):
- TG1 = TG1 +[backend.gas_constant(Mass1,Path1,Solid_values[i])]
- else:
- pass
- Mass2 = float(self.mass2.text())
- Path2 = float(self.path2.text())
- TG2 = []
- if self.Index2 == 0:
- TG2 = [1]*Number
- else:
- pass
- if self.Index2 == 1:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass2,Path2,CO_values[i])]
- else:
- pass
- if self.Index2 == 2:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass2,Path2,Methane_values[i])]
- else:
- pass
- if self.Index2 == 3:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass2,Path2,Ammonium_values[i])]
- else:
- pass
- if self.Index2 == 4:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass2,Path2,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index2 == 9:
- for i in range (Number):
- TG2 = TG2 +[backend.gas_constant(Mass2,Path2,Solid_values[i])]
- else:
- pass
- Mass3 = float(self.mass3.text())
- Path3 = float(self.path3.text())
- TG3 = []
- if self.Index3 == 0:
- TG3 = [1]*Number
- else:
- pass
- if self.Index3 == 1:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass3,Path3,CO_values[i])]
- else:
- pass
- if self.Index3 == 2:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass3,Path3,Methane_values[i])]
- else:
- pass
- if self.Index3 == 3:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass3,Path3,Ammonium_values[i])]
- else:
- pass
- if self.Index3 == 4:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass3,Path3,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index3 == 9:
- for i in range (Number):
- TG3 = TG3 +[backend.gas_constant(Mass3,Path3,Solid_values[i])]
- else:
- pass
- Mass4 = float(self.mass4.text())
- Path4 = float(self.path4.text())
- TG4 = []
- if self.Index4 == 0:
- TG4 = [1]*Number
- else:
- pass
- if self.Index4 == 1:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass4,Path4,CO_values[i])]
- else:
- pass
- if self.Index4 == 2:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass4,Path4,Methane_values[i])]
- else:
- pass
- if self.Index4 == 3:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass4,Path4,Ammonium_values[i])]
- else:
- pass
- if self.Index4 == 4:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass4,Path4,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index4 == 9:
- for i in range (Number):
- TG4 = TG4 +[backend.gas_constant(Mass4,Path4,Solid_values[i])]
- else:
- pass
- Mass5 = float(self.mass5.text())
- Path5 = float(self.path5.text())
- TG5 = []
- if self.Index5 == 0:
- TG5 = [1]*Number
- else:
- pass
- if self.Index5 == 1:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass5,Path5,CO_values[i])]
- else:
- pass
- if self.Index5 == 2:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass5,Path5,Methane_values[i])]
- else:
- pass
- if self.Index5 == 3:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass5,Path5,Ammonium_values[i])]
- else:
- pass
- if self.Index5 == 4:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass5,Path5,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index5 == 9:
- for i in range (Number):
- TG5 = TG5 +[backend.gas_constant(Mass5,Path5,Solid_values[i])]
- else:
- pass
- Mass6 = float(self.mass6.text())
- Path6 = float(self.path6.text())
- TG6 = []
- if self.Index6 == 0:
- TG6 = [1]*Number
- else:
- pass
- if self.Index6 == 1:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass6,Path6,CO_values[i])]
- else:
- pass
- if self.Index6 == 2:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass6,Path6,Methane_values[i])]
- else:
- pass
- if self.Index6 == 3:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass6,Path6,Ammonium_values[i])]
- else:
- pass
- if self.Index6 == 4:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass6,Path6,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index6 == 9:
- for i in range (Number):
- TG6 = TG6 +[backend.gas_constant(Mass6,Path6,Solid_values[i])]
- else:
- pass
- Mass7 = float(self.mass7.text())
- Path7 = float(self.path7.text())
- TG7 = []
- if self.Index7 == 0:
- TG7 = [1]*Number
- else:
- pass
- if self.Index7 == 1:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass7,Path7,CO_values[i])]
- else:
- pass
- if self.Index7 == 2:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass7,Path7,Methane_values[i])]
- else:
- pass
- if self.Index7 == 3:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass7,Path7,Ammonium_values[i])]
- else:
- pass
- if self.Index7 == 4:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass7,Path7,HCL_values[i])]
- else:
- pass
- if self.Index1 == 5:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass1,Path1,SD_values[i])]
- else:
- pass
- if self.Index1 == 6:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass1,Path1,ND_values[i])]
- else:
- pass
- if self.Index1 == 7:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass1,Path1,NM_values[i])]
- else:
- pass
- if self.Index1 == 8:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass1,Path1,DM_values[i])]
- else:
- pass
- if self.Index7 == 9:
- for i in range (Number):
- TG7 = TG7 +[backend.gas_constant(Mass7,Path7,Solid_values[i])]
- else:
- pass
- for i in range (Number):
- TG = TG +[TG1[i]*TG2[i]*TG3[i]*TG4[i]*TG5[i]*TG6[i]*TG7[i]]
- def display1(self,i):
- self.Index1 = i
- def display2(self,i):
- self.Index2 = i
- def display3(self,i):
- self.Index3 = i
- def display4(self,i):
- self.Index4 = i
- def display5(self,i):
- self.Index5 = i
- def display6(self,i):
- self.Index6 = i
- def display7(self,i):
- self.Index7 = i
- def energy(self):
- self.variables()
- Irr = Sum()
- Irr_d = values_in_day()
- Irr_y = values_in_year()
- global Area
- Area = float(self.AreaV.text())
- global Per
- Per = float(self.PerV.text())
- global Eff
- Eff = float(self.EffV.text())
- Energy = (energy_produced(Area,Eff,Per,Irr))/1000
- Energy_d = (energy_produced(Area,Eff,Per,Irr_d))*7.8*60*60/1000
- Energy_y = (energy_produced(Area,Eff,Per,Irr_d))*7.8*365*60*60/1000
- print(average_day)
- def plot_energy_day(self):
- self.variables()
- global Area
- Area = float(self.AreaV.text())
- global Per
- Per = float(self.PerV.text())
- global Eff
- Eff = float(self.EffV.text())
- plot_energy_day()
- def plot_energy_year(self):
- self.variables()
- global Area
- Area = float(self.AreaV.text())
- global Per
- Per = float(self.PerV.text())
- global Eff
- Eff = float(self.EffV.text())
- plot_energy_year()
- def Incidence_Zenith_UI(self):
- layout = QGridLayout()
- self.ThetaV = QLineEdit("0",self)
- layout.addWidget(self.ThetaV,0,0,1,1)
- ThetaL = QLabel("Angle of Incidence (Degrees)",self)
- layout.addWidget(ThetaL,0,1,1,1)
- self.ZenithV = QLineEdit("0",self)
- layout.addWidget(self.ZenithV,1,0,1,1)
- ZenithL = QLabel("Zenith Solar Angle (Degrees)",self)
- layout.addWidget(ZenithL,1,1,1,1)
- self.Incidence_Zenith.setLayout(layout)
- def Time_Latitude_UI(self):
- layout = QGridLayout()
- self.timeV = QLineEdit("13",self)
- layout.addWidget(self.timeV,0,0,1,1)
- timeL = QLabel("Time of day (7.5-16.5)",self)
- layout.addWidget(timeL,0,1,1,1)
- self.LatiV = QLineEdit("40",self)
- layout.addWidget(self.LatiV,1,0,1,1)
- LatiL = QLabel("Latitude",self)
- layout.addWidget(LatiL,1,1,1,1)
- self.Time_Latitude.setLayout(layout)
- def display(self,i):
- self.Stack.setCurrentIndex(i)
- self.Index = i
- def plot(self):
- self.variables()
- workbook=xlsxwriter.Workbook('example.xlsx')
- worksheet1 = workbook.add_worksheet()
- worksheet1.write_column(0, 0, Irr_t)
- workbook.close()
- def plot_day(self):
- self.variables()
- plot_day()
- def plot_year(self):
- self.variables()
- plot_year()
- def plot_current(self):
- self.variables
- plot_current()
- def variables(self):
- global d
- d = float(self.DayV.text())
- global P
- P = float(self.PressureV.text())
- global W
- W = float(self.WaterV.text())
- global h_o
- h_o = float(self.HeightV.text())
- global O_3
- O_3 = float(self.OzoneV.text())
- global Turb
- Turb = float(self.TurbV.text())
- global t
- t = float(self.TiltV.text())
- global time
- global Lati
- global Z
- global theta
- if self.Index == 0:
- theta = float(self.ThetaV.text())
- Z = float(self.ZenithV.text())
- time = 12
- Lati = 40
- else:
- pass
- if self.Index == 1:
- time = float(self.timeV.text())
- Lati = float(self.LatiV.text())
- dec_angle = backend.Declination_Angle(d)
- hour_angle = backend.Hour_Angle(time)
- Z = backend.Zenith_Calculation(Lati,dec_angle,hour_angle)
- theta = backend.Incidence_Calculation(dec_angle,Lati,t,hour_angle)
- else:
- pass
- class PlotCanvas(MyCanvas):
- def __init__(self, *args, **kwargs):
- MyCanvas.__init__(self, *args, **kwargs)
- timer = QtCore.QTimer(self)
- timer.timeout.connect(self.update_figure)
- timer.start(1000)
- def compute_figure(self):
- #Fixed values
- Omega04 = 0.945
- Omega_Dash = 0.095
- cos_theta = 0.65
- P_o = 1013
- Alpha = 1.140
- rg = 0.12
- #fixed values from a function
- Beta = backend.Beta_Function(Alpha,Turb)
- angle = backend.Day_Angle(d)
- D = backend.Earth_Sun_Distance_Factor(angle)
- M = backend.Air_Mass(Z)
- M1 = backend.Pressure_Corrected_Mass(M,P,P_o)
- M_o = backend.Ozone_Mass(h_o,Z)
- ALG = backend.ALG_Function(cos_theta)
- AFS = backend.AFS_Function(ALG)
- BFS = backend.BFS_Function(ALG)
- F_Dash = backend.F_Dash_Function(AFS,BFS)
- Fs = backend.Fs_Function(AFS,BFS,Z)
- dec_angle = backend.Declination_Angle(d)
- TO = []
- TW = []
- TAA = []
- TR = []
- TAS = []
- Omega = []
- Turbidity = []
- global Irr_t
- Irr_t = []
- rs = []
- #Run through values for M=1.8
- for i in range (Number):
- Omega = Omega + [backend.Omega_Function(Omega04,Omega_Dash,Lambda[i])]
- Turbidity = Turbidity + [backend.Turbidity_Function(Beta,Lambda[i],Alpha)]
- M = 1.8
- TO = TO + [backend.Transmission_Ozone(a_o[i],O_3,M_o)]
- TW = TW + [backend.Transmission_Water_Vapor(a_w[i],W,M)]
- TAA = TAA + [backend.TransmissionAA(Omega[i],Turbidity[i],M)]
- M1 = backend.Pressure_Corrected_Mass(M,P,P_o)
- TR = TR + [backend.Transmission_Rayleigh(Lambda[i],M1)]
- TAS = TAS + [backend.TransmissionAS(Omega[i],Turbidity[i],M)]
- rs = rs + [backend.rs_function(TO[i],TW[i],TAA[i],TR[i],F_Dash,TAS[i])]
- #Set Blank lists and re-define M
- M = backend.Air_Mass(Z)
- M1 = backend.Pressure_Corrected_Mass(M,P,P_o)
- TR = []
- TA = []
- TO = []
- TU = []
- TAA = []
- TAS = []
- global Irr_d
- Irr_d = []
- Irr_r = []
- Irr_a = []
- Irr_g = []
- global Irr_s
- Irr_s = []
- #Run through values for rest of values and populate lists
- for i in range(Number):
- TR = TR + [backend.Transmission_Rayleigh(Lambda[i],M1)]
- TA = TA + [backend.Transmission_Aerosol(Beta,Lambda[i],Alpha,M)]
- TW = TW + [backend.Transmission_Water_Vapor(a_w[i],W,M)]
- TO = TO + [backend.Transmission_Ozone(a_o[i],O_3,M_o)]
- TU = TU + [backend.Transmission_Uniform(a_u[i],M1)]
- TAA = TAA + [backend.TransmissionAA(Omega[i],Turbidity[i],M)]
- TAS = TAS + [backend.TransmissionAS(Omega[i],Turbidity[i],M)]
- Irr_d = Irr_d + [backend.Irradiance_Normal(ETS[i],D,TR[i],TA[i],TW[i],TO[i],TU[i],Z,TG[i])]
- Irr_r = Irr_r + [backend.Irradiance_Rayleigh(ETS[i],D,Z,TO[i],TU[i],TW[i],TAA[i],TR[i],TG[i])]
- Irr_a = Irr_a + [backend.Irradiance_Aerosol(ETS[i],D,Z,TO[i],TU[i],TW[i],TAA[i],TAS[i],Fs,TR[i])]
- Irr_g = Irr_g + [backend.Irradiance_Ground(Irr_d[i],Z,Irr_r[i],Irr_a[i],rs[i],rg)]
- Irr_s = Irr_s + [backend.Irradiance_Scattering(Irr_r[i],Irr_a[i],Irr_g[i],Lambda[i])]
- Irr_t = Irr_t + [backend.Irradiance_Global(Irr_d[i],theta,Irr_s[i],ETS[i],D,Z,t,rg)]
- y = Irr_t
- x = Lambda
- self.axes.set_title("Irradiance vs Wavelength")
- self.axes.set_xlabel("Wavelength (µm)")
- self.axes.set_ylabel("Irradiance (W/ m^2 µm)")
- self.axes.plot(x, y)
- def update_figure(self):
- self.axes.clear()
- self.compute_figure()
- self.draw()
- def Sum():
- Irr_s = []
- Irr_t = compute()
- for i in range(Number):
- Irr_s = Irr_s +[backend.Irradiance_Sum(Irr_t[i],Lambda[i])]
- Irr = sum(Irr_s)
- return Irr
- def values_in_day():
- global time_axes
- global day_curve
- global Irr_day
- day_curve = []
- time_axes = []
- Irr_day = []
- global time
- time = 8.1
- while time < 15.9:
- Irr = Sum()
- time_axes.append(time)
- time = time +0.1
- day_curve.append(Irr)
- global average_day
- average_day = np.mean(day_curve)
- return average_day
- def values_in_day_energy():
- global time_axes
- global day_energy_curve
- day_energy_curve = []
- time_axes = []
- global time
- time = 8.1
- while time < 15.9:
- Irr = Sum()
- Irr_day = (energy_produced(Area,Eff,Per,Irr))/1000
- time_axes.append(time)
- time = time +0.1
- day_energy_curve.append(Irr_day)
- def plot_energy_day():
- values_in_day_energy()
- plt.xlabel('Time')
- plt.ylabel('Energy produced (kW)')
- plt.title('Energy produced vs Time of day')
- plt.plot(time_axes,day_energy_curve)
- plt.show()
- def plot_day():
- values_in_day()
- plt.xlabel('Time')
- plt.ylabel('Total Irradiance (W/m^2)')
- plt.title('Total Irradiance vs Time of day')
- plt.plot(time_axes,day_curve)
- plt.show()
- def values_in_day_simple():
- global time_axes
- global day_curve
- day_curve = []
- time_axes = []
- global time
- time = 8
- while time < 15:
- Irr = Sum()
- time_axes.append(time)
- time = time +1
- day_curve.append(Irr)
- global average_day
- average_day = np.mean(day_curve)
- return average_day
- def values_in_year():
- global day_axes
- global year_curve
- day_axes = []
- year_curve = []
- global d
- d = 1
- while d < 366:
- Irr_y = values_in_day_simple()
- day_axes.append(d)
- d = d + 10
- year_curve.append(Irr_y)
- global average_year
- average_year = np.mean(year_curve)
- return average_year
- def plot_year():
- values_in_year()
- plt.xlabel('Day of the year (1-365)')
- plt.ylabel('Total Irradiance (W/m^2)')
- plt.title('Total Irradiance vs Time of day')
- plt.plot(day_axes,year_curve)
- plt.show()
- def values_in_year_energy():
- global day_axes
- global year_energy_curve
- day_axes = []
- year_energy_curve = []
- global d
- d = 1
- while d < 366:
- Irr_y = values_in_day_simple()
- Irr_year = (energy_produced(Area,Eff,Per,Irr_y))/1000
- day_axes.append(d)
- d = d + 10
- year_energy_curve.append(Irr_year)
- def plot_energy_year():
- values_in_year_energy()
- plt.xlabel('Day of the year (1-365)')
- plt.ylabel('Energy produced (kW)')
- plt.title('Energy produced vs Day of year')
- plt.plot(day_axes,year_energy_curve)
- plt.show()
- def compute():
- #Fixed values
- Omega04 = 0.945
- Omega_Dash = 0.095
- cos_theta = 0.65
- P_o = 1013
- Alpha = 1.140
- rg = 0.12
- #fixed values from a function
- #hour_angle = backend.Hour_Angle(time)
- #dec_angle = backend.Declination_Angle(d)
- #Z = backend.Zenith_Calculation(Lati,dec_angle,hour_angle)
- Beta = backend.Beta_Function(Alpha,Turb)
- angle = backend.Day_Angle(d)
- D = backend.Earth_Sun_Distance_Factor(angle)
- M = backend.Air_Mass(Z)
- M1 = backend.Pressure_Corrected_Mass(M,P,P_o)
- M_o = backend.Ozone_Mass(h_o,Z)
- ALG = backend.ALG_Function(cos_theta)
- AFS = backend.AFS_Function(ALG)
- BFS = backend.BFS_Function(ALG)
- F_Dash = backend.F_Dash_Function(AFS,BFS)
- Fs = backend.Fs_Function(AFS,BFS,Z)
- dec_angle = backend.Declination_Angle(d)
- TO = []
- TW = []
- TAA = []
- TR = []
- TAS = []
- Omega = []
- Turbidity = []
- global Irr_t
- Irr_t = []
- rs = []
- #Run through values for M=1.8
- for i in range (Number):
- Omega = Omega + [backend.Omega_Function(Omega04,Omega_Dash,Lambda[i])]
- Turbidity = Turbidity + [backend.Turbidity_Function(Beta,Lambda[i],Alpha)]
- M = 1.8
- TO = TO + [backend.Transmission_Ozone(a_o[i],O_3,M_o)]
- TW = TW + [backend.Transmission_Water_Vapor(a_w[i],W,M)]
- TAA = TAA + [backend.TransmissionAA(Omega[i],Turbidity[i],M)]
- M1 = backend.Pressure_Corrected_Mass(M,P,P_o)
- TR = TR + [backend.Transmission_Rayleigh(Lambda[i],M1)]
- TAS = TAS + [backend.TransmissionAS(Omega[i],Turbidity[i],M)]
- rs = rs + [backend.rs_function(TO[i],TW[i],TAA[i],TR[i],F_Dash,TAS[i])]
- #Set Blank lists and re-define M
- M = backend.Air_Mass(Z)
- M1 = backend.Pressure_Corrected_Mass(M,P,P_o)
- TR = []
- TA = []
- TO = []
- TU = []
- TAA = []
- TAS = []
- Irr_d = []
- Irr_r = []
- Irr_a = []
- Irr_g = []
- Irr_s = []
- #Run through values for rest of values and populate lists
- for i in range(Number):
- TR = TR + [backend.Transmission_Rayleigh(Lambda[i],M1)]
- TA = TA + [backend.Transmission_Aerosol(Beta,Lambda[i],Alpha,M)]
- TW = TW + [backend.Transmission_Water_Vapor(a_w[i],W,M)]
- TO = TO + [backend.Transmission_Ozone(a_o[i],O_3,M_o)]
- TU = TU + [backend.Transmission_Uniform(a_u[i],M1)]
- TAA = TAA + [backend.TransmissionAA(Omega[i],Turbidity[i],M)]
- TAS = TAS + [backend.TransmissionAS(Omega[i],Turbidity[i],M)]
- Irr_d = Irr_d + [backend.Irradiance_Normal(ETS[i],D,TR[i],TA[i],TW[i],TO[i],TU[i],Z,TG[i])]
- Irr_r = Irr_r + [backend.Irradiance_Rayleigh(ETS[i],D,Z,TO[i],TU[i],TW[i],TAA[i],TR[i],TG[i])]
- Irr_a = Irr_a + [backend.Irradiance_Aerosol(ETS[i],D,Z,TO[i],TU[i],TW[i],TAA[i],TAS[i],Fs,TR[i])]
- Irr_g = Irr_g + [backend.Irradiance_Ground(Irr_d[i],Z,Irr_r[i],Irr_a[i],rs[i],rg)]
- Irr_s = Irr_s + [backend.Irradiance_Scattering(Irr_r[i],Irr_a[i],Irr_g[i],Lambda[i])]
- Irr_t = Irr_t + [backend.Irradiance_Global(Irr_d[i],theta,Irr_s[i],ETS[i],D,Z,t,rg)]
- return Irr_t
- def plot_current():
- plt.title("Irradiance vs Wavelength")
- plt.xlabel("Wavelength (µm)")
- plt.ylabel("Irradiance (W/ m^2 µm)")
- plt.plot(Lambda,Irr_t)
- plt.show()
- def plot_current_elements():
- plt.title("Irradiance vs Wavelength")
- plt.xlabel("Wavelength (µm)")
- plt.ylabel("Irradiance (W/ m^2 µm)")
- blue_patch = mpatches.Patch(color='blue', label='Total Irradiance')
- red_patch = mpatches.Patch(color='red', label='Direct Irradiance')
- green_patch = mpatches.Patch(color='green', label='Scattering Irradiance')
- plt.legend(handles=[blue_patch,red_patch,green_patch])
- plt.plot(Lambda,Irr_t, 'b',Lambda, Irr_d,'r',Lambda,Irr_s, 'g')
- plt.show()
- def plot_gas_normal():
- plt.title("Irradiance vs Wavelength")
- plt.xlabel("Wavelength (µm)")
- plt.ylabel("Irradiance (W/ m^2 µm)")
- blue_patch = mpatches.Patch(color='blue', label='Irradiance with gases')
- red_patch = mpatches.Patch(color='red', label='Normal Irradiance')
- Irr_t_n =Irr_t
- global TG
- TG = [1]*Number
- compute()
- plt.legend(handles=[blue_patch,red_patch,])
- plt.plot(Lambda,Irr_t_n, 'b',Lambda, Irr_t,'r')
- plt.show()
- def energy_produced(Area,Eff,Per,Irr):
- E = Area*Eff*Per*Irr
- return E
- def gas_constant(Mass,Path,SAC):
- TG = math.exp(-1*Mass*Path*SAC)
- return TG
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- ex = App()
- sys.exit(app.exec_())
Add Comment
Please, Sign In to add comment