Package empro :: Package toolkit :: Module hybrid
[frames] | no frames]

Source Code for Module empro.toolkit.hybrid

  1  # Copyright 1983-2019 Keysight Technologies, Keysight Confidential 
  2  from empro import _deprecation 
  3   
  4  _deprecation.warning(390) 
5 6 @_deprecation.deprecated(390) 7 -def launchHybrid(name="", paramList={}):
8 import os, empro 9 10 data = empro.activeProject.createSimulationData() 11 if name != "": name = name + "; " 12 13 # switching the BC to PMC 14 bc = empro.activeProject.boundaryConditions() 15 oldBC = [bc.xLowerBoundaryType, bc.xUpperBoundaryType, bc.yLowerBoundaryType, bc.yUpperBoundaryType, bc.zLowerBoundaryType, bc.zUpperBoundaryType] 16 bc.xLowerBoundaryType = "PMC" 17 bc.xUpperBoundaryType = "PMC" 18 bc.yLowerBoundaryType = "PMC" 19 bc.yUpperBoundaryType = "PMC" 20 bc.zLowerBoundaryType = "PMC" 21 bc.zUpperBoundaryType = "PMC" 22 23 # switching options 24 oldOrder = data.femMeshSettings.orderOfBasisFunctions 25 oldSolver = data.femMatrixSolver.solverType 26 oldMinNbPasses = data.femMeshSettings.minimumNumberOfPasses 27 oldMaxNbPasses = data.femMeshSettings.maximumNumberOfPasses 28 data.femMatrixSolver.solverType = "MatrixSolverDirect" 29 #data.femMeshSettings.orderOfBasisFunctions = 2 30 data.femMeshSettings.minimumNumberOfPasses = 1 31 data.femMeshSettings.maximumNumberOfPasses = 1 32 33 # parameters 34 param = empro.activeProject.parameters() 35 for key, val in paramList.iteritems(): 36 if not param.contains(key): 37 raise Exception("parameter <%s> not available" % key) 38 param.setFormula(key, val) 39 name = name + "%s=%s; " % (key,val) 40 41 try: 42 43 data.name = "[HYBRID] " + name 44 sim = empro.activeProject.createSimulation(False) 45 simpath = os.path.join(sim.simulationPath(),"emds_dsn","design") 46 open(os.path.join(simpath,"fem.cfg"),'w').write("FEM_USE_HYBRID=on") 47 sim = empro.activeProject.simulations()[-1] 48 sim.setQueued(True) 49 print "Launched %s" % data.name 50 #from empro.toolkit import simulation 51 #simulation.wait(sim) 52 53 except: 54 55 print "FAILED to launch %s" % data.name 56 57 finally: 58 59 # restoring the BC 60 bc.xLowerBoundaryType = oldBC[0] 61 bc.xUpperBoundaryType = oldBC[1] 62 bc.yLowerBoundaryType = oldBC[2] 63 bc.yUpperBoundaryType = oldBC[3] 64 bc.zLowerBoundaryType = oldBC[4] 65 bc.zUpperBoundaryType = oldBC[5] 66 67 # restoring options 68 data.femMatrixSolver.solverType = oldSolver 69 data.femMeshSettings.orderOfBasisFunctions = oldOrder 70 data.femMeshSettings.maximumNumberOfPasses = oldMaxNbPasses 71 data.femMeshSettings.minimumNumberOfPasses = oldMinNbPasses
72
73 @_deprecation.deprecated(390) 74 -def launchABC(name="", paramList={}):
75 import empro 76 if name != "": name = name + "; " 77 data = empro.activeProject.createSimulationData() 78 param = empro.activeProject.parameters() 79 for key, val in paramList.iteritems(): 80 if not param.contains(key): 81 raise Exception("parameter <%s> not available" % key) 82 param.setFormula(key, val) 83 name = name + "%s=%s; " % (key,val) 84 data.name = "[ABC] " + name 85 sim = empro.activeProject.createSimulation(True) 86 print "Launched %s" % data.name
87 #from empro.toolkit import simulation
88 #simulation.wait(sim) 89 90 @_deprecation.deprecated(390) 91 -def studyConvergence(paramListAbc, paramListHybrid):
92 93 import empro 94 95 # options 96 data = empro.activeProject.createSimulationData() 97 oldOrder = data.femMeshSettings.orderOfBasisFunctions 98 oldSolver = data.femMatrixSolver.solverType 99 oldMinNbPasses = data.femMeshSettings.minimumNumberOfPasses 100 oldMaxNbPasses = data.femMeshSettings.maximumNumberOfPasses 101 data.femMatrixSolver.solverType = "MatrixSolverDirect" 102 data.femMeshSettings.orderOfBasisFunctions = 1 103 data.femMeshSettings.minimumNumberOfPasses = 1 104 data.femMeshSettings.maximumNumberOfPasses = 1 105 106 # BC check 107 bc = empro.activeProject.boundaryConditions() 108 ok = True 109 if bc.xLowerBoundaryType != "Absorbing": ok = False 110 if bc.xUpperBoundaryType != "Absorbing": ok = False 111 if bc.yLowerBoundaryType != "Absorbing": ok = False 112 if bc.yUpperBoundaryType != "Absorbing": ok = False 113 if bc.zLowerBoundaryType != "Absorbing": ok = False 114 if bc.zUpperBoundaryType != "Absorbing": ok = False 115 if not ok: 116 raise Exception("All BC must be absorbing") 117 118 # launching the ABC's 119 for param in paramListAbc: 120 launchABC(paramList = param) 121 122 # launching the hybrids 123 for param in paramListHybrid: 124 launchHybrid(paramList = param)
125