PhasesResearchLab / ESPEI

Fitting thermodynamic models with pycalphad - https://doi.org/10.1557/mrc.2019.59
http://espei.org
MIT License
65 stars 32 forks source link

ENH: Add framework for property model parameter generation #251

Closed bocklund closed 8 months ago

bocklund commented 9 months ago

This is a significant feature improvement that introduces the concept of a ModelFittingDescription made up of FittingStep objects to tell ESPEI how to generate model parameters (with a capability to support generating parameters for custom models). In addition, these changes include:

This PR relies on https://github.com/pycalphad/pycalphad/pull/501 that includes fixes for molar volume models. Tests will probably fail until that gets into the development branch.

Closes #5

bocklund commented 9 months ago

@nury12n if you could review :)

bocklund commented 8 months ago

Added some comments regarding the fitting steps, mainly thoughts I had when working with the FittingStep and AbstractLinearFittingStep classes, but I think it'd probably be better to leave as is.

I gave some thought about the diffusing species and I think it'll make more sense to consider them after there's some support in kawin for mobility fitting.

Thanks for reviewing! Since PyCalphad supports diffusion species, it's something that could be in scope for ESPEI, but my guess is that there are assumptions elsewhere in the parameter generation code that would need to be broken to be able to handle that extra dimension that parameters can also be a function of diffusing species. At least, I think having these FittingStep and FittingDescription abstractions are compatible with what would be needed to fit parameters with diffusion species and it's mostly a book-keeping and dataset selection operations in espei.paramselect.phase_fit and espei.paramselect.fit_parameters

bocklund commented 8 months ago

Tests are passing on pycalphad development versions and not release versions (as expected from https://github.com/pycalphad/pycalphad/pull/501). Merging