Hello Everyone,
It's been another long gap since I have written something here. Surely times have changed considering the current pandemic and how it's shifting and shaping everyones careers and life alltogether. Let's all pray and hope that humanity prevails at the end of this pandemic and we get back to our usual normal. So on this positive note let me begin elaborating more on todays topic.
Well everyone knows these days that in Product development time line plays such a big role. With the increasing competition, OEM's are in a rate race to capture market share and entice customers to buy their products. Digitalisation plays a major role here, i.e. CAE. But, the process that exist today will they help us to achieve our long term goal of faster computation. Gone are the days where we were solely relying on using more CPUs/GPUs for computation and spending hours for analysis and report generation. Its time for CAE engineers to look beyond the horizon, you guessed it right Machine Learning and Artificial Intelligence. This is what would shape the future of CAE.
Let me brake this topic in three parts.
1. Traditional CAE
2. Machine Learning and Data Science in CAE
3. Will this make fellow CAE analyst redundant?
A detailed explanation on these topic will be discussed here in coming days, surely the Future is exciting for CAE.
Stay Healthy, Stay Safe.
Computational fluid dynamics, usually abbreviated as CFD, is a branch of fluid mechanics that uses numerical methods and algorithms to solve and analyze problems that involve fluid flows.With the increase in the computing speed and new hardware's CFD has increased its application domain in each and every field like bio-medical,electrical,civil,finance etc. My blog mainly deals with the latest development in CFD as well as CAD software in windows and Open Source softwares.
Tuesday, July 28, 2020
Wednesday, June 21, 2017
Its been a long time ....Lets talk about Meshing
Hi Friends,
Its been another major break from CFD blog writing , but never the less I have been exploring some new area's in CAE majorly w.r.t Commercial softwares ( HYPERMESH & Ls-DYNA ) and really learnt a lot about complex meshing and analysing data with actual tests. I am currently working with another exciting field , but let's talk about that some other time and get back to what has been my passion CFD. This current article speaks a great deal about the type of Meshing which is thought and used in Academia / Industries. It's very much useful for students / industry persons who are beginners with meshing and will provide you a great insight about the same.
https://www.simscale.com/docs/content/simwiki/preprocessing/whatisamesh.html
Its been another major break from CFD blog writing , but never the less I have been exploring some new area's in CAE majorly w.r.t Commercial softwares ( HYPERMESH & Ls-DYNA ) and really learnt a lot about complex meshing and analysing data with actual tests. I am currently working with another exciting field , but let's talk about that some other time and get back to what has been my passion CFD. This current article speaks a great deal about the type of Meshing which is thought and used in Academia / Industries. It's very much useful for students / industry persons who are beginners with meshing and will provide you a great insight about the same.
https://www.simscale.com/docs/content/simwiki/preprocessing/whatisamesh.html
Wednesday, August 3, 2016
The FOUNTAIN
Hi Everyone,
I saw an interesting video today on youtube titled, "CFD of a fountain pool", done in Fluent using VoF. So This idea then came up to my mind to try solving this in OpenFOAM. And boy, i really did get started with this. The geometry was already there in the video ( thanks to Denis17488, who uploaded the video ) and can be seen below as an image,
As I like doing most of the things on an open source platform, I used Gmsh to create the geometry and Mesh ( Hex ) as well,
InterFoam which a Volume of Fluid (VoF) based solver is used for this analysis.
I have used a ramped sort of boundary condition which allows to change velocity with time. In the Velocity file inside 0 folder, include this boundary condition as shown below
inlet
{
type uniformFixedValue;
uniformValue table
(
(0 (0 1 0))
(1 (0 2 0))
(2 (0 3 0))
(3 (0 4 0))
(4 (0 4 0))
(5 (0 0 0))
);
}
Simulation was ran for 10 sec. Image shown below is at t = 2sec.
Animation for the same can be found here : https://youtu.be/cPEa4jQAWMA
I saw an interesting video today on youtube titled, "CFD of a fountain pool", done in Fluent using VoF. So This idea then came up to my mind to try solving this in OpenFOAM. And boy, i really did get started with this. The geometry was already there in the video ( thanks to Denis17488, who uploaded the video ) and can be seen below as an image,
![]() |
| Geometry Model |
As I like doing most of the things on an open source platform, I used Gmsh to create the geometry and Mesh ( Hex ) as well,
![]() |
| Geometry and Boundary conditions - Gmsh |
![]() |
| Hex Mesh generated in Gmsh |
I have used a ramped sort of boundary condition which allows to change velocity with time. In the Velocity file inside 0 folder, include this boundary condition as shown below
inlet
{
type uniformFixedValue;
uniformValue table
(
(0 (0 1 0))
(1 (0 2 0))
(2 (0 3 0))
(3 (0 4 0))
(4 (0 4 0))
(5 (0 0 0))
);
}
Simulation was ran for 10 sec. Image shown below is at t = 2sec.
![]() |
| Time = 2 sec |
Thursday, July 28, 2016
Compiling CUDA solvers in Foam Extend v 3.2
Today's computing world is slowly and steadily shifting from CPU to GPU. With the availability of resources at much lower rates then some years ago and the need for faster + efficient computing has resulted computational scientist to broaden their view of using GPU for computation and not see it just for gaming purpose.
The OpenFOAM extend group has contributed to this by adding libraries for solvers to harness the power of GPU. I have an NVIDIA GeForce GTX 650 Ti 2GB Graphics card and first wanted to compile the cudaSolvers in foam-extend.
So some of the basic steps which are required for compilation are as shown below :
1. Install NVIDIA cuda libraries for your system ( https://developer.nvidia.com/cuda-downloads ).
2. After this before compiling foam-extend source the environment variable for compiling cuda solvers. On the terminal type the command below and hit enter
export CUDA_ARCH=sm_30
3. Compile foam-extend by running the ./Allwmake.firstInstall script
4. Once the compilation is finished we can now compile the CUDA solvers separately by running the Allwmake file inside $FOAM_SRC/cudaSolvers
5. But wait, this might still throw up some errors. So we need to complete a few more steps before compiling cudaSolvers
a ) Set the path for CUDA nvcc. You can save these lines in you etc/bashrc file so you can save time exporting these everytime you need to run the cuda based solvers
export set PATH=/usr/local/cuda-7.5/bin:$PATH
export set LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
b ) You will also require CUSP for compiling the cuda libraries
cusp library v0.4.0
Download it from : https://github.com/cusplibrary/cusplibrary.git
Rename the zip file as " cusp " .This library needs to be saved inside the cuda directory in /usr/local/cuda-7.5
c ) I had some trouble while compiling the cudaSolvers, but when I checked options file in Make directory my error was solved. Basically we need to set the CUDA_INCLUDE_DIR path to include all the required files for running cudaSolvers.
export CUDA_INCLUDE_DIR=$CUDA_DIR/include
d ) Now compile the cudaSolvers , and once it says that
'libcudaSolvers.so' is up to date
Your work is done
Now my next task would be to work with these solvers and check how fast the cuda libraries work for OpenFOAM extend.
The OpenFOAM extend group has contributed to this by adding libraries for solvers to harness the power of GPU. I have an NVIDIA GeForce GTX 650 Ti 2GB Graphics card and first wanted to compile the cudaSolvers in foam-extend.
So some of the basic steps which are required for compilation are as shown below :
1. Install NVIDIA cuda libraries for your system ( https://developer.nvidia.com/cuda-downloads ).
2. After this before compiling foam-extend source the environment variable for compiling cuda solvers. On the terminal type the command below and hit enter
export CUDA_ARCH=sm_30
3. Compile foam-extend by running the ./Allwmake.firstInstall script
4. Once the compilation is finished we can now compile the CUDA solvers separately by running the Allwmake file inside $FOAM_SRC/cudaSolvers
5. But wait, this might still throw up some errors. So we need to complete a few more steps before compiling cudaSolvers
a ) Set the path for CUDA nvcc. You can save these lines in you etc/bashrc file so you can save time exporting these everytime you need to run the cuda based solvers
export set PATH=/usr/local/cuda-7.5/bin:$PATH
export set LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
b ) You will also require CUSP for compiling the cuda libraries
cusp library v0.4.0
Download it from : https://github.com/cusplibrary/cusplibrary.git
Rename the zip file as " cusp " .This library needs to be saved inside the cuda directory in /usr/local/cuda-7.5
c ) I had some trouble while compiling the cudaSolvers, but when I checked options file in Make directory my error was solved. Basically we need to set the CUDA_INCLUDE_DIR path to include all the required files for running cudaSolvers.
export CUDA_INCLUDE_DIR=$CUDA_DIR/include
d ) Now compile the cudaSolvers , and once it says that
'libcudaSolvers.so' is up to date
Your work is done
Now my next task would be to work with these solvers and check how fast the cuda libraries work for OpenFOAM extend.
Compiling CUDA solvers in Foam Extend v 3.2
Today's computing world is slowly and steadily shifting from CPU to GPU. With the availability of resources at much lower rates then some years ago and the need for faster + efficient computing has resulted computational scientist to broaden their view of using GPU for computation and not see it just for gaming purpose.
The OpenFOAM extend group has contributed to this by adding libraries for solvers to harness the power of GPU. I have an NVIDIA GeForce GTX 650 Ti 2GB Graphics card and first wanted to compile the cudaSolvers in foam-extend.
So some of the basic steps which are required for compilation are as shown below :
1. Install NVIDIA cuda libraries for your system ( https://developer.nvidia.com/cuda-downloads ).
2. After this before compiling foam-extend source the environment variable for compiling cuda solvers. On the terminal type the command below and hit enter
export CUDA_ARCH=sm_30
3. Compile foam-extend by running the ./Allwmake.firstInstall script
4. Once the compilation is finished we can now compile the CUDA solvers separately by running the Allwmake file inside $FOAM_SRC/cudaSolvers
5. But wait, this might still throw up some errors. So we need to complete a few more steps before compiling cudaSolvers
a ) Set the path for CUDA nvcc. You can save these lines in you etc/bashrc file so you can save time exporting these everytime you need to run the cuda based solvers
export set PATH=/usr/local/cuda-7.5/bin:$PATH
export set LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
b ) You will also require CUSP for compiling the cuda libraries
cusp library v0.4.0
Download it from : https://github.com/cusplibrary/cusplibrary.git
Rename the zip file as " cusp " .This library needs to be saved inside the cuda directory in /usr/local/cuda-7.5
c ) I had some trouble while compiling the cudaSolvers, but when I checked options file in Make directory my error was solved. Basically we need to set the CUDA_INCLUDE_DIR path to include all the required files for running cudaSolvers.
export CUDA_INCLUDE_DIR=$CUDA_DIR/include
d ) Now compile the cudaSolvers , and once it says that
'libcudaSolvers.so' is up to date
Your work is done
Now my next task would be to work with these solvers and check how fast the cuda libraries work for OpenFOAM extend.
The OpenFOAM extend group has contributed to this by adding libraries for solvers to harness the power of GPU. I have an NVIDIA GeForce GTX 650 Ti 2GB Graphics card and first wanted to compile the cudaSolvers in foam-extend.
So some of the basic steps which are required for compilation are as shown below :
1. Install NVIDIA cuda libraries for your system ( https://developer.nvidia.com/cuda-downloads ).
2. After this before compiling foam-extend source the environment variable for compiling cuda solvers. On the terminal type the command below and hit enter
export CUDA_ARCH=sm_30
3. Compile foam-extend by running the ./Allwmake.firstInstall script
4. Once the compilation is finished we can now compile the CUDA solvers separately by running the Allwmake file inside $FOAM_SRC/cudaSolvers
5. But wait, this might still throw up some errors. So we need to complete a few more steps before compiling cudaSolvers
a ) Set the path for CUDA nvcc. You can save these lines in you etc/bashrc file so you can save time exporting these everytime you need to run the cuda based solvers
export set PATH=/usr/local/cuda-7.5/bin:$PATH
export set LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH
b ) You will also require CUSP for compiling the cuda libraries
cusp library v0.4.0
Download it from : https://github.com/cusplibrary/cusplibrary.git
Rename the zip file as " cusp " .This library needs to be saved inside the cuda directory in /usr/local/cuda-7.5
c ) I had some trouble while compiling the cudaSolvers, but when I checked options file in Make directory my error was solved. Basically we need to set the CUDA_INCLUDE_DIR path to include all the required files for running cudaSolvers.
export CUDA_INCLUDE_DIR=$CUDA_DIR/include
d ) Now compile the cudaSolvers , and once it says that
'libcudaSolvers.so' is up to date
Your work is done
Now my next task would be to work with these solvers and check how fast the cuda libraries work for OpenFOAM extend.
Thursday, July 21, 2016
12 step guide on Installing OpenFOAM on Mac OS ( El-Capitan 10.11.6 )
I recently purchased a Mac-Book Pro 13'' 2012 Model, an old model but functioning as good as new. Getting a Mac for myself was in my bucket-list and finally I own it now.
Now the First Task was to Install OpenFOAM on this and let me tell you it wasn't easy at all. And finally after almost a week's struggle I have finally been able to Install it on Mac and that too the latest version of OpenFOAM 4.0 with Paraview-5.1.0 !!!!!
As it was a good long struggle for me and since there is no one stop solution for installation let me help you with the Installation. Here are the steps for installing OpenFOAM on Mac OS.
1. Install the homebrew package ( brew.sh ). This basically is like a onestop package manager for all the dependencies required for Installing OF.
2. Now Install these packages one by one
$ brew tap hombre/science
$ brew install open-mpi --disable-fortran
$ brew install scotch
$ brew install cgal
$ brew install flex
$ brew install boost --without-single --with-mpi
$ brew install metis
$ brew install parmetis
$ brew install https://raw.githubusercontent.com/mrklein/openfoam-os-x/master/formulae/parmgridgen.rb
3. Once done with Installing all these packages ( would take about and hour or more depending on your Internet speed ), Download the latest version of OpenFOAM tar file from the OpenFOAM website or git or bitbucket.
4. Create a disk image using the CLI interface from the command shown below.
$ hdiutil create -size 8.3g -type SPARSEBUNDLE -fs HFSX -volname OpenFOAM -fsargs -s OpenFOAM.sparsebundle
Size key specifies size of the image, as usually I keep all OpenFOAM versions on one image, the size is rather large but as it is sparse image, its size will grow as necessary (for example size of disk image with 6 different OpenFOAM versions is around 6G). Type of the disk image is Sparse bundle as it is more convenient for backup software. Volume name is OpenFOAM, you can change it to anything you like. File system type is set with -fs flag, in the command it is just extended HFS, if you'd like, you can add J letter there to get journaling. And finally -fsargs -s supply -s option to newfs utility that forces it to create case sensitive file system.
5. Mount the Disk Image
First create a directory with the name OpenFOAM
$ mkdir -p OpenFOAM
Now mount the disk image on the newly created folder
$ hdiutil attach -mountpoint $HOME/OpenFOAM OpenFOAM.sparsebundle
6. Extract the tar file into your OpenFOAM directory in home folder
$ cd OpenFOAM && tar xzf ~/Download/OpenFOAM-4.x.tgz
7. Download the Mac OS patch for the specific version you are using and move it into OpenFOAM-4.x directory in your OpenFOAM folder in $HOME
$ cd OpenFOAM-4.x && curl -L https://raw.githubusercontent.com/mrklein/openfoam-os-x/master/OpenFOAM-<VER>.patch > OpenFOAM-<VER>.patch
Here VER refers to your version number
8. Apply the downloaded patch
$ git apply OpenFOAM-4.0.patch
9. Building OpenFOAM
Follow these few steps before you start compiling OpenFOAM
$ ./Allwmake > log.Allwmake 2>&1
COMPILATION will take about 2-3 hours
10. Testing your Installation
You can check your Installation with the regular way, by typing icoFoam -help and look out for the message or by typing
foamInstallationTest
This basically checks if all the packages are configured properly by OpenFOAM during compilation
11. Setting up Environment Variable
Sourcing OpenFOAM bashrc file each and every time you login to your system can be quite boring and time consuming. To avoid this copy past these lines into a file named as :
openfoam-env-setup.sh and save this on your $HOME folder. Source this file into .profile in your terminal by typing source $HOME/openfoam-env-setup.sh
12. Restart Terminal !!!!
Now every time you start the terminal just type the alias related to your version
eg. of40
Now, this is for all the MAC users. Do not install packages Macports, it will create issues while compilation since we have installed packages from brew. ( from personal experience )
Now the First Task was to Install OpenFOAM on this and let me tell you it wasn't easy at all. And finally after almost a week's struggle I have finally been able to Install it on Mac and that too the latest version of OpenFOAM 4.0 with Paraview-5.1.0 !!!!!
As it was a good long struggle for me and since there is no one stop solution for installation let me help you with the Installation. Here are the steps for installing OpenFOAM on Mac OS.
1. Install the homebrew package ( brew.sh ). This basically is like a onestop package manager for all the dependencies required for Installing OF.
2. Now Install these packages one by one
$ brew tap hombre/science
$ brew install open-mpi --disable-fortran
$ brew install scotch
$ brew install cgal
$ brew install flex
$ brew install boost --without-single --with-mpi
$ brew install metis
$ brew install parmetis
$ brew install https://raw.githubusercontent.com/mrklein/openfoam-os-x/master/formulae/parmgridgen.rb
3. Once done with Installing all these packages ( would take about and hour or more depending on your Internet speed ), Download the latest version of OpenFOAM tar file from the OpenFOAM website or git or bitbucket.
4. Create a disk image using the CLI interface from the command shown below.
$ hdiutil create -size 8.3g -type SPARSEBUNDLE -fs HFSX -volname OpenFOAM -fsargs -s OpenFOAM.sparsebundle
Size key specifies size of the image, as usually I keep all OpenFOAM versions on one image, the size is rather large but as it is sparse image, its size will grow as necessary (for example size of disk image with 6 different OpenFOAM versions is around 6G). Type of the disk image is Sparse bundle as it is more convenient for backup software. Volume name is OpenFOAM, you can change it to anything you like. File system type is set with -fs flag, in the command it is just extended HFS, if you'd like, you can add J letter there to get journaling. And finally -fsargs -s supply -s option to newfs utility that forces it to create case sensitive file system.
5. Mount the Disk Image
First create a directory with the name OpenFOAM
$ mkdir -p OpenFOAM
Now mount the disk image on the newly created folder
$ hdiutil attach -mountpoint $HOME/OpenFOAM OpenFOAM.sparsebundle
6. Extract the tar file into your OpenFOAM directory in home folder
$ cd OpenFOAM && tar xzf ~/Download/OpenFOAM-4.x.tgz
7. Download the Mac OS patch for the specific version you are using and move it into OpenFOAM-4.x directory in your OpenFOAM folder in $HOME
$ cd OpenFOAM-4.x && curl -L https://raw.githubusercontent.com/mrklein/openfoam-os-x/master/OpenFOAM-<VER>.patch > OpenFOAM-<VER>.patch
Here VER refers to your version number
8. Apply the downloaded patch
$ git apply OpenFOAM-4.0.patch
9. Building OpenFOAM
Follow these few steps before you start compiling OpenFOAM
$ mkdir -p $HOME/.OpenFOAM
$ echo 'WM_COMPILER=Clang' > $HOME/.OpenFOAM/prefs.sh
$ echo 'WM_COMPILE_OPTION=Opt' >> $HOME/.OpenFOAM/prefs.sh
$ echo 'WM_MPLIB=SYSTEMOPENMPI' >> $HOME/.OpenFOAM/prefs.sh
$ echo 'export WM_NCOMPPROCS=$(sysctl -n hw.ncpu)' >> $HOME/.OpenFOAM/prefs.sh
$ echo 'export WM_SILENT_RULES=Y' >> $HOME/.OpenFOAM/prefs.sh
$ echo 'WM_LABEL_SIZE=32' >> $HOME/.OpenFOAM/prefs.sh
$ source etc/bashrc
$ [ "$(ulimit -n)" -lt "4096" ] && ulimit -n 4096
$ ./Allwmake > log.Allwmake 2>&1
COMPILATION will take about 2-3 hours
10. Testing your Installation
You can check your Installation with the regular way, by typing icoFoam -help and look out for the message or by typing
foamInstallationTest
This basically checks if all the packages are configured properly by OpenFOAM during compilation
11. Setting up Environment Variable
Sourcing OpenFOAM bashrc file each and every time you login to your system can be quite boring and time consuming. To avoid this copy past these lines into a file named as :
openfoam-env-setup.sh and save this on your $HOME folder. Source this file into .profile in your terminal by typing source $HOME/openfoam-env-setup.sh
#!/bin/sh
# If you'd like to setup environment every time terminal is launched
# create .OpenFOAM/OpenFOAM-release file in your home folder. In the file put
# the string with a version you'd like to use. This can be done with:
# $ mkdir -p .OpenFOAM
# $ cat '2.X.Y' > .OpenFOAM/OpenFOAM-release
# If you'd like to switch environment between versions use of2xy commands.
readonly FOAM_MOUNT_POINT="${FOAM_MOUNT_POINT:-"$HOME/OpenFOAM"}"
readonly FOAM_RELEASE_FILE="${FOAM_RELESE_FILE:-"$HOME/.OpenFOAM/OpenFOAM-release"}"
readonly FOAM_DISK_IMAGE="${FOAM_DISK_IMAGE:-"$HOME/OpenFOAM.sparsebundle"}"
mount_disk_image () {
local oldpwd="$(pwd)"
cd "$HOME"
# Attempt to mount image
hdiutil attach -quiet -mountpoint "$FOAM_MOUNT_POINT" "$FOAM_DISK_IMAGE"
cd "$oldpwd"
return 0
}
main () {
[ -f "$FOAM_RELEASE_FILE" ] || return 1
local release="$(cat "$FOAM_RELEASE_FILE")"
local bashrc="$FOAM_MOUNT_POINT/OpenFOAM-$release/etc/bashrc"
[ -f "$bashrc" ] || mount_disk_image
if [ -f "$bashrc" ]
then
source "$bashrc" WM_NCOMPPROCS="$(sysctl -n hw.ncpu)"
else
echo "OpenFOAM $release doesn't seem to be installed."
fi
}
# Reset environment variables for specified version
ofxxx () {
local release="$1"
[ -n "$WM_PROJECT_DIR" ] && . "$WM_PROJECT_DIR/etc/config/unset.sh"
local bashrc="$FOAM_MOUNT_POINT/OpenFOAM-$release/etc/bashrc"
if [ -f "$bashrc" ]; then
source "$bashrc" WM_NCOMPPROCS="$(sysctl -n hw.ncpu)"
else
mount_disk_image
if [ -f "$bashrc" ]; then
source "$bashrc" WM_NCOMPPROCS="$(sysctl -n hw.ncpu)"
else
echo "OpenFOAM $release doesn't seem to be installed."
fi
fi
}
of22x () {
ofxxx "2.2.x"
}
export -f of22x
of231 () {
ofxxx "2.3.1"
}
export -f of231
of23x () {
ofxxx "2.3.x"
}
export -f of23x
of240 () {
ofxxx "2.4.0"
}
export -f of240
of24x () {
ofxxx "2.4.x"
}
export -f of24x
of300() {
ofxxx "3.0.0"
}
export -f of300
of301() {
ofxxx "3.0.1"
}
export -f of301
of30x() {
ofxxx "3.0.x"
}
export -f of30x
of40() {
ofxxx '4.0'
}
export -f of40
of4x() {
ofxxx '4.x'
}
export -f of4x
ofdev() {
ofxxx "dev"
}
export -f ofdev
pf () {
paraFoam -builtin > /dev/null 2>&1 &
}
main
12. Restart Terminal !!!!
Now every time you start the terminal just type the alias related to your version
eg. of40
Now, this is for all the MAC users. Do not install packages Macports, it will create issues while compilation since we have installed packages from brew. ( from personal experience )
Friday, July 15, 2016
The Foam version Confusion
Hi Guys,
The Open source CFD seems to be getting more competitive these days and guess what we are now having three different versions of OpenFOAM. Isn't that great but again adding to a bit of confusion as well, which version should I really use. Well lets clarify some of the things for now beginning with the Foam hierarchy as shown below
![]() |
| Figure taken from a LinkedIn article on OpenFOAM who's who. |
Well so as we can see we have three different versions released by the OpenFOAM Foundation, OpenCFD-ESI Group and Foam-Extend. So what really differs in each of these, let find out
1. OpenFOAM 4.0 - This is the official Foam release and has a lot of new features added with it from its previous version. OpenFOAM foundation releases this version and this one seems to be the quickest release ( 6 months ) then all the prior ones. I would always prefer for going for this release to keep the originality.
2. OpenFOAM v1606+ - This version is released by OpenCFD-ESI Group and comes with a lot of add on solvers used by Industry and some really cool post-processing options as well. The version naming is done as year and month of release with a +. One can look at the features offered by this software and use it for solving problems.
3. foam-extend - Here you will get some of the most extensive solvers which are not available in either of the above Foam. The solvers are mainly contributed by OpenFOAM users / developers globally.
So finally to end the confusion it really doesn't matter much about what Foam version you want to use till the time it really solves your engineering problem. Once again, happy Foaming!!! :)
Monday, May 9, 2016
Finally my tutorial on Installation of PyFOAM
What is PyFOAM - A python library to control OpenFOAM-runs and manipulate OpenFOAM-data.
Comes with a number of utilities that should make your life easier if
you're not scared by commandlines [ source : openfoam wiki / pyfoam]
This is part one of the tutorial series on PyFOAM. There will be a total of 4/5 tutorials following the tutorial on Installation of PyFOAM.
So sit back and keep pyFoaming.... :)
http://spoken-tutorial.org/watch/OpenFOAM/Installing%2Band%2BRunning%2BPyFoam/English/
This is part one of the tutorial series on PyFOAM. There will be a total of 4/5 tutorials following the tutorial on Installation of PyFOAM.
So sit back and keep pyFoaming.... :)
http://spoken-tutorial.org/watch/OpenFOAM/Installing%2Band%2BRunning%2BPyFoam/English/
Tuesday, April 5, 2016
CFD..thats sweeet
http://www.deskeng.com/de/the-sweet-side-of-simulation-behind-the-scenes-at-nestle/
Well thats how CFD can play a big role in product design and development.
Well thats how CFD can play a big role in product design and development.
Saturday, February 13, 2016
Love for Fighters
My love for aircrafts and fighter planes was altogether put into a completely different level during my Under Graduation days. All thanks to my friend Mr. Neil Mehta, this guy since then has been a source of motivation for me and many others as well. This one is for you buddy.
The Sukhoi Su-30MKI (NATO reporting name: Flanker-H) is a twinjet multirole air superiority fighter developed by Russia's Sukhoi and built under licence by India's Hindustan Aeronautics Limited (HAL) for the Indian Air Force (IAF). A variant of the Sukhoi Su-30, it is a heavy, all-weather, long-range fighter. (source wiki).
GrabCAD has been my best source for finding CAD models and it never disappoints me. The actual CAD model was quite big so I had to scale it down to fit the geometry in my domain and mesh it.
Finally simulations were complete. Presenting to you Flow over an Sukhoi Su 30 MKI with Streamlines.
The Sukhoi Su-30MKI (NATO reporting name: Flanker-H) is a twinjet multirole air superiority fighter developed by Russia's Sukhoi and built under licence by India's Hindustan Aeronautics Limited (HAL) for the Indian Air Force (IAF). A variant of the Sukhoi Su-30, it is a heavy, all-weather, long-range fighter. (source wiki).
GrabCAD has been my best source for finding CAD models and it never disappoints me. The actual CAD model was quite big so I had to scale it down to fit the geometry in my domain and mesh it.
![]() |
| Actual CAD geometry : GrabCAD |
![]() |
| snappyHexMesh_1 |
![]() |
| snappyHexMesh_2 |
![]() |
| Streamlines over Sukhoi Su 30 MKI |
Thursday, February 11, 2016
OpenFOAM Simulation of flow past FERRARI F 50
snappyHexMesh proves to be a big boon when you have a CAD file ready. Yesterday I tried to study the external aerodynamics of flow past a FERRARI F 50. To get CAD files use this website ( https://sites.google.com/site/garcfd/stl ), you can find some cool CAD files.
I would like to share some of the important things I learnt while using snappyHexMesh utility.
1. Always use a ".stl" CAD file. Check for any holes in it, if any close them as this can cause issues later while running snappyHexMesh. ( basically a CAD clean up is always good)
2. Use a simple name for your CAD file. Do not name it too complex since we need to use this name multiple times in snappyHexMeshDict file. ( eg, car.stl - short and simple)
3. When you run the case always keep Allrun and Allclean script files ready. This will help you to save time while running the simulations.
4.Finally the most important point. When we create a blockMeshDict file please see to it that the size of the mesh should be uniform in X, Y and Z direction i.e. uniform cube.
Solver : simpleFoam ( implicit solver for incompressible and turbulent flow)
Domain size : 20m X 8m X 8m
After snappyHexMesh
Velocity Contour : StreamLines
The simulation finally end, and they end quickly since its an implicit solver. For more details please post your comments here.
I would like to share some of the important things I learnt while using snappyHexMesh utility.
1. Always use a ".stl" CAD file. Check for any holes in it, if any close them as this can cause issues later while running snappyHexMesh. ( basically a CAD clean up is always good)
2. Use a simple name for your CAD file. Do not name it too complex since we need to use this name multiple times in snappyHexMeshDict file. ( eg, car.stl - short and simple)
3. When you run the case always keep Allrun and Allclean script files ready. This will help you to save time while running the simulations.
4.Finally the most important point. When we create a blockMeshDict file please see to it that the size of the mesh should be uniform in X, Y and Z direction i.e. uniform cube.
Solver : simpleFoam ( implicit solver for incompressible and turbulent flow)
Domain size : 20m X 8m X 8m
After snappyHexMesh
Velocity Contour : StreamLines
The simulation finally end, and they end quickly since its an implicit solver. For more details please post your comments here.
Tuesday, January 12, 2016
First OpenFOAM Symposium @ IIT Bombay
FOSSEE, IIT Bombay is organizing its First OpenFOAM Symposium at IIT Bombay, on 27th Feb, 2016. The symposium would feature talks from OpenFOAM users, Students talks and OpenFOAM Workshop.For more details please visit the given link. http://fossee.in/conference/ cfd-symposium/
Monday, December 21, 2015
Static Mixer Simulation
Simulation of Static Mixer
A static mixer is a precision engineered device for the continuous mixing of fluid materials. Normally the fluids to be mixed are liquid, but static mixers can also be used to mix gas streams, disperse gas into liquid or blend immiscible liquids.
Simulation was performed using icoFoam as a transient solver. Geometry and Meshing was done using Salome Meca. A coarse mesh was used for this simulation. Turbulence models have not been implemented , but will be done sooner on an improved simulation.
Watch the animation here
YouTube link : https://www.youtube.com/watch?v=hHbKx0w35ak
A static mixer is a precision engineered device for the continuous mixing of fluid materials. Normally the fluids to be mixed are liquid, but static mixers can also be used to mix gas streams, disperse gas into liquid or blend immiscible liquids.
Simulation was performed using icoFoam as a transient solver. Geometry and Meshing was done using Salome Meca. A coarse mesh was used for this simulation. Turbulence models have not been implemented , but will be done sooner on an improved simulation.
![]() |
| Cylinder |
![]() | ||||
| Bottom cone |
![]() |
| Extrusion of Bottom conical section for outlet |
![]() |
| Extrusion of Inlet faces |
![]() |
| Final Geometry of Mixer |
![]() |
| Meshing - Tetrahedral meshing using Salome |
![]() | |
| Velocity Magnitude with Streamlines |
Watch the animation here
YouTube link : https://www.youtube.com/watch?v=hHbKx0w35ak
Wednesday, November 4, 2015
OpenFOAM v3.0.0
OpenCFD released the latest version of one of the most widely used open source CFD softwares OpenFOAM v 3.0.0. The new version has been refurbished with addition of new features, fast algorithms, and few structural changes in the software.
Download http://www.openfoam.org/download/source.php
Download http://www.openfoam.org/download/source.php
Saturday, October 17, 2015
Trying my hands at SnappyHexMesh ( F1 car simulation )
![]() |
| F1 car - STL file picked from GrabCAD |
![]() |
| snappyHexMesh |
![]() |
| Pressure coutour |
![]() |
| Velocity Contour |
Using OpenFOAM we can easily import stl files and mesh them using snappyHexMesh utility. The stl file used above was taken from GrabCAD ( you can find various CAD files on this site ). I have used simpleFoam here for solving an steady state problem (to save time and energy.. :D ). For more details/discussions you can comment below the post.. Simulation...
Sunday, October 4, 2015
MPI vs. OpenMP
Simple explanation of difference between OpenMP and OpenMPI
"Donald Jones" wrote
OpenMP works on SMP systems, whereas MPI works on both SMP anddistributed memory systems (ie, clusters). The codes we use in our officetypically use MPI between cluster nodes and OpenMP on individual nodes(assuming a dual CPU node), and often both at once (launch on 32 nodeswith 2 CPUs per node; OpenMP spawns appropriate portions of the code overboth CPUs).
From my experience, OpenMP has better performance on SMP systems,ignoring MPI implementations that short circuit the TCP/IP stack (eg,SGI's MPI on Origin 3000s). If you will be launching different runs oneach node, then OpenMP will likely offer better performance than MPI.However, if you are going to launch a single job across multiple nodes,MPI is the de facto standard for parallelizing on clusters.
Other difference between OpenMP and MPI is that OpenMP is a fine grainparallelism and MPI is a course grain parallelism. For example, in OpenMPyou most often parallelize over a loop using compile directives, so thecode runs in serial until the loop, runs the loop in parallel, thenreverts back to serial. Conversely, with MPI the entire code is launchedon each node and you control what each code executes based its nodenumber in the MPI universe along with an algorithm that distributes work,eg, a master/slave model.
-------------------------------------------
Parallel computing concepts can be really made simple to understand by such explanation for all CS as well as NON-CS users...
P.S : I was reading about OpenMP and OpenMPI and came across a link which had this explanation.
Saturday, October 3, 2015
For F1 Racing lovers...
This seems to be a interesting link showcasing all the latest technology trends in F1 racing..
http://www.f1technical.net/development/?sid=e310ed165d67746f74d9cd1666a659eb
http://www.f1technical.net/development/?sid=e310ed165d67746f74d9cd1666a659eb
Monday, September 21, 2015
CFD Engine
You surely need to check this out...really interesting stuff for people who love to work in the field of CFD. I Got in touch with the Blog Writer Robin Knowles and I must say, really liked the way in which he has come up with small articles covering all the aspects of CFD + CAD = CAE overall...now isn't that really cool.. :)
Moving Boundary problem in OpenFOAM
Hey Guys, Its really been a long time since I have posted something. I was looking out for some of my old stuff and found out this ( I had uploaded this on youtube 3 years ago. ). Moving boundary in OpenFOAM. It is based on dynamicInkJetFvMesh mesh motion without solving any flow here. We have used a simple rectangular box here with dimension of (6 x 3 ) with 60 cells in the X-direction and 20 in the Y-direction. Use the solver interDyMFoam to only update mesh with out solving for flow. ( The original tutorial is developed by Julien
Reveillon ).
Till then enjoy and watch out for new stuff.... :)
Till then enjoy and watch out for new stuff.... :)
Saturday, May 23, 2015
Flow over an aircraft using snappyHexMesh
Hi Guys,
Time to work on snappyHexMesh in OpenFOAM. To start with, need to mention about JC Puig whose tutorial I am referring (http://the-foam-house5.webnode.es/) . The tutorial provides a very brief introduction on using snappyHexMesh.
You can find the description of the geometry and mesh on his page. The basic requirements for using a snappyHexMesh in OF are :
1. Need the geometry STL file, i.e. snappyHexMesh works with a STerioLithography file which is widely available as an export in CAD softwares.
2. OpenFOAM case file, we can use the available motorBike case in OF to start up with so we need not make much changes to our file structure.
3. Using surfaceFeatureExtract command, to extract the surface feature in the geometry.
4. creating a blockMesh for external domain
5. snappyHexMeshDict file for setting up the meshing parameters
6. and finally the solver
Output after snappyHexMesh is used :
7. Solver used : simpleFOAM.
Velocity contour :
Pressure contour :

Time to work on snappyHexMesh in OpenFOAM. To start with, need to mention about JC Puig whose tutorial I am referring (http://the-foam-house5.webnode.es/) . The tutorial provides a very brief introduction on using snappyHexMesh.
You can find the description of the geometry and mesh on his page. The basic requirements for using a snappyHexMesh in OF are :
1. Need the geometry STL file, i.e. snappyHexMesh works with a STerioLithography file which is widely available as an export in CAD softwares.
2. OpenFOAM case file, we can use the available motorBike case in OF to start up with so we need not make much changes to our file structure.
3. Using surfaceFeatureExtract command, to extract the surface feature in the geometry.
4. creating a blockMesh for external domain
5. snappyHexMeshDict file for setting up the meshing parameters
6. and finally the solver
Output after snappyHexMesh is used :
7. Solver used : simpleFOAM.
Velocity contour :
Pressure contour :

Subscribe to:
Posts (Atom)


























