the .gpvdm simulation file format

The .gpvdm file is simply a zip file. If you rename the file so to be called gpvdm.zip you will be able to open it in windows explorer or your favourite zip viwer. Inside the .gpvdm file is another file called sim.json. You can view this file in any text editor but the file is quite long so I recommend you use firefox to view it as it has a built in json viewer. Json is a simple way of storing text and configuration information first developed for Java, you can see examples here: https://json.org/example.html. Or below in code listing [*].


\begin{listing}
% latex2html id marker 1582\begin{minted}[frame=single,
frame...
... ''stick'': ''False''
}
\par
}
\end{minted}\caption{JSON example}
\end{listing}

If you make a copy of sim.json outside the .gpvdm archive, then rename the sim.zip back to sim.gpvdm, gpvdm will ignore the sim.json file within the sim.gpvdm archive and revert to the plain text file stored in the simulation directory. This feature can be useful for automation of simulations as you can simply edit the sim.json file using your favourite programming language without having to learn about reading and writing zip files. If you open the sim.json file in firefox it will look like [*], also have a look at the file in notepad to get a sense of what is in it.

Figure: An example sim.json file opened in firefox.
Image json_firefox

You can see that the json file has various headings, key headings are listed below in table [*]


Table: Key headings/sections in the sim.json file.
Heading Description    
sim General simulation information    
jv JV curve configuration    
dump Defines how much information is written to disk    
math Math configuration for the solver    
light Optical transfer matrix configuration    
light_sources Configuration of light sources    
epitaxy Defines the structure of the device    
thermal Thermal configuration    
thermal_boundary Thermal boundary config.    
exciton Exciton config    
exciton_boundary Exciton boundary config.    
ray Ray tracing config.    
suns_voc Suns-Voc    
suns_jsc Suns-Jsc    
ce Charge Extraction config.    
transfer_matrix Light transfer matrix config    
pl_ss PL in steady state    
eqe EQE config.    
fdtd FDTD config.    
fits Fitting config.    
mesh Electrical mesh config.    
time_domain Time domain config.    
fx_domain FX-domain config    
cv CV config.    
parasitic Parasitic components    
spm Scanning Probe Microscopy config.    
hard_limit Setting hard limits for sim params.    
perovskite Perovskite solver config.    
electrical_solver Electrical solver config.    
spctral2 SPCTRAL2    
lasers fs Lasers    
circuit Circuit solver config.    
gl OpenGL config    
world Defines the world box    


If you wish to programmatically drive you can simply use one of the many available json editors most languages have them freely available.