The CrystalEstimator Algorithm is illustrated in Figure . In its most basic form, CrystalEstimator will minimise the T M F from a starting vector of parameter estimates, p[0] , using the E04USA quasi-Newton optimisation algorithm as implemented in the NAG library . At each major iteration of the T M F optimisation (k), any required function and/or gradient evaluations of the T M F are determined with corresponding calls to CSO-RM (D1 and D2 in Figure ). p is altered based on the gradient information or the value of the objective function and the process is repeated until optimality is reached, as assessed by the E04USA subroutine. On top of this basic implementation, several key adaptations have been added to manage the aforementioned challenges. ). As the sequence of iterates proceeds, these starting points are dynamically updated to the optimal geometry obtained in the preceding T M F evaluation such that in iteration k,