#-------关联C++库--------------- import ctypes import platform from ctypes import * system = platform.system() if system == "Windows": pre = "./" suff = ".dll" else: pre = "./lib" suff = ".so" libfile = ctypes.cdll.LoadLibrary filename = pre+"MainWidgets"+suff mainWidgets = libfile(filename) #--------------------------------- #--------------New_script_FilterClip--------- #-------定义函数------------------ def clearFEMSweepFreqData(): mainWidgets.clearFEMSweepFreqData() def appendFEMSweepFreqData(name, sweepFreqType,sweepFreqUnit, sweepFreqPatternStr): sname = bytes(name,encoding='utf-8') ssweepFreqUnit = bytes(sweepFreqUnit,encoding='utf-8') ssweepFreqPatternStr = bytes(sweepFreqPatternStr,encoding='utf-8') mainWidgets.appendFEMSweepFreqData(sname,c_int(sweepFreqType),ssweepFreqUnit,ssweepFreqPatternStr) class SolveSettingFEM: def __init__(self): self.m_SolveFreq = 0 self.m_SolveFreqUnit = "MHz" self.m_SolveSweepFreqUnit = "MHz" self.m_SolveFreqValue = 0 self.m_NURFE = 0 self.m_Order = 0 self.m_Steps = 0 self.m_relativeResidual = 0 self.m_bCalculateRCS = 0 self.m_bCalculateGain = 0 self.m_threadCount = 1 def setSolveFreq(self, SolveFreq): self.m_SolveFreq = SolveFreq def setSolveFreqUnit(self,SolveFreqUnit): self.m_SolveFreqUnit = SolveFreqUnit def setSolveSweepFreqUnit(self,SolveSweepFreqUnit): self.m_SolveSweepFreqUnit = SolveSweepFreqUnit def setSolveFreqValue(self,SolveFreqValue): self.m_SolveFreqValue = SolveFreqValue def setCalculateRCS(self, CalculateRCS): self.m_bCalculateRCS = CalculateRCS def setCalculateGain(self, CalculateGain): self.m_bCalculateGain = CalculateGain def setNURFE(self, NURFE): self.m_NURFE = NURFE def setOrder(self, Order): self.m_Order = Order def setSteps(self, Steps): self.m_Steps = Steps def setRelativeResidual(self,relativeResidual): self.m_relativeResidual = relativeResidual def setThreadCount(self,threadCount): self.m_threadCount = threadCount def saveFEMSetting(self): mainWidgets.setFEMSetting(c_double(self.m_SolveFreq), bytes(self.m_SolveFreqUnit,encoding='utf-8'),c_double(self.m_SolveFreqValue), c_double(self.m_NURFE), c_double(self.m_Order), c_double(self.m_Steps),c_double(self.m_relativeResidual),c_int(self.m_bCalculateRCS),c_int(self.m_bCalculateGain),c_int(self.m_threadCount)) del self class SolveSettingMOM: def __init__(self): self.m_MatrixSolution = "" self.m_fastAlgorithm = "" self.m_ConvergencePrecision = 0 self.m_MaxIterations = 0 self.m_MaxReset = 0 self.m_GroupSize = 0 self.m_precondition = "" self.m_iterationMethod="" self.m_MaxLevels = 0 self.m_parallelType = 1 self.m_parallelNum = 1 def setMatrixSolution(self, MatrixSolution): self.m_MatrixSolution = MatrixSolution def setFastAlgorithm(self, fastAlgorithm): self.m_fastAlgorithm = fastAlgorithm def setConvergencePrecision(self, ConvergencePrecision): self.m_ConvergencePrecision = ConvergencePrecision def setMaxIterations(self, MaxIterations): self.m_MaxIterations = MaxIterations def setMaxReset(self, MaxReset): self.m_MaxReset = MaxReset def setGroupSize(self, GroupSize): self.m_GroupSize = GroupSize def setPrecondition(self, Precondition): self.m_precondition = Precondition def setIterationMethod(self,iterationMethod): self.m_iterationMethod=iterationMethod def setMaxLevels(self, MaxLevels): self.m_MaxLevels = MaxLevels def setParallelType(self,parallelType): self.m_parallelType = parallelType def setParallelNum(self,parallelNum): self.m_parallelNum = parallelNum def saveMOMSetting(self): _sMatrixSolution = bytes(self.m_MatrixSolution, encoding='utf-8') _sFastAlgorithm = bytes(self.m_fastAlgorithm, encoding='utf-8') _sPrecondition = bytes(self.m_precondition, encoding='utf-8') _sIterationMethod = bytes(self.m_iterationMethod, encoding='utf-8') mainWidgets.setMOMSetting(_sMatrixSolution, _sFastAlgorithm,c_double(self.m_ConvergencePrecision), c_double(self.m_MaxIterations), c_double(self.m_MaxReset), c_double(self.m_GroupSize), _sPrecondition, _sIterationMethod, c_double(self.m_MaxLevels),c_int(self.m_parallelType),c_int(self.m_parallelNum)) del self class FrequencySettingsMOM: def __init__(self): self.m_SolveFreqUnit = "MHz" self.m_SolveFreqValue = 0 self.m_SolveSweepFrequencyUnit = "MHz" self.m_startFrequencyValue = 300 self.m_endFrequencyValue = 600 self.m_stepFrequencyValue = 100 self.m_bSweepFrequency = 0 self.m_sweepMethod = "NONE" def setSweepMethod(self,sweepMethod): self.m_sweepMethod = sweepMethod def setSolveFreqUnit(self,SolveFreqUnit): self.m_SolveFreqUnit = SolveFreqUnit def setSolveFreqValue(self,SolveFreqValue): self.m_SolveFreqValue = SolveFreqValue def setSolveSweepFrequencyUnit(self,SolveSweepFrequencyUnit): self.m_SolveSweepFrequencyUnit = SolveSweepFrequencyUnit def setSolveSweepFrequencyParamValue(self,startFrequencyValue,endFrequencyValue,stepFrequencyValue): self.m_startFrequencyValue = startFrequencyValue self.m_endFrequencyValue = endFrequencyValue self.m_stepFrequencyValue = stepFrequencyValue #是否开启扫频 def setSweepFrequencyEnable(self,sweepFrequency): self.m_bSweepFrequency = sweepFrequency def save(self): mainWidgets.setFrequencySettingsMOM(bytes(self.m_SolveFreqUnit,encoding='utf-8'),c_double(self.m_SolveFreqValue),c_int(self.m_bSweepFrequency),bytes(self.m_sweepMethod,encoding='utf-8'),bytes(self.m_SolveSweepFrequencyUnit,encoding='utf-8'),c_double(self.m_startFrequencyValue),c_double(self.m_endFrequencyValue),c_double(self.m_stepFrequencyValue)) del self class SolvingContent: def __init__(self): self.m_monostaticRCSFlag = 0 self.m_bistaticRCSFlag = 0 self.m_gainFlag = 0 self.m_jSufFlag = 0 self.m_sparameterFlag = 0 self.m_RadiationEfficiency = 0 self.m_ElectricField = 0 self.m_MagneticField = 0 #设置求解单站RCS是否开启 def setRCSFlag(self,rcsFlag): self.m_monostaticRCSFlag = rcsFlag #设置求解双站RCS是否开启 def setBistaticRCS(self,rcsFlag): self.m_bistaticRCSFlag = rcsFlag def setGainFlag(self,gainFlag): self.m_gainFlag = gainFlag def setJSufFlag(self,jSufFlag): self.m_jSufFlag = jSufFlag #设置网络参数是否开启 def setSparameterFlag(self,sparameterFlag): self.m_sparameterFlag = sparameterFlag #设置天线效率求解是否开启 def setRadiationEfficiency(self,radiationEfficiency): self.m_RadiationEfficiency = radiationEfficiency #设置电场求解是否开启 def setElectricField(self,electricField): self.m_ElectricField = electricField #设置磁场求解是否开启 def setMagneticField(self,magneticField): self.m_MagneticField = magneticField def save(self): mainWidgets.setMOMSolvingContent(c_int(self.m_monostaticRCSFlag),c_int(self.m_bistaticRCSFlag), c_int(self.m_gainFlag),c_int(self.m_jSufFlag),c_int(self.m_sparameterFlag),c_int(self.m_RadiationEfficiency),c_int(self.m_ElectricField),c_int(self.m_MagneticField)) del self class SimulationMOMLumpedPortData: def __init__(self): self.m_id = 0 self.m_portType = 1 self.m_portImpedance = 1.0 self.m_surfaceType = 0 self.m_positiveSurfaceData = "" self.m_negativeSurfaceData = "" self.m_intersectionEdgeData = "" self.m_portName = "" self.m_vectors = "" def setID(self, id): self.m_id = id def setPositiveSurfaceData(self, surfaceData): self.m_positiveSurfaceData = surfaceData def setNegativeSurfaceData(self, surfaceData): self.m_negativeSurfaceData = surfaceData def setIntersectionEdgeData(self, edgeData): self.m_intersectionEdgeData = edgeData def setPortName(self, PortName): self.m_portName = PortName def setPortType(self, PortType): self.m_portType = PortType def setPortImpedance(self, PortImpedance): self.m_portImpedance = PortImpedance def setVectors(self, vectors): self.m_vectors = vectors def setSurfaceType(self, surfaceType): self.m_surfaceType = surfaceType def save(self): sm_positiveSurfaceData = bytes(self.m_positiveSurfaceData, encoding='utf-8') sm_negativeSurfaceData = bytes(self.m_negativeSurfaceData, encoding='utf-8') sm_intersectionEdgeData = bytes(self.m_intersectionEdgeData, encoding='utf-8') sm_portName = bytes(self.m_portName, encoding='utf-8') sm_vectors = bytes(self.m_vectors, encoding='utf-8') mainWidgets.setSimulationMOMLumpedPortData(c_int(self.m_id), sm_positiveSurfaceData,sm_negativeSurfaceData,sm_intersectionEdgeData, sm_portName, c_int(self.m_portType), c_double(self.m_portImpedance),sm_vectors,c_int(self.m_surfaceType)) del self class SimulationFEMLumpedPortData: def __init__(self): self.m_id = 0 self.m_portName = "" self.m_selectedSurfaceData = "" self.m_beginPoint = "" self.m_endPoint = "" self.m_isIntergrationSet = 0 self.m_planeNormalDirection = "" def setID(self, id): self.m_id = id def setPortName(self, PortName): self.m_portName = PortName def setSelectedSurfaceData(self, SurfaceDataID): self.m_selectedSurfaceData = SurfaceDataID def setBeginPoint(self, beginPoint): self.m_beginPoint = beginPoint def setEndPoint(self, endPoint): self.m_endPoint = endPoint def setIsIntergrationSet(self, isIntergrationSet): self.m_isIntergrationSet = isIntergrationSet def setPlaneNormalDirection(self, planeNormalDirection): self.m_planeNormalDirection = planeNormalDirection def save(self): sm_portName = bytes(self.m_portName, encoding='utf-8') sm_selectedSurfaceData = bytes(self.m_selectedSurfaceData, encoding='utf-8') sm_beginPoint = bytes(self.m_beginPoint, encoding='utf-8') sm_endPoint = bytes(self.m_endPoint, encoding='utf-8') sm_planeNormalDirection = bytes(self.m_planeNormalDirection, encoding='utf-8') mainWidgets.setSimulationFEMLumpedPortData(c_int(self.m_id),sm_portName,sm_selectedSurfaceData,sm_beginPoint,sm_endPoint,c_int(self.m_isIntergrationSet),sm_planeNormalDirection) del self class SimulationMOMWavePortData: def __init__(self): self.m_id = -1 self.m_portName = "" self.m_directionOfPolarization = "" self.m_directionOfPropagation = "" self.m_surfaceCenter = "" self.m_surfaceDataID = "" self.m_expansionModel = 0 self.m_expansionData = "" self.m_motivationModel = 0 self.m_motivationData = "" self.m_isOppositeToNormalChecked = False self.m_isAutoSetPolarization = False self.m_polarizationDegree = 0 self.m_propogationArrowSize = 80 self.m_polarizationArrowSize = 80 self.m_surfaceType = 0 def setPortName(self, m_portName): self.m_portName = m_portName def setID(self, id): self.m_id = id def setSurfaceDataID(self, surfaceId): self.m_surfaceDataID = surfaceId def setDirectionOfPolarization(self, polarization): self.m_directionOfPolarization = polarization def setDirectionOfPropagation(self,propagation ): self.m_directionOfPropagation = propagation def setSurfaceCenter(self,surfaceCenter): self.m_surfaceCenter = surfaceCenter def setExpansionModel(self, expansionModel): self.m_expansionModel = expansionModel def setExpansionData(self, expansionData): self.m_expansionData = expansionData def setMotivationModel(self, motivationModel): self.m_motivationModel = motivationModel def setMotivationData(self, motivationData): self.m_motivationData = motivationData def setIsOppositeToNormalChecked(self, checked): self.m_isOppositeToNormalChecked = checked def setIsAutoSetPolarization(self, isAuto): self.m_isAutoSetPolarization = isAuto def setPolarizationDegree(self, degree): self.m_polarizationDegree = degree def setPropogationArrowSize(self, propogationArrowSize): self.m_propogationArrowSize = propogationArrowSize def setPolarizationArrowSize(self, polarizationArrowSize): self.m_polarizationArrowSize = polarizationArrowSize def setSurfaceType(self, surfaceType): self.m_surfaceType = surfaceType def save(self): sm_surfaceDataID = bytes(self.m_surfaceDataID, encoding='utf-8') sm_directionOfPolarization = bytes(self.m_directionOfPolarization, encoding='utf-8') sm_directionOfPropagation = bytes(self.m_directionOfPropagation, encoding='utf-8') sm_surfaceCenter = bytes(self.m_surfaceCenter, encoding='utf-8') sm_expansionData = bytes(self.m_expansionData, encoding='utf-8') sm_motivationData = bytes(self.m_motivationData, encoding='utf-8') sm_portName = bytes(self.m_portName, encoding='utf-8') mainWidgets.setSimulationMOMWavePortData(c_int(self.m_id), sm_surfaceDataID,c_int(self.m_surfaceType), sm_portName,sm_directionOfPolarization, sm_directionOfPropagation, sm_surfaceCenter, self.m_expansionModel,sm_expansionData,self.m_motivationModel,sm_motivationData, c_bool(self.m_isOppositeToNormalChecked),c_bool(self.m_isAutoSetPolarization), c_int(self.m_polarizationDegree),c_double(self.m_propogationArrowSize),c_double(self.m_polarizationArrowSize)) del self class SimulationFEMWavePortData: def __init__(self): self.m_id = -1 self.m_wavePortType = "Circular_waveport" self.m_modeCount = 1 self.m_portName = "" self.m_width = 1 self.m_portImpedance = 1 self.m_beginPoint = "" self.m_endPoint = "" self.m_selectedSurfaceData = "" self.m_isIntergrationLineSet = False self.m_planeNormalDirection = "" def setID(self, id): self.m_id = id def setWavePortType(self, wavePortType): self.m_wavePortType = wavePortType def setModeCount(self, modeCount): self.m_modeCount = modeCount def setPortName(self, portName): self.m_portName = portName def setWidth(self, width): self.m_width = width def setPortImpedance(self, portImpedance): self.m_portImpedance = portImpedance def setBeginPoint(self, beginPoint): self.m_beginPoint = beginPoint def setEndPoint(self, endPoint): self.m_endPoint = endPoint def setSelectedSurfaceData(self, surfaceData): self.m_selectedSurfaceData = surfaceData def setIntergrationLineState(self, state): self.m_isIntergrationLineSet = state def setPlaneNormalDirection(self, planeNormalDirection): self.m_planeNormalDirection = planeNormalDirection def save(self): sm_beginPoint = bytes(self.m_beginPoint, encoding='utf-8') sm_endPoint = bytes(self.m_endPoint, encoding='utf-8') sm_selectedSurfaceData = bytes(self.m_selectedSurfaceData, encoding='utf-8') sm_wavePortType = bytes(self.m_wavePortType, encoding='utf-8') sm_portName = bytes(self.m_portName, encoding='utf-8') sm_planeNormalDirection = bytes(self.m_planeNormalDirection, encoding='utf-8') mainWidgets.setSimulationFEMWavePortData(c_int(self.m_id), sm_wavePortType, c_int(self.m_modeCount), sm_portName, c_double(self.m_width), c_double(self.m_portImpedance), sm_beginPoint, sm_endPoint, sm_selectedSurfaceData, c_bool(self.m_isIntergrationLineSet),sm_planeNormalDirection) del self class SimulationFEMVoltageSourceData: def __init__(self): self.m_id = -1 self.m_portName = "" self.m_portImpedance = 1 self.m_beginPoint = "" self.m_endPoint = "" self.m_selectedSurfaceData = "" self.m_isIntergrationLineSet = False self.m_planeNormal = "" def setID(self, id): self.m_id = id def setPortName(self, portName): self.m_portName = portName def setPortImpedance(self, portImpedance): self.m_portImpedance = portImpedance def setBeginPoint(self, beginPoint): self.m_beginPoint = beginPoint def setEndPoint(self, endPoint): self.m_endPoint = endPoint def setSelectedSurfaceData(self, surfaceData): self.m_selectedSurfaceData = surfaceData def setIntergrationLineState(self, state): self.m_isIntergrationLineSet = state def setPlaneNormal(self, planeNormal): self.m_planeNormal = planeNormal def save(self): sm_beginPoint = bytes(self.m_beginPoint, encoding='utf-8') sm_endPoint = bytes(self.m_endPoint, encoding='utf-8') sm_selectedSurfaceData = bytes(self.m_selectedSurfaceData, encoding='utf-8') sm_planeNormal = bytes(self.m_planeNormal, encoding='utf-8') sm_portName = bytes(self.m_portName, encoding='utf-8') mainWidgets.setSimulationFEMVoltageSourceData(c_int(self.m_id), sm_portName, c_double(self.m_portImpedance), sm_beginPoint, sm_endPoint, sm_selectedSurfaceData, c_bool(self.m_isIntergrationLineSet),sm_planeNormal) del self class SimulationFEMPlaneWaveData: def __init__(self): self.m_id = -1 self.m_portName = "" self.m_position = "" self.m_electricFieldDirection = "" self.m_spreadDirection = "" self.m_coordinateSystem = 0 self.m_IWavePhiEnd = 0 self.m_IWavePhiStart = 0 self.m_IWavePhiStep = 1 self.m_IWaveThetaEnd = 360 self.m_IWaveThetaStart = 0 self.m_IWaveThetaStep = 1 self.m_phiCoff = 1 self.m_thetaCoff = 0 self.m_monostaticRCSSolution = 0 self.m_interpolationPara = 0 def setID(self, id): self.m_id = id def setPortName(self, portName): self.m_portName = portName def setPosition(self, position): self.m_position = position def setElectricFieldDirection(self, electricFieldDirection): self.m_electricFieldDirection = electricFieldDirection def setSpreadDirection(self, spreadDirection): self.m_spreadDirection = spreadDirection def setCoordinateSystem(self,coordinateSystem): self.m_coordinateSystem = coordinateSystem def setIWavePhiEnd(self,IWavePhiEnd): self.m_IWavePhiEnd = IWavePhiEnd def setIWavePhiStep(self,IWavePhiStep): self.m_IWavePhiStep = IWavePhiStep def setIWavePhiStart(self,IWavePhiStart): self.m_IWavePhiStart = IWavePhiStart def setIWaveThetaEnd(self,IWaveThetaEnd): self.m_IWaveThetaEnd = IWaveThetaEnd def setIWaveThetaStart(self,IWaveThetaStart): self.m_IWaveThetaStart = IWaveThetaStart def setIWaveThetaStep(self,IWaveThetaStep): self.m_IWaveThetaStep = IWaveThetaStep def setPhiCoff(self,phiCoff): self.m_phiCoff = phiCoff def setThetaCoff(self,thetaCoff): self.m_thetaCoff = thetaCoff def setMonostaticRCSSolution(self,monostaticRCSSolution): self.m_monostaticRCSSolution = monostaticRCSSolution def setInterpolationPara(self,interpolationPara): self.m_interpolationPara = interpolationPara def save(self): sm_portName = bytes(self.m_portName, encoding='utf-8') sm_position = bytes(self.m_position, encoding='utf-8') sm_electricFieldDirection = bytes(self.m_electricFieldDirection, encoding='utf-8') sm_spreadDirection = bytes(self.m_spreadDirection, encoding='utf-8') mainWidgets.setSimulationFEMPlaneWavaData(c_int(self.m_id),sm_portName,sm_position,sm_electricFieldDirection,sm_spreadDirection,c_int(self.m_coordinateSystem), c_int(self.m_IWavePhiEnd),c_int(self.m_IWavePhiStart),c_int(self.m_IWavePhiStep),c_int(self.m_IWaveThetaEnd),c_int(self.m_IWaveThetaStart),c_int(self.m_IWaveThetaStep), c_double(self.m_phiCoff),c_double(self.m_thetaCoff),c_double(self.m_monostaticRCSSolution),c_double(self.m_interpolationPara)) del self class SimulationMOMPlaneWaveData: def __init__(self): self.m_id = -1 self.m_portName = "" self.m_magnitude = 0 self.m_phase = 0 self.m_polarizationAngle = 0 self.m_incidentWaveType = 0 self.m_propagationTheta = 0 self.m_propagationPhi = 0 self.m_startTheta = 0 self.m_startPhi = 0 self.m_endTheta = 0 self.m_endPhi = 0 self.m_intervalTheta = 0 self.m_intervalPhi = 0 def setID(self, id): self.m_id = id def setPortName(self, portName): self.m_portName = portName def setMagnitude(self,magnitude): self.m_magnitude = magnitude def setPhase(self,phase): self.m_phase = phase def setPolarizationAngle(self,polarizationAngle): self.m_polarizationAngle = polarizationAngle def setIncidentWaveType(self,incidentWaveType): self.m_incidentWaveType = incidentWaveType def setPropagationTheta(self,propagationTheta): self.m_propagationTheta = propagationTheta def setPropagationPhi(self,propagationPhi): self.m_propagationPhi = propagationPhi def setStartTheta(self,startTheta): self.m_startTheta = startTheta def setStartPhi(self,startPhi): self.m_startPhi = startPhi def setEndTheta(self,endTheta): self.m_endTheta = endTheta def setEndPhi(self,endPhi): self.m_endPhi = endPhi def setIntervalTheta(self,intervalTheta): self.m_intervalTheta = intervalTheta def setIntervalPhi(self,intervalPhi): self.m_intervalPhi = intervalPhi def save(self): sm_portName = bytes(self.m_portName, encoding='utf-8') mainWidgets.setSimulationMOMPlaneWavaData(c_int(self.m_id),sm_portName,c_double(self.m_magnitude),c_double(self.m_phase),c_double(self.m_polarizationAngle),c_int(self.m_incidentWaveType), c_double(self.m_propagationTheta),c_double(self.m_propagationPhi),c_double(self.m_startTheta),c_double(self.m_startPhi),c_double(self.m_endTheta),c_double(self.m_endPhi),c_double(self.m_intervalTheta),c_double(self.m_intervalPhi)) del self class SimulationBoundaryConditionData: def __init__(self): self.m_id = -1 self.m_boundaryConditionName = "" self.m_boundaryConditionType = "" self.m_PMLWidth = 1.0 self.m_resistance = 50 self.m_reactance = 50 self.m_bodyData = "" self.m_surfaceData = "" # master boundary condition self.m_masterSurfaceID = "" self.m_masterBeginPoint = "" self.m_masterEndPoint = "" self.m_masterThirdPoint = "" self.m_masterNormalDirection = "" self.m_masterChosenStatus = "" # slave boundary condition self.m_slaveSurfaceID = "" self.m_slaveBeginPoint = "" self.m_slaveEndPoint = "" self.m_slaveThirdPoint = "" self.m_slaveNormalDirection = "" self.m_slaveChosenStatus = "" def setID(self, id): self.m_id = id def setBoundaryConditionName(self, name): self.m_boundaryConditionName = name def setBoundaryConditionType(self, type): self.m_boundaryConditionType = type def setPMLWidth(self, width): self.m_PMLWidth = width def setResistance(self, resistance): self.m_resistance = resistance def setReactance(self, reactance): self.m_reactance = reactance def setSelectedBodyData(self, bodyData): self.m_bodyData = bodyData def setSelectedSurfaceData(self, surfaceData): self.m_surfaceData = surfaceData # master boundary condition def setSelectedMasterSurfaceID(self, surfaceData): self.m_masterSurfaceID = surfaceData def setMasterBeginPoint(self, beginPoint): self.m_masterBeginPoint = beginPoint def setMasterEndPoint(self, endPoint): self.m_masterEndPoint = endPoint def setMasterThirdPoint(self, thirdPoint): self.m_masterThirdPoint = thirdPoint def setMasterNormalDirection(self, normalDirection): self.m_masterNormalDirection = normalDirection def setMasterChosenStatus(self, status): self.m_masterChosenStatus = status # slave boundary condition def setSelectedSlaveSurfaceID(self, surfaceData): self.m_slaveSurfaceID = surfaceData def setSlaveBeginPoint(self, beginPoint): self.m_slaveBeginPoint = beginPoint def setSlaveEndPoint(self, endPoint): self.m_slaveEndPoint = endPoint def setSlaveThirdPoint(self, thirdPoint): self.m_slaveThirdPoint = thirdPoint def setSlaveNormalDirection(self, normalDirection): self.m_slaveNormalDirection = normalDirection def setSlaveChosenStatus(self, status): self.m_slaveChosenStatus = status def save(self): sm_boundaryConditionName = bytes(self.m_boundaryConditionName, encoding='utf-8') sm_boundaryConditionType = bytes(self.m_boundaryConditionType, encoding='utf-8') sm_bodyData = bytes(self.m_bodyData, encoding='utf-8') sm_surfaceData = bytes(self.m_surfaceData, encoding='utf-8') # master boundary condition sm_masterSurfaceID = bytes(self.m_masterSurfaceID, encoding='utf-8') sm_masterBeginPoint = bytes(self.m_masterBeginPoint, encoding='utf-8') sm_masterEndPoint = bytes(self.m_masterEndPoint, encoding='utf-8') sm_masterThirdPoint = bytes(self.m_masterThirdPoint, encoding='utf-8') sm_masterNormalDirection = bytes(self.m_masterNormalDirection, encoding='utf-8') sm_masterChosenStatus = bytes(self.m_masterChosenStatus, encoding='utf-8') # slave boundary condition sm_slaveSurfaceID = bytes(self.m_slaveSurfaceID, encoding='utf-8') sm_slaveBeginPoint = bytes(self.m_slaveBeginPoint, encoding='utf-8') sm_slaveEndPoint = bytes(self.m_slaveEndPoint, encoding='utf-8') sm_slaveThirdPoint = bytes(self.m_slaveThirdPoint, encoding='utf-8') sm_slaveNormalDirection = bytes(self.m_slaveNormalDirection, encoding='utf-8') sm_slaveChosenStatus = bytes(self.m_slaveChosenStatus, encoding='utf-8') mainWidgets.setBoundaryConditionData(c_int(self.m_id),sm_boundaryConditionName,sm_boundaryConditionType,c_double(self.m_PMLWidth),c_double(self.m_resistance),c_double(self.m_reactance),sm_bodyData,sm_surfaceData, sm_masterSurfaceID, sm_masterBeginPoint, sm_masterEndPoint, sm_masterThirdPoint, sm_masterNormalDirection,sm_masterChosenStatus, sm_slaveSurfaceID, sm_slaveBeginPoint, sm_slaveEndPoint, sm_slaveThirdPoint, sm_slaveNormalDirection,sm_slaveChosenStatus) del self class SimulationFEMFarFieldCoordinateData(): def __init__(self): self.m_phiStart = 0.0 self.m_phiEnd = 0.0 self.m_phiStep = 0.0 self.m_thetaStart = 0.0 self.m_thetaEnd = 0.0 self.m_thetaStep = 0.0 def setPhiStart(self,phiStart): self.m_phiStart = phiStart def setPhiEnd(self,phiEnd): self.m_phiEnd = phiEnd def setPhiStep(self,phiStep): self.m_phiStep = phiStep def setThetaStart(self,thetaStart): self.m_thetaStart = thetaStart def setThetaEnd(self,thetaEnd): self.m_thetaEnd = thetaEnd def setThetaStep(self,thetaStep): self.m_thetaStep = thetaStep def save(self): mainWidgets.setSimulationFEMFarFieldCoordinateData(c_double(self.m_thetaStart),c_double(self.m_thetaEnd),c_double(self.m_thetaStep), c_double(self.m_phiStart),c_double(self.m_phiEnd),c_double(self.m_phiStep)) del self class SimulationMOMFarFieldCoordinateData(): def __init__(self): self.m_phiStart = 0.0 self.m_phiEnd = 0.0 self.m_phiStep = 0.0 self.m_thetaStart = 0.0 self.m_thetaEnd = 0.0 self.m_thetaStep = 0.0 def setPhiStart(self,phiStart): self.m_phiStart = phiStart def setPhiEnd(self,phiEnd): self.m_phiEnd = phiEnd def setPhiStep(self,phiStep): self.m_phiStep = phiStep def setThetaStart(self,thetaStart): self.m_thetaStart = thetaStart def setThetaEnd(self,thetaEnd): self.m_thetaEnd = thetaEnd def setThetaStep(self,thetaStep): self.m_thetaStep = thetaStep def save(self): mainWidgets.setSimulationMOMFarFieldCoordinateData(c_double(self.m_thetaStart),c_double(self.m_thetaEnd),c_double(self.m_thetaStep), c_double(self.m_phiStart),c_double(self.m_phiEnd),c_double(self.m_phiStep)) del self #近场坐标设置 class SimulationMOMNearFieldCoordinateData(): def __init__(self): self.m_startX = 0.0 self.m_startY = 0.0 self.m_startZ = 0.0 self.m_endX = 0.0 self.m_endY = 0.0 self.m_endZ = 0.0 self.m_stepX = 0.0 self.m_stepY = 0.0 self.m_stepZ = 0.0 def setStart(self,x,y,z): self.m_startX = x self.m_startY = y self.m_startZ = z def setEnd(self,x,y,z): self.m_endX = x self.m_endY = y self.m_endZ = z def setStep(self,x,y,z): self.m_stepX = x self.m_stepY = y self.m_stepZ = z def save(self): mainWidgets.setSimulationMOMNearFieldCoordinateData(c_double(self.m_startX),c_double(self.m_startY),c_double(self.m_startZ),c_double(self.m_endX),c_double(self.m_endY),c_double(self.m_endZ),c_double(self.m_stepX),c_double(self.m_stepY),c_double(self.m_stepZ)) del self