Note: This is an archived version of the Blender Developer Wiki. The current and active wiki is available on wiki.blender.org.
Preparations
What's been done
I started off by reading the old Elbeem code. While doing so, I realized that most of it will not be needed for this integration - fluid domain settings can be parsed into the Mantaflow script, general code structure can be adopted from the smoke architecture. The critical part, I think, will be to get the fluid object into Mantaflow.
Added some Mantaflow script snippets. Similarly to the smoke integration, Blender needs the Python code snippets to talk to Mantaflow. The NB FLIP script (flip05_nbflip.py) from Mantaflow provided a lot of features that I was planning for Blender as well (the NB FLIP itself, adaptive time stepping, particle resampling). I therefore used it as my main source.
Set up the liquid API. In my view, the smoke code employs a neat way to separate internal C code from Mantaflow API code through the means of a .cpp object. For the liquids I would like to have similar mechanism. I therefore introduced two new wrappers:
LIQUID.cpp, the API object that communicates with Mantaflow
manta_liquid_API.cpp, a wrapper class to communicate with internal Blender code
I managed to get a prototype working which builds a liquid script, reads a fluid mesh and writes the .bobj.gz fluid cache to the disk. It's far from perfect but good start to show were the project is headed. (https://vimeo.com/166793851)
Next up
First thing to do with the new wrapper classes, is to fill them with more "life". Therefore, I think it is best to first focus on parsing the domain settings correctly.