|
[Sponsors] |
April 28, 2010, 08:18 |
Shockwave capture
|
#1 |
Member
|
Dear Foamers,
In order to capture shockwave (intensity, position), I am currently Minmod limiter. Minmod limiter is the strongest but the most dissipative. Thus, my shockwave is smoothed I tried Superbee limiter (the most accurate but the weakest) but my computations get unstable and crashes (other settings are fixed and equal to the Minmod computation). I only played with CFL number. Apart from this stability issue (any help is of course welcome ), I want to try VanLeer and VanAlbada, hybrid limiters that are found in other CFD codes. Unfortunately, I get "segmentation fault" or the syntax seems to be wrong (error while reading end of file). Does anyone know how to correctly use these limiters ? Thanks for your help |
|
April 29, 2010, 12:33 |
|
#2 |
Senior Member
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,912
Rep Power: 36 |
For the convection term, the syntax is the same you use for limitedLinear:
div(phi,U) Gauss vanAlbadaV 1; // Vector div(phi,C) Gauss vanAlbada 1; // Scalar
__________________
Alberto Passalacqua GeekoCFD - A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as in both physical and virtual formats (current status: http://albertopassalacqua.com/?p=1541) OpenQBMM - An open-source implementation of quadrature-based moment methods. To obtain more accurate answers, please specify the version of OpenFOAM you are using. |
|
April 29, 2010, 12:48 |
|
#3 |
Member
|
Thanks a lot Alberto
Here are my different schemes. time: Crank Nicholson gradient: Gauss linear laplacian: Gauss linear limited .5 interpolation: linear normal gradient: corrected flux: p only div: Gauss Minmod phi => the shockwave is smoothed Gauss SuperBee phi => the computation crashes Gauss VanAlbada => "floating point exception": I guess because of the other schemes I use... Gauss VanLeer => the computation starts (hope I'll get something) Have you got any suggestion to improve the computation first and to make the "VanAlbada" computation start ? Thanks a lot |
|
April 29, 2010, 12:52 |
|
#4 |
Senior Member
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,912
Rep Power: 36 |
"Crash" doesn't tell me much. What error message does it give. Did you usa vanAlbadaV for the velocity instead than vanAlbada?
About the smoothness, what is your grid resolution? Best,
__________________
Alberto Passalacqua GeekoCFD - A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as in both physical and virtual formats (current status: http://albertopassalacqua.com/?p=1541) OpenQBMM - An open-source implementation of quadrature-based moment methods. To obtain more accurate answers, please specify the version of OpenFOAM you are using. |
|
April 29, 2010, 12:56 |
|
#5 |
Member
|
I get "floating point exception" (I guess there is a division by zero somewhere)
The complete log is: Creating field DpDt #0 Foam::error:rintStack(Foam::Ostream&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so" #2 __restore_rt in "/lib64/tls/libc.so.6" #3 Foam::LimitedScheme<double, Foam::vanAlbadaLimiter<Foam::NVDTVD>, Foam::limitFuncs::magSqr>::limiter(Foam::Geometric Field<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #4 Foam::limitedSurfaceInterpolationScheme<double>::w eights(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #5 Foam::surfaceInterpolationScheme<double>::interpol ate(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #6 Foam::fv::gaussConvectionScheme<double>::interpola te(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #7 Foam::fv::gaussConvectionScheme<double>::flux(Foam ::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #8 Foam::fv::gaussConvectionScheme<double>::fvcDiv(Fo am::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #9 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::div<double>(Foam::GeometricField<double , Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #10 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::div<double>(Foam::GeometricField<double , Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #11 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::fvc:Dt<double>(Foam::GeometricField<double , Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #12 main in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #13 __libc_start_main in "/lib64/tls/libc.so.6" #14 _start at ../sysdeps/x86_64/elf/start.S:11 The mesh is composed of 200k cells, seems OK to me because I succeeded running it at Mach .750 Even if the results are not excellent, the shockwave can be seen. |
|
April 29, 2010, 13:18 |
|
#6 |
Senior Member
Alberto Passalacqua
Join Date: Mar 2009
Location: Ames, Iowa, United States
Posts: 1,912
Rep Power: 36 |
This using vanAlbadaV for div(phi, U). I get the error with vanAlbada, but here it runs fine with vanAlbadaV (just tried on icoFoam).
Best,
__________________
Alberto Passalacqua GeekoCFD - A free distribution based on openSUSE 64 bit with CFD tools, including OpenFOAM. Available as in both physical and virtual formats (current status: http://albertopassalacqua.com/?p=1541) OpenQBMM - An open-source implementation of quadrature-based moment methods. To obtain more accurate answers, please specify the version of OpenFOAM you are using. |
|
April 30, 2010, 05:27 |
|
#7 |
Member
|
I went on investigations. For sure, vanAlbadaV is required for div(phi,U) if we want the computation to start. I obtained something a little different when I chose "leastSquares" for grad schemes:
Creating field DpDt Starting time loop Courant Number mean: 5.09982e-05 max: 0.0938178 deltaT = 1.2e-09 Time = 1.2e-09 #0 Foam::error:rintStack(Foam::Ostream&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so" #2 __restore_rt in "/lib64/tls/libc.so.6" #3 Foam::LimitedScheme<Foam::Tensor<double>, Foam::vanAlbadaLimiter<Foam::NVDTVD>, Foam::limitFuncs::magSqr>::limiter(Foam::Geometric Field<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #4 Foam::limitedSurfaceInterpolationScheme<Foam::Tens or<double> >::weights(Foam::GeometricField<Foam::Tensor<doubl e>, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #5 Foam::surfaceInterpolationScheme<Foam::Tensor<doub le> >::interpolate(Foam::GeometricField<Foam::Tensor<d ouble>, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #6 Foam::fv::gaussDivScheme<Foam::Tensor<double> >::fvcDiv(Foam::GeometricField<Foam::Tensor<double >, Foam::fvPatchField, Foam::volMesh> const&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #7 Foam::tmp<Foam::GeometricField<Foam::innerProduct< Foam::Vector<double>, Foam::Tensor<double> >::type, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::div<Foam::Tensor<double> >(Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libcompressibleRASModels.so" #8 Foam::tmp<Foam::GeometricField<Foam::innerProduct< Foam::Vector<double>, Foam::Tensor<double> >::type, Foam::fvPatchField, Foam::volMesh> > Foam::fvc::div<Foam::Tensor<double> >(Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh> const&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libcompressibleRASModels.so" #9 Foam::compressible::RASModels::SpalartAllmaras::di vDevRhoReff(Foam::GeometricField<Foam::Vector<doub le>, Foam::fvPatchField, Foam::volMesh>&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libcompressibleRASModels.so" #10 main in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #11 __libc_start_main in "/lib64/tls/libc.so.6" #12 _start at ../sysdeps/x86_64/elf/start.S:116 Exception en point flottant What is new: the time loop starts but fails to start the first iteration. I decided to force the default schemes for div as "none" so I can adjust each setting. And it seems that div((muEff*dev2(grad(U).T()))) is the setting which makes the computation fail I changed it to classical "Gauss linear" and it runs... until it fails when the pressure is computed Creating field DpDt Starting time loop Courant Number mean: 5.09982e-05 max: 0.0938178 deltaT = 1.2e-09 Time = 1.2e-09 DILUPBiCG: Solving for Ux, Initial residual = 0.989315, Final residual = 8.03341e-07, No Iterations 1 DILUPBiCG: Solving for Uz, Initial residual = 0.999731, Final residual = 3.29193e-07, No Iterations 1 DILUPBiCG: Solving for h, Initial residual = 0.999999, Final residual = 6.09725e-07, No Iterations 1 #0 Foam::error:rintStack(Foam::Ostream&) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so" #2 __restore_rt in "/lib64/tls/libc.so.6" #3 Foam::LimitedScheme<Foam::Vector<double>, Foam::vanAlbadaLimiter<Foam::NVDTVD>, Foam::limitFuncs::magSqr>::limiter(Foam::Geometric Field<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #4 Foam::limitedSurfaceInterpolationScheme<Foam::Vect or<double> >::weights(Foam::GeometricField<Foam::Vector<doubl e>, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #5 Foam::surfaceInterpolationScheme<Foam::Vector<doub le> >::interpolate(Foam::GeometricField<Foam::Vector<d ouble>, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libfiniteVolume.so" #6 _ZN4Foam3fvcL11interpolateINS_6VectorIdEEEENS_3tmp INS_14GeometricFieldIT_NS_13fvsPatchFieldENS_11sur faceMeshEEEEERKNS5_IS6_NS_12fvPatchFieldENS_7volMe shEEE in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #7 main in "/home/EUCLIDE/truong_nm/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/rhoPimpleFoam" #8 __libc_start_main in "/lib64/tls/libc.so.6" #9 _start at ../sysdeps/x86_64/elf/start.S:116 Exception en point flottant |
|
October 11, 2011, 06:15 |
Hello
|
#8 |
New Member
Wang Yi-bo
Join Date: Oct 2011
Posts: 3
Rep Power: 14 |
Hello, I nearly known nothing about the shockwave capture in OpenFoam, Would you please give me some link to the relative documents? Thanks
|
|
February 27, 2013, 11:38 |
|
#9 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 26 |
hi
did you or anyone have find some sources to capturing shock waves in OF? |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Best Way to Capture Boundary Layer Thickness | Gill | Main CFD Forum | 1 | October 23, 2008 07:06 |
Shockwave in airfoil analysis | Alex | FLUENT | 4 | January 2, 2008 12:36 |
Partilce capture at filter | Ren | FLUENT | 0 | February 8, 2007 13:51 |
Supersonic Shockwave | Braden Pitter | Phoenics | 2 | November 30, 2006 16:50 |
can fluent capture BOUNDARY LAYER of POROUS zone? | Alex | FLUENT | 0 | April 22, 2006 07:14 |