A bilinear form is defined by
define bilinearform <name> <flaglist> integrator1 integrator2 integrator3 ...Example
define bilinearform a -fespace=v laplace lam robin alpha
A bilinear-form is always defined as sum over integrators. A bilinear-form maintains the stiffness matrix. For multi-level algorithms, a bilinear-form stores all matrices. Bilinear-forms for high order spaces have a bilinear-form for the corresponding lowest order space.
The following flags are defined
-fespace=<name> | bilinear form is defined on fe space <name> |
-symmetric | bilinear form is symmetric (store just lower left triangular matrix) |
-nonassemble | do not allocate matrix (bilinear-form is used, e.g., for post-processing) |
An integrator is defined as
token <coef1> <coef2> ... <flaglist>Example:
elasticity coef_e coef_nu -order=4The <coefi> refers to a coefficient function defined above. It provides the coefficients defined sub-domain by dub-domain for integrators defined on the domain (e.g., laplace), or, the coefficient boundary-patch by boundary-patch for integrators defined on the surface (e.g., robin).
Allowed flags are
-order=num | use integration rule of order num. Default order is computed form element order. |
-comp=num | use scalar integrator as component num for system (e.g., penalty term for y-displacement). num=0 adds integrator to all components. |
-normal | add integrator in normal direction (penalty for normal-displacement) |
The integrator tokens are
laplace lam |
![]() |
mass rho |
![]() |
robin alpha |
![]() |
elasticity e nu |
![]() ![]() |
curlcurledge nu |
![]() ![]() |
massedge sigma |
![]() ![]() |
robinedge sigma |
![]() ![]() |