Segmentation fault running waveDyMFoam solver (mod. interDyMFoam solver - waves2Foam)
This is my first ever forum post, so I apologise in advance for any ill forum etiquette.
I'm working on freak wave modelling and I'm using the waves2Foam library and OpenFoam 2.0.1. I have successful installed waves2Foam and compiled the solvers waveFoam and waveDyMFoam using the wiki instructions.
I've run many successful simulations using the waveFoam solver and I'm very happy with the waves2Foam library.
I'm now trying to use the waveDyMFoam solver to have a refined mesh at the free surface hoping to improve execution time for convergence. However, the solver crashes the first time it tries to refine the mesh.
I have a simple 2D wave tank with a solitary wave positioned in the centre at t=0s (Using the SolitaryFirst wave definition in my wavefoam file), it then moves from left to right and runs up on a fixed wall.
I have used the dynamicMeshDict file from the interDyMFoam tutorial for damBreakWithObstacle.
Here's what my log.waveDyMFoam file says after having read in the initial properties and selecting various transport models:
PIMPLE: Operating solver in PISO mode
time step continuity errors : sum local = 0.000158174, global = -2.98256e-09, cumulative = -2.98256e-09
GAMG: Solving for pcorr, Initial residual = 1, Final residual = 9.09913e-08, No Iterations 18
GAMG: Solving for pcorr, Initial residual = 4.54879e-08, Final residual = 4.54879e-08, No Iterations 0
time step continuity errors : sum local = 1.43925e-11, global = 2.27339e-14, cumulative = -2.98254e-09
Courant Number mean: 0.00105706 max: 0.00636453
Starting time loop
Interface Courant Number mean: 0.000151212 max: 0.00623973
Courant Number mean: 0.00103634 max: 0.00623973
deltaT = 0.00116279
Time = 0.00116279
Selected 280 cells for refinement out of 1000.
Refined from 1000 to 2960 cells.
#0 Foam::error::printStack(Foam::Ostream&) in "/opt/openfoam201/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1 Foam::sigSegv::sigHandler(int) in "/opt/openfoam201/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2 in "/lib/libc.so.6"
#3 Foam::dynamicRefineFvMesh::refine(Foam::List<int> const&) in "/opt/openfoam201/platforms/linux64GccDPOpt/lib/libdynamicFvMesh.so"
#4 Foam::dynamicRefineFvMesh::update() in "/opt/openfoam201/platforms/linux64GccDPOpt/lib/libdynamicFvMesh.so"
#6 __libc_start_main in "/lib/libc.so.6"
Does anyone have any suggestions on how to resolve this problem?
Did you ever figure out what was wrong with your simulation, because I am having similar problems with interDyMFoam.
Apologies for the delay, I was working with dynamic mesh a while ago and stopped as I didn't like how the initial conditions had to be applied to a coarse (unrefined) mesh. I would very much like to get the initial condions (setFields) to be reapplied after one refinement.
Anyway, YES I did resolve this problem and I have just now re-learnt what I did.
I believe the trick is to change cacheAgglomeration (in system/fvSolution) to false. (I found this on another forum post which I can't remember).
If that doesn't work. I think I might have changed the correctFluxes part of the constant/dynamicMeshDict. A working case of mine as this:
I hope this helps, let me now if this actually fixes your problem.
Thanks for the response Ed.
I made both the corrections that you suggested, but am still getting the same error for my case.
I am basically changing the damBreakWithObstacle case to a 2D case. so I shrunk the domain in one direction and applied empty bcs. However if I run normal interFoam on the case it runs just fine.
Do you have any ideas as to why interFoam would run fine, but interDyMFoam would crash after the first step?
I have uploaded my input files if you would like to look over them.
empty boundary conditions won't work with the dynamic mesh is needs the mesh to be 3D. You'll need to change these to something else. I hope that fixes it.
This is because the refinement works in a 3-dimension quadtree fashion where each cell selected for refinement is split in half in all three dimension turning one cell into 8. The case definitely must be 3D. I started with a 2D numerical wave tank but defined the front and back as symmetryPlane (seams to work if the case is symmetrical).
This is probably the reason for the error and so my other suggestions may be the answer to a different problem.
Here's the forum post regarding the cacheAgglomeration fix to a different error you may come across:
Thanks for the help and info on how interDyMFoam works.
I was able to successfully run the case using the symmetry BC after following the GAMG corrections from the other forum.
|All times are GMT -4. The time now is 17:31.|