ORNL-MDF / mist

Mist is a Python tool for storing, sharing, and using information about materials in models and simulations.
BSD 3-Clause "New" or "Revised" License
2 stars 2 forks source link

Add ExaCA input file generator #27

Open gknapp1 opened 3 weeks ago

gknapp1 commented 3 weeks ago

To be consistent with 3DThesis and AdditiveFOAM, updating material properties in ExaCA from a Mist file would be valuable. I think there are a couple of questions about what is a "material property" versus a "model parameter" in the ExaCA inputs, e.g., nucleation parameters, but it could be valuable to be able to track common material-specific model parameters in Mist files.

Examples of ExaCA material files can be found in the ExaCA repo: https://github.com/LLNL/ExaCA/tree/master/examples/Materials

As mentioned above, I'm not sure if Mist files are the right place to store data about the nucleation parameters. But if so, the following dictionary in the main ExaCA input file would need to be updated in addition to the material file:

{
   "Nucleation": {
      "Density": 10,
      "MeanUndercooling": 5,
      "StDev": 0.5
   }
}
stvdwtt commented 3 weeks ago

Looking at the ExaCA input files, I think that the solidification range definitely makes sense to get from Mist (and we already have what you'd need to calculate it mostly). I think there's a strong argument that the interfacial response function is fundamental enough to the material to add it to Mist.

I am less confident about the nucleation parameters. Those are essentially 100% from calibration vs experiment, right?

gknapp1 commented 3 weeks ago

You can calculate nucleation density as a function of undercooling from CALPHAD (at equilibrium), but I don't know if that has a one-to-one mapping with how nucleation is defined in the ExaCA model. @MattRolchigo would be better to comment on that.

At any rate, the nucleation parameters have historically been what has been adjusted when calibrating CA models to experiments.

streeve commented 3 weeks ago

I would vote for adding material property generation for CA where it makes sense, but not forcing it. Nucleation seems better left to myna (just an opinion) - and there will be plenty of cases where we need variable input support that isn't a "material parameter", e.g. details of how you calibrate the material absorption for an optimal heat transfer simulation

MattRolchigo commented 2 weeks ago

Right now, ExaCA doesn't actually use the freezing range for anything, though it did in the past (and may in the future based on improving flexibility with how we calculate/extract cooling rate information). I agree on leaving the nucleation parameters out - the nucleation parameters used by ExaCA are for heterogenous nucleation which may be process/feedstock dependent. I imagine the nucleation density you can calculate with CALPHAD would likely be homogenous nucleation @gknapp1 ? Though it may be useful in the future if ExaCA has the CALPHAD-extracted nucleation density vs undercooling, I wouldn't know what to do with it at the moment.

stvdwtt commented 2 weeks ago

@MattRolchigo, yeah you could calculate the homogenous nucleation rate from CALPHAD, but the uncertainty bars on that would be huge. If we think feedstock variability is a main contributor, then that would be an argument to put it in Mist, but if we think the process dependence is larger, that would be an argument against putting it in Mist.

For the interfacial response function, do you expect to usually use a polynomial? Or do you have plans to use other formulations? (A table that you interpolate from, some analytic function with exponentials or logs or other special functions?)

If it's just the freezing range and a polynomial for the interfacial response function, implementing that should be very easy.

MattRolchigo commented 2 weeks ago

@stvdwtt I honestly don't know whether the material or process-dependence would be larger, but either way I imagine the large error bars would mean that it would end up being a calibration parameter either way. For the interfacial response function, I imagine using either a polynomial or an exponential will be sufficient for any future cases I can think of

stvdwtt commented 2 weeks ago

@MattRolchigo, would it be too limiting if we just implemented polynomial interfacial response functions for now? I'm not entirely sure how we'd want to parameterize an exponential IRF yet (do we have an generic exponential functional form? Do we have special-case coefficients for IRFs?). If you had an exponential, would it be a "pure" exponential, or a polynomial plus an exponential term?

MattRolchigo commented 2 weeks ago

@stvdwtt I think just implementing polynomial functions would be fine - we aren't that sensitive to it (and we used exclusively polynomial forms for awhile anyways). Right now we only accept exponential functions of the form V = A * V^B, and we don't allow combining of functional forms

gknapp1 commented 2 weeks ago

@MattRolchigo, yeah you could calculate the homogenous nucleation rate from CALPHAD, but the uncertainty bars on that would be huge. If we think feedstock variability is a main contributor, then that would be an argument to put it in Mist, but if we think the process dependence is larger, that would be an argument against putting it in Mist.

You can calculate heterogeneous nucleation energy/rate based on the homogeneous nucleation energy times a geometric factor based on the contact angle. But, regardless, that still has the uncertainty Steve mentioned.

I agree that it's a good idea to leave nucleation density out if Mist for now. There are some models for effective nucleation rate taking into account process-dependent effects (see https://doi.org/10.1016/j.actamat.2014.03.028), which seem like they are probably relevant to AM. We can always revisit if we adopt an analytical/CALPHAD model that we trust later on.