Internal Ballistic SRM
2 Attachment(s)
Hi
I want to simulate the internal ballistic of a solid rocket motor. At the moment I am using rhoCentralDyMFoam. The flow of air inside the motor is compressible and can/will reach super sonic speeds. Setup: Cylinder closed on one end and a relative narrow opening on opposite end. Inside the cylinder there is a grain configuration, either star or cylinder or can be anything. The grain is ignited via a small explosion (not relative for simulation). The grain then burns and the air is compressed and forced out the small opening (nozzle). As the grain burns, the burning area increase and the flux increases from the grain boundary. I need to only simulate the flow field and the regression burning of the grain. This will be done by calculating the burning distance in the solver for each delta time. As the grain boundary points move in the direction of their normals, the cells expand. When the cells reach a certain (variable) size or the points has moved reached a certain distance, the cells needs to be refined to keep the resolution. I can move the points in the direction of their normals and I can refine the cells separately, but I can not do this together (attached errorMsg). The error message is when I try to do them separately. I am looking at the utility dynamicTopoFvMesh, but do not know how to implement it. I believe this will also resolve where points move into a cell (attached). Can someone please assist me with a testCase/tutorial? Thank you in advance |
I can't comment on your current setup using dynamicRefineFvMesh, but if you intend to use dynamicTopoFvMesh, you would need a mesh consisting of triangle prism cells (in 2D) in the regions that you would like to re-mesh (boundary layers are fine - they just won't be re-meshed). The refinement criteria can be customized a bit to use cell volume (which cell edge-length is somewhat already analogous to, but I digress).
I would suggest using mesh motion alone first to ensure that you have a boundary motion that satisfies your initial requirements (even if it ultimately leads to skewed cells which require re-meshing), and then incorporate re-meshing as a follow up step. If you can post a case setup with mesh motion well defined, I can briefly guide you through the re-meshing setup. |
2 Attachment(s)
Hi Sandeep
Thank you for your reply. Please find attached a test case and solver how I would like to move the grain boundary in the direction of their normals. It is a very simplified case. The solver is one I got with help of the forum. It basically determines the points which should move, calculates the distance they will move and then use the commands: Code:
PointDisplacement.boundaryField()[patchID] == dispVals; I tried to implement the library dynamicTopoFvMesh, but it does not seem to be a valid type: Quote:
I have also looked at OpenFOAM ext 3.1, but had problems to run a test case. I would like to stay with OpenFOAM 2.3.x if possible. If need be, I will reinstall my OpenFOAM asap in order to be up to date. Quote:
Thank you PicklER |
Hi Sandeep
I must apologise for my ignorance that I did not read the previous thread properly and saw that dynamicTopoFvMesh must first be installed. I saw the install.txt in your repository, but realised that it was aimed at OF ext (please correct me if I am wrong), since the directory FOAM_SRC/dynamicMesh/ does not contain dynamicFvMesh in OF 2.3.x I will try to use OF ext 3.2 again and give feedback by tomorrow. Kind regrds |
You can use OpenFOAM-2.3.x as well. Just do a "git checkout Port-2.3.x" after you clone the repository.
|
Hi Sandeep
I cloned your repository and checked out as Port-2.3.x, thank you for you guidance, say in directory /OpenFOAM/topoMesh Then I did ./Allwmake in the same directory and, it compiled good except for mesquiteMotionSovler. The error I get looks like Code:
In file included from mesquiteMotionSolver.H:50:0, libdynamicTopoFvMesh.so libincompressibleFluxCorrector.so librhoCentralFoam.so which shows that the library was not created... I tried a wmake libso in /OpenFOAM/topoMesh/mesquiteMotionSolver but got the same error. Kind regards |
You need to download and install Mesquite. The instructions tell you how.
|
I feel really stupid for making the assumption that Mesquite was just another library included in OpenFOAM.
Anyhow, I installed Mesquite 2.3.0 now according to your install.txt. Configured and "make" and "make install". Now I tried again, but got the following error: Code:
Create time libmesquiteMotionSolver.so is present in $FOAM_USER_LIBBIN Anything else I am missing? Thanks for your help! |
You might want to ensure that $MESQUITE_DIR / $MESQUITE_LIB_DIR is correctly configured. Sometimes, they might be installed in lib64 instead of lib (or vice versa)
|
Hi Sandeep
Thanks you for your suggestion. I checked $MESQUITE_DIR / $MESQUITE_LIB_DIR and they looked correct, but I still get the same error. Here is what I did after your last post: Code:
cd ~/OpenFOAM/topoMesh/topoFvMesh Code:
export MESQUITE_LIB_DIR=$MESQUITE_DIR/lib64 Code:
export MESQUITE_LIB_DIR=$MESQUITE_DIR/lib Code:
cd ~/OpenFOAM/topoMesh/topoFvMesh Code:
cd mesquiteMotionSolver/ Just a note, when I open a new terminal and do: Code:
echo $MESQUITE_LIB_DIR Appriciate your patience and help Regards |
The library directory needs to be in your LD_LIBRARY_PATH as well, I think
|
1 Attachment(s)
Hi Sandeep
So I reinstalled my Ubuntu (made my swap partition too small previously) and installed OpenFOAM 2.3.1 I installed Mesquite and cloned your repository and did checkout Port 2.3.x ./Allwmake cd mesquiteMotionSolver/ wmake wmake libso Now I think that was the trick, but I also copied all the files from /opt/ThirdParty-2.3.1/mesquite-2.3.0/lib/ to /home/username/OpenFOAM/platforms/linux64GccDPOpt/lib$ I looked at the enviromental variable as you advised and saw that it was pointing to a lot of places except any that contain the libraries in /opt/ThirdParty-2.3.1/mesquite-2.3.0/lib/ but it did point to /home/username/OpenFOAM/platforms/linux64GccDPOpt/lib Never thought I would be happy to see a printStack error! I took a look at the circCylinder3d test case from OF-ext, inserted the lines dynamicFvMeshLibs ("libdynamicTopoFvMesh.so"); motionSolverLibs ("libmesquiteMotionSolver.so"); into the dynamicMeshDict and tried to run a basic solver (attached) Unfortunately I cannot upload the circCylinder3d test case, since the polyMesh folder is too big. The error I get looks as follows: Code:
Create time Thanks for all the help so far Sandeep, I believe the rest will go more smoothly |
You will need to add fvMotionSolvers.so to the list of motionSolverLibs in dynamicMeshDict, because angularOscillatingDisplacement is part of that library.
I intend to post a few basic tutorial cases sometime soon. I'll keep you updated. |
Morning Sandeep
Thank you for the reply. I tried Code:
motionSolverLibs ("libmesquiteMotionSolver.so"); Code:
motionSolverLibs ("libmesquiteMotionSolver.so" "libfvMotionSolvers.so"); Must I use mesquiteMotionSolver for the point displacement in order to use dynamicTopoFvMesh or can I continue using displacementLaplacian? If I have to use mesquiteMotionSolver, which PatchField can I use for the points displacement? I could not find a lot on the internet about the different PatchField. Maybe calculated? Code:
calculated |
Hi Sandeep
Any news on the tutorial cases for dynamicTopoFvMesh. Eager to start with a working example. At the moment I am still struggling to get circCylinder3d to work and playing around with the parameters in dynamicTopoFvMesh. Thank you for all the help so far. Regards |
All times are GMT -4. The time now is 04:54. |