You are browsing as a guest. Sign up (or log in) to start making projects!

Manta Ray Microplastic Tracker & Filter

  • 9 Devlogs
  • 11 Total hours

The Manta Ray CFD Architecture is a bio-inspired digital twin engine that simulates how manta rays filter microplastics from the ocean without clogging. Moving away from traditional physical sieves that easily block up, this platform models vortical separation to demonstrate how fluid currents actively deflect plastic particles away from the filter bed. Powered by a custom Python backend and an interactive Streamlit frontend, the system calculates real-world buoyancy and drag forces acting on distinct polymer masses in real time, delivering live engineering analytics through a sleek, dark-mode HUD dashboard. AI Usage Declaration: Google Gemini was utilized as an interactive programming assistant during development to optimize the front-end script architecture, generate custom CSS overrides, and troubleshoot version control alignment. All core physics hypotheses, biological modeling concepts, and underlying tracking equations were entirely formulated and derived by the author.

Open comments for this post

53m 3s logged

The Compliance Patch & UI Optimization
After submitting the initial build, I ran into a quick compliance hurdle regarding explicit AI disclosures on the actual platform interface. I jumped straight back into the codebase to make the entire workspace 100% airtight and transparent. I embedded a formal AI Attribution and Usage Declaration directly into the live user interface, placing a clean summary anchor inside the sidebar control console and a comprehensive engineering footer at the very bottom of the main dashboard viewport.
While I was under the hood, I also took the opportunity to optimize the front end and clear out some native terminal warnings. I refactored the data logging layout, swapping out the deprecated use_container_width parameters for the updated width=“stretch” property to ensure full compatibility with the latest Streamlit engine standards. After wrestling with a quick remote branch sync in the terminal, the compliance patch was successfully merged and pushed live to GitHub. The digital twin is now fully transparent, warning-free, and officially certified for the final judging review!

The Compliance Patch & UI Optimization
After submitting the initial build, I ran into a quick compliance hurdle regarding explicit AI disclosures on the actual platform interface. I jumped straight back into the codebase to make the entire workspace 100% airtight and transparent. I embedded a formal AI Attribution and Usage Declaration directly into the live user interface, placing a clean summary anchor inside the sidebar control console and a comprehensive engineering footer at the very bottom of the main dashboard viewport.
While I was under the hood, I also took the opportunity to optimize the front end and clear out some native terminal warnings. I refactored the data logging layout, swapping out the deprecated use_container_width parameters for the updated width=“stretch” property to ensure full compatibility with the latest Streamlit engine standards. After wrestling with a quick remote branch sync in the terminal, the compliance patch was successfully merged and pushed live to GitHub. The digital twin is now fully transparent, warning-free, and officially certified for the final judging review!

Replying to @prajithvishnur

0
1
Ship #1

What did I make?

I made the Manta Ray CFD Architecture, a bio-inspired fluid dynamics simulation engine that models how manta rays filter microplastics without clogging. Instead of standard physical sieves, it simulates vortical separation to show how fluid currents deflect plastic particles away from a filter. The backend calculates real-time buoyancy and drag forces, while the front end displays the tracking simulation on a custom dark-mode HUD dashboard. I hope to use this for my future projects.

What was challenging?

The hardest part was optimizing the physics loop so the mass-continuity formulas and particle drag forces could render in real time without lagging the web interface. I also struggled with writing custom CSS overrides to achieve the exact glassmorphic dashboard look I wanted, alongside resolving some frustrating Git merge conflicts during the live cloud deployment.

What am I proud of?

I am incredibly proud of creating a highly polished, enterprise-grade interface that seamlessly integrates a live physics loop with a persistent telemetry database. Hitting a peak intake flux of 48.8 liters per minute with a perfect 100% deflection purity index during baseline stress tests proved that the underlying mathematical model I built genuinely works.

What should people know so that they can test my project?

To test it, just visit the live link and adjust the sidebar sliders for raker geometry, flow velocity, and debris count to watch the canvas metrics recalculate in real time. Make sure to toggle the Storm Surge Tensors switch, which injects chaotic velocity noise into the fluid grid to stress-test the system for boundary leakage.

Thank you so much for taking the time to view my project. I really hope this is good, as this is one of my first shipped projects!

  • 9 devlogs
  • 11h
Try project → See source code →
Open comments for this post

1h 42m 26s logged

For this final sprint, I focused entirely on turning this from a basic simulation script into a production-grade web application. I spent a lot of time stripping out the default Streamlit styling and injecting custom CSS overrides to build a bespoke, dark-mode HUD dashboard. Now, the platform features glowing cyan metric highlights and a translucent visualization canvas that gives it an elite, aerospace-grade engineering look.

On the physics side, I ran rigorous baseline stress tests to validate the calculation pathways against real-world microplastic data. Under steady-state parameters, the simulation successfully managed an intake flux stream of 48.8 liters per minute and a filtrate discharge of 21.9 liters per minute, locking in a perfect 100% deflection purity index with zero boundary leaks.

I also fully deployed a persistent data logging system using pandas, meaning every single time you tweak a slider for the raker geometry or debris load, the engine instantly tracks those telemetry changes inside a local session state. With the final documentation complete and the repository looking insanely clean, the digital twin is fully public, responsive, and ready to ship.

For this final sprint, I focused entirely on turning this from a basic simulation script into a production-grade web application. I spent a lot of time stripping out the default Streamlit styling and injecting custom CSS overrides to build a bespoke, dark-mode HUD dashboard. Now, the platform features glowing cyan metric highlights and a translucent visualization canvas that gives it an elite, aerospace-grade engineering look.

On the physics side, I ran rigorous baseline stress tests to validate the calculation pathways against real-world microplastic data. Under steady-state parameters, the simulation successfully managed an intake flux stream of 48.8 liters per minute and a filtrate discharge of 21.9 liters per minute, locking in a perfect 100% deflection purity index with zero boundary leaks.

I also fully deployed a persistent data logging system using pandas, meaning every single time you tweak a slider for the raker geometry or debris load, the engine instantly tracks those telemetry changes inside a local session state. With the final documentation complete and the repository looking insanely clean, the digital twin is fully public, responsive, and ready to ship.

Replying to @prajithvishnur

0
3
Open comments for this post

40m 48s logged

The interactive demo is officially live, and we have finally crossed the finish line. What started out as a quiet local Python script running in a terminal has been completely transformed, polished, and deployed into a public, dark-themed Streamlit web application. This final release brings together all the heavy engineering frameworks, integrating full hydrodynamic continuity tracking to maintain perfect mass balance across the filtration channel alongside a high-frequency Storm Surge Mode designed to stress-test the bio-inspired manta ray gill raker geometry against chaotic fluid vectors in real time.
The entire codebase is public, fully synchronized with its environment handlers, and streaming live right now for the world to see. You can jump straight into the live web workspace at https://manta-ray-filtration-system.streamlit.app to test the parameters yourself or explore the open-source repository at https://github.com/prajith-vishnu/manta-ray-filtration-system to dive into the mathematical physics documentation and see how the final build came together.

The interactive demo is officially live, and we have finally crossed the finish line. What started out as a quiet local Python script running in a terminal has been completely transformed, polished, and deployed into a public, dark-themed Streamlit web application. This final release brings together all the heavy engineering frameworks, integrating full hydrodynamic continuity tracking to maintain perfect mass balance across the filtration channel alongside a high-frequency Storm Surge Mode designed to stress-test the bio-inspired manta ray gill raker geometry against chaotic fluid vectors in real time.
The entire codebase is public, fully synchronized with its environment handlers, and streaming live right now for the world to see. You can jump straight into the live web workspace at https://manta-ray-filtration-system.streamlit.app to test the parameters yourself or explore the open-source repository at https://github.com/prajith-vishnu/manta-ray-filtration-system to dive into the mathematical physics documentation and see how the final build came together.

Replying to @prajithvishnur

0
1
Open comments for this post

50m 52s logged

For this next leg of the build, the simulation officially made the massive leap from a quiet backend script running in the terminal into a full-blown, interactive engineering dashboard. I wanted to turn this into a live, playable workspace where anyone could mess with the variables on the fly, so I integrated real-time sliders for flow velocity and raker height alongside a dynamic polymer selector console. Now, instead of hardcoding numbers and re-running the script, you can instantly tweak the setup and watch how different plastics react to the changing fluid currents right in front of you.
The absolute highlight of this session was shipping what I am calling “Storm Surge Mode.” This is basically a brutal stress-test toggle that injects chaotic vertical acceleration forces and fluid velocity eddies straight into the simulation. It completely disrupts the clean current to mimic critical, real-world storm conditions, letting me see if the bio-inspired raker geometry can actually hold its own when things get rough out in the open ocean.
To back all of this up visually, I also had to do a major physics rewrite under the hood. Previously, there were some annoying visual path-clipping bugs where the particle trails would look jagged or cut off near the boundaries. By moving the coordinate logging logic directly inside the nested sub-stepping loop, I finally cleared out those tracking glitches. The engine now delivers pixel-perfect precision right around the edges of the rakers, making the visual simulation look incredibly sharp and professional.

For this next leg of the build, the simulation officially made the massive leap from a quiet backend script running in the terminal into a full-blown, interactive engineering dashboard. I wanted to turn this into a live, playable workspace where anyone could mess with the variables on the fly, so I integrated real-time sliders for flow velocity and raker height alongside a dynamic polymer selector console. Now, instead of hardcoding numbers and re-running the script, you can instantly tweak the setup and watch how different plastics react to the changing fluid currents right in front of you.
The absolute highlight of this session was shipping what I am calling “Storm Surge Mode.” This is basically a brutal stress-test toggle that injects chaotic vertical acceleration forces and fluid velocity eddies straight into the simulation. It completely disrupts the clean current to mimic critical, real-world storm conditions, letting me see if the bio-inspired raker geometry can actually hold its own when things get rough out in the open ocean.
To back all of this up visually, I also had to do a major physics rewrite under the hood. Previously, there were some annoying visual path-clipping bugs where the particle trails would look jagged or cut off near the boundaries. By moving the coordinate logging logic directly inside the nested sub-stepping loop, I finally cleared out those tracking glitches. The engine now delivers pixel-perfect precision right around the edges of the rakers, making the visual simulation look incredibly sharp and professional.

Replying to @prajithvishnur

0
3
Open comments for this post

1h 30m 53s logged

Once the basic single-particle loop was stable, it was time to scale up the complexity to see how the system handled a more realistic, crowded environment. I upgraded the core engine to process a chaotic intake cloud of 50 distinct microplastic particles, all spawning at completely randomized vertical entry points to simulate a true messy current. Throwing that many objects at a high flow velocity of 250 millimeters per second immediately triggered a classic simulation glitch called tunneling, where particles move so fast between frames that they literally skip straight through solid walls without registering a collision.

To fix this boundary breakdown, I implemented a sub-stepping physics processor that cracks open each standard time frame and divides it into 10 microscopic intervals, dropping the delta time down to a razor-sharp one-thousandth of a second. Alongside the processing fix, I overhauled the raker profiles from flat shapes into true downstream-slanted fins using a two-slope geometric matrix that features a gentle leading edge paired with a steep trailing edge. This combination of tighter time tracking and accurate geometry paid off completely, with the high-fidelity engine locking in a mathematically verified 100% filtration efficiency yield and proving that the bio-inspired boundary layer forces can successfully override downward suction to execute clean ricochet separation.

Honestly, working through these complex physics anomalies and structuring the data loops has made things click in a way they never had before, and I am really starting to feel like I’m getting the hang of programming now. My confidence with Python is hitting a whole new level, especially because I have been leveraging AI as an interactive coding partner throughout this entire sprint. Instead of just staring at errors or trying to guess why a boundary layer isn’t registering, I use the AI to brainstorm script architectures, debug tricky syntax bottlenecks, and deeply understand how to properly execute those micro-stepping intervals. It honestly feels like having a senior developer sitting right next to me, helping me bridge the gap between the fluid dynamics math in my head and the actual code, which has completely accelerated how fast I can learn and ship clean software.

Once the basic single-particle loop was stable, it was time to scale up the complexity to see how the system handled a more realistic, crowded environment. I upgraded the core engine to process a chaotic intake cloud of 50 distinct microplastic particles, all spawning at completely randomized vertical entry points to simulate a true messy current. Throwing that many objects at a high flow velocity of 250 millimeters per second immediately triggered a classic simulation glitch called tunneling, where particles move so fast between frames that they literally skip straight through solid walls without registering a collision.

To fix this boundary breakdown, I implemented a sub-stepping physics processor that cracks open each standard time frame and divides it into 10 microscopic intervals, dropping the delta time down to a razor-sharp one-thousandth of a second. Alongside the processing fix, I overhauled the raker profiles from flat shapes into true downstream-slanted fins using a two-slope geometric matrix that features a gentle leading edge paired with a steep trailing edge. This combination of tighter time tracking and accurate geometry paid off completely, with the high-fidelity engine locking in a mathematically verified 100% filtration efficiency yield and proving that the bio-inspired boundary layer forces can successfully override downward suction to execute clean ricochet separation.

Honestly, working through these complex physics anomalies and structuring the data loops has made things click in a way they never had before, and I am really starting to feel like I’m getting the hang of programming now. My confidence with Python is hitting a whole new level, especially because I have been leveraging AI as an interactive coding partner throughout this entire sprint. Instead of just staring at errors or trying to guess why a boundary layer isn’t registering, I use the AI to brainstorm script architectures, debug tricky syntax bottlenecks, and deeply understand how to properly execute those micro-stepping intervals. It honestly feels like having a senior developer sitting right next to me, helping me bridge the gap between the fluid dynamics math in my head and the actual code, which has completely accelerated how fast I can learn and ship clean software.

Replying to @prajithvishnur

0
1
Open comments for this post

42m 42s logged

This project actually started because of a problem I ran into during a previous experiment. I had recently built a working microplastic filter using a homemade castor oil-based ferrofluid, and while it actually worked, it bothered me how much material was wasted in the process. I knew there had to be a cleaner, more sustainable way to separate these particles without constantly burning through physical resources, which is what led me deep into the research of marine biology. That is when I discovered how manta rays use vortical separation inside their gill rakers to filter food out of the ocean without ever clogging. My ultimate goal is to take this digital research and use it to manufacture a real, physical filter one day, but the first step was proving the math could work in a digital environment.
To kick off development, I officially built and launched the core simulation engine inside a script called flow_model.py. The primary challenge here was establishing proper physical scaling, taking a real-world oceanic flow velocity of 31.3 kilometers per hour and accurately converting it down into localized millimeter-per-second computational forces inside the channel. I integrated a sine-wave mathematical function to simulate the unique, bio-inspired vortical fluid behavior that happens when water hits the geometry of the ray’s rakers. The initial tracking code is running incredibly well, calculating smooth coordinate paths for the particles and resolving a full 100mm transit loop in just 0.40 seconds.

This project actually started because of a problem I ran into during a previous experiment. I had recently built a working microplastic filter using a homemade castor oil-based ferrofluid, and while it actually worked, it bothered me how much material was wasted in the process. I knew there had to be a cleaner, more sustainable way to separate these particles without constantly burning through physical resources, which is what led me deep into the research of marine biology. That is when I discovered how manta rays use vortical separation inside their gill rakers to filter food out of the ocean without ever clogging. My ultimate goal is to take this digital research and use it to manufacture a real, physical filter one day, but the first step was proving the math could work in a digital environment.
To kick off development, I officially built and launched the core simulation engine inside a script called flow_model.py. The primary challenge here was establishing proper physical scaling, taking a real-world oceanic flow velocity of 31.3 kilometers per hour and accurately converting it down into localized millimeter-per-second computational forces inside the channel. I integrated a sine-wave mathematical function to simulate the unique, bio-inspired vortical fluid behavior that happens when water hits the geometry of the ray’s rakers. The initial tracking code is running incredibly well, calculating smooth coordinate paths for the particles and resolving a full 100mm transit loop in just 0.40 seconds.

Replying to @prajithvishnur

0
2

Followers

Loading…