Page 1 of 1

Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Fri May 17, 2024 3:00 am
by finzeo
Hi everyone,

I would like to use, where possible, a second-order temporal discretization for all relevant equations in an incompressible case with the DDES k-omega SST turbulence model. I understand that, in the case of this model, there is a restriction against using second-order time discretization for the k and omega equations. However, I would like to at least enable second-order time discretization for the other equations. I am using version 8.0.

I have tried various ways to achieve this, but I always encounter some failure or a warning indicating that some variables are being treated as first-order. Below is my latest attempt. The following code was added to cs_user_parameters.c:

Code: Select all

cs_time_scheme_t *t_sc = cs_get_glob_time_scheme();
//t_sc->time_order = 2; // it gets error for iturb=60 (k-omega SST)
t_sc->istmpf = 2;
t_sc->isno2t = 1;
t_sc->thetcp = 1/2;
int key_t_ext_id_t = cs_field_key_id("time_extrapolated");
cs_field_set_key_int(cs_field_by_name("density"), key_t_ext_id_t, 1);
I receive the following warning message:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ @@ WARNING: ADVANCED MODIFICATION FOR
@ ========,
@ velocity OF THE VARIABLE
@ THETAV.
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@

@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ @@ WARNING: ADVANCED MODIFICATION FOR
@ ========,
@ k OF THE VARIABLE
@ THETAV.
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@

@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ @@ WARNING: ADVANCED MODIFICATION FOR
@ ========,
@ omega OF THE VARIABLE
@ THETAV.
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@

@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@
@ @@ WARNING : WHEN READING INPUT DATA
@ =========
@ CHOICE OF TIME-SCHEME
@
@ TIME-SCHEME FOR VELOCITY IS SECOND ORDER
@ (THETAV = 0.50E+00)
@ SOME TERMS ARE HOWEVER FIRST ORDER IN TIME WITH
@ THE FOLLOWING SETTINGS:
@
@ parameters ISTMPF ISNO2T ISTO2T IROEXT IVIEXT ICPEXT
@ Values entered 2 1 0 1 0 0
@
@ computation will go on.
@
@ Check the input data.
@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
I am also attaching the setup.log file.

What is still set as first-order time discretization that I could change to second-order? How do I change it in the code?

Thank you in advance.

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Fri May 17, 2024 12:57 pm
by Yvan Fournier
Hello,

I know the handling of "per variable" time scheme is a complicated mess, with some options that have been available for years but never really tested, and others which may be missing but would make sense.

I am not too well versed in this part of the code, but will ask some colleagues if there is a solution to this, or if you can just ignore those warnings (which, if I understand, do not prevent the computation from running ?).

Best regards,

Yvan

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Fri May 17, 2024 4:46 pm
by finzeo
Yvan,

Yes, with the code I showed, the simulation runs despite the warnings.
This is interesting because using second-order in time allows for larger time steps (under a certain accuracy criterion), thereby reducing the need for extensive cluster resources over time.

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Sat May 18, 2024 12:33 am
by Yvan Fournier
Hello,

Any detailed feedback on this is very welcome :-)

Best regards,

Yvan

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Thu May 23, 2024 5:30 am
by finzeo
Update: I managed to prevent the program from aborting when setting time_order=2 by editing the varpos.f90 file. By activating time_order=2, everything implemented for second-order time discretization executes accordingly. Analyzing cs_turbulence_kw.c, I noticed there's no code to run in second order, but at least everything else is running in second order in time and it works.

In fact, I modified the cs_turbulence_kw.c code to incorporate a theta=0.5 in the corresponding expressions, but I did not obtain positive results (it diverges if I do this; if I don't edit it, it does not diverge). My strategy is basically to leave the explicit terms as they are and multiply the implicit terms by a factor of theta=0.5. Do you see anything I might be forgetting? I attach this source file. Any suggestion to advance this is appreciated.

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Fri May 24, 2024 9:50 pm
by Yvan Fournier
Hello,

I asked a colleague, who told me trying to force 2nd order this way is risky and might ne behave well, and that a PhD student might be looking into this soon, but have no more details.

I'll keep you updated if I get more info on what can be done.

Best regards,

Yvan

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Sat May 25, 2024 5:05 pm
by finzeo
Thanks, Yvan.

Similarly, if I manage to make any progress, I'll post it here.

Re: Second-Order Temporal Discretization Except for Turbulence Model Equations

Posted: Mon Aug 26, 2024 11:25 am
by daniele
Hello,

If it can help, my personal way of running "non LES" setups with second-order time scheme for the momentum equations, is to force the second order for the velocity inside the varpos routine, while keeping first order for the turbulence equations.

It seems similar to what you do. But I don't have the warning messages you have, probably we don't edit varpos exactly in the same way.
I have performed some "validation" tests and I haven't noticed any inconsistency in the results.

Kind regards,

Daniele