User:Bfiedler/DraftCoriolisForce
1 copy some source code
if you do not have a solver directory in $WM_PROJECT_USER_DIR do
mkdir $WM_PROJECT_USER_DIR/applications/solvers
get the original tutorial code for
cd $FOAM_SOLVERS cd heatTransfer cp -r buoyantBoussinesqPimpleFoam $WM_PROJECT_USER_DIR/applications/solvers/my_tornado
In its new location, we need to copy a file that was shared in the the previous location:
cp buoyantBoussinesqSimpleFoam/readTransportProperties.H $WM_PROJECT_USER_DIR/applications/solvers/my_tornado/. cp buoyantBoussinesqSimpleFoam/readTransportProperties.H $WM_PROJECT_USER_DIR/applications/solvers/my_tornado/.
cd $WM_PROJECT_USER_DIR/applications/solvers ls -l cd my_tornado
if you have this file, delete it:
rm buoyantBoussinesqPimpleFoam.dep
cd Make
If you have this directory, then delete it:
rm -rf linux64GccDPOpt
and edit the file named "files" to this:
my_tornado.C
EXE = $(FOAM_APPBIN)/my_tornado
cd .. wmake
You may get a few warnings. But hopefully you your app my_tornado (though without any ability yet to make a tornado) :
ls $FOAM_USER_APPBIN
2 Add the Coriolis Force
Add a single line UEqn.H, so that the top of the file is:
// Solve the momentum equation fvVectorMatrix UEqn ( fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) + (2*myVector ^ U) // Coriolis force );
Add one line to the end of readTransportProperties.H
dimensionedVector myVector(laminarTransport.lookup("myVector"));
Then recompile
wmake
3 Ready to run
cd $FOAM_RUN/tutorials/heatTransfer
cp -r buoyantBoussinesqPimpleFoam/hotRoom $FOAM_RUN/my_tornado cp -r buoyantPimpleFoam/hotRoom/setHotRoom $FOAM_RUN/my_tornado/. cd $FOAM_RUN/my_tornado ./Allclean ls
You should see something like this:
0/ Allclean* Allrun* constant/ setHotRoom/ system/
Edit Allrun so that the compileApplication line is simply:
compileApplication setHotRoom
Now we need to specify myVector, which we will use as the rotation vector in the calculation of the Coriolis force:
cd constant
Then edit transportProperties near the end to include this line:
myVector myVector [0 0 -1 0 0 0 0] (0 0.001 0);
Then
cd .. ./Allrun
After about 20 seconds of CPU time, the run should finish. Now you should be apple to view the results with paraFoam.
If you want to experiment with a different magnitude of myVector, then you don't need to recompile or run setHotRoom. After editing transportProperties, you could do:
./AllClean blockMesh my_tornado