diffDensity1 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.25000][vds0.50000]")[0]
diffDensity2 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.20000][vds0.50000]")[0]
s1 = diffDensity1[:, :, :].sum()
s2 = diffDensity2[:, :, :].sum()
print s1, s2, s2-s1
shape1 = diffDensity1.shape()
shape2 = diffDensity2.shape()
# Find the volume elements.
dX1, dY1, dZ1 = diffDensity1.volumeElement()
dX2, dY2, dZ2 = diffDensity2.volumeElement()
# Calculate the unit area in the y-x plane.
dAYX1 = numpy.linalg.norm( numpy.cross(dY1,dX1) )
dAYX2 = numpy.linalg.norm( numpy.cross(dY2,dX2) )
# calculate density along z integrated over y,x
n_z1 = [ diffDensity1[:,:,i].sum() * dAYX1 for i in range(shape1[2]) ]
n_z2 = [ diffDensity2[:,:,i].sum() * dAYX2 for i in range(shape2[2]) ]
dz1 = dZ1.norm()
sum1 = 0 * Units.Bohr**-2
for i in range(shape1[2]):
print dz1*i, n_z1[i]
sum1+=n_z1[i]*dz1
print 'total density1=', sum1
dz2 = dZ2.norm()
sum2 = 0 * Units.Bohr**-2
for i in range(shape2[2]):
print dz2*i, n_z2[i]
sum2+=n_z2[i]*dz2
print 'total density2=', sum2
print s1, s2, s2-s1
print 'diff', sum2-sum1
diffDensity1 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.25000][vds0.50000]")[0]
diffDensity2 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.20000][vds0.50000]")[0]
s1 = diffDensity1[:, :, :].sum()
s2 = diffDensity2[:, :, :].sum()
print s1, s2, s2-s1
shape1 = diffDensity1.shape()
shape2 = diffDensity2.shape()
# Find the volume elements.
dX1, dY1, dZ1 = diffDensity1.volumeElement()
dX2, dY2, dZ2 = diffDensity2.volumeElement()
# Calculate the unit area in the y-x plane.
dAYX1 = numpy.linalg.norm( numpy.cross(dY1,dX1) )
dAYX2 = numpy.linalg.norm( numpy.cross(dY2,dX2) )
print dAYX1, dAYX2
# calculate density along z integrated over y,x
n_z1 = [ diffDensity1[:,:,i].sum() * dAYX1 for i in range(shape1[2]) ]
n_z2 = [ diffDensity2[:,:,i].sum() * dAYX2 for i in range(shape2[2]) ]
dz1 = dZ1.norm()
sum1 = 0 * Units.Bohr**-2
for i in range(shape1[2]):
#print dz1*i, n_z1[i]
sum1+=n_z1[i]*dz1
print 'total density1=', sum1
dz2 = dZ2.norm()
sum2 = 0 * Units.Bohr**-2
for i in range(shape2[2]):
#print dz2*i, n_z2[i]
sum2+=n_z2[i]*dz2
print 'total density2=', sum2
print 'diff', s1, s2, s2-s1
print 'diff', sum1, sum2, sum2-sum1
# let's use s2-s1 as difference in # electrons in channel due to voltage
numElecDiff = (s2-s1).inUnitsOf(Bohr**-3)
print "numElecDiff", numElecDiff
# convert to coulombs
chargeDiff = numElecDiff*1.6e-19
voltDiff = 0.05
capacitance = chargeDiff/voltDiff
print "capacitance in F", capacitance
x=(1/Bohr)**3
x.inUnitsOf(Ang**-3)
dz1 = dZ1.norm()
sum1 = 0 * Units.Bohr**-2
for i in range(shape1[2]):
#print dz1*i, n_z1[i]
sum1+=n_z1[i]*dz1
print 'total density1=', sum1
dz1 = dZ1.norm()
sum1 = 0 * Units.Bohr**-2
for i in range(shape1[2]):
#print dz1*i, n_z1[i]
sum1+=n_z1[i]*dz1
print 'total density1=', sum1
# Estimate the integral of 3x^2 from 0 to 1 (should be 1):
dx = 0.0001
# Generate x-values from 0 to 1 (end-points included, via dx/2)
x = numpy.arange(0,1+dx/2.0,dx)
y = 3*x**2
print sum(y)*dx
cA, cB, cC = density_object.unitCell()
cell_volume = numpy.dot(cC, numpy.cross(cA,cB))*Bohr**3
diffDensity1 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.25000][vds0.50000]")[0]
diffDensity2 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg0.00000][vds0.50000]")[0]
s1 = diffDensity1[:, :, :].sum()
s2 = diffDensity2[:, :, :].sum()
cA1, cB1, cC1 = diffDensity1.unitCell()
dV1 = numpy.dot(cC1, numpy.cross(cA1,cB1))
cA2, cB2, cC2 = diffDensity2.unitCell()
dV2 = numpy.dot(cC2, numpy.cross(cA2,cB2))
numE1b = s1.inUnitsOf(Angstrom**-3)*dV1
numE2b = s2.inUnitsOf(Angstrom**-3)*dV2
print "Total # electrons: ", numE1b, numE2b
numElecDiff = (numE2b-numE1b)
print "numElecDiff", numElecDiff
diffDensity1 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.25000][vds0.50000]")[0]
diffDensity2 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.20000][vds0.50000]")[0]
diffDensity3 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg0.00000][vds0.50000]")[0]
s1 = diffDensity1[:, :, :].sum()
s2 = diffDensity2[:, :, :].sum()
s3 = diffDensity3[:, :, :].sum()
print s1, s2, s3, s2-s1, s3-s2
# Find the volume elements.
dX1, dY1, dZ1 = diffDensity1.volumeElement()
dX2, dY2, dZ2 = diffDensity2.volumeElement()
dX3, dY3, dZ3 = diffDensity3.volumeElement()
length_unit1 = dX1.unit()
length_unit2 = dX2.unit()
length_unit3 = dX3.unit()
# Calculate the volume of the volume element.
dV1 = numpy.dot(dX1, numpy.cross(dY1,dZ1)) * length_unit1**3
dV2 = numpy.dot(dX2, numpy.cross(dY2,dZ2)) * length_unit2**3
dV3 = numpy.dot(dX3, numpy.cross(dY3,dZ3)) * length_unit3**3
print "volumes", dV1, dV2, dV3
numE1 = s1*dV1
numE2 = s2*dV2
numE3 = s3*dV3
print "Total # electrons: ", numE1, numE2, numE3
2.49328980937 1/Bohr**3 2.62952644165 1/Bohr**3 3.18669569532 1/Bohr**3 0.136236632277 1/Bohr**3 0.557169253673 1/Bohr**3
volumes 0.341388054851 Bohr**3 0.341388054851 Bohr**3 0.341388054851 Bohr**3
Total # electrons: 0.851179358199 0.897688917092 1.08789984483
diffDensity1 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.25000][vds0.50000]")[0]
diffDensity2 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg-0.20000][vds0.50000]")[0]
diffDensity3 = nlread(fName, ElectronDifferenceDensity, object_id="diffDensity[vg0.00000][vds0.50000]")[0]
s1 = diffDensity1[:, :, :].sum()
s2 = diffDensity2[:, :, :].sum()
s3 = diffDensity3[:, :, :].sum()
print s1, s2, s3, s2-s1, s3-s2
# Find the volume elements.
dX1, dY1, dZ1 = diffDensity1.volumeElement()
dX2, dY2, dZ2 = diffDensity2.volumeElement()
dX3, dY3, dZ3 = diffDensity3.volumeElement()
print "unit lengths", dX1,dY1,dZ1
print "unit lengths", dX2,dY2,dZ2
length_unit1 = dX1.unit()
length_unit2 = dX2.unit()
length_unit3 = dX3.unit()
# Calculate the volume of the volume element.
dV1 = numpy.dot(dX1, numpy.cross(dY1,dZ1)) * length_unit1**3
dV2 = numpy.dot(dX2, numpy.cross(dY2,dZ2)) * length_unit2**3
dV3 = numpy.dot(dX3, numpy.cross(dY3,dZ3)) * length_unit3**3
print "volumes", dV1, dV2, dV3
numE1 = s1*dV1
numE2 = s2*dV2
numE3 = s3*dV3
print "Total # electrons: ", numE1, numE2, numE3
# let's use s2-s1 as difference in # electrons in channel due to voltage
numElecDiff1 = (numE2-numE1)
numElecDiff2 = (numE3-numE2)
print "numElecDiff", numElecDiff1, numElecDiff2
# convert to coulombs
chargeDiff1 = numElecDiff1*1.6e-19
chargeDiff2 = numElecDiff2*1.6e-19
voltDiff1 = 0.05
voltDiff2 = 0.25
capacitance1 = chargeDiff1/voltDiff1
capacitance2 = chargeDiff2/voltDiff2
print "capacitance", (capacitance1), (capacitance2)
print "capacitance in fF", (capacitance1)*1e15, (capacitance2)*1e15
2.49328980937 1/Bohr**3 2.62952644165 1/Bohr**3 3.18669569532 1/Bohr**3 0.136236632277 1/Bohr**3 0.557169253673 1/Bohr**3
unit lengths [ 0.69774531 0. 0. ] Bohr [ 0. 0.69769726 0. ] Bohr [ 0. 0. 0.70126857] Bohr
unit lengths [ 0.69774531 0. 0. ] Bohr [ 0. 0.69769726 0. ] Bohr [ 0. 0. 0.70126857] Bohr
volumes 0.341388054851 Bohr**3 0.341388054851 Bohr**3 0.341388054851 Bohr**3
Total # electrons: 0.851179358199 0.897688917092 1.08789984483
numElecDiff 0.0465095588926 0.190210927734
capacitance 1.48830588456e-19 1.2173499375e-19
capacitance in fF 0.000148830588456 0.00012173499375
# convert to coulombs
chargeDiff1 = numElecDiff1*1.6e-19
chargeDiff2 = numElecDiff2*1.6e-19
voltDiff1 = 0.05
voltDiff2 = 0.25
capacitance1 = chargeDiff1/voltDiff1
capacitance2 = chargeDiff2/voltDiff2
print "capacitance", (capacitance1), (capacitance2)
capacitance1 /= 1e-15
capacitance2 /= 1e-15
print "capacitance in fF", (capacitance1), (capacitance2)
# (a in 1/nm**2)*(b in nm**2)=cap
# (a in 1/nm**2) = cap/(b in nm**2)
# above is fF over area of device, which is 16nm x 1.29nm = 20.64nm**2
deviceArea = 20.64 # in nm^2
capacitance1 /= deviceArea
capacitance2 /= deviceArea
print "capacitance in fF per nm^2", (capacitance1), (capacitance2)
capacitance1 = capacitance1*1e6
capacitance2 = capacitance2*1e6
print "capacitance in fF per um^2", (capacitance1), (capacitance2)
# multiply by device length in um
deviceLength = 0.016 # in um
capacitance1 = capacitance1*deviceLength
capacitance2 = capacitance2*deviceLength
print "capacitance in fF per um width", (capacitance1), (capacitance2)
numElecDiff 0.0465095588926 0.190210927734
capacitance 1.48830588456e-19 1.2173499375e-19
capacitance in fF 0.000148830588456 0.00012173499375
capacitance in fF per nm^2 7.21078432443e-06 5.89801326307e-06
capacitance in fF per um^2 7.21078432443 5.89801326307
capacitance in fF per um width 0.115372549191 0.094368212209
i think their picture of the inversion layer near the drain is misleading