code:-
go atlas
mesh auto
#
x.mesh loc=0.0 spacing=0.1
x.mesh loc=1.0 spacing=0.1
region material=Silicon bot ny=50 thick=0.5
#
elec num=1 name=anode y.max=0.05 material=ITO
elec num=2 name=cathode y.min=0.45 y.max=0.5 material=Ito
doping uniform conc=1e12 n.type
doping gaus peak=0.05 char=0.01 conc=1e16 p.type dir=y
doping gaus peak=0.45 char=0.01 conc=1e16 n.type dir=y
material mat=Silicon mun=20 mup=1.5 nc300=2.5e18 nv300=1.9e19 eg300=1.9
defects mat=silicon nta=1.e19 ntd=1.e19 wta=0.033 wtd=0.049 \
nga=1.5e15 ngd=1.5e15 ega=0.62 egd=0.78 wga=0.15 wgd=0.15 \
sigtae=1.e-16 sigtah=1.e-15 sigtde=1.e-15 sigtdh=1.e-16 \
siggae=2.e-16 siggah=2.e-15 siggde=2.e-15 siggdh=2.e-16 \
continuous
material mat=ITO sopra=Ito2.nk
models srh auger fermi ni.fermi conmob print
method newton trap
beam num=1 am1.5g x.o=0 y.o=-1.0 angle=90 tr.mat
save outf=abc.str
tonyplot abc.str
solve init
solve b1=1.0
log outf=abc.log
solve vanode=0.0 name=anode vstep=0.01 vfinal=1.2
tonyplot abc.log
extract init infile="abc.log"
extract name="Jsc" max(curve(v."anode", i."cathode")) outf="I.log"
extract name="JscmAcm2" $Jsc*1e08*1e03 outf="J.dat"
extract name="Voc" x.val from curve(v."anode",i."cathode") where y.val=0.0 outf="V.dat"
extract name="Pm" max(curve(v."anode", (v."anode" *i."cathode"*(-1))))
extract name="FF" ($"Pm"/($"Jsc"*$"Voc"))*100
extract name="Opt_int" max(beam."1")
extract name="Eff" (1e8*$Pm/$Opt_int)*100 outf="E.dat"
quit
Result:-