# Basic expression manipulation with Symbolics.jl

**URL:** <https://discourse.julialang.org/t/basic-expression-manipulation-with-symbolics-jl/77799>\
**Category:** General Usage\
**Tags:** symbolics\
**Created:** [March 12, 2022, 4:44pm UTC](https://discourse.julialang.org/t/basic-expression-manipulation-with-symbolics-jl/77799 "2022-03-12T16:44:26Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gravlax](https://avatars.discourse-cdn.com/v4/letter/g/dbc845/32.png) [@Gravlax](https://discourse.julialang.org/u/Gravlax)\
**Post date:** [March 12, 2022, 4:44pm UTC](https://discourse.julialang.org/t/basic-expression-manipulation-with-symbolics-jl/77799/1 "2022-03-12T16:44:26Z")

</div>

Hi everyone,  
I’m trying out a basic exercise which consists in generating the heat transfer equation (1D diffusion) by substitution the expressions of heat and heat flux in a balance equation, assuming constant coefficients.

```julia
using Symbolics
@variables t x  
@variables U(t,x) qu(t,x) T(t,x) 
@variables λ Cp
fu = Dt(U) == - dx(qu) 
fu = substitute(fu, [qu=>-λ*dx(T), U=>Cp*T])
fu = simplify( expand_derivatives( fu ), expand=true)

```

It works and gives the output:  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/4/f/4f4b0cb8b917c1d92f37ff861af4fb3723b4dc8a.png)  
however it comes with an extra set of parenthesis and weirdly looking partial derivatives. So one question is: do I proceed correctly?

Also to define the initial balance equation, is it correct to set:

```julia
fu = Dt(U) == - dx(qu) 

```

or

```julia
fu = Dt(U) ~ - dx(qu) 

```

?  
Thanks for your feedbacks!

---

<div class="post-metadata">

**Author:** ![Gravlax](https://avatars.discourse-cdn.com/v4/letter/g/dbc845/32.png) [@Gravlax](https://discourse.julialang.org/u/Gravlax)\
**Post date:** [April 2, 2022, 4:50pm UTC](https://discourse.julialang.org/t/basic-expression-manipulation-with-symbolics-jl/77799/2 "2022-04-02T16:50:18Z")

</div>

Hi all,  
In relation to the initial post, would someone know how to further simplify expression:  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/f/2/f2d5ccec5628bf10f79c9b19c84f5b07c7924855.png)

There is likely a way to cancel the minus sign and to simplify T/T in term on the right, but I haven’t managed so far.

Here’s the code:

```julia
using Symbolics, Latexify
@variables t x  
@variables s(t,x) u(t,x) c(t,x) μ(t,x) ρ(t,x)
@variables qs(t,x) qu(t,x) qc(t,x)
@variables Qs
@variables T(t,x)   
@variables λ Dc
Dt, dx = Differential(t), Differential(x)
solve = Symbolics.solve_for 
subs = Symbolics.substitute;

# Define balances and axioms
fu = ρ*Dt(u) ~ - dx(qu) 
fc = ρ*Dt(c) ~ - dx(qc) 
fs = ρ*Dt(s) ~ - dx(qs) + Qs
LTE = Dt(u) ~ T*Dt(s) + μ*Dt(c)
latexify([fu; fc; fs; LTE])

# Evaluate entropy production
Qs1 = solve( fs, Qs )
Qs1 = subs(Qs1, Dt(s)=>solve(LTE,Dt(s)))
Qs1 = subs(Qs1, Dt(u)=>solve(fu,Dt(u)))
Qs1 = subs(Qs1, Dt(c)=>solve(fc,Dt(c)))
Qs1 = subs(Qs1, qu=>T*qs + μ*qc)
Qs1 = simplify_fractions(simplify(expand_derivatives(Qs1)))
TQs1 = T*simplify(subs(Qs1, [qs=>-λ/T*dx(T), qc=>-Dc*dx(μ)]), expand=true) 

```

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [April 3, 2022, 7:10am UTC](https://discourse.julialang.org/t/basic-expression-manipulation-with-symbolics-jl/77799/3 "2022-04-03T07:10:46Z")

</div>

Open an issue.
