cwrowley/romnet

Implement bilinear models

Closed this issue · 0 comments

Many of the systems we want to study have a bilinear structure (e.g., Ginzburg-Landau, Navier-Stokes), and it would be helpful to be able to use this structure in our reduced-order models:
$$x' = c + L x + B(x, x)$$

Some ideas we sketched out today:

  • BilinearModel abstract base class (possibly inheriting from SemiLinearModel)
    • subclasses must specify the constant term, the linear map, and the bilinear function
    • project(phi, psi) method projects onto basis functions determined by phi and psi, returns a GenericBL model (probably want a better name for this)
  • GenericBL subclass
    • constructor takes (c, L, B), where c is a rank-1 tensor, L is a rank-2 tensor, and B is a rank-3 tensor

$$f(x)i = c_i + L{ij} x_j + B_{ijk} x_j x_k$$

Might be better just to make BilinearModel the same as GenericBL above (e.g., specifying the tensors explicitly), so that this is the default, and then override this in subclasses (such as Complex Ginzburg-Landau) where one specifies the linear and nonlinear maps in a different way.