# z[n+1] = (R+dR)* np.cos(thM) # n=n+2 dPhiStr = "Phi-%f" % (PhiC) DefineScalarExpression("dPhi", dPhiStr) print("Generating %d streamlines\n" % (Np)) #Add phi slice #pyv.lfmPCol(db,"dBz",vBds=(-dBzMax,dBzMax),Inv=True,pcOpac=pcOpacP,Light=False,Legend=False) pyv.lfmPCol(db, "Bmag", vBds=(1, 500), cMap="viridis", Log=True, pcOpac=pcOpacP, Light=False, Legend=False) AddOperator("Slice") sOps = GetOperatorOptions(0) sOps.axisType = 4 sOps.project2d = 0 sOps.phi = 0 sOps.theta = PhiC SetOperatorOptions(sOps) #Block out central cutout AddPlot("Contour", "RadAll") cOps = GetPlotOptions()
#Now do visit initialization if (Quiet): LaunchNowin() else: Launch() #Do some defaults pyv.lfmExprsEB() pyv.pvInit() #Field data OpenDatabase(SrcF) pyv.lfmPCol(SrcF, "Bmag", vBds=[1, 500], cMap=SlcCmap, pcOpac=0.85, Legend=False, Log=True) AddOperator("Slice") sOp = GetOperatorOptions(0) sOp.axisType = 2 sOp.project2d = 0 #print(sOp) SetOperatorOptions(sOp) #Do field lines pyv.lfmStream(SrcF, "Bfld", x, y, z, cMap=FldCmap, tRad=tRadFld, Legend=False) icOp = GetOperatorOptions(0) icOp.criticalPointThreshold = 0.1
pyv.lfmExprs() pyv.plotMesh(dbs[0], 'STL_mesh', meshColor=(240, 240, 240, 255), opaqueColor=(240, 240, 240, 255)) pyv.plotMesh(dbs[1], 'STL_mesh', meshColor=(0, 0, 0, 255), opaqueColor=(0, 0, 0, 255)) pyv.lfmPCol(dbs[2], varNames[vi], vBds=bnds, Log=True, cMap='plasma', Light=True, Legend=True) pyv.addThreshold(varNames[vi], bnds[0], 1e10) pyv.addThreshold("Phi", 90, 270, opNum=1) pyv.lfmPCol(dbs[3], varNames[vi], vBds=bnds, Log=True, cMap='plasma', Light=True, Legend=False) pyv.addThreshold(varNames[vi], bnds[0], 1e10) pyv.addThreshold("Theta", 0, 90, opNum=1) pyv.lfmPCol(dbs[4],
pyv.lfmExprs() pyv.plotMesh(dbs[0], 'STL_mesh', meshColor=(240, 240, 240, 255), opaqueColor=(240, 240, 240, 255)) pyv.plotMesh(dbs[1], 'STL_mesh', meshColor=(0, 0, 0, 255), opaqueColor=(0, 0, 0, 255)) pyv.lfmPCol(dbs[2], varNames[vi], vBds=bnds, Log=True, cMap='plasma', Light=True, Legend=True) pyv.addThreshold(varNames[vi], bnds[0], 1e10) pyv.addThreshold("Phi", 90, 270, opNum=1) pyv.lfmPCol(dbs[3], "BCurlMagNorm", vBds=[0, 1], Log=False, cMap='viridis', Light=True, Legend=True) pyv.addThreshold('RadAll', 2.1, 1e10) pyv.addSlice(originType="Percent",
n = n + 2 dPhiStr = "Phi-%f" % (PhiC) DefineScalarExpression("dPhi", dPhiStr) print("Generating %d streamlines\n" % (Nr * Nl)) #Add phi slice #pyv.lfmPCol(db,"Bmag",vBds=(10,500),cMap="viridis",Log=True,pcOpac=pcOpacP,Light=False,Legend=False) #pyv.lfmPCol(db,"RadGyro100",vBds=(1.0e-2,15),cMap="viridis",Log=True,pcOpac=pcOpacP,Light=False,Legend=True) pyv.lfmPCol(db, "RadGyro100", vBds=(0, 2.5), cMap="viridis", Log=False, pcOpac=pcOpacP, Light=False, Legend=True) AddOperator("Slice") sOps = GetOperatorOptions(0) sOps.axisType = 4 sOps.project2d = 0 sOps.phi = 0 sOps.theta = PhiC SetOperatorOptions(sOps) #Block out central cutout AddPlot("Contour", "RadAll") cOps = GetPlotOptions()
for j in range(Nl): th = Theta[j]*np.pi/180.0 R = Rad[i] x[n] = R*Cp*np.sin(th) y[n] = R*Sp*np.sin(th) z[n] = R*np.cos(th) n=n+1 dPhiStr = "Phi-%f"%(PhiC) #dRpStr = "Rcyl*(3.141/180)*%f - Rp"%(PhiC) DefineScalarExpression("dPhi",dPhiStr) #DefineScalarExpression("MLatC","if( ge(Phi, 90), MLat, 0.0)") print("Generating %d streamlines\n"%(Nr*Nl)) pyv.lfmPCol(db,"dBz",vBds=(-25,25),Inv=True,pcOpac=pcOpac,Light=False) #Field slice, equatorial AddOperator("Slice") sOps = GetOperatorOptions(0); sOps.axisType=2; sOps.project2d=0 SetOperatorOptions(sOps) #Add phi slice pyv.lfmPCol(db,"dBz",vBds=(-25,25),Inv=True,pcOpac=pcOpacP,Light=False,Legend=False) AddOperator("Slice") sOps = GetOperatorOptions(0); sOps.axisType=4; sOps.project2d=0 sOps.phi = 0; sOps.theta = PhiC SetOperatorOptions(sOps)
Src1 = pDir + "/" + pStub[RunID] + ".h5part" dbs = [Src0, Src1] #Do some defaults pyv.lfmExprs(doTrace=True) #Open databases OpenDatabase(dbs[0]) OpenDatabase(dbs[1]) #Create database correlation CreateDatabaseCorrelation("P2Fld", dbs, 0) #Create fields/particle plots pyv.lfmPCol(dbs[0], "dBz", vBds=dBzBds, pcOpac=0.7, Inv=True) pyv.lfmPScat(dbs[1], v4="Trapped", vBds=[0, 1], cMap=pCMap, Inv=False) SetActivePlots((1, 2)) pyv.cutOut() #Gussy things up #tit = pyv.genTit( t**S=t**S ) #pyv.cleanLegends(plXs,plYs,plTits) pyv.setAtts() #Let's see what we got DrawPlots() #Do time loop #pyv.doTimeLoop(Nfin=None,T0=0.0,dt=dt,Save=True,tLabPos=(0.3,0.05) )
pyv.lfmExprs() pyv.setAtts() #Open databases OpenDatabase(Src0) md0 = GetMetaData(Src0) #Get time Time = np.array(md0.times) Nt = np.argmax(Time >= T0) DefineScalarExpression("PCut", "Phi*RCut0*RCut1") DefineScalarExpression("RCut", "Rcyl*PCut0*PCut1") #Draw field marker pyv.lfmPCol(Src0, "dBz", vBds=dBzBds, pcOpac=0.7, Inv=True) #Draw wedges for n in range(Nw0, Nw): DefineScalarExpression("RCut0_%d" % (n), "if( ge(Rcyl, %f), 1, 0)" % (R0s[n])) DefineScalarExpression("RCut1_%d" % (n), "if( le(Rcyl, %f), 1, 0)" % (R1s[n])) DefineScalarExpression("PCut0_%d" % (n), "if( ge(Phi, %f), 1, 0)" % (Phi0s[n])) DefineScalarExpression("PCut1_%d" % (n), "if( le(Phi, %f), 1, 0)" % (Phi1s[n])) DefineScalarExpression( "Wedge_%d" % (n), "RCut0_%d*RCut1_%d*PCut0_%d*PCut1_%d" % (n, n, n, n))
pyv.lfmExprs() pyv.plotMesh(dbs[0], 'STL_mesh', meshColor=(240, 240, 240, 255), opaqueColor=(240, 240, 240, 255), Legend=False) pyv.plotMesh(dbs[1], 'STL_mesh', meshColor=(0, 0, 0, 255), opaqueColor=(0, 0, 0, 255), Legend=False) if usebnds: pyv.lfmPCol(dbs[2], varNames[vi], vBds=bnds, Log=True, cMap='plasma') else: pyv.lfmPCol(dbs[2], varNames[vi], Log=False, cMap='plasma') pyv.addThreshold(varNames[vi], bnds[0], 1e10) if plotB: pyv.plotContour(dbs[3], 'Bmag', cmap='viridis', values=(10, 20, 30, 40, 50, 60, 70, 80), Legend=True, lineWidth=0, lineStyle='solid') # pyv.plotContour(dbs[3], 'Bz', cmap='RdYlBu', values=(-30,-20,-10,0,10,20,30), Legend=True, lineWidth=0, lineStyle='solid') pyv.to3D()
else: Launch() #Do some defaults pyv.lfmExprsEB() pyv.pvInit() DefineScalarExpression("radius", "sqrt(x*x+y*y+z*z)") #Field data OpenDatabase(Src0) vBds = [-35, 35] #pyv.lfmPCol(Src0,"dBz",vBds=vBds,Inv=True,pcOpac=0.75,Legend=False) pyv.lfmPCol(Src0, "Bmag", vBds=[1, 500], cMap="viridis", pcOpac=0.5, Legend=True, Log=True) AddOperator("Slice") sOp = GetOperatorOptions(0) sOp.axisType = 2 sOp.project2d = 0 print(sOp) SetOperatorOptions(sOp) pyv.lfmPCol(Src0, "Bmag", vBds=[1, 500], cMap="viridis",
AddPlot("Contour", "RadAll") ops = GetPlotOptions() ops.contourMethod = 1 ops.contourValue = (Rin) ops.colorType = 0 ops.singleColor = (211, 211, 211, 255) ops.legendFlag = 0 SetPlotOptions(ops) #pyv.plotContour(gdata,"RadAll",values=[Rin]) #Field perturbation pyv.lfmPCol(gdata, "dBz", vBds=[-25, 25], Inv=True, Light=False, Legend=True, cMap="RdGy") pOp = GetPlotOptions() pOp.centering = pCent SetPlotOptions(pOp) AddOperator("Slice", 0) ops = GetOperatorOptions(0) ops.project2d = 0 ops.axisType = 2 SetOperatorOptions(ops) #Pressure poloidal pyv.lfmPCol(gdata,
Scl = (1.0e+6) / (q * 6.242e+15 * 1.0e+3) #Drift velocity (km/s per Joule) DefineScalarExpression("VDpN", "1.0e+6*BxGB/(%f*BmagC)" % (q)) DefineScalarExpression("VdPkev", "%f*BxGB/BmagC" % (Scl)) #Equality energy (in kev), 2/3 from assuming alpha=45o DefineScalarExpression("eqKevA", "(2/3.0)*Veb/VdPkev") DefineScalarExpression("eqKev", "if( ge(RadC,2.0), eqKevA,0.0)") DefineScalarExpression("eqKevC", "recenter(eqKev)") cMap = "viridis" cMap = "RdYlBu" Kbd = [1, 500] #Create slice of eqKev if (doPic): pyv.lfmPCol(fldSlc, "eqKevC", cMap=cMap, vBds=Kbd, Log=True) pcOp = GetPlotOptions() pcOp.centering = 2 SetPlotOptions(pcOp) AddOperator("Slice", 0) slOp = GetOperatorOptions(0) slOp.axisType = 2 slOp.originIntercept = zSlc SetOperatorOptions(slOp, 0) AddOperator("Threshold", 1) tOp = GetOperatorOptions(1) tOp.listedVarNames = ("RadAll") tOp.lowerBounds = (2) SetOperatorOptions(tOp, 1)
"BxGB", "magnitude(cross(Bfld,gradient(Bmag)))/(Bmag*Bmag*6380.0)") #Non-energy part of Vd q = 1.6021766e-19 #Coulombs #Will calculate drift velocity (m/s per Joule, want km/s per kev) Scl = (1.0e+6) / (q * 6.242e+15 * 1.0e+3) #Drift velocity (km/s per Joule) DefineScalarExpression("VDpN", "1.0e+6*BxGB/(%f*Bmag)" % (q)) DefineScalarExpression("VdPkev", "%f*BxGB/Bmag" % (Scl)) #Equality energy (in kev), 2/3 from assuming alpha=45o DefineScalarExpression("eqKevA", "(2/3.0)*Veb/VdPkev") DefineScalarExpression("eqKev", "if( ge(RadAll,2.0), eqKevA,0.0)") #Create slice of eqKev pyv.lfmPCol(fldSlc, "eqKev", cMap="hot_desaturated", vBds=[1, 750], Log=True) AddOperator("Slice", 0) slOp = GetOperatorOptions(0) slOp.axisType = 2 slOp.originIntercept = zSlc SetOperatorOptions(slOp, 0) AddOperator("Threshold", 1) tOp = GetOperatorOptions(1) tOp.listedVarNames = ("RadAll") tOp.lowerBounds = (2) SetOperatorOptions(tOp, 1) pyv.cleanLegends([0.025], [0.9], ["Particle Energy (keV)\nDrift/ExB Equality"]) DrawPlots()