1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658
|
%-------------------------------------------------------------------------------
% This file is part of Code_Saturne, a general-purpose CFD tool.
%
% Copyright (C) 1998-2019 EDF S.A.
%
% This program is free software; you can redistribute it and/or modify it under
% the terms of the GNU General Public License as published by the Free Software
% Foundation; either version 2 of the License, or (at your option) any later
% version.
%
% This program is distributed in the hope that it will be useful, but WITHOUT
% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
% FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
% details.
%
% You should have received a copy of the GNU General Public License along with
% this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
% Street, Fifth Floor, Boston, MA 02110-1301, USA.
%-------------------------------------------------------------------------------
\programme{predvv}\label{ap:predvv}
\hypertarget{predvv}{}
\vspace{1cm}
%-------------------------------------------------------------------------------
\section*{Function}
%-------------------------------------------------------------------------------
This subroutine implements the prediction step for the velocity field $\vect{u}$.
This consists of solving the momentum equation by treating the pressure explicitly.
Once the pressure correction step has been performed in the subroutine \fort{resopv},
the velocity-pressure solution is obtained using the mass conservation law:
\begin{equation}
\frac{\partial \rho } {\partial t}+ \dive(\rho \vect{u}) = \Gamma,
\end{equation}
where $\Gamma$ is the mass source term\footnote{In $kg.m^{-3}.s^{-1}$ }.\\
The Reynolds-averaged momentum conservation equation obtained by applying
the fundamental theorem of dynamics is:
\begin{equation}
\frac {\partial (\rho \vect {u})} {\partial t }+
\dive(\rho \vect{u} \otimes \vect{u}) =
\dive(\underline{\underline{\sigma}}) + \vect{S} - \dive{(\rho\,\tens{R})}\end{equation}
where:
\begin{equation}
\underline{\underline{\sigma}} = - p \underline{\underline{Id}} + \underline{\underline{\tau }}
\end{equation}
with the following linear relationship for the Newtonian flows:
\begin{equation}
\begin{array}{lcl}
&\displaystyle \underline{\underline{\tau}} = 2\ \mu\ \underline{\underline{D}}
+\,
\lambda\ tr(\underline{\underline{D }})\ \underline{\underline{Id}} &\\
&\displaystyle \underline{\underline{D}}=\frac{1}{2}\ (\ggrad \underline
{u} +\ ^t\ggrad \vect {u})
\end{array}
\end{equation}
$\tens{\sigma}$ represents the stress tensor, $\tens{\tau}$ the viscous stress tensor,
$\mu$ the dynamic viscosity (molecular and potentially turbulent),$\tens{D}$
the rate of deformation tensor\footnote{Not to be confused, despite the same
notation $D$, with the diffusive fluxes described in the subroutine
\fort{navstv}}, $\tens{R}$ the Reynolds which appears when applying the
average operator to the simultaneous equation, $\vect{S}$ the source
terms.\\
$\lambda$ is the second coefficient of viscosity. It is related to the volume viscosity
$\kappa$ via the expression
\begin{equation}
\lambda=\kappa-\frac{2}{3}\mu
\end{equation}
When the Stokes hypothesis holds, the volume viscosity $\kappa$ is
zero, in other words $3\lambda+2\mu=0$. This hypothesis is implicit in the code
and in the rest of this, except in the compressible module.\\
The equation for the conservation of momentum is finally written as:
\begin{equation}
\begin{array}{lcl}
&\displaystyle \rho\,
\frac{\partial \vect {u} } {\partial t} = -\
\underbrace {\dive(\rho \vect{u} \otimes \vect{u})}_{\text{
convection}} +\ \underbrace {\dive (\mu\ \ggrad \vect {u})}_{\text{
diffusion}} &\\
&\displaystyle \underbrace { +\ \dive (\mu \,^t\ggrad \vect {u}) }_{\text{
transpose of the velocity gradient term}}
\underbrace { - \ \frac {2} {3}\ \grad (\mu\ \dive \vect {u})}_{\text{
secondary viscosity}}\ \ - \dive{(\rho \tens{R})}
-\ \grad(p) + (\rho -\rho_0)\,\vect {g} +
\vect{u}\,\dive (\rho\,\vect {u})&\\
&\displaystyle +\underbrace {\Gamma
(\vect{u}_{\,i}-\vect{u})}_{\text{mass source term}}-
\underbrace {\rho\
\tens{K} \vect {u}}_{\text{head loss}} +
\underbrace { \vect{T}_{\,s}^{\,exp}+
T_{s}^{\,imp}\ \vect{u}}_{\text{other source terms}}
\label{Base_Predvv_eqqdm}
\end{array}
\end{equation}
with $p$ denoting the difference in pressure relative to the reference hydrostatic
pressure (the real hydrostatic pressure being calculated with the density
$\rho$ and not with $\rho_{\,0}$):
\begin{equation}
p=p^*-\rho_{\,0}\ \vect{g}\cdot\vect{X}
\end{equation}
(\vect{X} being the vector of components $x$, $y$ and $z$).\\
$\mu_t$, $\tens{K}$, $\vect{u}_{\,i}$ represent respectively
the turbulent dynamic viscosity, the tensor related to head losses and the value of the
variable associated with the mass source.\\
The divergence of the Reynolds stress tensor is expressed by:
\begin{equation}
-\dive{(\rho\,\tens{R})}=
\begin{cases}
\vect{0} & \text{in laminar}, \\
-\displaystyle\frac {2} {3}\, \grad (\mu_t\ \dive \vect {u})+\dive (\mu_t\ (\ggrad \vect {u}+ \,^t\ggrad \vect {u}))-\frac {2}{3}\,\grad (\rho\, k) & \text{for turbulent}\\
& \text{viscosity}, \\
-\dive(\rho\,\tens{R})& \text{for second-order}\\
& \text{models},\\
-\displaystyle\frac {2} {3}\, \grad (\mu_t\ \dive \vect {u})+\dive (\mu_t\ (\ggrad \vect {u}+ \,^t\ggrad \vect {u})) & \text{in LES}\\
\end{cases}
\end{equation}
The mass source term involves terms corresponding to the local velocity field
$\vect {u}$ as well as a velocity field $\vect {u}_{\,i}$
associated with the mass injected (or extracted). When $\Gamma<0$, we remove mass from the system thereby
obtaining $\vect{u}_{\,i} = \vect{u}$. The mass term is zero (\emph{i.e.} $\Gamma
(\vect{u}_{\,i}-\vect{u})= \vect{0} $). When $\Gamma>0$, a non-zero
mass term if $\vect{u}_{\,i} \ne \vect{u}$.
All terms appearing in the conservation of momentum equation, apart from
the convection and diffusion terms, are computed in this subroutine and
transmitted to the
subroutine \fort{codits} which solves the full equation (convection-diffusion with source terms).
See the \doxygenfile{predvv_8f90.html}{programmers reference of the dedicated subroutine} for further details.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Discretization}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The convective term in $\dive(\vect{u} \otimes \rho\,\vect{u})$
introduces a nonlinearity and coupling of the components of the velocity
$\vect{u}$ in the equation (\ref{Base_Predvv_eqqdm}). The three velocity
components are linearized and decoupled during discretization of the momentum
equation in this prediction step.\\
For instance, taking:
\begin{equation}
\vect{\widetilde{u}}= \vect{u}^n + \delta \vect{u}
\end{equation}
The exact contribution of the convective term to take into account in the prediction step would be:
\begin{equation}\label{Base_Predvv_Conv_exact}
\begin{array}{ll}
\dive(\vect{\widetilde{u}} \otimes \rho\,\vect{\widetilde{u}}) =
\dive(\vect{u}^{n} \otimes \rho\,\vect{u}^{n}) + \dive(\delta \vect{u} \otimes
\rho\,\vect{u}^{n}) + \underbrace { \dive(\vect{u}^{n} \otimes
\rho\,\delta \vect{u})}_{\text {linear coupling term}} + \underbrace { \dive(\delta \vect{u} \otimes
\rho\,\delta \vect{u})}_{\text {nonlinear coupling term}}\\
\end{array}
\end{equation}
The last two terms of the expression (\ref{Base_Predvv_Conv_exact}) are {\em a priori} neglected
so as to obtain a velocity system that is decoupled and thereby avoid the
inversion of a potentially very large matrix. These two terms can
nevertheless be taken into account in an approximate manner by explicit
extrapolation of the mass flux in $n+\theta_F$ (for the linear coupling term
arising from the convection of $\vect{u}^{n}$ by $\delta \vect{u}$) and by
applying a fixed-point subiteration over the subroutine \fort{navstv} (for
the nonlinear term) implemented by specifying $\var{NTERUP}>1$.
The equation (\ref{Base_Predvv_eqqdm}) is discretized at the time level
$n+\theta$ using a $\theta$-scheme and the tensor of velocity head losses
decomposed into the sum of its diagonal $\tens{K}_{d}$ and extra diagonal $\tens{K}_{e}$ terms (such that
$\tens{K}=\tens{K}_{d}+\tens{K}_{e}$).\\
$\bullet$ The pressure is assumed to be known at the point in time $n-1+\theta$
(pressure/velocity time lag) and the gradient evidently calculated at this instant.\\
$\bullet$ The secondary viscosity and the gradient transpose source terms,
those coming from the turbulence model\footnote{with the exception of $\dive (\mu_t\ (\ggrad
\vect {u}))$}, $\rho\,\tens{K}_{\,e}\ \vect{u}$, $(\rho -\rho_0)
\vect {g}$ as well as $\vect{T}_{s}^{\,exp}$ and
$\Gamma\,\vect{u}_{\,i}$ are evaluated explicitly at time $n$ or else
extrapolated according to the time scheme selected for the physical properties and the
source terms.\\
$\bullet$ The source terms $\vect{u}\,\,\dive (\rho\,\vect {u})$,
$\Gamma\,\,\vect{u}$, $T_{s}^{\,imp}\,\,\vect{u}$ and
$-\rho\,\tens{K}_{\,d}\,\,\vect{u}$ are implicit and calculated at
instant $n+\theta$.\\
$\bullet$ The diffusion term $\dive (\mu_{\,tot}\,\ggrad \vect{u})$ is implicitized: the velocity is taken at the instant $n+\theta$ and the viscosity either explicitized or extrapolated.\\
$\bullet$ Lastly, the convection term in $\dive(\,\vect{u} \otimes
(\rho\vect{u})\,)$ is treated implicitly: the resolved velocity
component is
taken at $n+\theta$ and the mass flux determined explicitly or extrapolated
at
$n+\theta_F$.
For clarification, unless explicitly stated otherwise the physical properties
$\Phi$ ($\rho,\,\mu_{tot},\,...$) and the mass flux $(\rho\vect{u})$
are to be evaluated respectively at time steps $n+\theta_\Phi$ and
$n+\theta_F$, with $\theta_\Phi$ and $\theta_F$ dependent upon the specific
time schemes selected for these quantities\footnote{cf. \fort{introd}}.
The time-discrete form of the momentum equation (\ref{Base_Predvv_eqqdm}) then reads:
\begin{equation}\label{Base_Predvv_eq_di1}
\begin{array}{c}
\displaystyle \rho\,\ \frac{ \vect {\widetilde{u}}^{n+1} -\vect {u}^{n} }
{\Delta t} + \dive(\,\vect{\widetilde{u}}^{n+\theta} \otimes (\rho\vect{u})\,) -\dive
(\mu_{\,tot}\,\ggrad \vect{\widetilde{u}}^{n+\theta}) =
\\
\displaystyle
- \grad p^{n-1+\theta} + \dive (\rho\,\vect {u})\,\vect{\widetilde{u}}^{n+\theta} +(\Gamma\,\vect{u}_{\,i})^{n+\theta_S}-\Gamma^n\,\,\vect{\widetilde{u}}^{n+\theta}
\\
\begin{array}{c}
\displaystyle
- \rho\,\tens{K}_{\,d}^{n}\,\,\vect{\widetilde{u}}^{n+\theta} - (\rho\,\tens{K}_{\,e}\ \vect{u})^{n+\theta_S} + (\vect{T}_{s}^{\,exp})^{\,n+\theta_S} + T_{s}^{\,imp}\,\,\vect{\widetilde{u}}^{n+\theta}
\\
\displaystyle
+[\dive (\mu_{\,tot}\,^t\ggrad \vect {u})]^{n+\theta_S}-\frac {2} {3}[\,\grad (\mu_{\,tot}\,\dive \vect {u})]^{n+\theta_S} + (\rho -\rho_0) \vect {g}
- (\vect{turb})^{n+\theta_S}
\end{array}
\end{array}
\end{equation}
where, for simplification, the following definitions have been set:
\begin{equation}
\mu_{\,tot}=
\begin{cases}
\mu+\mu_t & \text{for turbulent viscosity or LES models}, \\
\mu & \text{for second order models or in laminar regimes}
\end{cases} \
\end{equation}
\\
and:
\begin{equation}
\vect{turb}^{n}=
\begin{cases}
\displaystyle\frac {2}{3}\grad (\rho^{n}\,k^{n}) & \text{for turbulent viscosity models}, \\
\dive(\rho^{n}\,\tens{R}^n) & \text{for second order models},\\
0 & \text{in laminar or LES}\\
\end{cases}
\end{equation}
By analogy with the $\theta$-scheme equation for a scalar variable, $\,
\vect {\widetilde{u}}^{n+\theta}$ is interpolated from the predicted velocity
$\vect {\widetilde{u}}^{n+1}$ in the following manner\footnote{if
$\theta=1/2$, or a time extrapolation is used, second-order is only obtained provided the time step $\Delta t$ is constant and spatially uniform.}~:
\begin{equation}
\vect {\widetilde{u}}^{n+\theta}=\theta\, \vect
{\widetilde{u}}^{n+1}+(1-\theta)\, \vect {u}^{n}\\
\end{equation}
With:
\begin{equation}
\left\{
\begin{array}{ll}
\theta = 1 & \text{For a first-order implicit Euler scheme.}\\
\theta = 1/2 & \text{For a second-order Crank-Nicolson scheme.}\\
\end{array}
\right.
\end{equation}
Using the above interpolation function, (\ref{Base_Predvv_eq_di1}) is then rewritten in the following form:
\begin{equation}\label{Base_Predvv_eq_di2}
\begin{array}{c}
\displaystyle \underbrace{\left(\frac{\rho}{\Delta t} -\theta \,\dive (\rho\,\vect {u}) +\theta \,\, \Gamma^n +
\theta \,\, \rho\,\tens{K}_{\,d}^n-\theta \,T_s^{\,imp} \right)}_{\displaystyle f_s^{imp}}\, (\vect {\,\widetilde{u}}^{n+1} -\vect {u}^{n})
\\
+\, \theta\, \dive(\vect {\widetilde{u}}^{n+1} \otimes (\rho\vect{u}))-\, \theta\,\dive (\mu_{\,tot}\,\ggrad \vect {\widetilde{u}}^{n+1}) =
\\
-\,(1-\theta)\, \dive(\vect {u}^{n} \otimes (\rho\vect{u})) +\,(1-\theta)\,\dive (\mu_{\,tot}\,\ggrad \vect {u}^{n})
\\
f_s^{exp}\left\{
\begin{array}{c}
\displaystyle
- \grad p^{n-1+\theta} + \dive (\rho\,\vect {u})\,\vect{u}^{n} +\,(\,\Gamma^{n}\,\vect{u}_{\,i}\,)^{n+\theta_S}- \Gamma^n\,\,\vect{u}^{n}
\\
\displaystyle
-(\,\rho\,\tens{K}_{\,e}\ \vect{u}\,)^{n+\theta_S} -\rho\,\tens{K}_{\,d}^n\ \vect{u}^{n}+ (\vect{T}_{s}^{\,exp})^{\,n+\theta_S} + T_s^{\,imp}\,\,\vect {u}^{n}
\\
\displaystyle
+[\dive (\mu_{\,tot}\,^t\ggrad \vect {u}\,)]^{n+\theta_S}-\frac {2} {3}[\,\grad (\mu_{\,tot}\,\dive \vect {u}\,)]^{n+\theta_S} + (\rho -\rho_0) \vect {g}-(\vect{turb})^{n+\theta_S}
\end{array}
\right.
\end{array}
\end{equation}
from which the equation solved by the subroutine \fort{codits} is obtained:
\begin{equation}\begin{array}{c}
\displaystyle
f_s^{\,imp}(\vect {\widetilde{u}}^{n+1}-\vect {u}^{n}) + \theta\, \dive(\vect{\widetilde{u}}^{n+1} \otimes (\rho
\vect{u})) - \theta\,\dive (\,\mu_{\,tot}\,\ggrad \vect{\widetilde{u}}^{n+1}) =
\\\\
\displaystyle
-(1-\theta)\,\dive(\vect{u}^{n} \otimes (\rho \vect{u}))+(1-\theta)\,\dive (\,\mu_{\,tot}\,\ggrad \vect{u}^{n})
+ \vect{f}_{\,s}^{\,exp}
\end{array}
\end{equation}
The spatial discretization scheme is elaborated further in the section relating to the subroutine \fort{codits}.\\
\minititre{Remarks:}
{\tiny$\blacksquare$} In the standard case without extrapolation, the term
$-\,T_s^{\,imp}$ is only added to the coefficient $f_s^{\,imp}$ if it is positive so as not to weaken
the diagonal dominance of the matrix to invert.\\
{\tiny$\blacksquare$} If, on the other hand, an extrapolation is used,
$\,T_s^{\,imp}$ is added to $f_s^{\,imp}$ whatever its sign. In effect, the intuitive idea which consists of taking:
\begin{equation}
\begin{cases}
\displaystyle
(\vect{T}_{s}^{\,exp} + T_{s}^{\,imp}\,\vect {u})^{\,n+\theta_S} &
\text{if } T_{s}^{\,imp} > 0\\
\displaystyle
(\vect{T}_{s}^{\,exp})^{\,n+\theta_S} + T_{s}^{\,imp}\,\vect{u}^{n+\theta} &\text{if not}\\
\end{cases}
\end{equation}
leads to inconsistency (loss of coherence) in the numerical treatment of the problem should $T_s^{imp}$ changes sign between two time steps.\\
{\tiny$\blacksquare$} The diagonal part $\tens{K}_{\,d}$ of the head loss tensor term is used in $f_s^{\,imp}$. Strictly speaking, only the positive contributions should in fact be retained (as pointed out in the associated user subroutine \fort{uskpdc}). The approach currently in use requires improvement.\\
{\tiny$\blacksquare$} The term $\theta\,\Gamma^{n}-\theta\,\dive
(\rho\,\vect {u})$ is not problematic for the diagonal dominance of the matrix as it is exactly counterbalanced by the convection term (cf. \fort{covofi}).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Implementation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
The conservation of momentum equation is solved in a decoupled manner. The integration of the different terms has therefore been carried out in order to treat separately the equations obtained for each component of the velocity.\\
For each of these components, the second member $f_s^{exp}$ of the system (\ref{Base_Predvv_eq_di2}), the implicit terms of the system (with the exception of the convection-diffusion terms) and the term representing the total viscosity at the internal\footnote{value required for the integration of the diffusion term in \fort{codits}, $\displaystyle(\mu_{\,tot})_{ij}\frac{\var{SURFN}}{\var{DIST}}$} and boundary faces is calculated in the subroutine \fort{predvv}. These terms are then transmitted to the subroutine \fort{codits} which constructs and then solves the resulting complete system of equations, with the convection-diffusion terms, for each component of the velocity.
\\\\
The normalized residual for convergence of the solution of the system for the pressure correction (\fort{resopv}) is calculated in
\fort{predvv}. It is defined as the norm of magnitude
$$\dive(\rho\,\widetilde{\vect{u}}^{n+1}+\Delta t \grad{P^{n-1+\theta}})-\Gamma$$
integrated over each cell \var{IEL} of the mesh ($\Omega_{iel}$) or, symbolically, as the square root of the sum over the mesh cells of the quantity
\begin{center}
\var{XNORMP(IEL)}=
$\int\limits_{\Omega_{iel}}[{\dive(\rho\,\widetilde{\vect{u}}^{n+1}+\Delta\,t\,\grad{P^{n-1+\theta}})
-\Gamma\,]\,d\Omega}$.
\end{center}
It represents the second member of the equation system that would be solved for the pressure if the pressure gradient were not taken into account in the velocity prediction step. Note that, if the second member of the pressure increment equation were to be used directly, a normalized residual tending to zero would be obtained for a stationary calculation that had been run to convergence. This result would be penalizing and of little use for the computations.
At the start of \fort{predvv}, $\widetilde{\vect{u}}^{n+1}$ is not yet available and it is not possible therefore to calculate the total normalized residual. On the other hand, calculating the total residual at the end of \fort{predvv} is undesirable as this would require monopolising a working array to store the pressure gradient for the duration of the subroutine \fort{predvv}.
The calculation of the normalized residual is therefore carried out in two stages.
The quantity $\int\limits_{\Omega_{iel}}{\dive(\Delta\,t\,\grad{P^{n-1+\theta}}) -\Gamma d\Omega}$ is calculated at the beginning of \fort{predvv} and the complement $\int\limits_{\Omega_{iel}}{\dive(\rho\,\widetilde{\vect{u}}^{n+1})d\Omega}$ added at the end of \fort{predvv}.
The pressure gradient at the cells is thus first computed at instant $n-1+\theta$ by a call to \fort{grdcel}. The subroutine \fort{inimas} is then used to evaluate $\Delta\,t\,S\,\grad{P^{n-1+\theta}}\cdot\vect{n}$ at the faces (of surface $S$ and normal $\vect{n}$). On entry into \fort{inimas}, the working array \var{TRAV} contains $\frac{\Delta\,t}{\rho}\,\grad{P^{n-1+\theta}}$; when exiting this subroutine, the \var{VISCF} and \var{VISCB} arrays contain the value of $\Delta\,t\,S\,\grad{P^{n-1+\theta}}\cdot\vect{n}$ at the internal and boundary faces respectively.
We then use \fort{divmas} takes the value of $\int\limits_{\Omega_{iel}}{\dive(\Delta\,t\,\grad{P^{n-1+\theta}}) d\Omega}$ at the cells from the contents of \var{VISCF} and \var{VISCB} and places it into the array \var{XNORMP}.
Lastly, the contribution $\int\limits_{\Omega_{iel}}{ -\Gamma^{n} d\Omega}$ of the mass source term is added to \var{XNORMP}.
For $\rho\,\widetilde{\vect{u}} + \Delta t \grad{P}$, we apply the velocity boundary conditions. For the computation of
$\int\limits_{\Omega_{iel}}{\dive(\Delta\,t\,\grad{P^{n-1+\theta}}) d\Omega}$, the boundary conditions for the pressure gradient (or more precisely for $\frac{\Delta\,t}{\rho}\,\grad{P^{n-1+\theta}}$) are therefore the homogenized boundary conditions of the velocity. The pressure gradient (or rather $\frac{\Delta\,t}{\rho}\,\grad{P^{n-1+\theta}}$) is consequently assumed to be zero normal to the walls and the inlets and to remain constant in the direction normal to symmetries and to the outlets.
In addition, to save computation time when passing through \fort{inimas}, the face values on non-orthogonal meshes are evaluated merely to first-order accuracy in space (no reconstruction: \var{NSWRP=1}). Local accuracy is moreover of no particular interest as the aim here is simply to determine a normalized global residual.
The computation of the residual will be completed at the end of \fort{predvv}.
\etape{Partial calculation of the normalized residual for the pressure step}
During this first step, we use the array \var{XNORMP(NCELET)} to compute the quantity $$\dive(\Delta t \,\grad{P^{n-1+\theta}})-\Gamma$$ integrated over each cell \var{IEL} of the mesh ($\Omega_{iel}$), which is expressed as:
$$\var{XNORMP(IEL)}=\int\limits_{\Omega_{iel}}{\dive(\Delta\,t\,\grad{P^{n-1+\theta}})-\Gamma
d\Omega}$$
This operation is carried out by successively implementing \fort{inimas}
(calculation at the faces in \var{VISCF} and \var{VISCB} of $\Delta t\,\grad{P^{n-1+\theta}}$ using the contents of the working array \var{TRAV}=$\frac{\Delta t}{\rho} \grad{P^{n-1+\theta}}$ together with homogeneous velocity boundary conditions and without reconstruction) followed by \fort{divmas} (computation in \var{XNORMP} of the integral over the cells). With a simple loop, we then add the mass source term contribution $\Gamma$.
This calculation is completed at the end of \fort{predvv}.\\
\etape{Partial calculation of the term $\vect{f}_s^{\,exp}$}
To represent the second member corresponding to each component of the velocity, we use the arrays \var{TRAV}(\var{IEL},\var{DIR}), \var{TRAVA}(\var{IEL},\var{DIR}) and \var{PROPCE}, with \var{IEL} being the number of the cell and \var{DIR} the direction (x, y, z). Four cases need to be considered depending on whether or not the source terms are extrapolated at $n+\theta_S$ and whether or not a fixed-point iteration is implemented on the velocity-pressure system (\var{NTERUP}$>1$).
\\
$\bullet$ If the source terms are extrapolated and we iterate over \fort{navstv}\\
\begin{itemize}
\item [-]\var{TRAV} receives the source terms which are recomputed during each iteration over \fort{navstv} but are not extrapolated
($\grad{P^{n-1+\theta}}$ and $(\rho -\rho_0) \vect {g}$\footnote{In reality, the value of
$(\rho -\rho_0) \vect {g}$ doesn't change, however this is a computation and it avoids the need for additional treatment of this term.}).\\
\item [-]\var{TRAVA} receives the source terms whose values do not change during the course of the iterations over \fort{navstv} nor are they extrapolated
($T_s^{imp}\,u^n\,,-\rho\,\tens{K}_{d}\,u^n\,,\,-\Gamma^n\,u^n,...$).\\
\item [-]\var{PROPCE} receives the source terms that have to be extrapolated.\\
\\
\end{itemize}
$\bullet$ When there is no iteration over \fort{navstv}, \var{TRAVA} has no use and its contents are directly stored in \var{TRAV}.\\
\\
$\bullet$ If there is no source term extrapolation, \var{PROPCE} serves no purpose and its contents are directly stored in \var{TRAVA} (or in \var{TRAV} if \var{TRAVA} is also of no use).\\
Therefore, when there is neither source term extrapolation nor iteration over \fort{navstv}, all the source terms go directly into \var{TRAV}.\\
\\
\begin{itemize}
\item We already have a pressure gradient on the cells at the instant in time $n-1+\theta$. The gravity term is then added to the vector \var{TRAV} which already contains pressure gradient. This means we have, for example, for the direction x:
\begin{equation}
\var{TRAV}(\var{IEL},1) = |\Omega_{IEL}| (-\displaystyle (\frac {\partial p}
{\partial x})_{\var{IEL}}+(\rho(\var{IEL})-\rho_0)g_x)
\end{equation}
\item If source term extrapolation is used, at the first iteration over \fort{navstv}, the vector \var{TRAV} (or \var{TRAVA}) receives $-\theta_S$ times the contribution at time $n-1$ of the source terms to be extrapolated\footnote{Because
$(\vect{T}_s^{exp})^{n+\theta_S}=(1+\theta_S)\,(\vect{T}_s^{exp})^n
-\,\theta_S\, (\vect{T}_s^{exp})^{n-1}$} (stored in \var{PROPCE}). \var{PROPCE} is then reinitialised to zero so as to be able to receive afterwards the contribution at the current time step of the extrapolated source terms.
\item The value of the term corresponding to the turbulence model is only calculated during the first iteration over \fort{navstv} then added to \var{TRAVA}, \var{TRAV} or \var{PROPCE} depending on whether the source terms are extrapolated, and/or whether we iterate over \fort{navstv}.\\
{\tiny$\blacksquare$} Turbulent viscosity models:\\
If $\var{IGRHOK}=1$, then we calculate $-\displaystyle \frac{2}{3}\ \rho\ \grad k$ (and not, as should be the case,
$-\displaystyle \frac{2}{3}\grad (\rho k)$) by way of simplification
(cf. paragraph~\ref{Base_Predvv_section4}). The gradient of the turbulent kinetic energy $k$ is computed on the cell by the subroutine \fort{grdcel}. \\
If $\var{IGRHOK}=0$, this term is expected to be implicitly taken into account in the pressure.\\
{\tiny$\blacksquare$} Second order models:\\
Computation of the term $-\dive(\rho \tens{R})$ is implemented in two steps. A call is first made to the subroutine \fort{divrij}, which projects the vector $\tens{R}.\vect{e}_{\var{DIR}}$ onto the cell faces along the direction \var{DIR}, following which we then call the subroutine \fort{divmas} to compute the divergence.\\
\linebreak
\item The secondary viscosity $- \displaystyle \frac {2} {3}\grad (\mu_{\,tot} \dive \vect\,{u})$ and transposed gradient $ \dive (\mu_{\,tot} \,^t\ggrad \vect {u})$ terms, when these taken into account (\emph{i.e.} \var{IVISSE}\,(\var{IPHAS})\ = 1, where \var{IPHAS} is the number of the phase treated) are computed by the subroutine \fort{visecv}. They are only calculated at the first iteration over \fort{navstv}. During this step, the array \var{TRAV} serves as a working array when the subroutine \fort{visecv} is being called. It reverts to its normal value at the end of the call during which its contents are stored temporarily in the vectors \var{W7} to \var{W9}.
\\
\item The terms corresponding to the velocity head losses ($\rho \tens{K}
{u}$), if there are any (\ $\var{NCEPDP}> 0$\ ), are calculated by the subroutine \fort{tspdcv} at the first iteration over \fort{navstv}. They are decomposed into two parts:\\
{\tiny$\blacksquare$} The first part, corresponding to the contribution of the diagonal terms ($-\rho\,\tens{K}_{\,d}\vect{u}$), is not extrapolated.\\
{\tiny$\blacksquare$} The second, which corresponds to the extra diagonal terms
($-\rho\,\tens{K}_{\,e}\vect{u}$), may or may not be extrapolated.\\
During this step, the array \var{TRAV} is used as a working array while the call is being made to the subroutine \fort{tspdcv}. It reverts to its normal value at the end of this call, its contents having been meanwhile stored in the vectors \var{W7} to \var{W9}.
\end{itemize}
\etape{Calculation of the viscosity term at the faces
$\displaystyle(\mu_{\,tot})_{ij}\frac{\var{SURFN}}{\var{DIST}}$}
The calculation of the total viscosity term at the faces is performed by the subroutine \fort{viscfa} and the solutions stored in the arrays \var{VISCF} and \var{VISCB} for the internal and boundary faces respectively.\\
During integration of the convection-diffusion terms in the subroutine \fort{codits}, the non-reconstructed terms, integrated in the matrix $\tens{EM}$, are singled out from the full set of terms (unreconstructed +
reconstruction gradients) associated to the operator $\mathcal{E}$ (nonlinear)\footnote{ Ensuring coherence with the definition of the operators $\mathcal{EM}$ and $\mathcal{E}$ employed in \fort{navstv} }.
Likewise, we differentiate between the total viscosity at the faces used in $\mathcal{E}$, arrays \var{VISCF} and \var{VISCB}, and the total viscosity at the faces employed in $\tens{EM}$, arrays \var{VISCFI} and \var{VISCBI}.\\
For turbulent viscosity models and in LES, these two arrays are identical and contain $\mu_t+\mu$.
For second order models, they normally contain $\mu$ however, for the simple reason of numerical stability, we can choose to put $\mu_t+\mu$ in the matrix (\textit{i.e.} in $\tens{EM}$) while keeping $\mu$ in the second member (\textit{i.e.} in $\mathcal{E}$). Because the solution is obtained by increments, this manipulation doesn't change the result. This option is activated by the indicator $\var{IRIJNU}\ =\ 1$\\
When there is no diffusion of the velocity (\ \var{IDIFF}(\var{IUIPH})\ $<$\ 1), the terms \var{VISCF} and \var{VISCB} are set to zero.
\linebreak
\etape{Calculation of the whole second member, of $f_s^{\,imp}$ and solving of the equation}
The evolution equations for the components of the momentum are solved in a coupled manner. Consequently, we use a single array, \var{ROVSDT}, to represent the diagonal of the matrix obtained for each of the velocity components.\\
For each of these components:\\
\begin{itemize}
\item During the first iteration over the subroutine \fort{navstv}, the implicit and explicit parts of the user-prescribed source terms are computed by a call to the subroutine \fort{ustsns}.\\
{\tiny$\blacksquare$} The implicit part ($T_s^{imp}$) is saved in the vector \var{XIMPA} for subsequent iterations if the fixed-point method is used on the velocity-pressure system, with the contribution resulting from the same implicit terms ($T_s^{imp}\,\vect{u}^n$) being added either to \var{TRAVA} or to \var{TRAV}.\\
{\tiny$\blacksquare$} The explicit part ($T_s^{exp}$) is added to \var{TRAVA}, \var{TRAV} or \var{PROPCE} depending on whether the source terms are extrapolated or not, and whether we iterate over \fort{navstv}.\\
\item The mass accumulation term ($\dive(\rho \vect {u})$) is calculated by calling the subroutine \fort{divmas} with the mass flux as argument. During the first iteration of the subroutine \fort{navstv},
the term corresponding to the explicit contribution of the mass accumulation ($\vect{u}^{n}\ \dive(\rho \vect{u})$) is added to \var{TRAVA} or to \var{TRAV}. The vector \var{ROVSDT} is initialized by $\theta\,\dive(\rho \vect{u})$ (to remain coherent with the approach implemented in the subroutine
\fort{bilsc2}) after which the contribution of the non-stationary term ($\displaystyle
\frac{\rho}{\Delta t}$) is added to the latter.\\
\item The vector \var{ROVSDT} is next completed with the contribution of the user-defined implicit source terms (stored in \var{XIMPA}) and with that of the head loss term ($\rho\,\tens{K}_{\,d}$) should $\var{NCEPDP}>0$.\\
{\tiny$\blacksquare$} When there is no source term extrapolation, the implicit part of the user source terms is only added to \var{ROVSDT} if it is negative so as not to weaken the diagonal of the system.\\
{\tiny$\blacksquare$} When the source terms are extrapolated however, it is taken into account whatever its sign may be.\\
\item The implicit and explicit mass source terms, if any (~$\var{NCESMP}>0$~), are computed at the first iteration by the subroutine \fort{catsma} over \fort{navstv}. $\Gamma\,\vect{u}_i$ is added to \var{TRAV}, \var{TRAVA} or \var{PROPCE} for potential extrapolation. $\Gamma\,\vect{u}^n$ is added to \var{TRAV} or \var{TRAVA} and
$-\Gamma$ to \var{ROVSDT}.
\\
\item The second member is then assembled taking account of all of the
contributions stored in the arrays \var{PROPCE}, \var{TRAVA} and
\var{TRAV}.\\
{\tiny$\blacksquare$} If the source terms are extrapolated, then the second member reads:
$$\var{SMBR}=(1-\theta_S)\,\var{PROPCE}+\var{TRAVA}+\var{TRAV}$$
{\tiny$\blacksquare$} If not, we directly obtain:
$$\var{SMBR}=\var{TRAVA}+\var{TRAV}$$
\item If a specific physics (lagrangian, electric arc, ...) is taken into account, its contribution is directly added to \var{SMBR}.
\\
\item The solution of the linear system is computed by the subroutine
\fort{codits}, taking as argument \var{ROVSDT} and \var{SMBR}.\\
\item When strengthened transient velocity-pressure coupling ($\ \var{IPUCOU} = 1\ $) (only available with a first-order scheme, where there is neither source term extrapolation nor iteration over \fort{navstv}) is implemented, \fort{codits} solves the following equation:
\begin{equation}\label{Base_Predvv_Eq_Tdir}
\tens{EM}_{\,\var{DIR}}\,.\, (\tens{RHO}^{\,n})^{-1}\,.\,\vect{T}_{\,\var{DIR}} =
\tens{\Omega}\,.\,\vect{1}
\end{equation}
with $\tens{RHO}^n$ the diagonal tensor of element $\rho^{n}_{IEL}$,
$\tens{\Omega}$ the diagonal tensor of element $|\Omega_{IEL}|$ and $\vect{1}$ denoting the
vector whose components are all equal to one.\\
Inversion of the system by \fort{codits} yields
$(\tens{RHO}^{\,n})^{-1}\,.\,\vect{T}_{\,\var{DIR}}$, which is subsequently multiplied by $\tens{RHO}^{\,n}$
to obtain $\vect{T}_{\,\var{DIR}}$.
This process is repeated for each component \var{DIR} of the velocity. $\vect{T}_{\,\var{DIR}}$
is therefore a diagonal matrix approximation of
$\tens{RHO}^{\,n}\,.\,\tens{EM}_{\,\var{DIR}}^{-1}$, with
$\tens{EM}_{\,\var{DIR}}$ representing the implicit part of the solution to the discrete momentum equation (\emph{i.e.} \var{ROVSDT} + contribution of the convection-diffusion terms accounted for in the subroutine
\fort{matrix}). $\vect{T}_{\,\var{DIR}}$ is also involved in the correction step (cf. subroutine \fort{resopv}).\\
\end{itemize}
This terminates the loop over the velocity components.\\
\etape{Final calculation of the normalized residual for the pressure step}
As mentioned beforehand, the computation of the normalized residual for the pressure step of \fort{resopv} can now be completed.
The \var{XNORMP} array already contains
$\int\limits_{\Omega_{iel}}{\dive(\Delta\,t\,\grad{P^{n-1+\theta}}) -\Gamma d\Omega}$ to which we now add
$\int\limits_{\Omega_{iel}}{\dive(\rho\,\widetilde{\vect{u^{n+1}}})d\Omega}$.
To do so, we follow the same procedure used previously to compute the integral
$\int\limits_{\Omega_{iel}}{\dive(\Delta\,t\,\grad{P^{n-1+\theta}}) d\Omega}$. A call to
\fort{inimas} enables to obtain
$\rho\,S\,\widetilde{\vect{u}}^{n+1}\cdot\widetilde{\vect{n}}$ at the faces calculated from the of
$\widetilde{\vect{u}}^{n+1}$ known at the cells (array \var{RTP}). The boundary conditions
employed in \fort{inimas} are naturally those of the velocity. As beforehand, evaluation of the face values is only up to first-order in space on non-orthogonal meshes (no reconstruction~: \var{NSWRP=1}) in order to save computation time when passing through \fort{inimas}. The subroutine \fort{divmas} is then used to compute the divergence $\int\limits_{\Omega_{iel}}{\dive(\rho\,\widetilde{\vect{u}}^{n+1})d\Omega}$ at the cells, which is then added directly to \var{XNORMP}.
Lastly, the normalized residual is determined and then stored in \var{RNORMP(IIPHAS)} by a call to \fort{prodsc} (which computes the sum of the squares of the values at the faces contained in \var{XNORMP} and then takes the square root of the result).\\
\newpage
The different contributions (excluding convection-diffusion) assigned to each of the vectors \var{TRAV}, \var{TRAVA}, \var{PROPCE} and \var{ROVSDT} at iteration $n$ are summarized in tables (\ref{Base_Predvv_tab_ext0}), (\ref{Base_Predvv_tab_ext1}), (\ref{Base_Predvv_tab_exp0}) and (\ref{Base_Predvv_tab_exp1}). We differentiate two cases for each of the time-stepping schemes applied to the source terms, depending on whether or not a fixed-point algorithm is used to solve the velocity-pressure system (iteration over \fort{navstv} for
\var{NTERUP}$>1$). Unless otherwise specified, the physical properties $\Phi$
($\rho$,$\mu$,etc...) are assumed to be evaluated at the time level $n+\theta_\Phi$, and the mass flux
$(\,\rho \vect{u})$ at $n+\theta_F$, where $\theta_\Phi$ and $\theta_F$ are dependent on the specific time-stepping schemes selected for these quantities (cf. \fort{introd}).
\\\\
The terms appearing in these tables are written as they have been implemented in the code, this being the source of some differences in relation to the form adopted in equation (\ref{Base_Predvv_eq_di2}).
\\\\
In order to simplify the problem, we pose:
\begin{equation}\notag
\mu_{\,tot}=
\begin{cases}
\mu+\mu_t & \text{for turbulent viscosity models and in LES}, \\
\mu & \text{for second-order models and in laminar regime}\\
\end{cases} \
\end{equation}
\minititre{With extrapolation of source terms}
\begin{equation}\notag
\vect{turb}^{n}=
\begin{cases}
\displaystyle\frac {2}{3}\,\rho^{n}\,\grad (\,k^{n}) &
\text{for turbulent viscosity models}, \\
\dive(\rho^{n}\,\tens{R}^n) & \text{for second-order models},\\
0 & \text{in laminar or LES computations.}\\
\end{cases}
\end{equation}
$\bullet$ \var{NTERUP} $=$ 1 : $\var{SMBR}^n=(1-\theta_S)\,\var{PROPCE}^n+\var{TRAV}^n$
\begin{equation}\label{Base_Predvv_tab_ext0}
\begin{array}{|l|c|}
\hline
\var{ROVSDT}^{n}
& \displaystyle
\frac{\rho}{\Delta t} -\theta \,\dive (\rho\,\vect {u}) +\theta \,\, \Gamma^n + \theta \,\, \rho\,\tens{K}_{\,d}^n-\theta \,T_s^{\,imp} \\
\hline
\var{PROPCE}^{n}
& \displaystyle
\vect{T}_{s}^{\,exp,\,n}-\,\rho^{n}\,\tens{K}_{\,e}^{n}\ \vect{u}^{n} + \,\Gamma^{n}\,\vect{u}_{\,i}^{n}\\
& \displaystyle
-\vect{turb}^{n}+ \dive (\mu_{\,tot}^{n}\,^t\ggrad \vect {u}^{n}\,)+ \frac {2} {3}\,\grad (\mu_{\,tot}^{n}\,\dive \frac{(\rho \vect {u})}{\rho^{n}}\,)\\
\hline
\var{TRAV}^{n} & \displaystyle
- \grad p^{n-1+\theta} + (\rho -\rho_0) \vect {g} \\
& \displaystyle
-\theta_S\,\var{PROPCE}^{n-1} -\rho\,\tens{K}_{\,d}^n\ \vect{u}^{n} \\
& \displaystyle
+ T_s^{\,imp}\,\,\vect {u}^{n} + \dive (\rho\,\vect {u})\,\vect{u}^{n} - \Gamma^n\,\,\vect{u}^{n}\\
\hline
\end{array}
\end{equation}
\\\\
$\bullet$ \var{NTERUP} $>$ 1 (sub-iteration $k$) : $\var{SMBR}^n=(1-\theta_S)\,\var{PROPCE}^n+\var{TRAVA}^n+\var{TRAV}^n$
\begin{equation}\label{Base_Predvv_tab_ext1}
\begin{array}{|l|c|}
\hline
\var{ROVSDT}^{n}
& \displaystyle
\frac{\rho}{\Delta t} -\theta \,\dive (\rho\,\vect {u}) +\theta \,\, \Gamma^n + \theta \,\, \rho\,\tens{K}_{\,d}^n-\theta \,T_s^{\,imp} \\
\hline
\var{PROPCE}^{n}
& \displaystyle
\vect{T}_{s}^{\,exp,\,n}-\,\rho^{n}\,\tens{K}_{\,e}^{n}\ \vect{u}^{n} + \,\Gamma^{n}\,\vect{u}_{\,i}^{n}\\
& \displaystyle
-\vect{turb}^{n}+ \dive (\mu_{\,tot}^{n}\,^t\ggrad \vect {u}^{n}\,)+ \frac {2} {3}\,\grad (\mu_{\,tot}^{n}\,\dive \frac{(\rho \vect {u})}{\rho^{n}}\,)\\
\hline
\var{TRAVA}^{n} &
\displaystyle
-\theta_S\,\var{PROPCE}^{n-1} -\rho\,\tens{K}_{\,d}^n\ \vect{u}^{n} + T_s^{\,imp}\,\,\vect {u}^{n} + \dive (\rho\,\vect {u})\,\vect{u}^{n} - \Gamma^n\,\,\vect{u}^{n}\\
\hline
\var{TRAV}^{n}
& \displaystyle
- \grad (p^{n+\theta})^{(k-1)} + (\rho -\rho_0) \vect {g} \\
\hline
\end{array}
\end{equation}
\minititre{Without source term extrapolation}
\begin{equation}\notag
\vect{turb}^{n}=
\begin{cases}
\displaystyle\frac {2}{3}\,\rho\,\grad (\,k^{n}) &
\text{for turbulent viscosity models}, \\
\dive(\rho\,\tens{R}^n) & \text{for second-order models},\\
0 & \text{in laminaire or LES computations.}\\
\end{cases}
\end{equation}
$\bullet$ \var{NTERUP} $=$ 1 : $\var{SMBR}^n=\var{TRAV}^n$
\\\\
\begin{equation}\label{Base_Predvv_tab_exp0}
\begin{array}{|l|c|}
\hline
\var{ROVSDT}^{n} &
\displaystyle \frac{\rho}{\Delta t} -\theta \,\dive (\rho\,\vect {u}) +\, \Gamma^n + \, \rho\,\tens{K}_{\,d}^n+Max(-\,T_s^{\,imp},0)\\
\hline
\var{TRAV}^{n}
& \displaystyle
- \grad p^{n-1+\theta} + (\rho -\rho_0) \vect {g} \\
& \displaystyle
+ \vect{T}_{s}^{\,exp}-\,\rho\,\tens{K}_{\,e}^{n}\ \vect{u}^{n} + \,\Gamma^{n}\,\vect{u}_{\,i}^{n}\\
& \displaystyle
-\vect{turb}^{n}+ \dive (\mu_{\,tot}\,^t\ggrad \vect {u}^{n}\,)+ \frac {2} {3}\,\grad (\mu_{\,tot}\,\dive \frac{(\rho \vect {u})}{\rho}\,)\\
& \displaystyle
-\rho\,\tens{K}_{\,d}^n\ \vect{u}^{n}+ T_s^{\,imp}\,\,\vect {u}^{n} + \dive (\rho\,\vect {u})\,\vect{u}^{n} - \,\Gamma^{n}\,\vect{u}^{n}\\
\hline
\end{array}
\end{equation}
\\\\
$\bullet$ \var{NTERUP} $>$ 1 (sub-iteration $k$) : $\var{SMBR}^n=\var{TRAVA}^n+\var{TRAV}^n$
\begin{equation}\label{Base_Predvv_tab_exp1}
\begin{array}{|l|c|}
\hline
\var{ROVSDT}^{n} &
\displaystyle \frac{\rho}{\Delta t} -\theta \,\dive (\rho\,\vect {u}) +\, \Gamma^n + \, \rho\,\tens{K}_{\,d}^n+Max(-\,T_s^{\,imp},0)\\
\hline
\var{TRAVA}^{n} &
\displaystyle
\vect{T}_{s}^{\,exp}-\,\rho\,\tens{K}_{\,e}^{n}\ \vect{u}^{n} + \,\Gamma^{n}\,\vect{u}_{\,i}^{n}\\
& \displaystyle
-\vect{turb}^{n}+ \dive (\mu_{\,tot}\,^t\ggrad \vect {u}^{n}\,)+ \frac {2} {3}\,\grad (\mu_{\,tot}\,\dive \frac{(\rho \vect {u})}{\rho}\,)\\
& \displaystyle
-\rho\,\tens{K}_{\,d}^n\ \vect{u}^{n}+ T_s^{\,imp}\,\,\vect {u}^{n} + \dive (\rho\,\vect {u})\,\vect{u}^{n} - \Gamma^n\,\,\vect{u}^{n}\\
\hline
\var{TRAV}^{n} &
\displaystyle
- \grad (p^{n+\theta})^{(k-1)} + (\rho -\rho_0) \vect {g} \\
\hline
\end{array}
\end{equation}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Points to treat}\label{Base_Predvv_section4}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\etape{Evaluation of the term $\grad(\rho k)$ for turbulent viscosity models}
When modelling turbulent viscosity, we compute $\rho\ \grad k$ instead of $\grad(\rho k)$. This
approximation was implemented from the outset because the $\rho k$ boundary conditions are not directly accessible, in contrast to those of $k$.\\
\etape{Expression of $\tens{EM}$}
With incremental solving, it is not absolutely necessary for convergence that the value of the viscosity appearing in the expression of the operator $\mathcal{E}$ be the same as that taken into account in the incremental system matrix, $\tens{EM}$. In $R_{ij}-\varepsilon$, for example, the total viscosity used in $\tens{EM}$ contains the molecular viscosity but can also contain the turbulent viscosity if the option \var{IRIJNU = 1 } is selected, whereas only the former is included in the operator $\mathcal{E}$. This addition of the turbulent viscosity, which is not at all relevant to the $R_{ij}-\varepsilon$ model, has been inherited from practices implemented in
ESTET and N3S-EF to improve numerical stability (incremental smoothing). However, it may have other, potentially less desirable effects. Moreover, it has not been demonstrated to date that this practice is of absolute necessity in the use of \CS. An in-depth study would therefore be of some interest.
\etape{Normalized residual relating to the pressure step}
We could check the normalized residual computation and in particular the use of the velocity boundary conditions.
\etape{Calculation of the head losses}
When the source terms are extrapolated in time, we now obtain:
\begin{equation}\notag
(\tens{K}_{\,e}\vect{u})^{n+\theta_S} + \tens{K}_{\,d}^{n}\ \vect{u}^{n+\theta}
\end{equation}
It would also be possible to envisage using:
\begin{equation}\notag
(\tens{K}_{\,e}\vect{u})^{n+\theta_S} + \tens{K}_{\,d}^{n+\theta_S}\ \vect{u}^{n+\theta}
\end{equation}
|