barbagroup / cuibm Goto Github PK
View Code? Open in Web Editor NEWcuIBM: a GPU-based immersed boundary method code.
Home Page: http://barbagroup.github.io/cuIBM
License: MIT License
cuIBM: a GPU-based immersed boundary method code.
Home Page: http://barbagroup.github.io/cuIBM
License: MIT License
The file run.info
is useless if the post-processing part becomes completely independent from it.
First, Python scripts using run.info
should be modified to remove the dependency.
Second, the code related to the generation of run.info
should be remove from cuIBM source files.
Lid-driven cavity flow at Re=100
Flow over a circular cylinder at Re=40, both with TairaColoniusSolver and with DirectForcingSolver
Hi and thanks for your work on this!
I successfully ran the examples for Re<200, but seem to run into the following issue for the Re=550 and Re=3000 cases:
Parsing YAML file with simulation parameters ...
Parsing YAML file with flow conditions ...
terminate called after throwing an instance of 'YAML::InvalidNode'
what(): invalid node; this may result from using a map iterator as a sequence iterator, or vice-versa
Aborted (core dumped)
Any idea how to fix this? Thanks again.
Currently, the code choose points nearest to the boundary that are outside it (in the fluid region), and performs a bilnear interpolation with nodes in the fluid. An alternative is to perform this interpolation in the interior of the body. Give the user the option to choose which interpolation to perform.
The following graphs plot the difference in solutions between successive grids for the case of a lid-driven cavity (Re=100, run for non-dimensional time 1.35, normalised by velocity of the lid and the length of the side of the cavity. The same dt/dx ratio is used for each case):
and for a cylinder inside a lid-driven cavity:
Both show an order of convergence of about 1.3. These graphs can be generate by running:
./DirectForcingMethod/convergence.py --folder cavityRe100 --run-cases
./DirectForcingMethod/convergence.py --folder FDDFExternal --run-cases
from the root directory of the project.
I've also written a unit test to check the convergence of just the convection kernel:
make unitTests/convectionTerm
make testConvection
It displays the expected second order convergence.
Dear Madam/Sir,
I have a question with my using of cuIBM.
I have two NVIDIA Tesla K40 in my workstation. The question is how can I configure the cuIBM to use the second one. When I run several examples at the same time, the status always like this:
Could you help me with any options of using the second GPU.
Thank you for your patience and looking forward to your reply.
Yours sincerely
Hui-Yang Yu
Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support
To satisfy the above requirement, please add a Contribution Guidelines to cuIBM
Since we are not sure to obtain the right results when using the IBMs SLL{0,1,2}, these implementations should be removed from the master
branch and put into a specific branch.
The point is to have a branch master
with only correct and validated features.
Try to avoid Gnuplot since it requires a non-Python program, and automating it would require a system call from the python scripts (and also requires writing data to a file). Gnuplot is also an extra dependency. Matplotlib can be considered an extra dependency too, but most computational scientists who have python installed will also have Matplotlib.
Check pull request #9
When inputs are read from the YAML files, the program crashes if a field is missing. It would be better if some fields are optional, and default values used in the simulation if they are absent.
Right now, the point at the center of the grid is pinned. It would be better to find a point inside the immersed boundary and pin it.
Hi, where can I find the routine for position update in case of freely-oscillated cylinder?
The three type of schemes used are:
Add a solver that solves for the flow in the same way as done by Fadlun et al. (2000).
Functionality: The plotting scripts don't work in flying snake examples.
plotForceCoefficients throws an IndexError (same error in 2.7 and 3.6):
[info] registering simulation ...
- description: None
- software: cuibm
- directory: /home/osumageed/software/cuIBM/examples/flyingSnake/Re1000AoA30
[info] reading forces ...
/home/osumageed/anaconda/envs/py36/lib/python3.6/site-packages/numpy/core/_methods.py:59: RuntimeWarning: Mean of empty slice.
warnings.warn("Mean of empty slice.", RuntimeWarning)
/home/osumageed/anaconda/envs/py36/lib/python3.6/site-packages/numpy/core/_methods.py:70: RuntimeWarning: invalid value encountered in double_scalars
ret = ret.dtype.type(ret / rcount)
Traceback (most recent call last):
File "scripts/plotForceCoefficients.py", line 15, in <module>
simulation.get_mean_forces(limits=time_limits)
File "/home/osumageed/anaconda/envs/py36/lib/python3.6/site-packages/snake-0.3-py3.6.egg/snake/simulation.py", line 106, in get_mean_forces
order=order)
File "/home/osumageed/anaconda/envs/py36/lib/python3.6/site-packages/snake-0.3-py3.6.egg/snake/force.py", line 90, in get_mean
'start': self.times[mask[0]],
IndexError: index 0 is out of bounds for axis 0 with size 0
plotVorticity just doesn't make a plot or create images folder.
Make the program use the correct path to read the body files from the case folders.
Had earlier deactivated printing the locations of boundary points at each save point for troubleshooting purposes. Do the following:
Get an error: unsupported option '-dumpspecs'
Also had an error in the linking step earlier.
Will investigate the issue. Possible lead:
http://stackoverflow.com/questions/19351219/cuda-clang-and-os-x-mavericks
DirectForcingSolver
has not been tested for cases with multiple or moving
bodies.
Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
To satisfy the documentation requirement, please add a link to the Doxygen API docs to the readme
Right now, the type of Krylov solver to use for the systems is hard-coded in cuIBM.
We use a bi-CG-stabilized technique for the intermediate velocity system and a CG technique for the Poisson (or modified-Poisson) system.
Looking at the various input files simParams.yaml
, they state CG
for both solvers.
Even if there is a memo at the end of the README to report this "known issue", it is confusing to write CG
in the input files.
The type of solver should not be hard-coded and the user should have to possibility to set it up in the file simParams.yaml
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.