xrts = [] trs = mc3.suggestTransitions(mix, e0) for tr in trs: xrts.append(tr) # print(xrts) xtraParams={} xtraParams.update(mc3.configurePhiRhoZ(przDepUm*1.0e-6)) xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True)) # note that the image size on the specimen is in meters... xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm*1.0e-6, imgSize)) xtraParams.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSize)) xtraParams.update(mc3.configureVRML(nElectrons = vmrlEl)) xtraParams.update(mc3.configureOutput(simDir)) print(xtraParams) sim = mc3.simulate(mix, det, e0, dose, True, nTraj, True, True, xtraParams) fmtS = "Admiralty-Brass-at-%g-kV" sName = fmtS % (e0) sim.rename(sName) sim.display() fi = simDir + "/" fi += sName fi += "-%g-Traj.msa" % (nTraj) sim.save(fi)
def uncoatedSimBulkStd(mat, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512): """ uncoatedSimBulkStd(mat, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512) Use mc3 simulation to simulate an uncoated standard specimen Parameters ---------- mat - a dtsa material. Note the material must have an associated density. It should have a useful name. det - a dtsa detector Here is where we get the detector properties and calibration e0 - float The accelerating voltage in kV nTraj - integer The number of trajectories to run outPath - string The path to the directory for output dim - float (5.0e-6) The size of the emission images in um lt - integer (100) The live time (sec) pc - float (1.0) The probe current in nA emiSize - int (default 512) The width and depth of the emission images. Returns ------- sim - DTSA scriptable spectrum The simulated standard spectrum Example ------- import dtsa2 as dtsa2 import dtsa2.jmMC3 as jm3 outPath = "path/to/yours/spc" cu = material("Cu", density=8.92) det = findDetector("Si(Li)") a = jm3.uncoatedSimBulkStd(cu, det, 15.0, 100, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512) a.display() """ start = time.time() strMat = mat.getName() dose = pc * lt # na-sec" # specify the transitions to generate xrts = [] trs = mc3.suggestTransitions(mat, e0) for tr in trs: xrts.append(tr) # At 20 kV the images are best at 2.0e-6 xtraParams = {} xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True)) # note that the image size on the specimen is in meters... xtraParams.update(mc3.configureEmissionImages(xrts, dim, emiSize)) xtraParams.update(mc3.configurePhiRhoZ(dim)) xtraParams.update(mc3.configureTrajectoryImage(dim, emiSize)) xtraParams.update(mc3.configureVRML(nElectrons=100)) xtraParams.update(mc3.configureOutput(outPath)) print("Output sent to %s") % (outPath) sim = mc3.simulate(mat, det, e0, lt * pc, True, nTraj, True, True, xtraParams) sName = "%s-%g-kV" % (strMat, e0) sim.rename(sName) sim.setAsStandard(mat) sim.display() end = time.time() delta = end - start msg = "This simulation required %.f sec" % (delta) print(msg) msg = " %.f min" % (delta / 60.0) print(msg) msg = " %.f hr" % (delta / 360.0) print("") return (sim)
def fullSimBulkStd(mat, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False): """ fullSimBulkStd(mat, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False) Use mc3 simulation to simulate an uncoated standard specimen Parameters ---------- mat - a dtsa material. Note the material must have an associated density. It should have a useful name. det - a dtsa detector Here is where we get the detector properties and calibration e0 - float The accelerating voltage in kV nTraj - integer The number of trajectories to run outPath - string The path to the directory for output dim - float (5.0e-6) The size of the emission images lt - integer (100) The live time (sec) pc - float (1.0) The probe current in nA emiSize - int (default 512) The width and depth of the emission images. ctd - Boolean (False) - is C coated Returns ------- sim - DTSA scriptable spectrum The simulated standard spectrum Example ------- import dtsa2 as dtsa2 import dtsa2.mcSimulate3 as mc3 det = findDetector("Oxford p4 05eV 2K") cu = material("Cu", density=8.92) a = fullSimBulkStd(cu, det, 20.0, 100, 100, 1.0) a.display() """ dose = pc * lt # na-sec" xrts = [] trs = mc3.suggestTransitions(mat, e0) for tr in trs: xrts.append(tr) mc3.configureEmissionImages(xrts, dim, emiSize) xtraParams={} xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True)) # note that the image size on the specimen is in meters... xtraParams.update(mc3.configureEmissionImages(xrts, 5.0e-6, 512)) xtraParams.update(mc3.configurePhiRhoZ(5.0e-6)) xtraParams.update(mc3.configureTrajectoryImage(5.0e-6, 512)) xtraParams.update(mc3.configureVRML(nElectrons=100)) xtraParams.update(mc3.configureOutput(outPath)) mc3.configureOutput(outPath) print("Output sent to %s") % (outPath) dose = lt*pc sim = mc3.simulate(mat, det, e0, dose, withPoisson=True, nTraj=nTraj, sf=True, bf=True, xtraParams=xtraParams) sName = "%s-%g-kV" % (mat, e0) sim.rename(sName) sim.setAsStandard(mat) sim.display() fi = outPath + "/" fi += sName fi += "-%g-Traj.msa" % (nTraj) print(fi) sim.save(fi) return(sim)
trs = mc3.suggestTransitions(eagleXG, e0) for tr in trs: xrts.append(tr) trs = mc3.suggestTransitions(c, e0) for tr in trs: xrts.append(tr) xtraParams = {} xtraParams.update(mc3.configurePhiRhoZ(przDepUm * 1.0e-6)) xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True)) # note that the image size on the specimen is in meters... xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm * 1.0e-6, imgSize)) xtraParams.update(mc3.configureTrajectoryImage(imgSzUm * 1.0e-6, imgSize)) xtraParams.update(mc3.configureVRML(nElectrons=vmrlEl)) xtraParams.update(mc3.configureOutput(simDir)) print(xtraParams) fmtS = "%g-nm-C-on-EagleXG-at-%g-kV" print("Starting simulation") multiLaySim = mc3.multiFilm(layers, det, e0, True, nTraj, dose, True, True, xtraParams) sName = fmtS % (tCNm, e0) multiLaySim.rename(sName) multiLaySim.setAsStandard(eagleXG) multiLaySim.display() fi = spcDir + "/"
def fullSimBulkStd(mat, ctg, ctgThickNm, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False): """ fullSimBulkStd(mat, ctg, ctgThickNm, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False) Use mc3 simulation to simulate an uncoated standard specimen Parameters ---------- mat - a dtsa material. Note the material must have an associated density. It should have a useful name. ctg - a dtsa2 material for the coating det - a dtsa detector Here is where we get the detector properties and calibration e0 - float The accelerating voltage in kV nTraj - integer The number of trajectories to run outPath - string The path to the directory for output dim - float (5.0e-6) The size of the emission images lt - integer (100) The live time (sec) pc - float (1.0) The probe current in nA emiSize - int (default 512) The width and depth of the emission images. ctd - Boolean (False) - is C coated Returns ------- sim - DTSA scriptable spectrum The simulated standard spectrum Example ------- import dtsa2 as dtsa2 import dtsa2.mcSimulate3 as mc3 det = findDetector("Oxford p4 05eV 4K") cu = material("Cu", density=8.92) outPath = "C:/Users/johnr/Documents/git/dtsa2Scripts/ben-buse/out" a = fullSimBulkStd(cu, det, 15.0, 100, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False) a.display() """ strCtg = ctg.getName() strMat = mat.getName() dose = pc * lt # na-sec" # specify the transitions to generate xrts = [] trs = mc3.suggestTransitions(mat, e0) for tr in trs: xrts.append(tr) trs = mc3.suggestTransitions(ctg, e0) for tr in trs: xrts.append(tr) # At 20 kV the images are best at 2.0e-6 xtraParams={} xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True)) # note that the image size on the specimen is in meters... xtraParams.update(mc3.configureEmissionImages(xrts, 2.0e-6, 512)) xtraParams.update(mc3.configurePhiRhoZ(2.0e-6)) xtraParams.update(mc3.configureTrajectoryImage(2.0e-6, 512)) xtraParams.update(mc3.configureVRML(nElectrons=100)) xtraParams.update(mc3.configureOutput(outPath)) print("Output sent to %s") % (outPath) layers = [ [ctg, ctgThickNm*1.0e-9], [mat, 1.0e-3]] sim = mc3.multiFilm(layers, det, e0, withPoisson=True, nTraj=nTraj, dose=dose, sf=True, bf=True, xtraParams=xtraParams) sName = "%g-nm-%s-on-%s" % (tNmC, strCtg, strMat) sim.rename(sName) sim.setAsStandard(mat) sim.display() return(sim)