Possibility of negative concentrations in CADET

Hi all,

I have some simulations I would like to perform where the isotherm parameters were obtained from fitting batch data with pH and salt dependence (using generalized ion exchange isotherm). The pHs in the data range between 5 and 6. I used a reference pH (pH = pH_actual - pH_ref, where pH_ref = 5.5) which helps with fitting of the isotherm parameters. In this way, the pH-dependent characteristic charge and equilibrium constant have their base values at pH 5.5, greater values at pH 5, and smaller values at pH 6.

In the CADET simulation, the pH is treated as a non-binding pseudo-component. The problem with this is that I have negative concentrations of the pH pseudo-component at pH values below the reference. This gives me errors when trying to run the simulation in CADET because negative concentrations are not allowed. I am using CADET-MATLAB for this problem FYI.

I was wondering if there is some way to use negative concentrations either by disabling the flag somehow or by using external functions on the isotherm parameters. Even if external functions were used, however, the concentrations would still be negative.

It would be helpful to have some way to use the negative concentrations so I can avoid refitting the isotherm parameters with a reference pH that is below the lowest value. Worth noting that because of induced pH gradients the pH can drop to values as low at 4, requiring a reference pH of 4 or lower and thus resulting in isotherm parameters that are very different which is not ideal.

tl;dr: is it possible to use negative concentrations in CADET for a non-binding pH pseudo-component? If so, how can this be done?


Hey Scott,

so far, we’ve had mixed experiences with negative “concentrations” so your mileage may vary but I’d simply try it! :slight_smile:

I think you can just set the concentrations to negative values for the inlet units.

1 Like

There’s no fundamental obstacle in CADET (core) that should hold you back. There are no checks or pow()s with non-integer exponents.
If you receive errors, they are most likely caused by extensive checks in the Matlab code (which you can just comment out).


Thanks Sam. Do you remember off hand what .m files have checks on concentration values?