-
Notifications
You must be signed in to change notification settings - Fork 844
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Divergence when using fluid interface #1414
Comments
I will raise the question in the SU2 developer meeting tomorrow. |
As we mentioned in the dev meeting where you exposed the problem, the implementation is not good for strongly coupled flows, and I would guess that it is worse for diffusion than convection (because diffusion is elliptic). But those are all band-aids IMO, if you want a robust fluid-fluid interface you need the coupling to be present in the linear system. The simplest way to do that is to have an internal boundary and treat the problem as single zone. |
Your last figure is for momentum magnitude, I assume that your results with explicit/implicit Euler for single zone are the same? |
It turns out that they are not. When I applied the above modifications (CFL: 1000 -> 0.1, TIME_DISCRE_*: EULER_IMPLICIT->EULER_EXPLICIT; additionally I had to increase ITER) to the with the following convergence history:
The density plot is
Similarly, the TKE plots:
Thus, the difference in solutions observed above is due to the choice of implicit vs. explicit Euler and CFL, and not due to problems regarding the interface. Am I doing something wrong in the explicit Euler cfg file, whose diff to the SU2/TestCases/rans/naca0012/turb_NACA0012_sst.cfg is as follows?
|
I noticed that
Thus probably I can use |
Using Euler explicit for the turbulence used to result in a crash, I assumed you were using implicit with the same very low CFL, sorry about that. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is still a relevant issue please comment on it to restart the discussion. Thank you for your contributions. |
After #1435 was merged, I tried using Explicit Euler for the time discretization of both the flow and turbulent solvers again. However, the divergence problems persist. I will not continue to work on this issue. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. If this is still a relevant issue please comment on it to restart the discussion. Thank you for your contributions. |
@maxaehle any progress? |
No, I gave up ;) Shall I close this issue then? |
Keep it open |
@maxaehle do you have these cases somewhere, so it is possible in the future to verify that the issue has been solved? |
The config and mesh files can be downloaded from https://seafile.rlp.net/d/bb0fbb16eb414263b642/ and more information on them is provided above. I ran the four cases in the current develop branch at 58cf2d4, configuring the build with
|
Summary
The fluid interface connects RANS zones in such a way that flow can freely pass through it just as if they were a single RANS zone. We (@maxaehle, @BeckettZhou) observed convergence problems in cases where the meshes had "boundary-layer-like" high anisotropy at the fluid interface. However a singlezone simulation, for which the meshes are joined together, converged.
Setup (.cfg, .su2)
Density for singlezone run with joined meshes, converged:
Density for multizone run with separate meshes and fluid interface, diverged:
Mesh:
Download link: https://seafile.rlp.net/d/bb0fbb16eb414263b642/
In this issue I consider compressible flow around a circle at Re=1e6, Mach=0.15, using the SST turbulence model. The radial mesh has a boundary layer at the circle of radius 1 (adiabatic wall), and a "boundary-layer-like" structure around a circle of radius (approximately) 4. Having this "boundary-layer-like" structure does not make sense here, but in our project we later want to change the area
1<=radius<=4
to a "porous material" zone and this would introduce a boundary layer there.Both the attached
issue_complicated.zip
,issue_simplified.zip
contain subdirectoriessinglezone
,multizone
. I observed the problem best forissue_complicated.zip
. Withissue_simplified.zip
I try to provide a minimal working example, and it reproduces the same convergence/divergence behaviour, but I'm not sure whether it really covers the complete problem.issue_simplified.zip
has been created as follows:singlezone.su2
. Thesinglezone.cfg
isTestCases/rans/naca0012/turb_NACA0012_sst.cfg
with adapted mesh filename, marker names and Reynolds number, andRESTART_SOL=NO
.multizone-0.su2
is the inner "ring" of1 <= radius <= 4
between the circle and the "boundary-layer-like" structure.multizone-1.su2
is the remaining part4 <= radius
. I created amultizone.cfg
that refers tomultizone-0.cfg
,multizone-1.cfg
and joins the zones by aMARKER_FLUID_INTERFACE
. The twomultizone-i.cfg
s are identical to thesinglezone.cfg
except that the mesh filename and markers we adapted again, and theITER=
option was removed.In
issue_complicated.zip
, filenames and cfg files are a bit different but the meshes are the same.Observed and expected behaviour
I would expect that the two simulations give similar results. However, the singlezone setup converges while the multizone setup diverges (
SU2 has diverged (NaN detected).
orSU2 has diverged (Residual > 10^20 detected).
). The same behaviour is observed for CFL=10 instead of 1000, and also for SA with CFL=10. I ran v7.2.0 (commit 3ec1c68) in serial (without MPI).I reported a similar problem some time ago in the developer meeting, with a "chopped NACA 0012 airfoil" testcase. For this issue we created this more basic example which seems to reproduce the error (although I am not completely sure). Typically we would see the
SU2 has diverged (Residual > 10^20 detected).
error.Differences between multizone/fluid-interface and singlezone/joined-meshes
We came up with the following differences:
Flux calculation across the interface: The flux between neighbor cells
i
,j
, one of which hasradius<4
and the other one hasradius>4
, is computed differently.In singlezone this is just an ordinary flux computation along an edge
i
-j
, withCSolver::Upwind_Residual
(,Viscous_Residual
).In multizone this flux between two zones is computed by
CSolver::BC_Fluid_Interface
. When the method is called to compute the contribution of the interface on the residual of contol volumei
,this
is the solver object of the zone of control volumei
, so we can access all variables ati
(like primitive, turbulent, and their spatial gradients) and give them to theCNumerics
objects. However we cannot access the variables atj
directly! Through the "interface" mechanism, we get values of the primitive and turbulent variables atj
, but not their gradients. That's why theBC_Fluid_Interface
has lines like this:I tried to fix this by transferring gradient information also, but it did not solve the problem.
Calculation of spatial gradients: Both in the Green-Gauß and the Weighted-Least-Squares calculation, in order to compute the gradient of a quantity
x
at a pointi
only the values ofx
ati
, and neighbors ofi
in the same zone, are taken into account. This means that the gradient at points withradius==4
is based on less information, and hence is more inaccurate, in the multizone setup.General structure of the drivers: Maybe there are relevant differences between
CSinglezoneDriver
andCMultizoneDriver
, I don't know.The text was updated successfully, but these errors were encountered: