Beispiel #1
0
 def add_component(self, component_hints):
     '''add a tuple of the form (component, state, parent_pipe, child_pipe,
     hints) and append it to list components
     
     state is an integer, 0 for dead, 1 for alive
     '''
     
     global last_component_number
     
     # Components get their id based on the order they were added to the list...
     c = component(self.mystate, component_hints, len(self.components))
     lock = Lock()
     
     self.components.append({"component":c, "lock":lock})
	def __init__(self):      
		super(ersatzschaltbild, self).__init__()
		self.dx=160
		self.dy=160

		self.objects=[]
		self.origonal_objects=[]

		self.editable=True

		self.selected="diode"
		self.file_name=os.path.join(get_sim_path(),"diagram.inp")
		#self.setMouseTracking(True)
		self.init()
		self.hover=component()
	def add_object(self,x0,y0,x1,y1,file_name):
		c=component()
		c.name=file_name
		c.x0=x0
		c.y0=y0
		c.x1=x1
		c.y1=y1
		c.lines=self.load_component(c)

			#print(">>>>",c.get_direction())


		self.objects.append(c)

		return len(self.objects)-1
Beispiel #4
0
def hello():
	components = []
	url = "http://127.0.0.1:9998/components/1"
	response = requests.get(url)
	jsonDict = json.loads(response.text)
	for key in jsonDict:
		comp = jsonDict[key]
		id = comp[0]
		name = comp[1]
		desc = comp[2]
		print("%s %s %s") %(id,name,desc)
		c = component(id,name,desc)
		components.append(c)

    	return render_template('Hello.html',components=components)
Beispiel #5
0
    def decode_circuit_lines(self, lines):
        build = []
        self.data = []
        for line in lines:
            s, label = decode_line(line)
            l = len(s)
            if l > 0:
                if s[0].startswith("#") == False:
                    c = component()
                    c.z0 = float(s[0])
                    c.x0 = float(s[1])
                    c.y0 = float(s[2])
                    c.z1 = float(s[3])
                    c.x1 = float(s[4])
                    c.y1 = float(s[5])
                    c.name = s[6]

                    self.data.append(c)

        return True
Beispiel #6
0
 def __init__(self, component_list):
     self.component_list = []
     self.largest_bridge = 0
     for idx, com in enumerate(component_list):
         self.component_list.append(component(com[0], com[1]))
Beispiel #7
0
#-----------------------------------------------------------------------------
"""

74HC04

"""
#-----------------------------------------------------------------------------

import component

#-----------------------------------------------------------------------------

dev = component.component('74HC04', 'U', 'Hex Inverter')
dev.add_tags(('Inverter', ))
dev.set_url('http://www.ti.com/lit/ds/symlink/sn74ahcu04-ep.pdf')

dev.add_pin('1A', 'in').set_unit(1)
dev.add_pin('1Y', 'out').set_unit(1)
dev.add_pin('2A', 'in').set_unit(2)
dev.add_pin('2Y', 'out').set_unit(2)
dev.add_pin('3A', 'in').set_unit(3)
dev.add_pin('3Y', 'out').set_unit(3)
dev.add_pin('GND', 'power_in')
dev.add_pin('VCC', 'power_in')
dev.add_pin('6A', 'in').set_unit(6)
dev.add_pin('6Y', 'out').set_unit(6)
dev.add_pin('5A', 'in').set_unit(5)
dev.add_pin('5Y', 'out').set_unit(5)
dev.add_pin('4A', 'in').set_unit(4)
dev.add_pin('4Y', 'out').set_unit(4)
Beispiel #8
0
def create_components_list():
    engine_body_object = component.component()
    engine_body_object._init_("engine_body", engine_body_x, 0, 0, engine_body_img)
    component_list.append(engine_body_object)

    crankgear_object = component.component()
    crankgear_object._init_("crankgear", engine_body_x + 230, 364, 0, gear20_img)
    component_list.append(crankgear_object)

    camgear_object = component.component()
    camgear_object._init_("camgear", engine_body_x + 230 + gear20_width - 15, 364 - gear40_offset, 0, gear40_img)
    component_list.append(camgear_object)

    camgear_object = component.component()
    camgear_object._init_("camgear", engine_body_x + 230 - gear40_width + 15, 364 - gear40_offset, 0, gear40_img)
    component_list.append(camgear_object)

    cam_object = component.component()
    cam_object._init_("inlet_cam", engine_body_x + 230 - gear40_width + cam_centre_y , 364 - gear40_offset + cam_centre_y, 0, cam_img)
    component_list.append(cam_object)

    cam_object = component.component()
    cam_object._init_("exhaust_cam", engine_body_x + 230 + gear20_width + cam_centre_x - 15 , 364 - gear40_offset + cam_centre_y, 0, cam_img)
    component_list.append(cam_object)

    pushrod_object = component.component()
    pushrod_object._init_("exhaust_pushrod", engine_body_x + 230 + gear20_width + cam_centre_x + cam_width/2 - 20, 364 - gear40_offset + cam_centre_y
                          - pushrod_img.get_size()[1], 0,
                      pushrod_img)
    component_list.append(pushrod_object)

    pushrod_object = component.component()
    pushrod_object._init_("inlet_pushrod", engine_body_x + 230 - gear40_width + cam_centre_y + cam_width/2 - 5,
                          364 - gear40_offset + cam_centre_y  - pushrod_img.get_size()[1], 0, pushrod_img)
    component_list.append(pushrod_object)

    crankshaft_object = component.component()
    crankshaft_object._init_("crankshaft", engine_body_x + 195, 330, 0, crankshaft_img)
    component_list.append(crankshaft_object)

    conrod_object = component.component()
    conrod_object._init_("connecting_rod", engine_body_x + 244, 16, 0, conrod_img)
    component_list.append(conrod_object)

    piston_object = component.component()
    piston_object._init_("piston", engine_body_x + 238, 190, 0, piston_img)
    component_list.append(piston_object)

    inlet_rocker_object = component.component()
    inlet_rocker_object._init_("inlet_rocker", engine_body_x + 102, 50, 0, inlet_rockerarm_img)
    component_list.append(inlet_rocker_object)

    exhaust_rocker_object = component.component()
    exhaust_rocker_object._init_("exhaust_rocker", engine_body_x + 337, 50, 0, exhaust_rockerarm_img)
    component_list.append(exhaust_rocker_object)

    inlet_valve_object = component.component()
    inlet_valve_object._init_("inlet_valve", engine_body_x + 244, 50, 0, valve_img)
    component_list.append(inlet_valve_object)

    exhaust_valve_object = component.component()
    exhaust_valve_object._init_("exhaust_valve", engine_body_x + 330, 50, 0, valve_img)
    component_list.append(exhaust_valve_object)
Beispiel #9
0
ValveDefaultActualFlow = 800 / 3600.0 #//From average HX flow in unit CW circuit.
ValveDefaultDP = 1.2 * Ps
ValveDefaultOpening = 0.5 #//Default valve opening.
        
ValveEqualPercR = 40.0 #//Dimensionless constant for valve equalpercentage.
ValveDefaultCv = ValveDefaultActualFlow /   \
    (math.pow(ValveEqualPercR, ValveDefaultOpening - 1) * math.sqrt(ValveDefaultDP)) # //m^3/s/(Pa^0.5)
ValveHydraulicTau = 10.0  #//seconds.  Time constant of valve hydraulics.

ValveLength = 0.5 #//m
ValveWidth = 0.4 #//m


#fluidpackage constants -------------------------------------------------------------------------------------------------
fluidpackage = list() #list of component object
fluidpackage.append(component.component(molecule.molecule("Naphtha", "GTL Naphtha", 0.157, 0.00164, 661.4959, 273 + 495, 1.2411 * 10**7, \
                -1 - np.log10(110000 /1.2411 * (10**7)) , 150.5, 0.6, 0, 0), 0))
fluidpackage.append(component.component(molecule.molecule("Air", "Air", 0.02897, 1.983 * math.pow(10, -5), 1.225, 132.41, \
                3.72 * math.pow(10, 6), \
                0.0335,
                0.8*31.15  + 0.2*28.11, 0.8*(-0.01357)  + 0.2*(-3.7) * math.pow(10, -6), 0.8*2.68*math.pow(10,-5)  + 0.2*1.746 * math.pow(10, -5),
            0.8 * (-1.168) * math.pow(10, -8) + 0.2 * (-1.065) * math.pow(10, -8)), 0))
            #//Density: 1.977 kg/m3 (gas at 1 atm and 0 °C)
fluidpackage.append( component.component( molecule.molecule("CO2", "Carbon Dioxide", 0.018, 0.07 * 0.001, 1.977, 304.25, 7.39 * math.pow(10, 6), 0.228,
                19.8, 0.07344, -5.602E-05, 1.715E-08), 0))
                #//Density: 1.977 kg/m3 (gas at 1 atm and 0 °C)
fluidpackage.append( component.component( molecule.molecule("CO", "Carbon Monoxide", 0.02801, 0.0001662 * 0.001, 1.145), 0))
            #//Density: 1.145 kg/m3 at 25 °C, 1 atm
fluidpackage.append( component.component( molecule.molecule("H2", "Hydrogen", 0.0020158, 8.76 * math.pow(10, -6), 0.08988), 0))
            #//Density: 0.08988 g/L = 0.08988 kg/m3 (0 °C, 101.325 kPa)
fluidpackage.append( component.component( molecule.molecule("He", "Helium", HeMolarMass, 0, 0.1786, 5.1953, 5.1953E6, -0.390,
                20.8, 0, 0, 0), 0))
Beispiel #10
0
#run ComponentPositions

from component import component
from ComponentPositions import ComponentPositions as CP
import numpy as np

from sympy import *
import quaternion

SCBody = CoordSysCartesian('SCBody')
SCBody.origin
comp1 = component(SCBody, 'box1')  #=SCBody)#compname='box1',
comp1.r_component_Body += 1. * SCBody.i + 1. * SCBody.j + 1. * SCBody.k
#comp1.r_component_Body += [1.,1.,1.]#np.asarray([1.,1.,1.])
comp2 = component(SCBody, 'box2')
comp2.r_component_Body += comp1.r_component_Body

print comp1.vertices
print comp2.vertices
comp1.r_component_Body += 1. * SCBody.i + 1. * SCBody.j + 1. * SCBody.k
print comp1.vertices
print comp2.vertices

# cp = CP()

# print cp.comps['box1']['part_position']
# cp.r_SCbody_I += np.asarray([1,1,1])
# print cp.comps['box1']['part_position']
Beispiel #11
0
#-----------------------------------------------------------------------------
"""

Broadcom JTAG Connector - as seen on the BCM949408EAP

"""
#-----------------------------------------------------------------------------

import component

#-----------------------------------------------------------------------------

dev = component.component('BCMJTAG', 'U', 'Broadcom 16 pin JTAG Connector (BCM949408EAP)')
dev.add_tags(('JTAG',))
dev.set_url('https://www.broadcom.com/products/wireless/wireless-lan-infrastructure/bcm49408')

# jtag
dev.add_pin('TDI', 'out')
dev.add_pin('TDO', 'in')
dev.add_pin('TMS', 'out')
dev.add_pin('TCK', 'out')
dev.add_pin('TRST_L', 'out')
# spi ??
dev.add_pin('DBG_CLK', 'out').set_group(1)
dev.add_pin('DBG_EN_N', 'out').set_group(1)
dev.add_pin('DBG_SOUT', 'in').set_group(1)
dev.add_pin('DBG_SIN', 'out').set_group(1)
# serial port
dev.add_pin('UART0_RX', 'out').set_group(2)
dev.add_pin('UART0_TX', 'in').set_group(2)
# system
Beispiel #12
0
#-----------------------------------------------------------------------------

import kicad
import footprint
import component

#-----------------------------------------------------------------------------

name = 'ILI9341'
descr = 'LCD Module 2.8 inch 240x320 SPI TFT with touch sensor and SD card'
tags = ('LCD', )
url = 'https://www.amazon.com/gp/product/B017FZTIO6/ref=od_aui_detailpages00?ie=UTF8&psc=1'

#-----------------------------------------------------------------------------

dev = component.component(name, 'M', descr)
dev.add_tags = (tags)
dev.set_url(url)

# power
dev.add_pin('VCC', 'power_in')
dev.add_pin('GND', 'power_in')
# lcd
dev.add_pin('LCD_CS', 'in')
dev.add_pin('LCD_RESET', 'in')
dev.add_pin('LCD_DC', 'in')
dev.add_pin('LCD_SDI', 'in')
dev.add_pin('LCD_SCK', 'in')
dev.add_pin('LCD_LED', 'in')
dev.add_pin('LCD_SDO', 'out')
# touch screen
Beispiel #13
0
	def add_component(self, comp_type, position, direction):
		#In the future, specify connections, layer, collision detection
		#Place in components without connections, gradually add them in
		self.components.append([ct.component(comp_type, position, direction), {}])
Beispiel #14
0
    def __init__(self, info_dict, fwk, index):
        """
        construct and manage the workflow of a simulation and its constituent components
        """

        # stuff from the framework
        self.RM = fwk.RM
        self.fwk = fwk

        # bookkeeping
        self.total_usage = 0
        self.total_work_time = 0
        self.total_lost_time = 0
        self.total_overhead = 0
        self.total_restart_time = 0
        self.total_resubmit_time = 0
        self.total_launch_delay = 0
        self.total_rework_time = 0
        self.total_ckpt_time = 0
        self.total_waiting_time = 0
        self.num_waiting = 0
        self.num_restarts = 0
        self.num_rework = 0
        self.num_work = 0
        self.num_ckpts = 0
        self.num_faults = 0
        self.num_retries = 0
        self.resubmissions = 0
        self.last_submission_time = 0

        # my components and properties
        self.state = 'startup'  # other states: 'shutdown', 'checkpoint', 'restart', 'work'
        self.my_comps = dict()
        self.all_comps = dict()
        self.my_overheads = dict()
        self.phases = dict()
        self.is_done = False
        self.resubmission_threshold = 5
        try:
            self.name = info_dict['name'] + '_' + str(index)
        except:
            raise

        try:
            self.mode = info_dict['mode']
        except:
            self.mode = 'normal'  # this means time stepped

        if self.mode == 'normal':
            self.fwk.failure_mode = 'normal'
            try:
                self.nsteps = int(info_dict['nsteps'])
                self.comp_list = info_dict['components']
            except:
                self.nsteps = 0
                self.comp_list = []

            try:
                self.phase_list = info_dict['phases']
            except:
                self.phase_list = []

            if self.nsteps > 0 and self.comp_list:
                self.old_style = True
            elif self.phase_list:
                self.old_style = False
            else:
                print "bad config file"
                raise

            try:
                self.ft_strategy = info_dict['ft_strategy']
            except:
                self.ft_strategy = None

            try:
                self.retry_limit = int(info_dict['retry_limit'])
            except:
                self.retry_limit = -1

            self.curr_step = 1
            self.curr_phase_index = -1
            self.curr_phase = ''
            self.total_steps = 0

        elif self.mode == 'total_time':
            #self.fwk.failures_on = True
            self.fwk.failure_mode = 'sandia'
            try:
                self.total_work = int(info_dict['total_work'])
                self.comp_list = info_dict['components']
            except:
                raise
            self.rework_todo = 0
            self.completed_work = 0
            self.old_style = True

        # get overheads
        try:
            startup = info_dict['startup']
            self.my_overheads.update({
                'startup':
                overhead(None, self.fwk, self, None, 'startup', startup)
            })
        except:
            self.my_overheads.update({
                'startup':
                overhead(None, self.fwk, self, None, 'startup', None)
            })

        try:
            resubmit = info_dict['resubmit']
            self.my_overheads.update({
                'resubmit':
                overhead(None, self.fwk, self, None, 'resubmit', resubmit)
            })
        except:
            self.my_overheads.update({
                'resubmit':
                overhead(None, self.fwk, self, None, 'resubmit', None)
            })

        try:
            shutdown = info_dict['shutdown']
            self.my_overheads.update({
                'shutdown':
                overhead(None, self.fwk, self, None, 'shutdown', shutdown)
            })
        except:
            self.my_overheads.update({
                'shutdown':
                overhead(None, self.fwk, self, None, 'shutdown', None)
            })

        try:
            restart = info_dict['restart']
            self.my_overheads.update({
                'restart':
                overhead(None, self.fwk, self, None, 'restart', restart)
            })
        except:
            self.my_overheads.update({
                'restart':
                overhead(None, self.fwk, self, None, 'restart', None)
            })

        try:
            launch_delay = info_dict['launch_delay']
            self.my_overheads.update({
                'launch_delay':
                overhead(None, self.fwk, self, None, 'launch_delay',
                         launch_delay)
            })
        except:
            self.my_overheads.update({
                'launch_delay':
                overhead(None, self.fwk, self, None, 'launch_delay', None)
            })

        # is checkpointing being modeled?
        try:
            ckpt_section = info_dict['checkpoint']
            ckpt_on_val = ckpt_section['ckpt_on']
            if ckpt_on_val == 'True':
                self.ckpt_on = True
            else:
                self.ckpt_on = False
        except:
            self.ckpt_on = False

        # get checkpointing parameters
        if self.ckpt_on:
            try:
                self.ckpt_mode = ckpt_section['ckpt_mode']
                if self.ckpt_mode == 'sandia':
                    self.last_ckpt = 0
                    try:
                        self.next_ckpt = int(ckpt_section['tau'])
                        self.ckpt_interval = self.next_ckpt
                    except:
                        # **** NEED TO CHANGE TO CALCULATE INITIAL VAL!!!!
                        self.next_ckpt = 10
                elif self.ckpt_mode == 'wall_regular' or self.ckpt_mode == 'phys_regular':
                    self.ckpt_interval = int(ckpt_section['ckpt_interval'])
                    self.next_ckpt = self.ckpt_interval
                elif self.ckpt_mode == 'wall_explicit' or self.ckpt_mode == 'phys_explicit':
                    self.ckpt_values = [
                        int(x) for x in ckpt_section['ckpt_values']
                    ]
                    self.next_ckpt = self.ckpt_values.pop(0)
                self.my_overheads.update({
                    'checkpoint':
                    overhead(None, self.fwk, self, None, 'checkpoint',
                             ckpt_section)
                })
            except:
                print "problems setting up checkpoint parameters"
                raise
        self.ckpt_comps = list()
        self.ckpt_step = 0
        self.ckpt_phase_index = 0
        self.ckpt_phase = ''

        # add components
        try:
            if self.mode == 'total_time':
                self.phase_list.append('none')
                self.phases.update({
                    'none':
                    phase({}, self.fwk, self, 'none', old_style=True)
                })
                self.phases['none'].comp_list = self.comp_list
                if not isinstance(self.comp_list, list):
                    self.comp_list = [self.comp_list]
                for s in self.comp_list:
                    self.all_comps.update({
                        'none_' + s:
                        component(info_dict[s], self.fwk, self, 'none')
                    })
            elif self.old_style:
                self.phase_list.append('none')
                self.phases.update({
                    'none':
                    phase({}, self.fwk, self, 'none', old_style=True)
                })
                self.phases['none'].nsteps = self.nsteps
                self.phases['none'].comp_list = self.comp_list
                if not isinstance(self.comp_list, list):
                    self.comp_list = [self.comp_list]
                for s in self.comp_list:
                    self.all_comps.update({
                        'none_' + s:
                        component(info_dict[s], self.fwk, self, 'none')
                    })
            else:
                if not isinstance(self.phase_list, list):
                    self.phase_list.append(self.phase_list)
                for p in self.phase_list:
                    self.phases.update(
                        {p: phase(info_dict[p], self.fwk, self.name, p)})
                    if not isinstance(self.phases[p].comp_list, list):
                        self.phases[p].comp_list = [self.phases[p].comp_list]
                    for s in self.phases[p].comp_list:
                        self.all_comps.update({
                            p + '_' + s:
                            component(info_dict[p][s], self.fwk, self, p)
                        })
        except:
            raise

        if self.fwk.debug:
            for k, v in self.phases.items():
                print "phase:", k, "nsteps:", v.nsteps, "comps:", v.comp_list
                for c in self.all_comps.values():
                    print c.name, c.nproc, c.runtime, c.stddev
        self.get_next_phase()

        # populate handles to total_time components
        if self.mode == 'total_time':
            for c in self.my_comps.values():
                if c.type == 'sandia_work':
                    self.work_comp = c
                    self.work_comp.state = "ready"
                elif c.type == 'sandia_rework':
                    self.rework_comp = c
                elif c.type == 'sandia_restart':
                    self.restart_comp = c
                elif c.type == 'sandia_ckpt':
                    self.ckpt_comp = c

        #self.get_ready_comps()
        if self.fwk.debug:
            print self.my_comps.keys()
	def mouseReleaseEvent(self, event):

		if self.editable==False:
			return

		if inp().isfile(self.file_name)==False:
			result=yes_no_dlg(self,_("Are you sure you want to edit the circuit directly?  The circuit will no longer automaticly be updated as you change the layer structure, and the electrical parameters editor will be disabled.  Use can use the reset function in the circuit diagram editor to resore this functionality"))
			if result == False:
				return

		if event.button() == Qt.LeftButton:
			x0,y0,x1,y1,direction=self.find_click_points(event)
			c=component()
			c.x0=x0
			c.y0=y0
			c.x1=x1
			c.y1=y1

			index=self.find_component_index(c)

			if self.selected=="clean":
				if index!=-1:
					self.objects.pop(index)
			else:
				if index==-1:
					c.name=self.selected
					c.lines=self.load_component(c)
					#if direction=="up":
					#	self.rotate(c.lines)

					self.objects.append(c)
				else:
					if self.objects[index].name=="resistor":
						self.a=inp_dialog()
						ret=self.a.run(["#resistance",str(self.objects[index].R),"#end"])
						if ret==QDialog.Accepted:
							self.objects[index].R=float(self.a.tab.f.get_token("#resistance"))
					elif self.objects[index].name=="capacitor":
						self.a=inp_dialog()
						ret=self.a.run(["#capacitance",str(self.objects[index].C),"#end"])
						if ret==QDialog.Accepted:
							self.objects[index].C=float(self.a.tab.f.get_token("#capacitance"))
					elif self.objects[index].name=="inductor":
						self.a=inp_dialog()
						ret=self.a.run(["#inductance",str(self.objects[index].L),"#end"])
						if ret==QDialog.Accepted:
							self.objects[index].L=float(self.a.tab.f.get_token("#inductance"))
					elif self.objects[index].name=="diode":
						self.a=inp_dialog()
						ret=self.a.run(["#J0",str(self.objects[index].J0),"#nid",str(self.objects[index].nid),"#end"])
						if ret==QDialog.Accepted:
							self.objects[index].nid=float(self.a.tab.f.get_token("#nid"))
							self.objects[index].J0=float(self.a.tab.f.get_token("#J0"))


					#if new_sim_name!=None:


			self.repaint()
			self.save()

		elif event.button() == Qt.RightButton:
            #do what you want here
			print("Right Button Clicked")
Beispiel #16
0
#-----------------------------------------------------------------------------
"""

TLC 5940

"""
#-----------------------------------------------------------------------------

import component

#-----------------------------------------------------------------------------

dev = component.component('TLC5940', 'U', '16-Channel LED Driver')
dev.add_tags(('LED', 'PWM'))
dev.set_url('http://www.ti.com/product/TLC5940')

dev.add_pin('VCC', 'power_in')
dev.add_pin('GND', 'power_in')
dev.add_pin('BLANK', 'in')
dev.add_pin('XLAT', 'in')
dev.add_pin('SCLK', 'in')
dev.add_pin('SIN', 'in')
dev.add_pin('VPRG', 'in')
dev.add_pin('IREF', 'in')
dev.add_pin('DCPRG', 'in')
dev.add_pin('GSCLK', 'in')
dev.add_pin('OUT0', 'out')
dev.add_pin('OUT1', 'out')
dev.add_pin('OUT2', 'out')
dev.add_pin('OUT3', 'out')
dev.add_pin('OUT4', 'out')