Skip to content

Instantly share code, notes, and snippets.

@wence-
Created January 12, 2016 13:08
Show Gist options
  • Select an option

  • Save wence-/9eecd9532e87ca042b34 to your computer and use it in GitHub Desktop.

Select an option

Save wence-/9eecd9532e87ca042b34 to your computer and use it in GitHub Desktop.
On triangles
In [1]: print self.original_form
{ div(w_2) } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
In [2]: print apply_algebra_lowering(self.original_form)
{ sum_{i_{30}} (grad(w_2[i_{30}]))[i_{30}] } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
In [3]: print apply_derivatives(apply_algebra_lowering(self.original_form))
{ sum_{i_{31}} (grad(w_2))[i_{31}, i_{31}] } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
In [4]: print apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form)))
{ sum_{i_{33}} (grad({ A | A_{i_{37}} = sum_{i_{38}} ({ A | A_{i_{35}, i_{36}} = J[i_{35}, i_{36}] * 1.0 / detJ })[i_{37}, i_{38}] * (reference_value(w_2))[i_{38}] }))[i_{33}, i_{33}] } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
In [5]: print apply_geometry_lowering(apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form))))
{ sum_{i_{39}} (grad({ A | A_{i_{43}} = sum_{i_{44}} ({ A | A_{i_{41}, i_{42}} = (reference_grad(x))[i_{41}, i_{42}] * 1.0 / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{43}, i_{44}] * (reference_value(w_2))[i_{44}] }))[i_{39}, i_{39}] } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
In [6]: print apply_derivatives(apply_geometry_lowering(apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form)))))
{ sum_{i_{45}} ({ A | A_{i_{49}, i_{62}} = (sum_{i_{50}} ({ A | A_{i_{61}} = ({ A | A_{i_{54}} = ({ A | A_{i_{51}, i_{52}} = sum_{i_{53}} K[i_{53}, i_{52}] * (reference_grad(reference_value(w_2)))[i_{51}, i_{53}] })[i_{50}, i_{54}] })[i_{61}] * ({ A | A_{i_{47}, i_{48}} = J[i_{47}, i_{48}] * 1.0 / (J[0, 0] * J[1, 1] + -1 * J[0, 1] * J[1, 0]) })[i_{49}, i_{50}] }) )[i_{62}] })[i_{45}, i_{45}] } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
In [7]: print apply_geometry_lowering(apply_derivatives(apply_geometry_lowering(apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form))))))
{ sum_{i_{63}} ({ A | A_{i_{67}, i_{80}} = (sum_{i_{68}} ({ A | A_{i_{79}} = ({ A | A_{i_{72}} = ({ A | A_{i_{69}, i_{70}} = sum_{i_{71}} ({ A | A_{i_{81}, i_{82}} = ([
[(reference_grad(x))[1, 1], -1 * (reference_grad(x))[0, 1]],
[-1 * (reference_grad(x))[1, 0], (reference_grad(x))[0, 0]]
])[i_{81}, i_{82}] / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{71}, i_{70}] * (reference_grad(reference_value(w_2)))[i_{69}, i_{71}] })[i_{68}, i_{72}] })[i_{79}] * ({ A | A_{i_{65}, i_{66}} = (reference_grad(x))[i_{65}, i_{66}] * 1.0 / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{67}, i_{68}] }) )[i_{80}] })[i_{63}, i_{63}] } * dx(<Mesh #1 with coordinates parameterized by <Lagrange vector element of degree 1 on a triangle: 2 x <CG1 on a triangle>>>[everywhere], {})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment