BOLSIG takes a given mean electric field and reaction chemistry as input and then returns the rate coefficients evaluated for that specific mean electric field (among other things) for the 2-body electron reactions, In my system the mean electric field is a function of time, so each time I call BOLSIG, I generate a lookup table of mean electric fields and their corresponding rate coefficients, I then fit those rate coefficients as a function of mean electric field, and parse those expressions to the ode function. As the composition of the plasma evolves, the original EEDF is no longer accurate and BOLSIG gets called again with the new composition to update everything. Then in addition to that there are many reactions which aren’t parsed to BOLSIG (e.g. 3-body electron reactions, and heavy species reactions) as well as other generation and loss process (e.g. diffusion, inflow, outflow, wall flux, etc.) each with different forms and dependencies that all need to be updated each time step in the ode function.
While I certainly agree that it would be feasible to take the generated code approach, I just think that a) the initial compilation time would be relatively long and not worth the execution performance compared to the FunctionWrappers solution, and b) the code itself would be more of a mishmash, more opaque, less intuitive, and less user friendly, which will make it more difficult to code, debug, and add functionality to down the line, and more difficult for colleagues to modify to suit their needs if I share the code.