예제 #1
0
        public RhoTable(Device device)
        {
            double bandGap = device.BandGap;

            StartEnergy       = device.FermiLevel;
            NumPointsPosition = device.NumPointsPosition;
            NumPointsEnergy   = device.NumPointsEnergy;
            DensityOfStates DensityOfStates = device.DensityOfStates;

            double positionSpacing = device.PositionSpacing;

            EnergySpacing   = (StartEnergy - bandGap) / NumPointsEnergy;
            PrecalcRhoTable = new double[NumPointsPosition, NumPointsEnergy];

            for (int i = 0; i < NumPointsPosition; i++)
            {
                double position = positionSpacing * i;
                for (int j = 1; j < NumPointsEnergy; j++)
                {
                    double energy = StartEnergy + EnergySpacing * j;
                    PrecalcRhoTable[i, j] = PrecalcRhoTable[i, j - 1] + DensityOfStates.GetDensityOfStates(energy, position) * -EnergySpacing;
                }
            }
        }
예제 #2
0
 private double CalcX0()
 {
     return(Math.Sqrt(DielectricConstant / (Consts.ElementaryCharge * DensityOfStates.GetDensityOfStates(FermiLevel, 0))));
 }