SciPy optimization has a whole bunch of optimization algorithms, like Newton-conjugate gradient method, simplex methods etc (
docs.scipy.org/doc/scipy/reference/optimize.html). It's a python interface. So basically what I've done is I made a curve fitting routine that fits my OpenFOAM® input parameters (diffusion coefficients and reaction rate constants, I have 5 of them) to experimental data by minimizing an objective function (in this case the sum of squares between by openFOAM model output and my experimental data). The algorithms are similar to what matlab offers (except scipy is free).
So the code that you use to calculate the sensitivities, is that built into openFOAM? I'd be interested in taking a look at that. I've never had any luck with gradient based optimization methods, I've only been able to get the simplex methods to work but those are quite inefficient and they don't give you the confidence intervals.