# solve_init

Synopsys: solve_init(grid3D,interface3D,channel)

solve_init compute the initial solution of the 3D Poisson equation, when dealing with quasi-1D channels, displaced along the z-axis. In particular, it solves the Laplace equation over the whole domain, imposing Dirichlet boundary conditions in correspondence of the gate, and in correspondence of the atoms belonging to the doped reservoirs (defined by means of the dope_reservoirs command). In particular, the potential E* to be imposed in the reservoirs is computed assuming complete ionization and solving the equation

where N1D is the 1D density of states self-computed by the solve_init procedure, while the left hand term is the fixed charge, equal to the molar fraction of the reservoir.

If zmean is the mean z-coordinate of the structure, we also make the assumption that atoms belonging to a reservoir and with z-coordinate > zmean have an electrochemical potential equal to channel.mu2, and equal to channel.mu1 if z-coordinate < zmean.

Here an example of the solve_init command (the command is highlighted in red)

# I create the grid
x1=array([-2,-1.70172,-1.43483,-1.19604,-0.982388,-0.791223,-0.620181,0]);
x2=array([0.620181,0.791223,0.982388,1.19604,1.43483,1.70172,2]);
xg=concatenate((x1,x2),1);
y1=array([-2,-1.70172,-1.43483,-1.19604,-0.982388,-0.791223,-0.620181]);
y2=array([0.620181,0.791223,0.982388,1.19604,1.43483,1.70172,2]);
yg=concatenate((y1,y2),1);
zg=array([-0.072,30.024]);

CNT=nanotube(13,30);
CNT.atoms_coordinates();

grid=grid3D(xg,yg,zg,CNT.x,CNT.y,CNT.z);

savetxt(“gridx.out”,grid.gridx);
savetxt(“gridy.out”,grid.gridy);
savetxt(“gridz.out”,grid.gridz);

# Now I define the gate regions
top_gate=gate(“hex”,2,2,-2,2,10,20)
bottom_gate=gate(“hex”,-2,-2,-2,2,10,20)
top_gate.Ef=-0.0;
bottom_gate.Ef=0;
CNT.Nmodes=2;
CNT.mu2=-0.1
# I take care of the solid
SiO2=region(“hex”,-2,2,-2,2,grid.gridz[0],grid.gridz[grid.nz-1]);
SiO2.eps=3.9;

p=interface3D(grid,top_gate,bottom_gate,SiO2);

# I dope the reservoirs
dope_reservoir(grid,p,CNT,5e-3,
array([grid.xmin,grid.xmax,grid.ymin,grid.ymax,0,10]));

dope_reservoir(grid,p,CNT,5e-3,
array([grid.xmin,grid.xmax,grid.ymin,grid.ymax,20,30]));

p.normpoisson=1e-3;

p.modespace=”yes”
CNT.Nmodes=2;

# Here I compute the initial solution
solve_init(grid,p,CNT);

# Now that I have an initial solution, I can start computing the
# self consistent problem
p.normpoisson=1e-1;
p.normd=5e-2;
solve_self_consistent(grid,p,CNT);