Skip to content

Instantly share code, notes, and snippets.

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

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

Select an option

Save wence-/e11eb79dbb95ec8d3afe to your computer and use it in GitHub Desktop.
On quads
In [1]: print self.original_form
{ div(w_6) } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[everywhere], {})
In [2]: print apply_algebra_lowering(self.original_form)
{ sum_{i_{115}} (grad(w_6[i_{115}]))[i_{115}] } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[everywhere], {})
In [3]: print apply_derivatives(apply_algebra_lowering(self.original_form))
{ sum_{i_{116}} (grad(w_6))[i_{116}, i_{116}] } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[everywhere], {})
In [4]: print apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form)))
{ sum_{i_{118}} (grad({ A | A_{i_{122}} = sum_{i_{123}} ({ A | A_{i_{120}, i_{121}} = J[i_{120}, i_{121}] * 1.0 / detJ })[i_{122}, i_{123}] * (reference_value(w_6))[i_{123}] }))[i_{118}, i_{118}] } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[everywhere], {})
In [5]: print apply_geometry_lowering(apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form))))
{ sum_{i_{124}} (grad({ A | A_{i_{128}} = sum_{i_{129}} ({ A | A_{i_{126}, i_{127}} = (reference_grad(x))[i_{126}, i_{127}] * 1.0 / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{128}, i_{129}] * (reference_value(w_6))[i_{129}] }))[i_{124}, i_{124}] } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[everywhere], {})
In [6]: print apply_derivatives(apply_geometry_lowering(apply_function_pullbacks(apply_derivatives(apply_algebra_lowering(self.original_form)))))
{ sum_{i_{130}} ({ A | A_{i_{134}, i_{155}} = (sum_{i_{135}} ({ A | A_{i_{154}} = ({ A | A_{i_{139}} = ({ A | A_{i_{136}, i_{137}} = sum_{i_{138}} K[i_{138}, i_{137}] * (reference_grad(reference_value(w_6)))[i_{136}, i_{138}] })[i_{135}, i_{139}] })[i_{154}] * ({ A | A_{i_{132}, i_{133}} = J[i_{132}, i_{133}] * 1.0 / (J[0, 0] * J[1, 1] + -1 * J[0, 1] * J[1, 0]) })[i_{134}, i_{135}] + ({ A | A_{i_{153}} = ({ A | A_{i_{132}, i_{133}, i_{152}} = ({ A | A_{i_{151}} = J[i_{132}, i_{133}] * ({ A | A_{i_{149}} = ({ A | A_{i_{148}} = -1 * ({ A | A_{i_{147}} = (({ A | A_{i_{146}} = J[1, 1] * ({ A | A_{i_{145}} = (grad(J))[0, 0, i_{145}] })[i_{146}] + J[0, 0] * ({ A | A_{i_{144}} = (grad(J))[1, 1, i_{144}] })[i_{146}] }) + ({ A | A_{i_{143}} = -1 * ({ A | A_{i_{142}} = J[1, 0] * ({ A | A_{i_{141}} = (grad(J))[0, 1, i_{141}] })[i_{142}] + J[0, 1] * ({ A | A_{i_{140}} = (grad(J))[1, 0, i_{140}] })[i_{142}] })[i_{143}] }))[i_{147}] * 1.0 / (J[0, 0] * J[1, 1] + -1 * J[0, 1] * J[1, 0]) })[i_{148}] })[i_{149}] / (J[0, 0] * J[1, 1] + -1 * J[0, 1] * J[1, 0]) })[i_{151}] + ({ A | A_{i_{150}} = (grad(J))[i_{132}, i_{133}, i_{150}] })[i_{151}] * 1.0 / (J[0, 0] * J[1, 1] + -1 * J[0, 1] * J[1, 0]) })[i_{152}] })[i_{134}, i_{135}, i_{153}] })[i_{154}] * (reference_value(w_6))[i_{135}] }) )[i_{155}] })[i_{130}, i_{130}] } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[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_{156}} ({ A | A_{i_{160}, i_{181}} = (sum_{i_{161}} ({ A | A_{i_{180}} = ({ A | A_{i_{165}} = ({ A | A_{i_{162}, i_{163}} = sum_{i_{164}} ({ A | A_{i_{182}, i_{183}} = ([
[(reference_grad(x))[1, 1], -1 * (reference_grad(x))[0, 1]],
[-1 * (reference_grad(x))[1, 0], (reference_grad(x))[0, 0]]
])[i_{182}, i_{183}] / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{164}, i_{163}] * (reference_grad(reference_value(w_6)))[i_{162}, i_{164}] })[i_{161}, i_{165}] })[i_{180}] * ({ A | A_{i_{158}, i_{159}} = (reference_grad(x))[i_{158}, i_{159}] * 1.0 / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{160}, i_{161}] + ({ A | A_{i_{179}} = ({ A | A_{i_{158}, i_{159}, i_{178}} = ({ A | A_{i_{177}} = ({ A | A_{i_{175}} = ({ A | A_{i_{174}} = -1 * ({ A | A_{i_{173}} = (({ A | A_{i_{172}} = (reference_grad(x))[1, 1] * ({ A | A_{i_{171}} = (grad(reference_grad(x)))[0, 0, i_{171}] })[i_{172}] + (reference_grad(x))[0, 0] * ({ A | A_{i_{170}} = (grad(reference_grad(x)))[1, 1, i_{170}] })[i_{172}] }) + ({ A | A_{i_{169}} = -1 * ({ A | A_{i_{168}} = (reference_grad(x))[1, 0] * ({ A | A_{i_{167}} = (grad(reference_grad(x)))[0, 1, i_{167}] })[i_{168}] + (reference_grad(x))[0, 1] * ({ A | A_{i_{166}} = (grad(reference_grad(x)))[1, 0, i_{166}] })[i_{168}] })[i_{169}] }))[i_{173}] * 1.0 / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{174}] })[i_{175}] / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{177}] * (reference_grad(x))[i_{158}, i_{159}] + ({ A | A_{i_{176}} = (grad(reference_grad(x)))[i_{158}, i_{159}, i_{176}] })[i_{177}] * 1.0 / ((reference_grad(x))[0, 0] * (reference_grad(x))[1, 1] + -1 * (reference_grad(x))[0, 1] * (reference_grad(x))[1, 0]) })[i_{178}] })[i_{160}, i_{161}, i_{179}] })[i_{180}] * (reference_value(w_6))[i_{161}] }) )[i_{181}] })[i_{156}, i_{156}] } * dx(<Mesh #4 with coordinates parameterized by <Q vector element of degree 1 on a quadrilateral: 2 x <CG1 on a quadrilateral>>>[everywhere], {})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment