CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   SU2 (https://www.cfd-online.com/Forums/su2/)
-   -   Convergence criterion when using dual time stepping (https://www.cfd-online.com/Forums/su2/114809-convergence-criterion-when-using-dual-time-stepping.html)

abonfi March 18, 2013 06:56

Convergence criterion when using dual time stepping
 
1 Attachment(s)
Hi,
I am solving an un-steady flow problem with dual time stepping, but I am
having troubles in setting the convergence threshold in dual (fictitious) time.
Using the attached cfg file (some of the other settings I tried are also there, commented out)
the solver keeps iterating and doesn't stop even when it seems that the convergence criterion has been met

Regards,
Aldo

fpalacios March 23, 2013 23:33

Quote:

Originally Posted by abonfi (Post 414662)
Hi,
I am solving an un-steady flow problem with dual time stepping, but I am
having troubles in setting the convergence threshold in dual (fictitious) time.
Using the attached cfg file (some of the other settings I tried are also there, commented out)
the solver keeps iterating and doesn't stop even when it seems that the convergence criterion has been met

Regards,
Aldo

Dear Aldo,

Just in case, I think that it would be useful if you download the latest version of SU2 v2.0.2.

In order to stop the inner iteration SU2 counts with two parameters:
- UNST_INT_ITER= (in your case 4000) this is the maximum number of inner iterations.
and - RESIDUAL_MINVAL= (in your case -12) this is the min value of the residual.

As far I see in your config file, the code will always perform 4000 iterations before jumping to the next physical time step.

Best,
Francisco

abonfi March 25, 2013 06:30

Dual time stepping: convergence in dual time
 
2 Attachment(s)
The development code dies with a segmentation fault after the first iteration in dual time; the log file is attached.

The stable code seems to ignore both RESIDUAL_REDUCTION and RESIDUAL_MINVAL and keeps iterating until UNST_INT_ITER is reached. I would expect the code to terminate
before UNST_INT_ITER is reached if either of the two criteria based upon the residual are met.

Aldo

fpalacios March 30, 2013 09:58

Quote:

Originally Posted by abonfi (Post 416193)
The development code dies with a segmentation fault after the first iteration in dual time; the log file is attached.

The stable code seems to ignore both RESIDUAL_REDUCTION and RESIDUAL_MINVAL and keeps iterating until UNST_INT_ITER is reached. I would expect the code to terminate
before UNST_INT_ITER is reached if either of the two criteria based upon the residual are met.

Aldo

To fix this issue, please change in integration_structure.cpp the following:

if (config_container[ZONE_0]->GetKind_GridMovement(ZONE_0) == AEROELASTIC) {

by

if ((config_container[ZONE_0]->GetGrid_Movement()) && (config_container[ZONE_0]->GetKind_GridMovement(ZONE_0) == AEROELASTIC)) {

(this is line 130 in my version).

Best,
Francisco

abonfi April 8, 2013 09:56

More on convergence for dual time stepping
 
Unfortunately,
smthg else seems to be needed

g++ -DPACKAGE_NAME=\"SU\^2\" -DPACKAGE_TARNAME=\"SU\^2\" -DPACKAGE_VERSION=\"2.0.1\" -DPACKAGE_STRING=\"SU\^2\ 2.0.1\" -DPACKAGE_BUGREPORT=\"susquared-dev@lists.stanford.edu\" -DPACKAGE=\"SU\^2\" -DVERSION=\"2.0.1\" -I. -DNO_CGNS -DNO_METIS -DNO_TECIO -DNO_MPI -MT ___bin_SU2_CFD-integration_structure.o -MD -MP -MF .deps/___bin_SU2_CFD-integration_structure.Tpo -c -o ___bin_SU2_CFD-integration_structure.o `test -f '../src/integration_structure.cpp' || echo './'`../src/integration_structure.cpp
../src/integration_structure.cpp: In member function ‘void CIntegration::SetDualTime_Solver(CGeometry*, CSolution*, CConfig*)’:
../src/integration_structure.cpp:344:10: error: ‘config_container’ was not declared in this scope
make[1]: *** [___bin_SU2_CFD-integration_structure.o] Error 1
make[1]: Leaving directory `/home/abonfi/CFD_codes/SU2_v2.0.2/trunk/SU2_CFD/obj'
make: *** [all-recursive] Error 1

economon April 11, 2013 14:09

Hi Aldo,

Please try to replace that line with the following instead:

if (config->GetGrid_Movement() && config->GetKind_GridMovement(ZONE_0) == AEROELASTIC && geometry->GetFinestMGLevel()) {

The issue is that the configuration object is named 'config' in one location and 'config_container' in another.

Hope this helps!
Tom

abonfi April 12, 2013 03:58

Segmentation fault
 
The v 2.0.2 code compiles fine now, but dies with a segmentation fault after the 1st pseudo time iteration.
As mentioned previously, the stable version runs fine.
Log, cfg file and grid can be retrieved here:
https://dl.dropboxusercontent.com/u/60787983/su2log.zip

economon April 18, 2013 13:05

Hi Aldo,

We will be releasing a new developer version (2.0.3) later today. Can you please try your problem with this version? Hopefully this will clear up your issue.

Cheers,
Tom


All times are GMT -4. The time now is 16:11.