Code
import os
import csv
import sys
import re
import string
import datetime
import glob
import logging
# Standard initialization
pythonstartupFilename=os.environ.get('PYTHonstartUP')
if pythonstartupFilename and os.path.isfile(pythonstartupFilename):
execfile(pythonstartupFilename)
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
filename='/python_scripts/myapp.log',
filemode='w')
class ModuleShadeNgspice():
spicePath = r'C:\spice_c\bin\ngspice.exe'
inputFile=r'myInputFile.cir'
def makeCell(self,spiceFileWriter,stringNode,startCellNode,endCellNode,photonCurrent):
"""Define the solar cell"""
logging.debug("makeCell")
startNode="in"+str(stringNode)+str(startCellNode)
endNode="in"+str(stringNode)+str(endCellNode)
nodeInBetween="p"+str(stringNode)+str(startCellNode)
solarcellName="solarcell"+str(stringNode)+str(startCellNode)
diodeName="D1N4376"
spiceFileWriter.writerow([".subckt",solarcellName ,startNode ,endNode, "current=-2.8"])
spiceFileWriter.writerow([".model", diodeName,"d(IS=8.57e-10")"])
spiceFileWriter.writerow(["Isolarcell" ,startNode, nodeInBetween, str(photonCurrent)])
spiceFileWriter.writerow(["Djunc" ,startNode, nodeInBetween, diodeName])
spiceFileWriter.writerow(["Rshunt" ,startNode, nodeInBetween, "1k"])
spiceFileWriter.writerow(["Rseries" ,nodeInBetween, endNode, "0.1"])
spiceFileWriter.writerow([".ends",solarcellName])
def addByPassDiode(self,spiceFileWriter):
"""Add comments here"""
logging.debug("addByPassDiode")
def makeSolarCellString(self,spiceFileWriter,stringId,nrOfCells):
"""Add comments here"""
logging.debug("makeString")
cells=range(0,nrOfCells)
startCellNode=0
photonCurrent=9
for cell in cells:
endCellNode=startCellNode+1
self.makeCell(spiceFileWriter,stringId, startCellNode,endCellNode,photonCurrent);
startCellNode=startCellNode+1
self.addByPassDiode(spiceFileWriter)
def makeModule(self,spiceFileWriter):
"""Add comments here"""
nrOfStrings=1
stringsIds=range(0,nrOfStrings)
nrOfCellsPerString=2
for stringId in stringsIds:
self.makeSolarCellString(spiceFileWriter,stringId,nrOfCellsPerString)
def defineSimulation(spiceFileWriter,stringNode,startCellNode,endCellNode):
startNode="in"+str(stringNode)+str(startCellNode)
endNode="in"+str(stringNode)+str(endCellNode)
spiceFileWriter.writerow(["Vcc" ,startNode, endNode, "5V"])
def makeSpiceFile(self):
"""Add comments here"""
spiceFile=open(self.inputFile, 'w')
spiceFileWriter=csv.writer(spiceFile, delimiter=' ', lineterminator='\n')
self.makeModule(spiceFileWriter);
self.defineSimulation(spiceFileWriter, stringNode, startCellNode, endCellNode)
spiceFile.close()
def __init__(self):
logging.debug("instantiate...")
if not os.path.exists(ModuleShadeNgspice.spicePath):
raise Exception("ngspice.exe could not be found")
def runMe(self):
self.makeSpiceFile()
runCommand=self.spicePath+" --batch "+self.inputFile
print(runCommand)
os.system(runCommand)
myShadowRun=ModuleShadeNgspice()
myShadowRun.runMe()
Error
File "C:\python_scripts\Module_Shade_Ngspice.py", line 113, in makeSpiceFile
self.defineSimulation(spiceFileWriter, stringNode, startCellNode, endCellNode)
NameError: global name 'stringNode' is not defined
I am getting confused when program gets bigger.
maybe someone can have a look?
regards
willem

New Topic/Question
Reply



MultiQuote




|