|
| 1 | +# |
| 2 | +# ------------------------------------------------------------------------------ |
| 3 | +# Author: Craig Lage, UC Davis |
| 4 | +# Date: Nov 4, 2019 |
| 5 | +# |
| 6 | +# Standalone cpp Poisson solver |
| 7 | +# |
| 8 | +# |
| 9 | +# Poisson Solver configuration file |
| 10 | + |
| 11 | +VerboseLevel = 1 # 0 - minimal output, 1 - normal, 2 - more verbose, 3 - dump almost everything |
| 12 | + |
| 13 | +# Poisson solver constants |
| 14 | +# These control the numerics of the Poisson solver |
| 15 | +# They should not need to be changed unless you test for convergence |
| 16 | + |
| 17 | +w = 1.8 # Successive Over-Relaxation factor |
| 18 | +ncycle = 128 # Number of SOR cycles at finest grid |
| 19 | +iterations = 1 # Number of VCycles |
| 20 | +# ------------------------------------------------------------------------------ |
| 21 | +# Overall setup - these control the size and scale of the simulated volume |
| 22 | + |
| 23 | +ScaleFactor = 2 |
| 24 | +# Power of 2 that sets the grid size |
| 25 | +# ScaleFactor = 1 means grid size is 0.625 micron, 160 grids in the z-direction |
| 26 | +# ScaleFactor = 2 cuts grid size by a factor of 2 |
| 27 | +# ScaleFactor = 4 cuts grid size by a factor of 4, etc. |
| 28 | +SensorThickness = 100.0 # Sensor thickness in microns |
| 29 | +PixelSizeX = 10.0 # Pixel size in microns in x |
| 30 | +PixelSizeY = 10.0 # Pixel size in microns in y |
| 31 | +GridsPerPixelX = 16 # Number of grids per pixel in x at ScaleFactor = 1 |
| 32 | +GridsPerPixelY = 16 # Number of grids per pixel in y at ScaleFactor = 1 |
| 33 | +Nx = 160 # Number of grids in x at ScaleFactor = 1 (Must be a multiple of 32) |
| 34 | +Ny = 160 # Number of grids in y at ScaleFactor = 1 (Must be a multiple of 32) |
| 35 | +Nz = 160 # Number of grids in z at ScaleFactor = 1 (Must be a multiple of 32) |
| 36 | +Nzelec = 24 # Number of grids in electron and hole arrays |
| 37 | +NZExp = 10.0 # Non-linear Z-axis slope at z=0 |
| 38 | + # A value of 1.0 makes the z-axis linear |
| 39 | + # A value of 10.0 gives a 10X magnification at z=0 |
| 40 | + # A value of 10.0 is recommended. |
| 41 | + |
| 42 | +XBCType = 1 # Set X direction boundary conditions: 0 - Free (Eperp = 0), 1 - Periodic |
| 43 | +YBCType = 1 # Set Y direction boundary conditions: 0 - Free (Eperp = 0), 1 - Periodic |
| 44 | +SimulationRegionLowerLeft = 5.0 5.0 # Allows adjustment of X, Y coordinates |
| 45 | + |
| 46 | +# ------------------------------------------------------------------------------ |
| 47 | +# Fixed charges and oxides in the silicon |
| 48 | + |
| 49 | +GateOxide = 0.15 # Gate Oxide thickness in microns |
| 50 | +ChannelStopWidth = 2.0 # Width of ChannelStop region in microns |
| 51 | +FieldOxide = 0.15 # Field Oxide thickness in microns |
| 52 | +FieldOxideTaper = 0.0 # Field Oxide taper width in microns |
| 53 | +BackgroundDoping = -2.4E12 # Background doping in cm^-3 |
| 54 | + |
| 55 | +# Channel Doping: Use the syntax below for a square profile |
| 56 | +#ChannelProfile = 0 # 0 = Square profile, N = N Gaussian profiles |
| 57 | +#ChannelDoping = 1.0E12 # Doping in cm^-2 |
| 58 | +#ChannelDepth = 1.0 # Depth in microns |
| 59 | + |
| 60 | +ChannelProfile = 1 # 0 = Square profile, N = N Gaussian profiles |
| 61 | +ChannelDose_0 = 1.0E12 # Doping in cm^-2 |
| 62 | +ChannelPeak_0 = 0.05 # Location of peak below silicon surface in microns |
| 63 | +ChannelSigma_0 = 0.32 # Sigma in microns |
| 64 | + |
| 65 | +# Channel Stop doping: Use the syntax below for a square profile |
| 66 | +ChannelStopProfile = 0 # 0 = Square profile, N = N Gaussian profiles |
| 67 | +ChannelStopDoping = 0.0 # Doping in cm^-2 |
| 68 | +ChannelStopDepth = 0.0 # Depth in microns |
| 69 | + |
| 70 | +ChannelStopDotCenter = 5.0 # Center of channel stop "Dots" in microns |
| 71 | +ChannelStopDotHeight = 2.5 # Height of channel stop "Dots" |
| 72 | +ChannelStopDotProfile = 1 # 0 = Square profile, N = N Gaussian profiles |
| 73 | +ChannelStopDotDose_0 = -6.0E12 # Doping in cm^-2 |
| 74 | +ChannelStopDotPeak_0 = 0.15 # Location of peak below silicon surface in microns |
| 75 | +ChannelStopDotSigma_0 = 0.36 # Sigma in microns |
| 76 | +ChannelStopDotSurfaceCharge = 0.0 # Surface charge density in cm^-2 |
| 77 | + |
| 78 | +# ------------------------------------------------------------------------------ |
| 79 | +# Mobile charge calculation control parameters |
| 80 | + |
| 81 | +ElectronMethod = 2 # Controls electron calculation |
| 82 | + # 0 - Leave electrons where they land from tracking |
| 83 | + # 1 - Set QFe (QFe is always used in Fixed Regions) |
| 84 | + # 2 - Electron conservation and constant QFe |
| 85 | + # If 1 is specified, you must provide a *_QFe.dat file, either by |
| 86 | + # Setting BuildQFeLookup = 1 or by copying a file into the data directory. |
| 87 | +#BuildQFeLookup = 0 |
| 88 | +#NQFe = 81 # If building QFe lookup, you need to provide at |
| 89 | + # least NQFe pixels in the PixelRegion |
| 90 | +#QFemin = 19.0 |
| 91 | +#QFemax = 27.0 |
| 92 | + |
| 93 | +qfh = -7.5 # Controls hole calculation. |
| 94 | + # Currently this applies to the whole volume, |
| 95 | + # unless over-ridden in Fixed Regions |
| 96 | + |
| 97 | +# ------------------------------------------------------------------------------ |
| 98 | +# Voltages - these should be self-explanatory |
| 99 | + |
| 100 | +Vbb = -50.0 # Back bias |
| 101 | +Vparallel_lo = -6.0 # Parallel gate low voltage |
| 102 | +Vparallel_hi = 3.5 # Parallel gate high voltage |
| 103 | +NumPhases = 4 # Number of clock phases (typically either 3 or 4) |
| 104 | +CollectingPhases = 2 # Number of Parallel gates high in collecting region |
| 105 | + |
| 106 | +# ------------------------------------------------------------------------------ |
| 107 | +# Pixel Regions |
| 108 | +# These allow one to set up one or more regions of regularly spaced pixels. |
| 109 | +# Each pixel region will need its extents defined |
| 110 | +# Within each pixel region, one can fill multiple collecting wells with arbitrary amounts of charge |
| 111 | + |
| 112 | +NumberofPixelRegions = 1 # 1 |
| 113 | +PixelRegionLowerLeft_0 = 0.0 0.0 # |
| 114 | +PixelRegionUpperRight_0 = 110.0 110.0 # |
| 115 | +NumberofFilledWells_0 = 1 # |
| 116 | +CollectedCharge_0_0 = 100000 # Collected charge in e- |
| 117 | +FilledPixelCoords_0_0 = 55.0 55.0 # (x,y) coords of pixel center |
| 118 | + |
| 119 | +# ------------------------------------------------------------------------------ |
| 120 | +# Constant Voltage Regions - this allows a number of regions of fixed surface potential |
| 121 | +# Each Constant Voltage region will need its extents defined |
| 122 | +# Example syntax below |
| 123 | + |
| 124 | +NumberofFixedRegions = 0 |
| 125 | +#FixedRegionLowerLeft_0 = 0.0 367.0 # |
| 126 | +#FixedRegionUpperRight_0 = 110.0 430.0 # |
| 127 | +#FixedRegionVoltage_0 = -60.0 # |
| 128 | +#FixedRegionDoping_0 = 0 # Doping - 0-None; 1-Channel; 2-ChanStop |
| 129 | +#FixedRegionOxide_0 = 2 # Oxide - 0-None; 1-Channel; 2-ChanStop |
| 130 | +#FixedRegionQFe_0 = 100.0 # |
| 131 | +#FixedRegionQFh_0 = -58.0 # |
| 132 | +#FixedRegionBCType_0 = 0 # Boundary conditions - 0-Fixed voltage; 1-Free (Eperp = 0) |
| 133 | + |
| 134 | +# ------------------------------------------------------------------------------ |
| 135 | +# Pixel Boundary Tests - This allows tracing the pixel boundaries and electron paths |
| 136 | + |
| 137 | +PixelBoundaryLowerLeft = 10.0 10.0 |
| 138 | +PixelBoundaryUpperRight = 100.0 100.0 |
| 139 | +PixelBoundaryNx = 9 # Number of pixels in postage stamp |
| 140 | +PixelBoundaryNy = 9 # Number of pixels in postage stamp |
| 141 | + |
| 142 | +PixelBoundaryTestType = 1 # 0 - Run a grid of equally spaced electrons, |
| 143 | + # 1 - Run a random set of electrons with a Gaussian pattern |
| 144 | + # 2 - Run a random set of electrons inside PixelBoundary |
| 145 | +#PixelBoundaryStepSize = 0.2 0.2 # Needed if PixelBoundaryTestType = 0 |
| 146 | + |
| 147 | +# The following parameters are used if PixelBoundaryTestType = 2 |
| 148 | +Sigmax = 10.0 # Sigma of incoming light profile |
| 149 | +Sigmay = 10.0 # Sigma of incoming light profile |
| 150 | +Xoffset = 0.0 # Center offset of incoming light profile |
| 151 | +Yoffset = 0.0 # Center offset of incoming light profile |
| 152 | +NumSteps = 1 # Number of steps, each one adding NumElec electrons |
| 153 | + |
| 154 | +NumElec = 0 # Number of electrons to be traced between field recalculation |
| 155 | + |
| 156 | +CalculateZ0 = 0 # 0 - don't calculate - Use ElectronZ0 |
| 157 | + # 1 - calculate from filter and SED. In this case, must provide the next two parameters |
| 158 | +#FilterBand = r # Filter band from LSST used to calculate Z0 |
| 159 | +#FilterFile = notebooks/gclef_pdf.dat # SED used to calculate Z0 |
| 160 | +ElectronZ0Fill = 95.0 # Starting z value of electron for tracking. 100.0 is at the incident light surface. |
| 161 | +ElectronZ0Area = 95.0 # Starting z value of electron for Area/Vertex finding. 100.0 is at the incident light surface. |
| 162 | + |
| 163 | +LogEField = 1 # 0 - don't calculate E-Field, 1 - Calculate and store E-Field |
| 164 | +LogPixelPaths = 0 # 0 - only the final (z~0) point is logged, 1 - Entire path is logged |
| 165 | +PixelAreas = 1 # -1 - Don't calculate areas, N - calculate areas every nth step |
| 166 | +NumVertices = 32 # Number of vertices per side for the pixel area calculation. |
| 167 | + # Since there are also 4 corners, there will be: |
| 168 | + # (4 * NumVertices + 4) vertices in each pixel |
| 169 | + |
| 170 | +# ------------------------------------------------------------------------------ |
| 171 | +# Electron tracking parameters |
| 172 | + |
| 173 | +CCDTemperature = 173.0 # Temp in Degrees K. Used to calculate diffusion steps. |
| 174 | + |
| 175 | +DiffMultiplier = 2.30 # Used to adjust the amount of diffusion. |
| 176 | + # A value of 2.30 gives the theoretical amount of diffusion |
| 177 | + # A value of 0.0 turns off diffusion completely |
| 178 | +EquilibrateSteps = 1 # Number of diffusion steps each electron takes after reaching the bottom, |
| 179 | + # and before beginning to log the charge. |
| 180 | +BottomSteps = 1 # Number of diffusion steps each electron takes while logging final charge location |
| 181 | +NumDiffSteps = 1 # A speed/accuracy trade-off. A value of 1 uses the theoretical diffusion |
| 182 | + # step. A higher value takes larger steps. I have done a few tests |
| 183 | + # but I recommend using a value of 1 unless you test larger values. |
| 184 | +SaturationModel = 0 # Saturation Model 1=On, 0=Off; Experimental! |
| 185 | + |
| 186 | + |
| 187 | +# ------------------------------------------------------------------------------ |
| 188 | +# These control the location and naming of the output |
| 189 | + |
| 190 | +outputfiledir = data/pixel-e2v-50 |
| 191 | +outputfilebase = Pixel |
| 192 | +SaveData = 1 # 0 - Save only Pts data, N - Save all data every Nth step |
| 193 | +SaveElec = 1 # 0 - Save only Pts data, N - Save Elec data every Nth step |
| 194 | +SaveMultiGrids = 0 |
| 195 | + |
| 196 | +# ------------------------------------------------------------------------------ |
| 197 | +# These control the continuation if you want to save a simuation before it is complete |
| 198 | + |
| 199 | +Continuation = 0 # Use this to continue an existing simulation and read in where you left off |
| 200 | + # 0 - No continuation |
| 201 | + # 1 Continue at step LastContinuationStep |
| 202 | +LastContinuationStep = 0 |
0 commit comments