Version 2 is an all-new cross-platform c++ code for both the core simulation code and the user interface (GUI). This makes future extensions of Quokka3 much more feasible, and will also improve the user experience by improved GUI capabilities and stability. Also, a Mac version is in sight.

To start with, the beta version will only have few new features and in fact still some significant limitiations compared to v1.2.8, see details below. But over the next weeks version 2 will have all capabilities of v1.2.8, and over the next months and years you can be excited about substantial extensions like tandem capabilities.

While still in beta status, the experience with version 2 might be “more buggy” compared to v1.2.8. Any feedack is appreciated also on apparently minor issues, which helps to improve the all-new codebase. Until the full stable release of version 2, v1.2.8 will continue to be usable as-is.


  • You can fully define your cell optics via a measured reflection curve, featuring automatic metal-reflection correction and an automatic light-trapping model (=Basore model) fit. That works even better for bifacial cells if you provide a reflection curve for front and rear, see bifacial_TOPCon example.
  • Additional to the near-surface layer, a skin can now contain a transport layer, also within a lumped skin, which is analytically modelled. This is good for a better consideration of e.g. poly-Si layers, where you can define the thickness and doping, and Quokka3 figures out the corresponding parasitic absorption and sheet resistance effect. See the bifacial_TOPCon example.
  • You can perform optimization tasks, with a focus on curve-fitting experimental data. See TLM_fit example which showcases how the biTLM method fits Quokka3 simulations to experiments to determine the various contact resistivities.
  • The settings recognize units. Ever forgot the e-15 when defining the J0 and got a convergence error? Now you can simple write …J0 = 12 fA/cm2. Also in text input files you can write such units in the first row.
  • The all-new GUI is much smaller in file-size, and provides better geometry view and results plotting functionality. E.g. you can create a cross-section plot of carrier densities after a 3D simulation, and freely zoom and pan.
  • There is a settings lookup in the GUI, which is recommended to be used. Just paste any setting (or nothing) to list available settings of a group, or get a description of a particular setting like default values, dependencies etc.
  • Many more little things …

Beta limitations and known issues

  • The detailed skin functionality is limited to ‘single-point’ multiscale coupling mode.
  • The MS / MIS model within detailed skins is not yet supported.
  • A parallel mesh is not yet supported, but the parallel sweep works.
  • A proper documentation is missing, an all-new website will also be released within a few weeks / months
  • Several minor things. Please let me know if a particular functionality you need is missing, and I can consider implementing it in the next update.

Settings changes compared to v1.2.8

Unfortunately again some syntax changes have been required. However, version 2 has a better settings structure, which should result in very few, if any, future syntax changes.

It is recommended to use the settings lookup in the GUI to learn about the new settings syntax. For this, write or paste a settingsline, or a settingsgroup into the text field and press enter to get some detailed information.

The main differences to v1.2.8 are summarized below. Following them, you should be able to convert a v1.2.8 settingsfile into a version 2 settingsfile.

  • Bulk.Electrical.BackgroundDoping. settings group has moved to Bulk.BackgroundDoping.
  • Solver.Sweep.Enable is now Sweep.Enable
  • Optical.TextZ.FrontText.Type / Optical.TextZ.RearText.Type options are now ‘Text’ (formerly ‘global-lumped’), ‘local’ (previously ‘local-lumped’) and ‘from Rtot’
  • Optical.TextZ.FrontText.Global. / Optical.TextZ.RearText.Global. settingsgroup has moved to Optical.TextZ.FrontText.Text. / Optical.TextZ.RearText.Text.
  • Optical.TextZ.FrontText.Global.FacetAngle / Optical.TextZ.RearText.Global.FacetAngle has moved to Optical.TextZ.FrontText.FacetAngle / Optical.TextZ.RearText.FacetAngle
  • in the Optical.TextZ.FrontZ.Type / Optical.TextZ.RearZ.Type options the prefix ‘global-’ is removed, valid options are now ‘user’, ‘parameterization’, ‘4n2-limit’, ‘Green02-limit’, ‘Basore’, ‘from FrontRtot’, ‘from RearRtot’, ‘from FrontRtot and RearRtot’, ‘local’
  • Optical.TextZ.FrontZ.Param. / Optical.TextZ.RearZ.Param. settingsgroup is removed, Z-Parameters are defined via Optical.TextZ.FrontZ.Z0 / Optical.TextZ.RearZ.Z0 and so on
  • SkinFeature(iskin).Lumped.Optical.Text. settingsgroup has moved to SkinFeature(iskin).Lumped.Optical.External.Text.
  • SkinFeature(iskin).Lumped.Optical.FacetAngle has moved to SkinFeature(iskin).Lumped.Optical.External.FacetAngle
  • new settings for the SkinFeature(iskin).Lumped.Optical.Internal. settingsgroup are: .Rint, .RintFirstEnable, .RintFirst, .Diffuse, .Scatter, .ApppType and .Appp
  • SkinFeature(iskin).Lumped.Electrical.VerticalResistivity.Enable has moved to SkinFeature(iskin).Lumped.Electrical.VerticalResistivityEnable (without a dot .)
  • The “Layers” within a skin have been reorganized, please check the settings lookup


Here you can download the latest Quokka3 version 2 GUI software, which is bundled with a free (restricted) core executable. It is currently available for Windows (7, 8 and 10) only.

To access the full version, an additional license including cloud-access is required, see License options.

Disclaimer: This Quokka3 version is distributed for free. The software is licensed for non-commercial use only, without any expressed or implied warranty for the usefulness or correctness of the results rendered by this software. Download and use at your own risk. If you hold a paid license to use a non-free version, seperate license terms apply

Accept and download Quokka3 version 2 (beta) for Windows


Here you find two examples compatible with version 2. One defines a bifacial TOPCon solar cell where lateral conductance and parasitic absorption in the poly-Si layer is considered via the doping density and thickness of a transport layer. The other example shows the biTLM method, where TLM measurements of a TOPCon structure are fitted to experimental data to determine the various involved contact resistivities.

Download version 2 examples


2.1.2beta (11 May 2021)

  • fixed a username bug introduced in 2.1.1beta preventing some users from login
  • support for bulk lifetime-curve input finalized
  • fixed a rare MPP finding bug

2.1.1beta (10 May 2021)

  • bugfix: SRH recombination (with the highest index) was not applied
  • added RsLoss (at MPP) to scalar results: series resistance calculated from sum of resistive power losses
  • many other bugfixes and improvements
  • added [2014 unit cell examples for version 2] (examples/2014_unit_cells_v2.zip)

2.1.0beta (27 April 2021)

  • detailed skins are now supported, so far only by ‘single-point’ multiscale coupling
  • bugfix: spatial data was never stored
  • several other bugfixes and improvements

2.0.0beta8 (20 March 2021)

  • bugfix: the combination of proxy and secure connection did wrongly produce an error message
  • bugfix: defined-generation did result in zero generation
  • some unit related bugfixes

2.0.0beta7 (02 March 2021)

  • bugfix: the existence of version 1 cloud-simulations did cause a connection abort / crash
  • feature and coordinate information is shown when hovering over geometry view

2.0.0beta6 (01 March 2021)

  • proxy server is now working
  • some improvements against cloud-disconnects
  • few other minor improvements

2.0.0beta5 (14 February 2021)

  • initial release of version 2