UMBridge interfaces

FEM forward model

The forward model should solve the deterministic boundary value problem (DBVP) for a given traction $T_N$ and (optionally) a set of material parameters $\kappa\in\mathbb{R}^k$ and return the solution $u_h\in\mathbb{R}^{n_{dof}*d}$ at all degrees of freedom.

For use within this package the model should have the following parameters

  • inputSizes:
    • [1] for simple cases with internally fixed $\kappa$
    • [1,k] for cases with varying parameters (can be config dependent)
  • outputSizes:
    • [n_dofs] for 1D
    • [n_dofs,n_dofs] for 2D
    • [n_dofs,n_dofs,n_dofs] for 3D
  • evaluate should be a function that returns the DBVP solution for the given parameters.

Projection model

The projection model is used to assemble the projection matrix $H$ which maps from nodal points to sensor locations. The nonzero entries of a row of $H$ are the nonzero basis functions of the respective FEM discretization. To keep the interface simple, the projection model receives a single sensor point $X_s$ and returns a vector containing the DoF ids $i$ and corresponding basis values $\phi_i(X_s)$. As an example, on a triangular 2D mesh with bilinear P1 elements, the input size is[2] (x,y) and ansatz for any point within the domain has at most 3 nonzero basis values, such that the output sizes should be [3,3].

Since it is not necessarily trivial to get this information from a specific FEM solver, we also provide an extension based on ExtendableFEM.jl that can calculate $H$ based on a given mesh.

Residual model

The residual model evaluates the residual of the DBVP given an FE solution $u_h\in\mathbb{R}^{n_{dof}*d}$ and a set of material parameters $\kappa\in\mathbb{R}$. Depending on the application the mean traction $\mu_T$ is either hard coded (as in our Ferrite.jl Holeplate2D) or could be set through the config.

For use within this package the model should have the following parameters

  • inputSizes:
    • [d*n_dofs,k] , where k can be config dependent
  • outputSizes:
    • [1]
  • evaluate should be a function that returns the DBVP residual for the given $[u_h,\kappa]$.

When using gradient-based optimizers we recommend to implement the residual gradient w.r.t. $\kappa$ in the FEM blackbox (if possible)