Package empro :: Package toolkit :: Package results :: Module near_field
[frames] | no frames]

Source Code for Module empro.toolkit.results.near_field

 1  # Copyright 1983-2017 Keysight Technologies, Inc  
 2   
 3  import empro, os 
 4  from empro.toolkit import Bunch 
 5  from empro.toolkit.results import UnavailableError, excitation_based 
 6   
7 -def _intToSimulationDir(x):
8 if isinstance(x,int): 9 return '%06d' % x 10 return x
11
12 -class FemNearField(excitation_based.ExcitationBased):
13 - def __init__(self, *args, **kwargs):
14 excitation_based.ExcitationBased.__init__(self, *args, **kwargs) 15 from empro.toolkit.fem import NearField 16 self._nearField = NearField(self._results._proj, _intToSimulationDir(self._results._sim) ) 17 try: 18 import empro 19 rawResult = empro.toolkit.dataset.getResult(sim=self._results._sim, run='Run0001', object='System', timeDependence='SteadyState', result='NetInputPower') 20 self._results._extractAvailableExcitationToRun(rawResult.query) 21 self._availableExcitationsToRun = self._results._availableExcitationsToRun 22 except: 23 raise UnavailableError("")
24
25 - def availableFrequencies(self):
26 """ 27 Returns the list of available frequencies 28 """ 29 return self._nearField.frequencies
30
31 - def EfieldsAt(self, frequency, positions):
32 """ 33 Returns the E field at given 3D locations -> list of complex Ex,Ey,Ez 34 """ 35 self._nearField.frequency = frequency 36 endResult = None 37 for portName, runIndex in self._availableExcitationsToRun.iteritems(): 38 excitationScaling = self._excitationWeights.weight(portName, frequency) 39 thisResult = [(excitationScaling*x[0],excitationScaling*x[1],excitationScaling*x[2]) for x in self._nearField.E(positions)] 40 if not endResult: 41 endResult = thisResult 42 else: 43 endResult = [(x[0]+y[0],x[1]+y[1],x[2]+y[2]) for x,y in zip(thisResult,endResult)] 44 return endResult
45
46 - def HfieldsAt(self, frequency, positions):
47 """ 48 Returns the H field at given 3D locations -> list of complex Hx,Hy,Hz 49 """ 50 self._nearField.frequency = frequency 51 endResult = None 52 for portName, runIndex in self._availableExcitationsToRun.iteritems(): 53 excitationScaling = self._excitationWeights.weight(portName, frequency) 54 thisResult = [(excitationScaling*x[0],excitationScaling*x[1],excitationScaling*x[2]) for x in self._nearField.H(positions)] 55 if not endResult: 56 endResult = thisResult 57 else: 58 endResult = [(x[0]+y[0],x[1]+y[1],x[2]+y[2]) for x,y in zip(thisResult,endResult)] 59 return endResult
60