What's the Athena (Silvaco) code for pyramid texturing on a solar cell?

  • Thread starter Thread starter EliaJhon
  • Start date Start date
AI Thread Summary
The discussion focuses on simulating back-contact perovskite solar cells using the Athena code for pyramid texturing. The user is encountering errors during execution, specifically at the point of extracting data from the log file. They seek assistance from the community to resolve these issues and successfully model the desired structure without additional deposition. Suggestions include debugging techniques and potential code adjustments, although specific solutions for the Athena environment are limited. The conversation highlights the challenges faced in simulation coding and the need for community support in troubleshooting.
EliaJhon
Messages
3
Reaction score
0
Hello everyone,

I am simulating back-contact perovskite solar cells (BC-PSCs) using Atlas. Now, I want to test my structure by adding pyramid-like textures (attached image as an example) on the top surface of the perovskite (absorber) layer using the etching command in Athena and analyze its performance. However, despite several attempts, I keep encountering errors when executing my code.

If anyone in the community has experience with this or suggestions, I would greatly appreciate your help.

Thank you!

Screenshot 2025-05-25 120902.webp
 
Last edited by a moderator:
Engineering news on Phys.org
You say you get errors executing your code. Sounds like the error is in there somewhere. I take it's not opensource though. :smile:
 
What specific errors do you encounter?
 
sbrothy said:
What specific errors do you encounter?
Error.webp
BC-PSC.webp


Thanks @sbrothy for responding. Could you please see the attachments. My code stop execution when reach to this point (extract init infile="solar_light.log") and the error (first attached image) pop up. I want to model and simulate structure as shown in the second attached image, no deposition etc., just etching of the top bare surface.


Code:
go Athena

line x loc=0.00 spac=0.05
line x loc=0.25 spac=0.05
line x loc=0.5 spac=0.05
line x loc=0.75 spac=0.05
line x loc=1 spac=0.05
line x loc=1.25 spac=0.05
line x loc=1.5 spac=0.05
line x loc=1.75 spac=0.05
line x loc=2 spac=0.05
line x loc=2.25 spac=0.05
line x loc=2.5 spac=0.05
line x loc=3 spac=0.05
line x loc=3.25 spac=0.05
line x loc=3.5 spac=0.05
line x loc=3.75 spac=0.05
line x loc=4 spac=0.05
line x loc=4.25 spac=0.05
line x loc=4.5 spac=0.05
line x loc=4.75 spac=0.05
line x loc=5 spac=0.05

line y loc=0.05 spac=0.05
line y loc=0.85 spac=0.05
line y loc=0.9 spac=0.05
line y loc=0.95 spac=0.05
line y loc=1.05 spac=0.05
line y loc=1.1 spac=0.05
line y loc=1.6 spac=0.05

#
init oxide

etch start x=0 y=0.05
etch cont x=0.25 y=0.05
etch cont x=0.5 y=0.2
etch cont x=0.75 y=0.2
etch cont x=1 y=0.05
etch cont x=1.25 y=0.05
etch cont x=1.5 y=0.2
etch cont x=1.75 y=0.2
etch cont x=2 y=0.05
etch cont x=2.25 y=0.05
etch cont x=2.5 y=0.2
etch cont x=2.75 y=0.2
etch cont x=3 y=0.05
etch cont x=3.25 y=0.05
etch cont x=3.5 y=0.2
etch cont x=3.75 y=0.2
etch cont x=4 y=0.05
etch cont x=4.25 y=0.05
etch cont x=4.5 y=0.2
etch cont x=4.75 y=0.2
etch done x=5 y=0.05

save outf=abc.str

go Atlas

mesh infile=abc.str

x.mesh loc=0.00 spac=0.05
x.mesh loc=1 spac=0.05
x.mesh loc=2 spac=0.05
x.mesh loc=3 spac=0.05
x.mesh loc=4 spac=0.05
x.mesh loc=5 spac=0.05

y.mesh loc=0.05 spac=0.05
y.mesh loc=0.85 spac=0.05
y.mesh loc=0.9 spac=0.05
y.mesh loc=0.95 spac=0.05
y.mesh loc=1.05 spac=0.05
y.mesh loc=1.1 spac=0.05
y.mesh loc=1.6 spac=0.05


region num=1 user.material=CH3NH3PbI3 x.min=0 x.max=5 y.min=0.05 y.max=1.05

region num=2 material=air x.min=0 x.max=1 y.min=0.85 y.max=1.05
region num=3 material=air x.min=2 x.max=3 y.min=0.85 y.max=1.05   
region num=4 material=air x.min=4 x.max=5 y.min=0.85 y.max=1.05

region num=5 user.material=NiOx x.min=0 x.max=1 y.min=0.85 y.max=0.95 
region num=6 user.material=NiOx x.min=2 x.max=3 y.min=0.85 y.max=0.95   
region num=7 user.material=NiOx x.min=4 x.max=5 y.min=0.85 y.max=0.95   

region num=8 material=air x.min=0.05 x.max=0.95 y.min=0.9 y.max=0.95
region num=9 material=air x.min=2.05 x.max=2.95 y.min=0.9 y.max=0.95   
region num=10 material=air x.min=4.05 x.max=4.95 y.min=0.9 y.max=0.95 
 
region num=11 material=Nickel x.min=0.05 x.max=0.95 y.min=0.9 y.max=0.95
region num=12 material=Nickel x.min=2.05 x.max=2.95 y.min=0.9 y.max=0.95   
region num=13 material=Nickel x.min=4.05 x.max=4.95 y.min=0.9 y.max=0.95   

region num=14 material=Al2O3 x.min=0 x.max=1 y.min=0.95 y.max=1.05
region num=15 material=Al2O3 x.min=2 x.max=3 y.min=0.95 y.max=1.05
region num=16 material=Al2O3 x.min=4 x.max=5 y.min=0.95 y.max=1.05

region num=17 material=ZnO x.min=0 x.max=5 y.min=1.05 y.max=1.1
region num=18 user.material=FTO x.min=0 x.max=5 y.min=1.1 y.max=1.6
region num=19 user.material=glass x.min=0.0 x.max=5 y.min=1.6 y.max=1.63

electrode region=11 name=anode x.min=0.05 x.max=0.95 y.min=0.9 y.max=0.95 material=Nickel
electrode region=12 name=anode x.min=2.05 x.max=2.95 y.min=0.9 y.max=0.95 material=Nickel
electrode region=13 name=anode x.min=4.05 x.max=4.95 y.min=0.9 y.max=0.95 material=Nickel
electrode region=18 name=cathode x.min=0 x.max=5 y.min=1.1 y.max=1.6 material=FTO

struct outfile=solar.str

go atlas

mesh infile=solar.str
doping uniform p.type conc=1e17 reg=1
doping uniform p.type conc=1e18 reg=5
doping uniform p.type conc=1e18 reg=6
doping uniform p.type conc=1e18 reg=7
doping uniform n.type conc=1e19 reg=17


material material=CH3NH3PbI3 user.group=semiconductor user.default=GaAs eg300=1.55 affinity=3.9 permittivity=30 NC300=4.42e17 NV300=8.72e18 MUN=10 MUP=5 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/PVK2.NK taun0=1e-6 taup0=1e-6 AUGN=0.88e-29 AUGP=0.88e-29 COPT=3.27e-11

material material=NiOx user.group=semiconductor user.default=sio2 eg300=3.75 affinity=1.46 permittivity=10.7 NC300=2.8e19 NV300=1e19 MUN=12 MUP=2.8 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/NiOx.nk taun0=1e-6 taup0=1e-5

material material=Nickel index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Ni-index.nk

material material=Al2O3 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Al2O3-index.nk

material material=ZnO user.group=semiconductor user.default=sio2 eg300=3.6 affinity=4 permittivity=9 NC300=2.2e18 NV300=1.8e19 MUN=100 MUP=25 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/SnO2-index.nk taun0=3.4e-7 taup0=3.4e-7

material material=FTO user.group=semiconductor user.default=ITO index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/FTO.NK

material material=glass user.group=insulator user.default=air real.index=1.5168 imag.index=9.7525e-9


###including models in simulations###
models bipolar fermi srh fldmob conmob auger optr print

method newton maxtrap=20

output opt.int band.temp con.band val.band charge polar.charge band.param e.mobility h.mobility u.srh u.radiative u.auger permi

contact name=anode workf=5.1

contact name=cathode workf=4.5

solve init
solve prev
save outf=solar1.str
tonyplot solar1.str

solve init
solve prev
log outf=solar_dark.log
solve vanode=0.0 name=anode vstep=0.01 vfinal=1.3
log off

###SUNLIGHT###

beam num=1 x.orig=2.5 y.orig=-1.7 angle=90 power.file=C:/sedatools/lib/atlas/5.28.1.R/common/Am15-300-900.SPEC min.window=-2.5 max.window=2.5 front.reflect

solve init
Solve prev
Solve b1=0.001
Solve b1=0.01
Solve b1=0.1
Solve b1=1

log outf=solar_light.log
solve vanode=0.0 name=anode vstep=0.01 vfinal=1.3

tonyplot -overlay solar_dark.log solar_light.log
log off
struct outfile=solar2.str
tonyplot solar2.str
###_Post_Processing_###
extract init infile="solar_light.log"
extract name="Jsc" y.val from curve(v."anode", i."cathode") where x.val=0.0
extract name="JscmAcm2" $Jsc*20e06*1e03
extract name="Voc" x.val from curve(v."anode", i."cathode") where y.val=0.0
extract name="Pm" max(curve(v."anode", (v."anode" * i."cathode")))
extract name="Vm" x.val from curve(v."anode", (v."anode"*i."cathode") ) \
    where y.val=$"Pm"
extract name="Im" $"Pm"/$"Vm"
extract name="FF" $"Pm"/($"Jsc"*$"Voc")*100
extract name="Eff"(20e06*$Pm/(0.1))*100
tonyplot P.dat


go atlas

mesh infile=solar2.str

material material=CH3NH3PbI3 user.group=semiconductor user.default=GaAs eg300=1.55 affinity=3.9 permittivity=30 NC300=4.42e17 NV300=8.72e18 MUN=10 MUP=5 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/PVK2.NK taun0=1e-6 taup0=1e-6 AUGN=0.88e-29 AUGP=0.88e-29 COPT=3.27e-11

material material=NiOx user.group=semiconductor user.default=sio2 eg300=3.75 affinity=1.46 permittivity=10.7 NC300=2.8e19 NV300=1e19 MUN=12 MUP=2.8 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/NiOx.nk taun0=1e-6 taup0=1e-5

material material=Nickel index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Ni-index.nk

material material=Al2O3 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Al2O3-index.nk

material material=ZnO user.group=semiconductor user.default=sio2 eg300=3.6 affinity=4 permittivity=9 NC300=2.2e18 NV300=1.8e19 MUN=100 MUP=25 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/SnO2-index.nk taun0=3.4e-7 taup0=3.4e-7

material material=FTO user.group=semiconductor user.default=ITO index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/FTO.NK

material material=glass user.group=insulator user.default=air real.index=1.5168 imag.index=9.7525e-9

contact name=anode workf=5.1
contact name=cathode workf=4.5

solve init
solve prev

beam num=1 x.orig=2.5 y.orig=-1.7 angle=90 power.file=C:/sedatools/lib/atlas/5.28.1.R/common/Am15-300-900.SPEC min.window=-2.5 max.window=2.5 front.reflect

output opt.int band.temp con.band val.band charge polar.charge band.param e.mobility h.mobility u.srh u.radiative u.auger permi

models bipolar fermi srh fldmob conmob auger optr print

solve init
solve prev
log outf=solar3.log

solve init
solve prev
solve b1=1 beam=1 lambda=0.03 wstep=0.003 wfinal=0.9

tonyplot solar3.log

extract init inf="solar3.log"

extract name="IQE"curve(elect."optical wavelength",-(i."anode")/elect."available photo current") outf="IQE.dat"
extract name="EQE" curve(elect."optical wavelength",-(i."anode")/elect."source photo current") outf="EQE.dat"
extract name="EQE2"\
curve(elect."optical wavelength", -(i."anode")/elect."source photo current"*elect."Absorption") outf="EQE2.dat"

tonyplot-overlay IQE.dat EQE.dat EQE2.dat

quit
 
That is aboslutely the error of every debuggers nightmare. I would expect it from a dangling pointer, but I'm not an Athena wizard. Had it been C++ I would have recommended this useful little, rather dirty, hack:

If you were using a precompiled header place this in it (if not then just before the error somewhere):

[...]
#include <cxxabi.h>

namespace pch {

// hack to determine exception type
auto const ex_type = [] -> const char * {
return abi::__cxa_demangle(abi::__cxa_current_exception_type()->name(), 0, 0, new int);
}

} // namespace pch {

[...]

Then (include the PCH goes without saying) and sorround the place you think the error is with a try/catch block like so:

[...]

try {

// BLOCK OF CODE
} catch(std::exception &e) {
std::cerr << "Exception caught: [" << pch::ex_type() << "]: " << e.what() << std::endl;
} catch(...) {
std::cerr << "Exception caught: [" << pch::ex_type() << "]" << std::endl;
}

Sometimes this gives some extra helpful information. But yeah. It's a dirty hack. I usually comment it in and out to prevent myself from getting too lazy.
 
I'd have to read up a little on Athena to be of any real help. I'm sorry.

If Athena employs garbage collection it almost sounds like a divide by 0 error or some such.

I can see Athena is written in C so you could put my hack in there, but that's probably way too much hassle. You'll probably have to insert a little code at a time until you encounter the offending part.
 
EliaJhon said:
View attachment 362333View attachment 362334

Thanks @sbrothy for responding. Could you please see the attachments. My code stop execution when reach to this point (extract init infile="solar_light.log") and the error (first attached image) pop up. I want to model and simulate structure as shown in the second attached image, no deposition etc., just etching of the top bare surface.


Code:
go Athena

line x loc=0.00 spac=0.05
line x loc=0.25 spac=0.05
line x loc=0.5 spac=0.05
line x loc=0.75 spac=0.05
line x loc=1 spac=0.05
line x loc=1.25 spac=0.05
line x loc=1.5 spac=0.05
line x loc=1.75 spac=0.05
line x loc=2 spac=0.05
line x loc=2.25 spac=0.05
line x loc=2.5 spac=0.05
line x loc=3 spac=0.05
line x loc=3.25 spac=0.05
line x loc=3.5 spac=0.05
line x loc=3.75 spac=0.05
line x loc=4 spac=0.05
line x loc=4.25 spac=0.05
line x loc=4.5 spac=0.05
line x loc=4.75 spac=0.05
line x loc=5 spac=0.05

line y loc=0.05 spac=0.05
line y loc=0.85 spac=0.05
line y loc=0.9 spac=0.05
line y loc=0.95 spac=0.05
line y loc=1.05 spac=0.05
line y loc=1.1 spac=0.05
line y loc=1.6 spac=0.05

#
init oxide

etch start x=0 y=0.05
etch cont x=0.25 y=0.05
etch cont x=0.5 y=0.2
etch cont x=0.75 y=0.2
etch cont x=1 y=0.05
etch cont x=1.25 y=0.05
etch cont x=1.5 y=0.2
etch cont x=1.75 y=0.2
etch cont x=2 y=0.05
etch cont x=2.25 y=0.05
etch cont x=2.5 y=0.2
etch cont x=2.75 y=0.2
etch cont x=3 y=0.05
etch cont x=3.25 y=0.05
etch cont x=3.5 y=0.2
etch cont x=3.75 y=0.2
etch cont x=4 y=0.05
etch cont x=4.25 y=0.05
etch cont x=4.5 y=0.2
etch cont x=4.75 y=0.2
etch done x=5 y=0.05

save outf=abc.str

go Atlas

mesh infile=abc.str

x.mesh loc=0.00 spac=0.05
x.mesh loc=1 spac=0.05
x.mesh loc=2 spac=0.05
x.mesh loc=3 spac=0.05
x.mesh loc=4 spac=0.05
x.mesh loc=5 spac=0.05

y.mesh loc=0.05 spac=0.05
y.mesh loc=0.85 spac=0.05
y.mesh loc=0.9 spac=0.05
y.mesh loc=0.95 spac=0.05
y.mesh loc=1.05 spac=0.05
y.mesh loc=1.1 spac=0.05
y.mesh loc=1.6 spac=0.05


region num=1 user.material=CH3NH3PbI3 x.min=0 x.max=5 y.min=0.05 y.max=1.05

region num=2 material=air x.min=0 x.max=1 y.min=0.85 y.max=1.05
region num=3 material=air x.min=2 x.max=3 y.min=0.85 y.max=1.05  
region num=4 material=air x.min=4 x.max=5 y.min=0.85 y.max=1.05

region num=5 user.material=NiOx x.min=0 x.max=1 y.min=0.85 y.max=0.95
region num=6 user.material=NiOx x.min=2 x.max=3 y.min=0.85 y.max=0.95  
region num=7 user.material=NiOx x.min=4 x.max=5 y.min=0.85 y.max=0.95  

region num=8 material=air x.min=0.05 x.max=0.95 y.min=0.9 y.max=0.95
region num=9 material=air x.min=2.05 x.max=2.95 y.min=0.9 y.max=0.95  
region num=10 material=air x.min=4.05 x.max=4.95 y.min=0.9 y.max=0.95
 
region num=11 material=Nickel x.min=0.05 x.max=0.95 y.min=0.9 y.max=0.95
region num=12 material=Nickel x.min=2.05 x.max=2.95 y.min=0.9 y.max=0.95  
region num=13 material=Nickel x.min=4.05 x.max=4.95 y.min=0.9 y.max=0.95  

region num=14 material=Al2O3 x.min=0 x.max=1 y.min=0.95 y.max=1.05
region num=15 material=Al2O3 x.min=2 x.max=3 y.min=0.95 y.max=1.05
region num=16 material=Al2O3 x.min=4 x.max=5 y.min=0.95 y.max=1.05

region num=17 material=ZnO x.min=0 x.max=5 y.min=1.05 y.max=1.1
region num=18 user.material=FTO x.min=0 x.max=5 y.min=1.1 y.max=1.6
region num=19 user.material=glass x.min=0.0 x.max=5 y.min=1.6 y.max=1.63

electrode region=11 name=anode x.min=0.05 x.max=0.95 y.min=0.9 y.max=0.95 material=Nickel
electrode region=12 name=anode x.min=2.05 x.max=2.95 y.min=0.9 y.max=0.95 material=Nickel
electrode region=13 name=anode x.min=4.05 x.max=4.95 y.min=0.9 y.max=0.95 material=Nickel
electrode region=18 name=cathode x.min=0 x.max=5 y.min=1.1 y.max=1.6 material=FTO

struct outfile=solar.str

go atlas

mesh infile=solar.str
doping uniform p.type conc=1e17 reg=1
doping uniform p.type conc=1e18 reg=5
doping uniform p.type conc=1e18 reg=6
doping uniform p.type conc=1e18 reg=7
doping uniform n.type conc=1e19 reg=17


material material=CH3NH3PbI3 user.group=semiconductor user.default=GaAs eg300=1.55 affinity=3.9 permittivity=30 NC300=4.42e17 NV300=8.72e18 MUN=10 MUP=5 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/PVK2.NK taun0=1e-6 taup0=1e-6 AUGN=0.88e-29 AUGP=0.88e-29 COPT=3.27e-11

material material=NiOx user.group=semiconductor user.default=sio2 eg300=3.75 affinity=1.46 permittivity=10.7 NC300=2.8e19 NV300=1e19 MUN=12 MUP=2.8 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/NiOx.nk taun0=1e-6 taup0=1e-5

material material=Nickel index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Ni-index.nk

material material=Al2O3 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Al2O3-index.nk

material material=ZnO user.group=semiconductor user.default=sio2 eg300=3.6 affinity=4 permittivity=9 NC300=2.2e18 NV300=1.8e19 MUN=100 MUP=25 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/SnO2-index.nk taun0=3.4e-7 taup0=3.4e-7

material material=FTO user.group=semiconductor user.default=ITO index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/FTO.NK

material material=glass user.group=insulator user.default=air real.index=1.5168 imag.index=9.7525e-9


###including models in simulations###
models bipolar fermi srh fldmob conmob auger optr print

method newton maxtrap=20

output opt.int band.temp con.band val.band charge polar.charge band.param e.mobility h.mobility u.srh u.radiative u.auger permi

contact name=anode workf=5.1

contact name=cathode workf=4.5

solve init
solve prev
save outf=solar1.str
tonyplot solar1.str

solve init
solve prev
log outf=solar_dark.log
solve vanode=0.0 name=anode vstep=0.01 vfinal=1.3
log off

###SUNLIGHT###

beam num=1 x.orig=2.5 y.orig=-1.7 angle=90 power.file=C:/sedatools/lib/atlas/5.28.1.R/common/Am15-300-900.SPEC min.window=-2.5 max.window=2.5 front.reflect

solve init
Solve prev
Solve b1=0.001
Solve b1=0.01
Solve b1=0.1
Solve b1=1

log outf=solar_light.log
solve vanode=0.0 name=anode vstep=0.01 vfinal=1.3

tonyplot -overlay solar_dark.log solar_light.log
log off
struct outfile=solar2.str
tonyplot solar2.str
###_Post_Processing_###
extract init infile="solar_light.log"
extract name="Jsc" y.val from curve(v."anode", i."cathode") where x.val=0.0
extract name="JscmAcm2" $Jsc*20e06*1e03
extract name="Voc" x.val from curve(v."anode", i."cathode") where y.val=0.0
extract name="Pm" max(curve(v."anode", (v."anode" * i."cathode")))
extract name="Vm" x.val from curve(v."anode", (v."anode"*i."cathode") ) \
    where y.val=$"Pm"
extract name="Im" $"Pm"/$"Vm"
extract name="FF" $"Pm"/($"Jsc"*$"Voc")*100
extract name="Eff"(20e06*$Pm/(0.1))*100
tonyplot P.dat


go atlas

mesh infile=solar2.str

material material=CH3NH3PbI3 user.group=semiconductor user.default=GaAs eg300=1.55 affinity=3.9 permittivity=30 NC300=4.42e17 NV300=8.72e18 MUN=10 MUP=5 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/PVK2.NK taun0=1e-6 taup0=1e-6 AUGN=0.88e-29 AUGP=0.88e-29 COPT=3.27e-11

material material=NiOx user.group=semiconductor user.default=sio2 eg300=3.75 affinity=1.46 permittivity=10.7 NC300=2.8e19 NV300=1e19 MUN=12 MUP=2.8 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/NiOx.nk taun0=1e-6 taup0=1e-5

material material=Nickel index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Ni-index.nk

material material=Al2O3 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/Al2O3-index.nk

material material=ZnO user.group=semiconductor user.default=sio2 eg300=3.6 affinity=4 permittivity=9 NC300=2.2e18 NV300=1.8e19 MUN=100 MUP=25 index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/SnO2-index.nk taun0=3.4e-7 taup0=3.4e-7

material material=FTO user.group=semiconductor user.default=ITO index.file=C:/sedatools/lib/atlas/5.28.1.R/common/sopra/FTO.NK

material material=glass user.group=insulator user.default=air real.index=1.5168 imag.index=9.7525e-9

contact name=anode workf=5.1
contact name=cathode workf=4.5

solve init
solve prev

beam num=1 x.orig=2.5 y.orig=-1.7 angle=90 power.file=C:/sedatools/lib/atlas/5.28.1.R/common/Am15-300-900.SPEC min.window=-2.5 max.window=2.5 front.reflect

output opt.int band.temp con.band val.band charge polar.charge band.param e.mobility h.mobility u.srh u.radiative u.auger permi

models bipolar fermi srh fldmob conmob auger optr print

solve init
solve prev
log outf=solar3.log

solve init
solve prev
solve b1=1 beam=1 lambda=0.03 wstep=0.003 wfinal=0.9

tonyplot solar3.log

extract init inf="solar3.log"

extract name="IQE"curve(elect."optical wavelength",-(i."anode")/elect."available photo current") outf="IQE.dat"
extract name="EQE" curve(elect."optical wavelength",-(i."anode")/elect."source photo current") outf="EQE.dat"
extract name="EQE2"\
curve(elect."optical wavelength", -(i."anode")/elect."source photo current"*elect."Absorption") outf="EQE2.dat"

tonyplot-overlay IQE.dat EQE.dat EQE2.dat

quit

I'm instantly suspicious of all the external files loaded. Are those ones you coded yourself? How far can you cut the project back down. I mean specifically to a point where it worked?
 
I downloaded Athena from github: https://github.com/adobe/athena and it seems it doesn't know anything about any DeckEditorError, so I'm assuming the error comes from Silvaco?

Silvaco doesn't seem to be open source though. I think a better place to ask would be here:

edaboard.com

EDIT: But I admit I'm groping, mostly because no one else seems to be helping...
 
  • #11
@sbrothy I am using DeckBuild, which is a graphical user interface (GUI) that serves as a central platform for developing, debugging, and running simulation decks. The code/script needs to be written/pasted on which DeckBuild runs the simulations. So basically, the software is Silvaco, which has a GUI (DeckBuild). Silvaco has many tools for various purposes. In the context of solar cell simulations, the ones I am using are the Atlas and Athena tools of Silvaco. Atlas is used to simulate the solar cells' output parameters (Voc, Jsc, FF, PCE, etc.), whereas Athena is used for generating different shapes/structures.

The problem I am facing is the coupling of Athena and Atlas. You shared some groups, which I already joined; unfortunately, they didn't help me in this matter. The manual guide of Athena is a mess, specifically in the niche I am working on. By the way, thanks for your time!
 
Back
Top