Simulate organic/Perovskite Solar Cells, OFETs, and OLEDs
News, Recent releases of OghmaNano:
15/10/2024: OghmaNano 8.1.007
The major change in this release is that all code relating to saving and loading parameters and all data structures has been converted from python to C. This has removed about 10k lines of python code form the code base and sped things up. The aim is to strip out as much python code as possible but now that the data structures are in C there is no urgent pressure to do this. Having the data structures in python was a major bottleneck because it meant any fast code had to have data passed to it from python and complicated algorithm flow.
More OpenGL code moved to C
Flybys now in C
Lights now in C
oghmalocal now in C
OpenGL grids in C
All windows now use C json rather than python json
Bibtex in C
Bug fixes for release
19/08/2024: OghmaNano 8.1.001
Added translations for: Turkish (🇹🇷), Polish (🇵🇱), Malay (🇲🇾), Georgian (🇬🇪), Japanese (🇯🇵), Ukrainian (🇺🇦), Italian (🇮🇹), Hindi (🇮🇳), Hebrew (🇮🇱), Estonian (🇪🇪), Greek (🇬🇷), Welsh (🇬🇧,🐉), Latin (🦅).
Lines of C ⬆️158,385 (up from 152,571), lines of Python ⬇️ 57,997 (down from 60,309).
Half of the sim.json file structure is now generated in C for speed.
Unified random number generator through model with mtwister as the default.
Unified seeds for random number generator, can be based on time or static number.
Speedups of 60% for fitting many device simulations.
Added Hamiltonian Monte-Carlo to fitting algorithms
Added thermal annealing to fitting algorithms
Rewrite of job scheduler in C, there is now only one job scheduler for both GUI and oghma_core.
Look up tables for json tokens now all in C for speed.
Added module component to the circuit solver.
PCE correctly calculated for modules.
General bug fixes for release.
PyOgham now the official python interface to OghmaNano
28/11/2023-19/08/2024: OghmaNano 8.0.038-8.0.044
Improved and unified color map.
Solver cache rewritten
Circuit editor uses svg files for components.
Fixes for low temperature
General bug fixes.
04/03/2023-28/11/2023: OghmaNano 8.0.003-8.0.038
Replaced pyutil with Win API calls
OpenGL scaling now in C
Added more FDTD demos
Mode solver added
Bibtex references can now be added to any token in any json file
Stack/epitaxy optimiser added
Improved 2D PL code
Optical detectors now rewritten and made more general
Material parameters can now be calculated as a function of x/y using equations
Contacts can now be at any xyz in space - needed for modules
More advanced 3D structures in the circuit model now possible for modules
Movement of shapes is now done in C and not Python - speed
Paths now calculated in C.
Added code to generate ML data sets - now in C and fast.
Ray tracing now works for each layer.
04/03/2023: 8.0.003
OghmaCore is now a 64bit
2D Newton solver cache now working again (fixed for Freddie)
Stand alone 1D equilibrium solver now working again
2D solver can now go to over 100V as bug long double bug fixed
Gaussian beams work with ray tracing
Triangles manipulation code converted to C
Star rendering now in C
Render pipeline now fully in C
FDTD images now in C and removed the need to generate png files
gl_scale moved to gl_main again in C
fonts now in gl_main
Box resizing now works with mouse in C
Objects can be rotated with the mouse
Fonts now rendered with FreeType directly C
GL Objects now built in C
06/02/2023: V8.0.000
Rewritten the file loading code of the GUI in C for faster loading times.
Rewritten much of the OpenGL code in C for faster rendering times.
3D circuits now dumped in binary for greater speed.
Real earth star map now drawn when star option is turned on!
Started removing matplot lib as it's a bit slow.
Bug fixes in fitting for Alexi
Less data dumped during fitting for speed up.
FX/time domain code now works with simple circuit models.
Sorted out the materials database a bit.
Faster drawing of the selector widget.
Scan window rewritten not to use inp files but json files.
New fonts
Optical mesh window introduced
Thermal mesh window introduced for Jun
Name change from gpvdm to OghmaNano - because it's easier to say
Added probe window
Added PM6:Y6 solar cell demos from Chemnitz colab.
Moving away from .dat format and to csv.
Triangle files can be in binary format.
Can turn off DD equations in oxide layers of OFETs.
Added optical detectors.
Moved to PySide2 away from PyQT
Improved FDTD can run on GPU.
Added OpenCL kernel code.
OpenGL lighting sorted.
Align and distribute functions for 3D objects.
More languages added via google translate, Arabic, Chinese, French and Spanish.
Last .inp files removed now everything in sim.json.
Moved all windows code to wchar_t for non Latin character sets.
Almost everything using native Win32 API calls.
3D exciton solver.
15/09/2021: V7.88.032
Faster mobile ions solving for perovskites and bugs in perovskite code fixed, much better now.
Fixes for thermal model
Rewritten doping editor to use Na/Nd
New place for thermal materials in the materials data base
json.inp now called sim.json
Position of windows now stored in json file in OghmaNano_local
Layer widget rewritten so copy and paste works
Copy and paste in table widgets works
Accelerated OpenGL rendering - lots of work in this version on making the OpenGL back end better
Objects can be moved with the mouse and they go in the correct direction in 3d
Objects can be rotated with the mouse
More complex optical sources now allowed, and mixing of optical sources
Orthographic projection view added.
Light sources can be moved with the mouse
Free objects which are not attached to the device are now allowed
Back end code for optical detectors added but not fully working
Bugs fixed in oled example
New ray trace example
Micro lens demo works better
12/03/2021: V7.88.017
Gnuplot fitting bug in windows fixed.
Icon bug fixed.
Theta SRH from Kaienburg, Phys. Rev. App. 6, 024001 (2016), 10.1103/PhysRevApplied.6.024001 now spat out in sim_info.dat
When Voc is not reached in JV simulation, other parameters relying on it are set to -1, i.e. FF.
J_photo and I_photo added to the output of sim_info.dat.
Faster 2D plotting in the optical window.
11/03/2021: V7.88.016
Really minor buffer overflow bug fixed in the fitting code
Equivalent circuit code now fully working
New band diagram code linked to materials database.
22/02/2021: V7.88.014
Been through the code with valgrind (again) to pick up memory issues
Json now dumped in compressed format when fitting (faster less disk io)
Json files now have no limit on size.
Improved job list code, it's now a linked list and avoids realloc so that pointers to jobs can be passed around threads with no potential corruption issues.
Deleted lost of inp file code
Dlls now only loaded once while fitting
Fitting code moved out of dlls and into main exe
Can copy and paste fits, and also configurations as json
Optical output now stored in the snapshots directory
Dlls now only loaded once while fitting
Optical model will only become threaded when not solving a 1D structure, thus removing threading overhead.
22/01/2021: V7.88.011
Greek translation by Dimitris Tsikritzis added.
Circuit editor translated to json.
Fitting can now work on log scale.
Materials data base now in json.
Latex backend rewritten.
More static vars removed.
Improved code explorer in the script editor.
DoS is now removed from the epitaxy and is in the shapes.
12/12/2020: V7.88.008
Rewritten code to remove duplicates from the matrix to use qsort, this is much faster.
Light data is now mostly stored as floats to reduce memory footprint.
Code to generate triangular meshes from images is now in it's own python module so can be used for mass generation of shapes
Most of the input files have been moved from .inp files to .json files, this should help increase backwards compatibility.
Really strange win 10 bug fixes which was producing random crashes due to win 10 refusing to append some files.
Interface doping added.
Shape editor rewritten.
Fitting bugs fixed.
26/10/2020: V7.87
Lots of bug fixes.
Started moving from .inp files to json files.
Migrated referencing system to .bib the file format.
Rewrote some of the code to be more object orientated.
Added threading for generating the DoS files
Improved fitting, only good results are brought back into model.
Epitaxy no longer has dos files in it all moved to the shape files.
Added interfaces.
Some mesh generation now rewritten in C.
Rewrite of GL code to be more sain and how it should be.
29/8/2019: V7.0.000
Lots of bug fixes.
More stable time domain code for starting at high light intensities.
A new backup feature which allows the user to make checkpoints of simulations, then revert to them with one click of the mouse, very useful when trying to understand how a device works.
Bug fixes in the time domain code and interface.
Fixes to the analytical DoS window.
3D ray tracing of light escaping complex 3D structures.
Calculation of XYZ, xyz and RGB color as a function of angle and wavelength for OLED simulation.
A new shapes database, so shapes are loaded from files not defined in code.
The ability to import microscope images and turn them into 3D height profiles.
Faster ray tracing.
Better backwards comparability with older versions.
Faster OpenGL rendering.
Faster OpenGL scenes are now built in memory before rendering enabling draggable objects.
Simulation of micro-lenses on the surfae of OLEDs and solar cells.
Addition of emission materials database.
Multiple light emitting layers within one device for simulation of white OLEDs.
Rewrite of file watch system for stability and speed.
gpvdm_core can now calculate the observed color of a wavelength spectrum using CIE color spectra.
Demo files for optical filters, OLEDs, micro lenses, light escape from flat surfaces, and AFM images.
Bigger new simulation window to showcase the new examples.
27/6/2019: 5.3.025-5.3.050
Bug fixes.
26/6/2019: V5.3.024.
More warnings added to fitting code.
It will now complain if you try to feed it a non number in a numeric input - implement in core solver so should work for all values.
Doping window will complain if you do not feed it a number.
Rewrite of fitting bounds checking so bounds checking is now stored in the fit vars file.
Simplified fitting interface.
Old P3HT:PCBM results all added to fit window for the P3HT:PCBM device.
Contacts in 2D can now have different charge densities on them and types of charge - useful for OFETS and complex structures.
5/6/2019: V5.3.018.
More warnings added to fitting code.
Potential divide by zero bug fixed in fitting code.
Automatic passivation between OFET contacts with no current escaping the boundary.
18/5/2019: V5.3.005-017.
This is a really big series updates and introduces major changes to the model.
The charge density on the boundaries of the device is now associated with the contacts, so for multiple contact devices each contact can have it's own charge density.
Rewrite of the main 1D newton solver so that the RHS and LHS can both have potential applied to them when doing transients, this enables perovskite devices to be properly simulated in time domain.
The simulation model drop down box is now a series of icons to make it clear which simulation mode you are in.
Rectangular shapes can now be introduced into the electrical mesh for etching and contacts.
Significant bug fixed in the 2D OFET solver, which meant sometimes the current was applied to the wrong contact.
Re written the defect state model, so that deep trap states can now be included in the DoS.
The materials database now has over 2,000 materials within it, which are updated from the OghmaNano server.
Rewrite of the opengl interface so that the xyz axis is the same projection as the material coordinates.
The device length/width limit of 10cm has been removed so that large cells can be simulated.
Added gui to enable easy editing of objects inserted into the electrical epitaxy.
Improved importing function.
Steady state PL spectra calculated from first principles.
6/5/2019: V5.3.004.
Ability to add new spectra in GUI.
Ability to import files with , denoting decimal point.
Rewrite of spectra window.
Spectra not normalized any more as they are read in.
Use of real m/Wm-2 in all spectra files.
6/5/2019: V5.1.012.
Reinstated the languages.
gpvdm_data build system now works.
5/5/2019: V5.1.011.
Total rewrite of the Impedance Spectroscopy back end - it's still a work in progress but will improve over time
Fitting code added, this was quite a major undertaking as it needed a simplex downhill algorithm to be written from scratch.
Started rewriting the IMPS back end.
Bug with the progress bar for downloading updates fixed.