BubbleML icon indicating copy to clipboard operation
BubbleML copied to clipboard

PDE Loss(es)?

Open arthurfeeney opened this issue 2 years ago • 0 comments

To help with data scarcity, we should experiment with using a PDE loss. This can be in the spirit of the papers "Physics Informed DeepONet / Neural Operator." A PDE loss can be applied during training, but it can also be used for instance-wise fine-tuning. This also has the added benefit of serving as an example to users. The obvious concern is that since we have multiple physics, phases and boundaries, directly optimizing the PDE residual is hard and may not work super well...

In terms of implementation,

  1. pulling the relevant simulation metadata. Most (all?) of these should be the same per-problem. I.e., the Reynold's number is the same for all of the subcooled pool boiling simulations.
  2. To simplify things, don't try to optimize a PINN over every timestep. We don't need to have a PINN that can take arbitrary x,y,t and spit out the solution. We essentially only need the instance-wise tuning for whatever the current timestep is.
  3. There are many loss functions that may conflict: liquid/vapor navier-stokes, liquid/vapor energy, mass transfer across bubble interfaces, bubble interface conditions for velocity and temperature, the dirichlet boundary for the heater and walls, and an outlet. Channel flow also has an inlet. The different losses should only be applied to certain, possibly overlapping, regions.
  4. Need to be (very) careful about treatment of boundary and interface conditions. Should strive to match [1] exactly. One notable difficulty is computing the mass flux across the bubble interface.

There are also a few questions that still seem open:

  1. How does temperature normalization affect the pde loss? Each of the simulations normalizes its wall temperature to 1. So, at the moment, I redimensionalize and then normalize temperature the same across all of the simulations... This may screw with a pde loss.
    • Specifically, we may need to adjust the Stefan Number: https://en.wikipedia.org/wiki/Stefan_number.
    • Stefan number is used in the mass flux. See [1]
  2. Should it use the autodiff-style PINN loss, or compute it numerically? Since we're using UNet/FNO architectures, numerical differientiation is a better fit. The domain resolution is probably high enough for numerical differentiation, but the time discretization is very coarse. FNO super resolution may help here.
  3. Does a PDE loss need to "encode" the bubble dynamics and deformations? Or will they just arise naturally from enforcing the pdes?

[1] A. Dhruv. A formulation for high-fidelity simulations of pool boiling in low gravity.

arthurfeeney avatar Oct 16 '23 18:10 arthurfeeney