# Symbol computation

**URL:** <https://fenicsproject.discourse.group/t/symbol-computation/11478>\
**Category:** General\
**Created:** [June 12, 2023, 2:34pm UTC](https://fenicsproject.discourse.group/t/symbol-computation/11478 "2023-06-12T14:34:49Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Notting\_X](https://avatars.discourse-cdn.com/v4/letter/n/91b2a8/32.png) [@Notting\_X](https://fenicsproject.discourse.group/u/Notting_X)\
**Post date:** [June 12, 2023, 2:34pm UTC](https://fenicsproject.discourse.group/t/symbol-computation/11478/1 "2023-06-12T14:34:49Z")

</div>

In old version fenics, SymPy is used for symbolic,such as “x, y = sym.symbols(’x[0], x[1]’)” . Now , in dolfinx v0.6.0,how to represent symbol “x ,y” and replace the sympy use in old version?

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [June 12, 2023, 2:44pm UTC](https://fenicsproject.discourse.group/t/symbol-computation/11478/2 "2023-06-12T14:44:43Z")

</div>

Depending on your use-case, it is often most common to use `ufl.SpatialCoordinate(domain)`, as done in various tutorials:  
[https://jsdokken.com/dolfinx-tutorial/chapter1/membrane\_code.html#defining-a-spatially-varying-load](https://jsdokken.com/dolfinx-tutorial/chapter1/membrane_code.html#defining-a-spatially-varying-load)  
[https://jsdokken.com/dolfinx-tutorial/chapter2/nonlinpoisson\_code.html#test-problem](https://jsdokken.com/dolfinx-tutorial/chapter2/nonlinpoisson_code.html#test-problem)  
[https://jsdokken.com/dolfinx-tutorial/chapter3/multiple\_dirichlet.html#setting-multiple-dirichlet-condition](https://jsdokken.com/dolfinx-tutorial/chapter3/multiple_dirichlet.html#setting-multiple-dirichlet-condition)  
[https://jsdokken.com/dolfinx-tutorial/chapter4/newton-solver.html?highlight=spatialcoordinate#definition-of-residual-and-jacobian](https://jsdokken.com/dolfinx-tutorial/chapter4/newton-solver.html?highlight=spatialcoordinate#definition-of-residual-and-jacobian)  
etc

---

<div class="post-metadata">

**Author:** ![Notting\_X](https://avatars.discourse-cdn.com/v4/letter/n/91b2a8/32.png) [@Notting\_X](https://fenicsproject.discourse.group/u/Notting_X)\
**Post date:** [June 13, 2023, 2:01am UTC](https://fenicsproject.discourse.group/t/symbol-computation/11478/3 "2023-06-13T02:01:11Z")

</div>

thank you very much !

---

<div class="post-metadata">

**Author:** ![Notting\_X](https://avatars.discourse-cdn.com/v4/letter/n/91b2a8/32.png) [@Notting\_X](https://fenicsproject.discourse.group/u/Notting_X)\
**Post date:** [June 13, 2023, 2:15am UTC](https://fenicsproject.discourse.group/t/symbol-computation/11478/4 "2023-06-13T02:15:55Z")

</div>

I have a question , why use **eval** function in nonlinear poisson equation implementation,i.e. **u\_exact = lambda x: eval(str(u\_ufl))**

---

<div class="post-metadata">

**Author:** ![dokken](https://yyz2.discourse-cdn.com/free1/user_avatar/fenicsproject.discourse.group/dokken/32/1560_2.png) [@dokken](https://fenicsproject.discourse.group/u/dokken)\
**Post date:** [June 13, 2023, 2:50am UTC](https://fenicsproject.discourse.group/t/symbol-computation/11478/5 "2023-06-13T02:50:53Z")

</div>

One reason is to show how to do interpolation with lambda functions.

It is just a way of avoiding writing  
`… = lambda x: 1 + x[0] + 2*x[1]` twice
