Inquiries about solving the N-S equation, projection algorithm and parallel

Dear Prof. Bouchut,
The vorticity formulation gives somewhat abnormal results, which conflicted with previous ones. I don’t have much time left to complete my paper, so I go back to solve the original N-S equation, but in parallel. I am working on a convection problem, unlike Boussinesq approximation, the density is modelled nonlinearly: \rho=\rho_0(1-\beta|T-T_M|^q),where β > 0 is the thermal expansion coefficient and ρ_0 is the density at T = T_M.
Conventionally, q=2, and the dimensionless equation set reads

\left\{ \begin{aligned} &\frac{\partial \textbf{u}}{\partial t}+\textbf{u}\cdot\nabla\textbf{u}=-\nabla p+\sqrt{\frac{Pr}{Ra}}\nabla^2\textbf{u}+(T-T_M)^2\textbf{e}_z \\ &\frac{\partial T}{\partial t}+\nabla\cdot (\textbf{u} T)=\frac{1}{\sqrt{PrRa}}\nabla^2T \end{aligned} \right.

I modified cmd’s parallel code. I added the temperature equation and a linear buoyancy term dubT * vy referring to T\textbf{e}_z.

When I turned to the nonlinear buoyancy term: (T-T_M)^2\textbf{e}_z, it reported an error with

varf vJ([u1,u2,uT,up],[v1,v2,vT,vp])=int2d(Th)(...-(uT-TM)^2*v2)

,other terms are omitted. I found in varf, a term should be either bilinear or linear, so the uT^2*v2 referred to trilinear term, is illegal.
I tried to substitute uT^2*v2 to uT*uTb*v2, uTb is temperature at previous step, and I can run code. If it is a right doing? I also tried to use fully explicit term (uTb-TM)^2, but instability won’t be observed: the system remains stable at a high Rayleigh number, and the growing of time step does not have an effect.