TOPAS and TOPAS‐Academic: an optimization program integrating computer algebra and crystallographic objects written in C++ - Coelho, Alan A. (Journal of applied crystallography, 2018)
TOPAS and its academic variant TOPAS‐Academic are nonlinear least‐squares optimization programs written in the C++ programming language. This paper describes their functionality and architecture. The latter is of benefit to developers seeking to reduce development time. TOPAS allows linear and nonlinear constraints through the use of computer algebra, with parameter dependencies, required for parameter derivatives, automatically determined. In addition, the objective function can include restraints and penalties, which again are defined using computer algebra. Of importance is a conjugate gradient solution routine with bounding constraints which guide refinements to convergence. Much of the functionality of TOPAS is achieved through the use of generic functionality; for example, flexible peak‐shape generation allows neutron time‐of‐flight (TOF) peak shapes to be described using generic functions. The kernel of TOPAS can be run from the command line for batch mode operation or from a closely integrated graphical user interface. The functionality of TOPAS includes peak fitting, Pawley and Le Bail refinement, Rietveld refinement, single‐crystal refinement, pair distribution function refinement, magnetic structures, constant wavelength neutron refinement, TOF refinement, stacking‐fault analysis, Laue refinement, indexing, charge flipping, and structure solution through simulated annealing. TOPAS is nonlinear least‐squares optimization computer program written primarily for the analysis of crystallographic problems.