Research Article
Finite Element Assembly Using an Embedded Domain Specific Language
Listing 17
The code for the correction step in Chorin’s method.
) Handle<LSSActionUnsteady> correction_lss = create_component<LSSActionUnsteady>(" | CorrectionLSS"); | () | () Handle<ProtoAction> correction_matrix_assembly = correction_lss->create_component< | ProtoAction>("MatrixAssembly"); | () correction_matrix_assembly->set_expression(elements_expression(LagrangeP1P2(), | () group | () ( | () _A(u) = _0, | () element_quadrature(_A(u[_i], u[_i]) += transpose(N(u))*N(u)), | () correction_lss->system_matrix += _A | () ))); | () | () Handle<ProtoAction> correction_rhs_assembly = correction_lss->create_component<ProtoAction>( | "RHSAssembly"); | () correction_rhs_assembly->set_expression(elements_expression(LagrangeP1P2(), | () group | () ( | () _a[u] = _0, | () element_quadrature(_a[u[_i]] += | () transpose(N(u))*(u[_i] − lit(correction_lss->dt()) * gradient(p)[_i])), | () correction_lss->system_rhs += _a | () ))); |
|