diff --git a/.github/workflows/update-search.yml b/.github/workflows/update-search.yml index 13a368f..3555851 100644 --- a/.github/workflows/update-search.yml +++ b/.github/workflows/update-search.yml @@ -10,7 +10,7 @@ on: - '**/*.md' - '**/*.html' - 'scripts/generate_search_db.rb' - - 'scripts/fetch_blog_content.js' + - 'scripts/fetch_github_blog_content.js' - 'scripts/package.json' # Add permissions needed for the workflow @@ -24,8 +24,6 @@ jobs: env: NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_CONFIG_CACHE: ${{ github.workspace }}/.npm - PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: 'true' - PUPPETEER_EXECUTABLE_PATH: '/usr/bin/google-chrome' steps: - uses: actions/checkout@v4 @@ -45,17 +43,7 @@ jobs: cache: 'npm' cache-dependency-path: 'scripts/package.json' registry-url: 'https://registry.npmjs.org' - - - name: Install Chrome and dependencies - run: | - sudo apt-get update - sudo apt-get install -y wget gnupg - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list - sudo apt-get update - sudo apt-get install -y google-chrome-stable - google-chrome --version - + - name: Install Ruby dependencies run: | gem install bundler @@ -68,10 +56,10 @@ jobs: cd scripts npm install - - name: Fetch blog content + - name: Fetch blog content from GitHub repository run: | cd scripts - node fetch_blog_content.js + node fetch_github_blog_content.js - name: Generate search database run: ruby scripts/generate_search_db.rb diff --git a/README.md b/README.md index 2a98fa5..9d814bd 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,8 @@ A static website for the Computational Multiphase Physics Laboratory, built with ├── _layouts # Page templates │ ├── default.html # Base layout │ ├── research.html # Research page layout -│ ├── teaching.html # Teaching page layout +│ ├── teaching.html # Teaching page layout (for main teaching page with course listing) +│ ├── teaching-course.html # Individual course page layout (without sorting functionality) │ └── team.html # Team page layout ├── _research # Research project and publication entries ├── _team # Team member profiles @@ -32,11 +33,12 @@ A static website for the Computational Multiphase Physics Laboratory, built with │ │ ├── research.css # Research page styles │ │ ├── teaching.css # Teaching page styles │ │ ├── team.css # Team page styles -│ │ └── search.css # Search functionality styles +│ │ └── command-palette.css # Command palette styles (⌘/) │ ├── js # JavaScript files │ │ ├── main.js # Main JavaScript -│ │ ├── search.js # Search functionality -│ │ └── search_db.json # Generated search database +│ │ ├── command-data.js # Command palette data and functionality +│ │ ├── shortcut-key.js # Platform detection for shortcuts +│ │ └── search_db.json # Generated search database (used by command palette) │ ├── favicon # Favicon files │ └── img # Image assets │ └── teaching # Teaching images @@ -177,16 +179,16 @@ A static website for the Computational Multiphase Physics Laboratory, built with 1. **Main Teaching Page** - Located at `_teaching/index.md` - Lists all available courses - - Uses the teaching layout + - Uses the `teaching` layout with sorting functionality 2. **Individual Course Pages** - Located in `_teaching/` directory (e.g., `_teaching/2025-Basilisk101-Madrid.md`) - - Use the teaching layout + - Use the `teaching-course` layout (optimized for single course display without sorting functionality) - Follow this basic format: ```markdown --- - layout: teaching + layout: teaching-course title: "Course Title" permalink: /teaching/course-permalink --- @@ -223,29 +225,71 @@ The website includes a powerful search feature that allows users to: - Get instant search results with highlighted matching text - See match percentage for each result - Navigate directly to specific sections using anchor links +- Access search via keyboard shortcut (⌘K on Mac, ctrl+K on Windows) or by clicking the magnifying glass icon in the navigation Search results are prioritized and filtered as follows: 1. Team Members (highest priority) - Direct matches in names - Research interests and affiliations - Social media links and profile information -2. Research Papers +2. Teaching Content + - Course titles and descriptions + - Course details (dates, locations, prerequisites) + - Course schedules and topics +3. Research Papers - Titles and authors - Tags and categories -3. Blog Posts from blogs.comphy-lab.org -4. Regular content (headings and paragraphs) - -Search behavior and restrictions: +4. Blog Posts from [blogs.comphy-lab.org](https://blogs.comphy-lab.org) + - Indexed directly from the GitHub repository (comphy-lab/CoMPhy-Lab-Blogs) + - Only indexes markdown files where the publish flag is not set to false + - Excludes todo markdown files (case-insensitive) + - Updated automatically every 12 hours via GitHub Actions +5. Regular content (headings and paragraphs) + +### Command Palette Functionality +The website includes a command palette feature that provides quick access to actions and navigation through keyboard shortcuts: + +- **Keyboard Shortcut**: Access via ⌘/ on Mac, ctrl+/ on Windows, or by clicking the terminal icon in the navigation +- **Navigation Commands**: Quickly navigate to any section of the website +- **External Link Commands**: Direct access to GitHub, Google Scholar, YouTube, and Bluesky +- **Tool Commands**: Search, scroll to top/bottom, and other utility functions +- **Context-Aware Commands**: Additional commands appear based on current page +- **Search Integration**: Search the site content directly from the command palette +- **Keyboard Navigation**: Use arrow keys to navigate through commands, Enter to select, and Esc to close + +Key features: +- Custom implementation with vanilla JavaScript for better control and performance +- Different visual styling from search to avoid confusion (indigo accent color vs blue for search) +- Grouping of commands by section for easy discoverability +- Shortcuts for common tasks (g h = go home, g r = go to research, etc.) +- Full keyboard navigation with arrow keys, Enter, and Escape +- Integrated search functionality that searches the site content +- Footer with keyboard shortcut hints for better usability + +The command palette is built with: +- Custom vanilla JavaScript implementation +- Responsive and accessible design +- Integration with the site search database for content discovery +- Complete keyboard navigation support + +Files: +- `/assets/js/command-data.js`: Defines all available commands and search database integration +- `/assets/css/command-palette.css`: Styling for the command palette + +Search behavior and features: - Minimum query length: 2 characters -- Shows only top 5 most relevant results -- Requires at least 50% of query words to match -- Prioritizes matches near the start of content -- Properly renders markdown and HTML in results +- Keyboard shortcut (⌘K / ctrl+K) opens a command palette style search interface on all pages +- Magnifying glass icon in navigation opens the search interface when clicked +- Search input in navigation shows the full "⌘K (search)" text by default +- Custom command palette implementation provides a modern command palette experience +- Search results appear instantly as you type +- Results are ranked by relevance and match percentage The search database is automatically generated during the build process by `scripts/generate_search_db.rb`. This script: - Indexes all HTML and markdown content -- Identifies and prioritizes team members and research papers +- Identifies and prioritizes team members, teaching content, and research papers - Extracts tags from research papers +- Processes teaching pages and course details - Fetches and indexes blog posts from blogs.comphy-lab.org - Generates a JSON database used by the search functionality @@ -358,4 +402,29 @@ To submit a PR: 3. Test changes locally 4. Create a PR using the template 5. Link any related issues -6. Wait for review \ No newline at end of file +6. Wait for review + +3. **Blog Content Indexing** + - Blog content from [blogs.comphy-lab.org](https://blogs.comphy-lab.org) is now indexed directly from the GitHub repository + - Source: [comphy-lab/CoMPhy-Lab-Blogs](https://github.com/comphy-lab/CoMPhy-Lab-Blogs) + - Filtering criteria: + - Only indexes markdown files where `publish: false` is NOT set in frontmatter + - Automatically excludes any files with "todo" in the filename (case-insensitive) + - The search index is automatically updated: + - Every 12 hours via GitHub Actions + - When changes are pushed to markdown or HTML files + - Can be manually triggered from the Actions tab + - To manually update the search index locally: + ```bash + # From the project root directory + cd scripts + npm install + node fetch_github_blog_content.js + cd .. + ruby scripts/generate_search_db.rb + ``` + - This approach improves search quality by: + - Accessing the raw markdown directly from the source + - Respecting publish status in frontmatter + - Processing content in a more structured way + - Avoiding web scraping issues or rate limits \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html index 57b0e10..35eb93e 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -15,14 +15,9 @@ .s-header { visibility: visible; } - .s-header__logo img { - max-height: 48px; - width: auto; - } - @@ -54,9 +49,48 @@ - + - + + + + + + + + +
- - - - + + + + + + + + diff --git a/_layouts/research.html b/_layouts/research.html index 1b96d17..829dd78 100644 --- a/_layouts/research.html +++ b/_layouts/research.html @@ -11,10 +11,6 @@ .s-header { visibility: visible; } - .s-header__logo img { - max-height: 48px; - width: auto; - } .research-content h1, .research-content h2 { visibility: visible; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; @@ -79,10 +75,21 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + +
+
+ + + Menu + + + +
+ + +
+
+
+ {% capture lazy_img %}
' %} + {{ content_with_video }} +
+
+ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/_layouts/teaching.html b/_layouts/teaching.html index e7695ab..91181e8 100644 --- a/_layouts/teaching.html +++ b/_layouts/teaching.html @@ -11,10 +11,6 @@ .s-header { visibility: visible; } - .s-header__logo img { - max-height: 48px; - width: auto; - } .teaching-content h1, .teaching-content h2 { visibility: visible; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; @@ -55,9 +51,237 @@ - + - + + + + + + + + - @@ -102,6 +325,39 @@
+ + +
-
+ - - - - + + - + - \ No newline at end of file + \ No newline at end of file diff --git a/_layouts/team.html b/_layouts/team.html index b68e22d..499dd81 100644 --- a/_layouts/team.html +++ b/_layouts/team.html @@ -6,52 +6,23 @@ {{ page.title }} - {{ site.title }} - - - - - - - - - - - - - - + .team-content h1, .team-content h2 { + visibility: visible; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + } + - - - + + + + + - - - - - {% assign content_html = content | markdownify %} - {% assign sections = content_html | split: '' %} - {% assign first_members = first_section[1] | split: ' - {% endif %} - {% endfor %} - @@ -69,6 +40,95 @@ font-display: swap; } + + + + + + + + + + + + + + + + + + + + + @@ -76,6 +136,57 @@
+ + +
@@ -317,5 +473,297 @@

Team, collaborators, and Conference visits

// Rest of your existing DOMContentLoaded code... }); + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_teaching/2025-Basilisk101-Madrid.md b/_teaching/2025-Basilisk101-Madrid.md index 6a381f4..5618b2d 100644 --- a/_teaching/2025-Basilisk101-Madrid.md +++ b/_teaching/2025-Basilisk101-Madrid.md @@ -1,5 +1,5 @@ --- -layout: teaching +layout: teaching-course title: "High-Fidelity Simulations Using Basilisk C" permalink: /teaching/2025-Basilisk101-Madrid --- diff --git a/assets/css/command-palette.css b/assets/css/command-palette.css new file mode 100644 index 0000000..6f5e7ac --- /dev/null +++ b/assets/css/command-palette.css @@ -0,0 +1,497 @@ +/* Custom Command Palette styling */ +.simple-command-palette { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + display: none; +} + +.simple-command-palette-backdrop { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + backdrop-filter: blur(6px); +} + +.simple-command-palette-modal { + position: absolute; + top: 20%; + left: 50%; + transform: translateX(-50%); + width: 640px; + max-width: 90vw; + background-color: #f9f5fb; + border-radius: 12px; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3); + overflow: hidden; + border: 1px solid rgba(104, 35, 109, 0.3); + transition: all 0.3s ease; +} + +#command-palette-input { + width: 100%; + padding: 16px 18px; + border: none; + border-bottom: 2px solid rgba(104, 35, 109, 0.3); + font-size: 16px; + outline: none; + background-color: #fff; + transition: all 0.3s ease; + color: #333; + font-weight: 500; +} + +#command-palette-input:focus { + border-bottom-color: #68236D; + background-color: #fff; +} + +.command-palette-results { + max-height: 60vh; + overflow-y: auto; + padding: 0 4px; + background-color: #f9f5fb; +} + +.command-palette-section { + padding: 10px 0; +} + +.command-palette-section-title { + padding: 6px 16px; + font-size: 12px; + font-weight: bold; + color: #68236D; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.command-palette-commands { + margin-bottom: 8px; +} + +.command-palette-command { + display: flex; + align-items: center; + padding: 10px 16px; + cursor: pointer; + flex-wrap: wrap; + border-radius: 8px; + transition: all 0.2s ease; + margin: 2px 4px; + color: #333; +} + +.command-palette-command:hover, .command-palette-command.selected { + background-color: rgba(104, 35, 109, 0.15); +} + +.command-palette-command.selected { + outline: 2px solid rgba(104, 35, 109, 0.3); + position: relative; + background-color: rgba(104, 35, 109, 0.1); +} + +.command-palette-icon { + flex: 0 0 24px; + margin-right: 14px; + color: #68236D; +} + +.command-palette-title { + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-weight: 500; + color: #333; +} + +.command-palette-shortcut { + flex: 0 0 auto; + padding: 3px 8px; + border-radius: 4px; + background-color: rgba(104, 35, 109, 0.15); + font-size: 12px; + color: #68236D; + font-weight: 600; +} + +.command-palette-excerpt { + flex-basis: 100%; + margin-top: 6px; + margin-left: 38px; + font-size: 13px; + color: #555; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 100%; + line-height: 1.5; +} + +/* Style for search results section */ +.command-palette-section:has(.command-palette-section-title:contains("Search Results")) { + border-top: 1px solid rgba(104, 35, 109, 0.2); + margin-top: 10px; + padding-top: 10px; +} + +.command-palette-no-results { + padding: 20px; + text-align: center; + color: #666; + font-style: italic; +} + +/* Command palette button styling */ +.command-palette-button { + display: flex; + align-items: center; + height: 100%; +} + +.command-wrapper { + display: flex; + align-items: center; + height: 100%; +} + +.command-k-style-btn { + display: flex; + align-items: center; + justify-content: center; + color: #000000; + text-decoration: none; + font-size: 1.6rem; + transition: all 0.3s ease; + padding: 0.8rem 1.6rem; + border-radius: 5px; + background: rgba(255, 255, 255, 0.25); + backdrop-filter: blur(8px); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + border: none; + white-space: nowrap; + gap: 6px; + font-weight: 500; + cursor: pointer; + height: 40px; /* Set a fixed height to match navigation links */ + margin: auto 0; /* Center vertically in the container */ +} + +.command-k-style-btn:hover { + background: rgba(255, 255, 255, 0.35); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15); +} + +.command-k-style-btn:focus, +.command-k-style-btn.focused { + outline: 2px solid rgba(104, 35, 109, 0.5); + outline-offset: 1px; +} + +.command-k-style-btn .search-icon { + margin-left: 4px; + font-size: 1em; + color: #000000; +} + +.command-k-style-btn .default-theme-text, +.command-k-style-btn .mac-theme-text { + font-weight: 500; + color: #000000; +} + +/* Hide previous button styling */ +.command-palette-button .btn { + display: none; +} + +/* Hide one of the shortcut texts depending on platform */ +.mac-theme-text, .default-theme-text { + display: none; +} + +/* Mobile styling for command palette button */ +@media screen and (max-width: 768px) { + .command-palette-button { + margin: 0.8rem 0; + width: 100%; + } + + .command-k-style-btn { + width: 100%; + justify-content: center; + padding: 0.8rem; + } + + .simple-command-palette-modal { + width: 95vw; + max-width: 95vw; + top: 15%; + } + + .command-palette-excerpt { + display: none; /* Hide excerpts on mobile to save space */ + } +} + +/* Dark mode styling */ +@media (prefers-color-scheme: dark) { + .simple-command-palette-modal { + background-color: #2d1e30; + color: #fff; + border-color: rgba(104, 35, 109, 0.3); + } + + #command-palette-input { + background-color: #3a2a3d; + color: #fff; + border-bottom-color: rgba(104, 35, 109, 0.5); + } + + #command-palette-input:focus { + border-bottom-color: rgba(104, 35, 109, 0.8); + background-color: #3a2a3d; + } + + .command-palette-results { + background-color: #2d1e30; + } + + .command-palette-section-title { + color: #d4a5db; + } + + .command-palette-command { + color: #f0f0f0; + } + + .command-palette-command:hover, .command-palette-command.selected { + background-color: rgba(104, 35, 109, 0.3); + } + + .command-palette-command.selected { + background-color: rgba(104, 35, 109, 0.25); + } + + .command-palette-icon { + color: #d4a5db; + } + + .command-palette-title { + color: #f0f0f0; + } + + .command-palette-shortcut { + background-color: rgba(104, 35, 109, 0.3); + color: #f0f0f0; + } + + .command-palette-excerpt { + color: #ccc; + } + + .command-palette-section:has(.command-palette-section-title:contains("Search Results")) { + border-top-color: rgba(104, 35, 109, 0.3); + } + + .command-palette-no-results { + color: #ccc; + } + + /* Dark mode for the command-k-style button */ + .command-k-style-btn { + background: rgba(255, 255, 255, 0.1); + color: #f0f0f0; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + } + + .command-k-style-btn:hover { + background: rgba(255, 255, 255, 0.15); + } + + .command-k-style-btn:focus, + .command-k-style-btn.focused { + outline: 2px solid rgba(212, 165, 219, 0.6); + } + + .command-k-style-btn .search-icon { + color: #000000; + } + + .command-k-style-btn .default-theme-text, + .command-k-style-btn .mac-theme-text { + color: #000000; + } +} + +/* Custom styles for the shortcut help modal */ +.shortcut-help-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.7); + z-index: 2000; + display: flex; + justify-content: center; + align-items: center; +} + +.shortcut-help-content { + background-color: #f9f5fb; + border-radius: 12px; + padding: 24px; + max-width: 600px; + max-height: 80vh; + overflow: auto; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.3); + border: 1px solid rgba(104, 35, 109, 0.3); + color: #333; +} + +.shortcut-help-content h2 { + margin-top: 0; + color: #68236D; +} + +.shortcut-help-content table { + width: 100%; + border-collapse: collapse; + margin-bottom: 1rem; +} + +.shortcut-help-content th, +.shortcut-help-content td { + text-align: left; + padding: 10px; + border-bottom: 1px solid rgba(104, 35, 109, 0.2); +} + +.shortcut-help-content kbd { + display: inline-block; + padding: 3px 6px; + font-size: 0.9em; + line-height: 1.4; + color: #68236D; + background-color: rgba(104, 35, 109, 0.15); + border: 1px solid rgba(104, 35, 109, 0.3); + border-radius: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + margin: 0 2px; + font-family: inherit; + font-weight: 600; +} + +.shortcut-help-footer { + margin-top: 24px; + text-align: center; +} + +.shortcut-help-footer button { + padding: 8px 16px; + background-color: #68236D; + color: white; + border: none; + border-radius: 6px; + cursor: pointer; + font-size: 14px; + transition: all 0.2s ease; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1); + font-weight: 500; +} + +.shortcut-help-footer button:hover { + background-color: #7d2982; + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15); +} + +@media (prefers-color-scheme: dark) { + .shortcut-help-content { + background-color: #2d1e30; + color: #f0f0f0; + border-color: rgba(104, 35, 109, 0.3); + } + + .shortcut-help-content h2 { + color: #d4a5db; + } + + .shortcut-help-content th, + .shortcut-help-content td { + border-bottom-color: rgba(104, 35, 109, 0.3); + } + + .shortcut-help-content kbd { + color: #f0f0f0; + background-color: rgba(104, 35, 109, 0.25); + border-color: rgba(104, 35, 109, 0.4); + } + + .shortcut-help-footer button:hover { + background-color: #8d3092; + } +} + +.command-palette-footer { + display: flex; + justify-content: center; + align-items: center; + padding: 12px; + background-color: rgba(104, 35, 109, 0.06); + border-top: 1px solid rgba(104, 35, 109, 0.15); + gap: 16px; + flex-wrap: wrap; +} + +.command-palette-footer-item { + display: flex; + align-items: center; + color: #555; + font-size: 13px; +} + +.command-palette-footer kbd { + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 22px; + height: 22px; + padding: 0 5px; + background-color: rgba(104, 35, 109, 0.15); + border: 1px solid rgba(104, 35, 109, 0.3); + border-radius: 4px; + color: #68236D; + margin: 0 3px; + font-size: 12px; + line-height: 1; + font-family: system-ui, -apple-system, sans-serif; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + font-weight: 600; +} + +@media (prefers-color-scheme: dark) { + .command-palette-footer { + background-color: rgba(104, 35, 109, 0.1); + border-top-color: rgba(104, 35, 109, 0.3); + } + + .command-palette-footer-item { + color: #ddd; + } + + .command-palette-footer kbd { + background-color: rgba(104, 35, 109, 0.25); + border-color: rgba(104, 35, 109, 0.4); + color: #f0f0f0; + } +} \ No newline at end of file diff --git a/assets/css/search.css b/assets/css/search.css deleted file mode 100644 index 9c6c03f..0000000 --- a/assets/css/search.css +++ /dev/null @@ -1,210 +0,0 @@ -/* Search Styles */ -.search-container { - position: relative; - margin-left: 0.1rem; -} - -.search-wrapper { - position: relative; - display: flex; - align-items: center; -} - -#searchInput { - width: 50px; - padding: 0.8rem 3rem 0.8rem 1rem; - border: none; - border-radius: 5px; - background: rgba(255, 255, 255, 0.9); - font-size: 1.4rem; - transition: all 0.3s ease; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); -} - -#searchInput:focus { - width: 150px; - outline: none; - background: rgba(255, 255, 255, 1); - box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15); -} - -.search-icon { - position: absolute; - right: 1rem; - color: #666; - font-size: 1.4rem; - margin-left: 8px; -} - -.search-button { - background: none; - border: none; - padding: 0; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - transition: color 0.2s ease; -} - -.search-button:hover .search-icon { - color: #333; -} - -.search-button:focus { - outline: none; -} - -.search-button:focus-visible { - outline: 2px solid #007bff; - border-radius: 4px; -} - -#searchResults { - display: none; - position: absolute; - top: 100%; - right: 0; - width: 350px; - max-height: 500px; - overflow-y: auto; - background: white; - border-radius: 5px; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - z-index: 1000; - margin-top: 0.5rem; - padding: 1rem; -} - -#searchResults:not(:empty) { - display: block; -} - -.search-result { - margin-bottom: 1.5rem; - padding: 1rem; - border-radius: 8px; - background: var(--bg-color); - box-shadow: 0 2px 4px rgba(0,0,0,0.1); -} - -.search-result h3 { - margin: 0 0 0.5rem 0; - font-size: 1.2rem; -} - -.search-result h3 a { - color: var(--primary-color); - text-decoration: none; -} - -.search-result h3 a:hover { - text-decoration: underline; -} - -.result-content { - margin: 0.5rem 0; - font-size: 0.95rem; - line-height: 1.5; -} - -.result-content a { - color: var(--primary-color); - text-decoration: none; -} - -.result-content a:hover { - text-decoration: underline; -} - -.result-content img { - max-width: 100px; - height: auto; - border-radius: 50%; - margin: 0.5rem 0; -} - -.result-type { - display: inline-block; - padding: 0.25rem 0.5rem; - border-radius: 4px; - background: var(--primary-color); - color: white; - font-size: 0.8rem; - margin: 0.5rem 0; -} - -.result-tags { - margin-top: 0.5rem; -} - -.result-tags .tag { - display: inline-block; - padding: 0.2rem 0.5rem; - margin: 0.2rem; - border-radius: 4px; - background: var(--secondary-color); - color: white; - font-size: 0.8rem; -} - -.match-score { - font-size: 0.8rem; - color: var(--text-muted); - margin-top: 0.5rem; -} - -/* Team member specific styles */ -.search-result.team_member { - background: var(--bg-color-alt); - border-left: 4px solid var(--primary-color); -} - -.search-result.team_member .result-content i { - font-size: 1.5em; - margin-right: 0.5rem; - vertical-align: middle; -} - -.search-result.team_member img { - float: left; - margin-right: 1rem; - margin-bottom: 0.5rem; -} - -/* Clear float after team member content */ -.search-result.team_member::after { - content: ""; - display: table; - clear: both; -} - -.search-no-results { - padding: 2rem; - text-align: center; - color: #666; - font-size: 1.4rem; -} - -/* Mobile Responsive Search */ -@media screen and (max-width: 768px) { - .search-container { - width: 100%; - margin: 1rem 0; - } - - #searchInput { - width: 100%; - } - - #searchInput:focus { - width: 100%; - } - - #searchResults { - width: 100%; - max-height: 400px; - left: 0; - right: 0; - } -} diff --git a/assets/css/styles.css b/assets/css/styles.css index 1698fb8..43e5850 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -63,22 +63,23 @@ body { top: 0; width: 100%; height: 80px; - background: rgba(251, 191, 121, 0.25); + background: rgba(104, 35, 109, 0.15); backdrop-filter: blur(8px); z-index: 100; display: flex; justify-content: space-between; align-items: center; padding: 0 3rem; - box-shadow: 0 4px 30px rgba(0, 0, 0, 0.15); + box-shadow: 0 4px 16px rgba(104, 35, 109, 0.2); } .s-header__logo { - height: 50px; + height: 65px; } .s-header__logo img { height: 100%; + max-height: 65px; width: auto; } @@ -128,10 +129,17 @@ body { .s-header__nav-list { display: flex; - gap: 2rem; + gap: 0.8rem; list-style: none; margin: 0; padding: 0; + align-items: center; +} + +.s-header__nav-list li { + display: flex; + align-items: center; + height: 100%; } .s-header__nav-list a { @@ -144,6 +152,9 @@ body { background: rgba(255, 255, 255, 0.25); backdrop-filter: blur(8px); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + display: flex; + align-items: center; + height: 40px; } .s-header__nav-list a:hover { @@ -152,15 +163,50 @@ body { box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15); } +/* Special styling for the Bluesky icon */ +.s-header__nav-list li[style="background: none;"] a { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; +} + .s-header__nav-close-btn { display: none; position: absolute; top: 2rem; right: 2rem; - color: var(--color-text); + color: #000000; text-decoration: none; font-size: 1.6rem; - margin-left: 2rem; + transition: all 0.3s ease; + padding: 0.8rem 1.6rem; + border-radius: 5px; + background: rgba(255, 255, 255, 0.25); + backdrop-filter: blur(8px); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + margin-left: 0.8rem; +} + +.s-header__nav-close-btn:hover { + background: rgba(255, 255, 255, 0.35); + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15); +} + +/* Dark mode styling */ +@media (prefers-color-scheme: dark) { + /* Dark mode for the navigation close button */ + .s-header__nav-close-btn { + background: rgba(255, 255, 255, 0.1); + color: #000000; /* Keep text black in dark mode too to match command palette */ + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); + } + + .s-header__nav-close-btn:hover { + background: rgba(255, 255, 255, 0.15); + } } /* Intro Section */ @@ -625,26 +671,55 @@ body { .s-header__nav-list { flex-direction: column; width: 100%; + align-items: flex-start; } .s-header__nav-list li { margin: 1rem 0; + height: auto; + width: 100%; } .s-header__nav-list a { - display: block; + display: flex; padding: 1rem 0; font-size: 1.8rem; background: none; box-shadow: none; width: 100%; text-align: center; + justify-content: center; + height: auto; } .s-header__nav-list a:hover { background: rgba(255, 255, 255, 0.35); } + /* Special handling for Bluesky icon in mobile view */ + .s-header__nav-list li[style="background: none;"] { + display: flex; + justify-content: center; + width: 100%; + } + + .s-header__nav-list li[style="background: none;"] a { + width: auto; + justify-content: center; + } + + /* Mobile command palette button */ + .command-palette-button { + width: 100%; + margin: 1rem 0; + } + + .command-k-style-btn { + width: 100%; + height: auto; + padding: 1rem 0; + } + .s-about__grid { grid-template-columns: 1fr; gap: 4rem; @@ -1962,4 +2037,42 @@ body { .position-section h3 { font-size: 1.6rem; } +} + +/* Ensure consistent height and alignment for all header items including icons */ +.s-header__nav-list li[style="background: none;"] { + display: flex; + align-items: center; + height: 100%; +} + +.s-header__nav-list li[style="background: none;"] a { + display: flex; + align-items: center; + justify-content: center; + height: 40px; + width: 40px; +} + +/* Ensure the Bluesky icon is centered */ +.s-header__nav-list .fa-bluesky { + display: flex; + align-items: center; + justify-content: center; +} + +/* Ensure all nav links have consistent height */ +.s-header__nav-list a { + color: #1a1a1a; + text-decoration: none; + font-size: 1.6rem; + transition: all 0.3s ease; + padding: 0.8rem 1.6rem; + border-radius: 5px; + background: rgba(255, 255, 255, 0.25); + backdrop-filter: blur(8px); + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); + display: flex; + align-items: center; + height: 40px; } \ No newline at end of file diff --git a/assets/js/command-data.js b/assets/js/command-data.js new file mode 100644 index 0000000..2d726c6 --- /dev/null +++ b/assets/js/command-data.js @@ -0,0 +1,533 @@ +// Command data for website command palette +(function() { + console.log('Loading command data'); + + // Define the command data + window.commandData = [ + // Navigation commands + { + id: "home", + title: "Go to Home", + handler: () => { window.location.href = '/'; }, + section: "Navigation", + icon: '' + }, + { + id: "team", + title: "Go to Team Page", + handler: () => { window.location.href = '/team/'; }, + section: "Navigation", + icon: '' + }, + { + id: "research", + title: "Go to Research Page", + handler: () => { window.location.href = '/research'; }, + section: "Navigation", + icon: '' + }, + { + id: "teaching", + title: "Go to Teaching Page", + handler: () => { window.location.href = '/teaching'; }, + section: "Navigation", + icon: '' + }, + { + id: "join", + title: "Go to Join Us Page", + handler: () => { window.location.href = '/join'; }, + section: "Navigation", + icon: '' + }, + { + id: "blog", + title: "Go to Blog", + handler: () => { window.location.href = 'https://blogs.comphy-lab.org/'; }, + section: "Navigation", + icon: '' + }, + { + id: "back", + title: "Go Back", + handler: () => { window.history.back(); }, + section: "Navigation", + icon: '' + }, + { + id: "forward", + title: "Go Forward", + handler: () => { window.history.forward(); }, + section: "Navigation", + icon: '' + }, + + // External links + { + id: "github", + title: "Visit GitHub", + handler: () => { window.open('https://github.com/comphy-lab', '_blank'); }, + section: "External Links", + icon: '' + }, + { + id: "scholar", + title: "Visit Google Scholar", + handler: () => { window.open('https://scholar.google.com/citations?user=tHb_qZoAAAAJ&hl=en', '_blank'); }, + section: "External Links", + icon: '' + }, + { + id: "youtube", + title: "Visit YouTube Channel", + handler: () => { window.open('https://www.youtube.com/@CoMPhyLab', '_blank'); }, + section: "External Links", + icon: '' + }, + { + id: "bluesky", + title: "Visit Bluesky", + handler: () => { window.open('https://bsky.app/profile/comphy-lab.org', '_blank'); }, + section: "External Links", + icon: '' + }, + + // Tools + { + id: "search", + title: "Search Website", + handler: () => { + // Find and trigger the search function + const searchInput = document.getElementById('searchInput'); + if (searchInput) { + searchInput.focus(); + const searchModal = document.querySelector('.simple-command-palette'); + if (searchModal) { + searchModal.classList.add('visible'); + const searchModalInput = searchModal.querySelector('input'); + if (searchModalInput) searchModalInput.focus(); + } + } + }, + section: "Tools", + icon: '' + }, + { + id: "top", + title: "Scroll to Top", + handler: () => { window.scrollTo({top: 0, behavior: 'smooth'}); }, + section: "Tools", + icon: '' + }, + { + id: "bottom", + title: "Scroll to Bottom", + handler: () => { window.scrollTo({top: document.body.scrollHeight, behavior: 'smooth'}); }, + section: "Tools", + icon: '' + }, + + // Help commands + { + id: "help", + title: "View Keyboard Shortcuts", + handler: () => { window.displayShortcutsHelp(); }, + section: "Help", + icon: '' + }, + { + id: "repository", + title: "View Website Repository", + handler: () => { window.open('https://github.com/comphy-lab/comphy-lab.github.io', '_blank'); }, + section: "Help", + icon: '' + } + ]; + + console.log('Command data loaded with ' + window.commandData.length + ' commands'); + + // Define the displayShortcutsHelp function globally + window.displayShortcutsHelp = function() { + console.log('Displaying shortcut help'); + // Create a modal to show all available shortcuts + const modal = document.createElement('div'); + modal.style.position = 'fixed'; + modal.style.top = '0'; + modal.style.left = '0'; + modal.style.width = '100%'; + modal.style.height = '100%'; + modal.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; + modal.style.zIndex = '2000'; + modal.style.display = 'flex'; + modal.style.justifyContent = 'center'; + modal.style.alignItems = 'center'; + + const content = document.createElement('div'); + content.style.backgroundColor = 'white'; + content.style.borderRadius = '8px'; + content.style.padding = '20px'; + content.style.maxWidth = '600px'; + content.style.maxHeight = '80vh'; + content.style.overflow = 'auto'; + content.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.3)'; + + // Media query for dark mode + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + content.style.backgroundColor = '#333'; + content.style.color = '#fff'; + } + + // Group commands by section + const sections = {}; + window.commandData.forEach(command => { + if (!sections[command.section]) { + sections[command.section] = []; + } + sections[command.section].push(command); + }); + + let html = '

Commands

'; + html += '

Press Ctrl+/ (⌘/ on Mac) to open the command palette

'; + + // Add each section and its commands + Object.keys(sections).forEach(section => { + html += `

${section}

`; + html += ''; + html += ''; + + sections[section].forEach(command => { + html += ` + + `; + }); + + html += '
Command
${command.icon} ${command.title}
'; + }); + + // Add close button + html += '
'; + + content.innerHTML = html; + modal.appendChild(content); + document.body.appendChild(modal); + + // Add event listener to close + document.getElementById('close-shortcuts-help').addEventListener('click', () => { + document.body.removeChild(modal); + }); + + // Close when clicking outside + modal.addEventListener('click', (e) => { + if (e.target === modal) { + document.body.removeChild(modal); + } + }); + }; + + // Search database integration + window.searchDatabaseForCommandPalette = async function(query) { + // Only perform search if query is at least 3 characters long + if (!query || query.length < 3) { + return []; + } + + console.log('Searching database for:', query); + + try { + // Check if we have a searchIndex already loaded in window + if (!window.searchFuse && window.searchData) { + // If we already have search data but no Fuse object + try { + window.searchFuse = new Fuse(window.searchData, { + keys: ['title', 'content', 'tags', 'categories'], + includeScore: true, + threshold: 0.4 + }); + } catch (e) { + console.error('Error creating Fuse instance:', e); + return []; + } + } else if (!window.searchFuse) { + // Try to fetch search database if it doesn't exist yet + try { + const response = await fetch('/assets/js/search_db.json'); + if (response.ok) { + try { + const searchData = await response.json(); + if (!searchData || !Array.isArray(searchData)) { + console.warn('Search database has invalid format'); + return []; + } + window.searchData = searchData; + window.searchFuse = new Fuse(searchData, { + keys: ['title', 'content', 'tags', 'categories'], + includeScore: true, + threshold: 0.4 + }); + } catch (e) { + console.error('Error parsing search database JSON:', e); + return []; + } + } else { + console.warn(`No search database found (${response.status})`); + return []; + } + } catch (e) { + console.error('Error loading search database:', e); + return []; + } + } + + // Perform the search + if (window.searchFuse) { + try { + const results = window.searchFuse.search(query); + + // Return at most 5 results to avoid cluttering the command palette + return results.slice(0, 5).map(result => ({ + id: `search-result-${result.refIndex}`, + title: result.item.title || 'Untitled', + handler: () => { + if (result.item.url) { + window.location.href = result.item.url; + } + }, + section: "Search Results", + icon: '', + excerpt: result.item.excerpt || (result.item.content && result.item.content.substring(0, 100) + '...') || '' + })); + } catch (e) { + console.error('Error performing search with Fuse:', e); + return []; + } + } + } catch (e) { + console.error('Error searching database:', e); + } + + return []; + }; + + // Add page-specific command function + window.addContextCommands = function() { + // Get the current path + const currentPath = window.location.pathname; + let contextCommands = []; + + // Research page specific commands + if (currentPath.includes('/research')) { + contextCommands = [ + { + id: "filter-research", + title: "Filter Research by Tag", + handler: () => { + // Create and display a modal showing all available tags + const modal = document.createElement('div'); + modal.style.position = 'fixed'; + modal.style.top = '0'; + modal.style.left = '0'; + modal.style.width = '100%'; + modal.style.height = '100%'; + modal.style.backgroundColor = 'rgba(0, 0, 0, 0.7)'; + modal.style.zIndex = '2000'; + modal.style.display = 'flex'; + modal.style.justifyContent = 'center'; + modal.style.alignItems = 'center'; + + const content = document.createElement('div'); + content.style.backgroundColor = 'white'; + content.style.borderRadius = '8px'; + content.style.padding = '20px'; + content.style.maxWidth = '600px'; + content.style.maxHeight = '80vh'; + content.style.overflow = 'auto'; + content.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.3)'; + content.setAttribute('tabindex', '-1'); // Make the content focusable for keyboard events + + // Media query for dark mode + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + content.style.backgroundColor = '#333'; + content.style.color = '#fff'; + } + + // Collect all unique tags from the page + const tagElements = document.querySelectorAll('tags span'); + const tags = new Set(); + tagElements.forEach(tag => { + tags.add(tag.textContent); + }); + + let html = '

Filter Research by Tag

'; + html += '
'; + + // Add clickable tag buttons + tags.forEach(tag => { + html += ``; + }); + + html += '
'; + + // Add keyboard navigation info + html += `
+ to navigate + enter to select + esc to close +
`; + + // Add close button + html += '
'; + + content.innerHTML = html; + modal.appendChild(content); + document.body.appendChild(modal); + + // Get all tag buttons + const tagButtons = content.querySelectorAll('.tag-filter-btn'); + let selectedButtonIndex = 0; + + // Function to update the visual selection + const updateSelectedButton = (newIndex) => { + // Remove selection from all buttons + tagButtons.forEach(btn => { + btn.style.outline = 'none'; + btn.style.boxShadow = 'none'; + }); + + // Add selection to the current button + if (tagButtons[newIndex]) { + tagButtons[newIndex].style.outline = '2px solid white'; + tagButtons[newIndex].style.boxShadow = '0 0 5px rgba(255, 255, 255, 0.5)'; + + // Make sure the selected button is visible + tagButtons[newIndex].scrollIntoView({ + behavior: 'smooth', + block: 'nearest' + }); + } + }; + + // Select the first button initially + if (tagButtons.length > 0) { + updateSelectedButton(selectedButtonIndex); + } + + // Add event listeners to tag buttons + tagButtons.forEach((btn, index) => { + // Mouse hover should update selection + btn.addEventListener('mouseenter', () => { + selectedButtonIndex = index; + updateSelectedButton(selectedButtonIndex); + }); + + btn.addEventListener('click', () => { + // Find the actual tag in the document and simulate a click on it + const tagText = btn.textContent; + const matchingTag = Array.from(document.querySelectorAll('tags span')).find( + tag => tag.textContent === tagText + ); + + if (matchingTag) { + // Remove the modal first + document.body.removeChild(modal); + // Then trigger the click + matchingTag.click(); + } + }); + }); + + // Add keyboard navigation + content.addEventListener('keydown', (e) => { + const buttonRows = 4; // Approximate number of buttons per row + const numButtons = tagButtons.length; + + if (e.key === 'Escape') { + // Close the modal + document.body.removeChild(modal); + } else if (e.key === 'Enter') { + // Click the selected button + if (tagButtons[selectedButtonIndex]) { + tagButtons[selectedButtonIndex].click(); + } + } else if (e.key === 'ArrowRight') { + e.preventDefault(); + selectedButtonIndex = (selectedButtonIndex + 1) % numButtons; + updateSelectedButton(selectedButtonIndex); + } else if (e.key === 'ArrowLeft') { + e.preventDefault(); + selectedButtonIndex = (selectedButtonIndex - 1 + numButtons) % numButtons; + updateSelectedButton(selectedButtonIndex); + } else if (e.key === 'ArrowDown') { + e.preventDefault(); + // Move down by approximate number of buttons per row + selectedButtonIndex = Math.min(selectedButtonIndex + buttonRows, numButtons - 1); + updateSelectedButton(selectedButtonIndex); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + // Move up by approximate number of buttons per row + selectedButtonIndex = Math.max(selectedButtonIndex - buttonRows, 0); + updateSelectedButton(selectedButtonIndex); + } + }); + + // Add event listener to close button + document.getElementById('close-tag-filter').addEventListener('click', () => { + document.body.removeChild(modal); + }); + + // Close when clicking outside + modal.addEventListener('click', (e) => { + if (e.target === modal) { + document.body.removeChild(modal); + } + }); + + // Focus the content element to capture keyboard events + content.focus(); + }, + section: "Page Actions", + icon: '' + } + ]; + } + // Team page specific commands + else if (currentPath.includes('/team')) { + contextCommands = [ + { + id: "email-team", + title: "Contact Team", + handler: () => { window.location.href = '/join'; }, + section: "Page Actions", + icon: '' + } + ]; + } + // Teaching page specific commands + else if (currentPath.includes('/teaching')) { + contextCommands = [ + { + id: "sort-courses", + title: "Sort Courses by Date", + handler: () => { + // Trigger sorting function if it exists + if (typeof sortCoursesByDate === 'function') { + sortCoursesByDate(); + } + }, + section: "Page Actions", + icon: '' + } + ]; + } + + // Add context commands if there are any + if (contextCommands.length > 0) { + // Combine context commands with global commands + window.commandData = [...contextCommands, ...window.commandData]; + } + }; + + // Call addContextCommands automatically + document.addEventListener('DOMContentLoaded', function() { + window.addContextCommands(); + }); +})(); \ No newline at end of file diff --git a/assets/js/search.js b/assets/js/search.js deleted file mode 100644 index e79fc75..0000000 --- a/assets/js/search.js +++ /dev/null @@ -1,272 +0,0 @@ -// search.js -document.addEventListener('DOMContentLoaded', () => { - const searchInput = document.getElementById('searchInput'); - const searchResults = document.getElementById('searchResults'); - let searchDatabase = null; - - // Get the base URL from meta tag if it exists - const baseUrl = document.querySelector('meta[name="base-url"]')?.content || ''; - - // Load the search database - fetch(`${baseUrl}/assets/js/search_db.json`) - .then(response => response.json()) - .then(data => { - searchDatabase = data; - console.log(`Loaded search database with ${data.length} entries`); - }) - .catch(error => { - console.error('Error loading search database:', error); - }); - - // Calculate match percentage - function calculateMatchPercentage(text, query) { - if (!text) return 0; - text = text.toLowerCase(); - query = query.toLowerCase(); - - // Split into words and remove empty strings - const queryWords = query.split(/\s+/).filter(w => w.length > 0); - const textWords = text.split(/\s+/).filter(w => w.length > 0); - - // Exact phrase match gets highest score - if (text.includes(query)) { - return 100; - } - - // Calculate word matches with strict word boundaries - let matchedWords = 0; - let titleBonus = 0; - let positionPenalty = 0; - - queryWords.forEach((qWord, index) => { - // Check for word boundaries to avoid partial matches - const wordBoundaryRegex = new RegExp(`\\b${qWord}\\b`, 'i'); - const matchFound = textWords.some((tWord, tIndex) => { - if (wordBoundaryRegex.test(tWord)) { - // Give bonus for matches near the start - if (tIndex < 3) { - titleBonus += 15; - } - // Add position-based penalty - positionPenalty += tIndex; - return true; - } - return false; - }); - - if (matchFound) { - matchedWords++; - } - }); - - // Calculate base score - const wordMatch = (matchedWords / queryWords.length) * 100; - - // Apply position penalty (reduces score for matches that appear later in text) - const positionFactor = Math.max(0, 1 - (positionPenalty / (textWords.length * 2))); - - // Combine scores with weights - let finalScore = (wordMatch * 0.6) + (titleBonus * 0.4); - finalScore *= positionFactor; - - // Require at least half of query words to match for any score - if (matchedWords < queryWords.length / 2) { - return 0; - } - - return Math.min(100, Math.round(finalScore)); - } - - // Search function with improved relevance scoring - function searchContent(query) { - if (!searchDatabase || !query.trim()) return []; - - // Minimum query length check - if (query.trim().length < 2) return []; - - const results = searchDatabase - .map(item => { - // Calculate matches in different fields - const titleMatch = calculateMatchPercentage(item.title, query); - const contentMatch = calculateMatchPercentage(item.content, query); - const tagsMatch = item.tags ? calculateMatchPercentage(item.tags.join(' '), query) : 0; - - // Weight different match types - let matchScore = Math.max( - titleMatch * 1.5, // Title matches are more important - contentMatch * 0.8, // Content matches less important - tagsMatch * 1.2 // Tag matches somewhat important - ); - - // Apply type-specific bonuses - if (item.type === 'team_member') { - matchScore *= 1.5; // Boost team member matches - } - - // Apply priority multiplier (1.0 to 1.5) - const priorityMultiplier = item.priority ? (1.5 - (item.priority - 1) * 0.25) : 1.0; - matchScore *= priorityMultiplier; - - return { - ...item, - matchScore: Math.min(100, Math.round(matchScore)) - }; - }) - .filter(item => item.matchScore > 40) // Only show items with good matches - .sort((a, b) => { - // First sort by priority if available - const priorityDiff = (a.priority || 3) - (b.priority || 3); - if (priorityDiff !== 0) return priorityDiff; - - // Then sort by match score - return b.matchScore - a.matchScore; - }) - .slice(0, 5); // Limit to top 5 results - - return results; - } - - // Format search results - function showResults(results, query) { - if (!searchResults) return; - - if (!query.trim()) { - searchResults.innerHTML = ''; - return; - } - - // Helper function to safely render HTML content - function renderContent(content, type) { - // Create a temporary div to safely parse HTML - const div = document.createElement('div'); - - // Handle markdown-style links [text](url) - content = content.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, url) => { - return `${text}`; - }); - - // Handle markdown-style bold **text** - content = content.replace(/\*\*([^*]+)\*\*/g, '$1'); - - // Handle markdown-style italic *text* - content = content.replace(/\*([^*]+)\*/g, '$1'); - - // Handle HTML tags for icons (common in team member entries) - if (type === 'team_member') { - div.innerHTML = content; - // Keep only allowed tags and attributes - const allowedTags = ['i', 'a', 'strong', 'em', 'img']; - const allowedAttributes = { - 'i': ['class', 'style'], - 'a': ['href', 'target'], - 'img': ['src', 'alt', 'width', 'height', 'loading', 'class'] - }; - - const clean = (node) => { - if (node.nodeType === 3) return; // Text node - if (!allowedTags.includes(node.tagName.toLowerCase())) { - node.replaceWith(document.createTextNode(node.textContent)); - return; - } - const attrs = Array.from(node.attributes); - attrs.forEach(attr => { - if (!allowedAttributes[node.tagName.toLowerCase()]?.includes(attr.name)) { - node.removeAttribute(attr.name); - } - }); - Array.from(node.children).forEach(clean); - }; - - Array.from(div.children).forEach(clean); - return div.innerHTML; - } - - // For other types, escape HTML but render markdown - div.textContent = content; - return div.innerHTML; - } - - const resultsList = results.map(result => { - const title = renderContent(result.title, result.type); - const content = renderContent(result.content, result.type); - - return ` -
-

${title}

-
${content}
- ${result.type === 'team_member' ? 'Team Member' : ''} - ${result.tags ? `
${result.tags.map(tag => `${tag}`).join('')}
` : ''} -
Match: ${result.matchScore}%
-
- `; - }).join(''); - - searchResults.innerHTML = resultsList || '

No results found

'; - } - - // Search input handler - if (searchInput) { - let debounceTimeout; - - // Function to perform search - function performSearch() { - const query = searchInput.value; - const results = searchContent(query); - showResults(results, query); - } - - // Input event handler with debounce - searchInput.addEventListener('input', (e) => { - clearTimeout(debounceTimeout); - debounceTimeout = setTimeout(performSearch, 300); - }); - - // Handle clicks outside search area - document.addEventListener('click', (e) => { - // Check if click is outside both search input and results - if (!searchInput.contains(e.target) && !searchResults.contains(e.target)) { - searchResults.innerHTML = ''; // Hide results but keep input value - } - }); - - // Handle result selection - searchResults.addEventListener('click', (e) => { - const resultLink = e.target.closest('a'); - if (resultLink) { - // If a result link was clicked, hide the results but keep the input value - setTimeout(() => { - searchResults.innerHTML = ''; - }, 100); // Small delay to ensure the link is followed - } - }); - - // Prevent clicks within search results from closing the dropdown - searchResults.addEventListener('click', (e) => { - e.stopPropagation(); - }); - - // Show results when focusing back on search input - searchInput.addEventListener('focus', () => { - if (searchInput.value.trim()) { - performSearch(); - } - }); - - // Add click handler for search button - const searchButton = document.getElementById('searchButton'); - if (searchButton) { - searchButton.addEventListener('click', () => { - searchInput.focus(); - performSearch(); - }); - } - - // Add keyboard handler for search input - searchInput.addEventListener('keypress', (e) => { - if (e.key === 'Enter') { - clearTimeout(debounceTimeout); - performSearch(); - } - }); - } -}); \ No newline at end of file diff --git a/assets/js/search_db.json b/assets/js/search_db.json index 81a2cc1..10ce8d3 100644 --- a/assets/js/search_db.json +++ b/assets/js/search_db.json @@ -427,996 +427,3776 @@ "priority": 3 }, { - "title": "0_ToDo-Blog-public - tags:", - "content": "tags:\n - \"#TODO-master\"Here is a list of things on our to-publish list:\nStokes waves and related topics 📅 2025-03-01 ⏳ 2025-02-05 \nShowcase bubbles, waves: 📅 2025-01-12 \nTo-Do: Blog Posts on Research Papers and Thesis Below is a list of all the papers and the thesis requiring a dedicated blog post.", - "url": "https://blogs.comphy-lab.org/0_ToDo-Blog-public", + "title": "\"High-Fidelity Simulations Using Basilisk C\" - High-Fidelity Simulations Using Basilisk C", + "content": "
\n
\n

Dates

\n

March 10-13, 2025

\n
\n
\n

Location

\n

Universidad Carlos III de Madrid, Spain

\n
\n
\n

Duration

\n

4 days, full-time

\n
\n
", + "url": "/teaching/2025-Basilisk101-Madrid#High-Fidelity%2BSimulations%2BUsing%2BBasilisk%2BC", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - What will you learn?", + "content": "- **Think before you compute!** Understanding the physics before implementation\n- **Writing the first code in Basilisk C** Getting comfortable with the framework\n- **Solving conservation equations** Numerical approaches to fluid dynamics\n- **Interface tracking methods** Capturing multiphase phenomena accurately\n- **Non-Newtonian flows** Modeling complex rheological behaviors", + "url": "/teaching/2025-Basilisk101-Madrid#What%2Bwill%2Byou%2Blearn", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - What will you learn?", + "content": "- **Think before you compute!** Understanding the physics before implementation\n- **Writing the first code in Basilisk C** Getting comfortable with the framework\n- **Solving conservation equations** Numerical approaches to fluid dynamics\n- **Interface tracking methods** Capturing multiphase phenomena accurately\n- **Non-Newtonian flows** Modeling complex rheological behaviors", + "url": "/teaching/2025-Basilisk101-Madrid#What%2Bwill%2Byou%2Blearn", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Course Description", + "content": "This intensive 4-day course provides a comprehensive introduction to high-fidelity simulations using Basilisk C, a powerful computational framework for fluid dynamics. Participants will learn to implement and solve complex fluid mechanics problems with an emphasis on multiphase flows, interface dynamics, and non-Newtonian rheology.\n\nThe course combines theoretical lectures with extensive hands-on sessions, allowing participants to immediately apply concepts through guided coding exercises. By the end of the course, you'll be able to develop your own simulations for a variety of fluid dynamics applications.", + "url": "/teaching/2025-Basilisk101-Madrid#Course%2BDescription", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Course Description", + "content": "This intensive 4-day course provides a comprehensive introduction to high-fidelity simulations using Basilisk C, a powerful computational framework for fluid dynamics. Participants will learn to implement and solve complex fluid mechanics problems with an emphasis on multiphase flows, interface dynamics, and non-Newtonian rheology.", + "url": "/teaching/2025-Basilisk101-Madrid#Course%2BDescription", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Course Description", + "content": "The course combines theoretical lectures with extensive hands-on sessions, allowing participants to immediately apply concepts through guided coding exercises. By the end of the course, you'll be able to develop your own simulations for a variety of fluid dynamics applications.", + "url": "/teaching/2025-Basilisk101-Madrid#Course%2BDescription", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Think before you compute", + "content": "- **10:00-11:30** | **Lecture (1a)**\n - Conservation laws and the numerical solution of the Navier–Stokes equations\n- **11:45-13:00** | **Lecture (1b)**\n - Advection-diffusion, diffusion-reaction, and other transport equations\n - *Brief intro to Basilisk coding framework*", + "url": "/teaching/2025-Basilisk101-Madrid#Think%2Bbefore%2Byou%2Bcompute", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Think before you compute", + "content": "- **10:00-11:30** | **Lecture (1a)**\n - Conservation laws and the numerical solution of the Navier–Stokes equations\n- **11:45-13:00** | **Lecture (1b)**\n - Advection-diffusion, diffusion-reaction, and other transport equations\n - *Brief intro to Basilisk coding framework*", + "url": "/teaching/2025-Basilisk101-Madrid#Think%2Bbefore%2Byou%2Bcompute", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - First coding steps", + "content": "- **15:00-18:00** | **Hybrid Session**\n - Implementing basic transport equations in Basilisk C\n - *Whiteboard + coding*", + "url": "/teaching/2025-Basilisk101-Madrid#First%2Bcoding%2Bsteps", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - First coding steps", + "content": "- **15:00-18:00** | **Hybrid Session**\n - Implementing basic transport equations in Basilisk C\n - *Whiteboard + coding*", + "url": "/teaching/2025-Basilisk101-Madrid#First%2Bcoding%2Bsteps", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Coding like a pro", + "content": "- **10:00-11:15** | **Hackathon (1c)**\n - Using headers in Basilisk, modular code structure, problem setup, and compilation\n- **11:30-13:00** | **Hackathon Continued**\n - Expanding on the morning tasks and code debugging", + "url": "/teaching/2025-Basilisk101-Madrid#Coding%2Blike%2Ba%2Bpro", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Coding like a pro", + "content": "- **10:00-11:15** | **Hackathon (1c)**\n - Using headers in Basilisk, modular code structure, problem setup, and compilation\n- **11:30-13:00** | **Hackathon Continued**\n - Expanding on the morning tasks and code debugging", + "url": "/teaching/2025-Basilisk101-Madrid#Coding%2Blike%2Ba%2Bpro", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Interface tracking methods", + "content": "- **10:00-11:30** | **Lecture (2a)**\n - Interface tracking methods (VoF, level set, phase-field approaches) and numerical strategies\n- **11:45-13:00** | **Hackathon (2b)**\n - Hands-on tutorial applying interface-tracking to a simple two-phase problem", + "url": "/teaching/2025-Basilisk101-Madrid#Interface%2Btracking%2Bmethods", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Interface tracking methods", + "content": "- **10:00-11:30** | **Lecture (2a)**\n - Interface tracking methods (VoF, level set, phase-field approaches) and numerical strategies\n- **11:45-13:00** | **Hackathon (2b)**\n - Hands-on tutorial applying interface-tracking to a simple two-phase problem", + "url": "/teaching/2025-Basilisk101-Madrid#Interface%2Btracking%2Bmethods", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Seminar", + "content": "- **13:30-14:00** | **Department seminar (2c)**\n - A note on the thrust of airfoils by [José Mnauel Gordillo](https://scholar.google.com/citations?user=14wOsewAAAAJ&hl=en&inst=5726176096060060532&oi=ao)", + "url": "/teaching/2025-Basilisk101-Madrid#Seminar", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Seminar", + "content": "- **13:30-14:00** | **Department seminar (2c)**\n - A note on the thrust of airfoils by [José Mnauel Gordillo](https://scholar.google.com/citations?user=14wOsewAAAAJ&hl=en&inst=5726176096060060532&oi=ao)", + "url": "/teaching/2025-Basilisk101-Madrid#Seminar", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Non-Newtonian flows", + "content": "- **15:00-16:00** | **Lecture (3a)**\n - Non-Newtonian flows: viscoplasticity and viscoelasticity\n- **16:15-18:00** | **Hackathon (3b)**\n - Coding exercises for shear-thinning, viscoplastic, or viscoelastic fluids", + "url": "/teaching/2025-Basilisk101-Madrid#Non-Newtonian%2Bflows", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Non-Newtonian flows", + "content": "- **15:00-16:00** | **Lecture (3a)**\n - Non-Newtonian flows: viscoplasticity and viscoelasticity\n- **16:15-18:00** | **Hackathon (3b)**\n - Coding exercises for shear-thinning, viscoplastic, or viscoelastic fluids", + "url": "/teaching/2025-Basilisk101-Madrid#Non-Newtonian%2Bflows", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Special topics", + "content": "- **10:00-11:30** | **Lecture (4a)**\n - Special Topics: multilayer solver, lubrication equation, Marangoni flows, manifold death, and research-oriented examples\n- **11:45-13:00** | **Hackathon (4b)**\n - Focused tutorials on the special topics introduced in the lecture\n- **15:00-16:30** | **Lecture (4c)**\n - Open discussion, deeper dives into advanced features, final code reviews, and next steps\n\n---", + "url": "/teaching/2025-Basilisk101-Madrid#Special%2Btopics", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Special topics", + "content": "- **10:00-11:30** | **Lecture (4a)**\n - Special Topics: multilayer solver, lubrication equation, Marangoni flows, manifold death, and research-oriented examples\n- **11:45-13:00** | **Hackathon (4b)**\n - Focused tutorials on the special topics introduced in the lecture\n- **15:00-16:30** | **Lecture (4c)**\n - Open discussion, deeper dives into advanced features, final code reviews, and next steps", + "url": "/teaching/2025-Basilisk101-Madrid#Special%2Btopics", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Prerequisites", + "content": "- Basic knowledge of fluid mechanics\n- Experience with programming (any language, C preferred)\n- Understanding of partial differential equations\n- Laptop with ability to compile C code", + "url": "/teaching/2025-Basilisk101-Madrid#Prerequisites", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Prerequisites", + "content": "- Basic knowledge of fluid mechanics\n- Experience with programming (any language, C preferred)\n- Understanding of partial differential equations\n- Laptop with ability to compile C code", + "url": "/teaching/2025-Basilisk101-Madrid#Prerequisites", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Registration", + "content": "For registration details, please contact \n
\n bubbles@ing.uc3m.es\n \n
\n
\n vatsalsy@comphy-lab.org\n \n
\n\n\n\n
\n \n Course GitHub Repository\n \n
", + "url": "/teaching/2025-Basilisk101-Madrid#Registration", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "\"High-Fidelity Simulations Using Basilisk C\" - Registration", + "content": "For registration details, please contact \n
\n bubbles@ing.uc3m.es\n \n
\n
\n vatsalsy@comphy-lab.org\n \n
", + "url": "/teaching/2025-Basilisk101-Madrid#Registration", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "Teaching - Teaching", + "content": "Welcome to the CoMPhy Lab's educational resources. Apart from the university courses, we aim to develop and offer a range of workshops and tutorials on modern computational methods for multiphase flows and high-fidelity simulations.\n\n
\n
\n \"Basilisk\n
\n

High-Fidelity Simulations Using Basilisk C

\n
\n Universidad Carlos III de Madrid\n
\n
\n March 10-13, 2025\n
\n

\n A comprehensive course on using Basilisk C for simulating multiphase flows, interface tracking, and solving conservation equations. Learn to tackle complex fluid dynamics problems with high-fidelity numerical methods.\n

\n View Course\n
\n
\n
", + "url": "/teaching/#Teaching", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "Teaching - Teaching", + "content": "Welcome to the CoMPhy Lab's educational resources. Apart from the university courses, we aim to develop and offer a range of workshops and tutorials on modern computational methods for multiphase flows and high-fidelity simulations.", + "url": "/teaching/#Teaching", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "Teaching - About Our Teaching Philosophy", + "content": "At CoMPhy Lab, we believe in hands-on learning and deep understanding of computational methods. Our courses combine theoretical foundations with practical implementation, allowing students to develop both conceptual understanding and technical skills.\n\nOur teaching approach emphasizes:\n\n- **Think before you compute**: Understanding the underlying physics before implementation\n- **Modular code structure**: Building maintainable and extensible computational tools\n- **Advanced numerical methods**: Mastering state-of-the-art techniques for complex problems\n- **Open science**: Sharing knowledge and tools with the scientific community. Checkout \n\nIf you're interested in hosting a course or workshop with CoMPhy Lab, please [contact us](/join) for collaboration opportunities.", + "url": "/teaching/#About%2BOur%2BTeaching%2BPhilosophy", + "type": "teaching_content", + "priority": 2 + }, + { + "title": "Teaching - About Our Teaching Philosophy", + "content": "At CoMPhy Lab, we believe in hands-on learning and deep understanding of computational methods. Our courses combine theoretical foundations with practical implementation, allowing students to develop both conceptual understanding and technical skills.", + "url": "/teaching/#About%2BOur%2BTeaching%2BPhilosophy", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "Teaching - About Our Teaching Philosophy", + "content": "- **Think before you compute**: Understanding the underlying physics before implementation\n- **Modular code structure**: Building maintainable and extensible computational tools\n- **Advanced numerical methods**: Mastering state-of-the-art techniques for complex problems\n- **Open science**: Sharing knowledge and tools with the scientific community. Checkout ", + "url": "/teaching/#About%2BOur%2BTeaching%2BPhilosophy", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "Teaching - About Our Teaching Philosophy", + "content": "If you're interested in hosting a course or workshop with CoMPhy Lab, please [contact us](/join) for collaboration opportunities.", + "url": "/teaching/#About%2BOur%2BTeaching%2BPhilosophy", + "type": "teaching_paragraph", + "priority": 2 + }, + { + "title": "404! But, there are no dragons either.", + "content": "Seems like you didn't find what you wanted. But don't worry - we've got plenty of exciting projects \n waiting for you to explore!\n Check Out:", + "url": "/404.html#404%2BBut%2Bthere%2Bare%2Bno%2Bdragons%2Beither", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "404! But, there are no dragons either.", + "content": "Take Me Home", + "url": "/404.html#404%2BBut%2Bthere%2Bare%2Bno%2Bdragons%2Beither", + "type": "text", + "links": [ + "" + ], + "priority": 3 + }, + { + "title": "404! But, there are no dragons either.", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/404.html#404%2BBut%2Bthere%2Bare%2Bno%2Bdragons%2Beither", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "About", + "content": "If you are not redirected automatically, please click here.", + "url": "/about.html#About", + "type": "text", + "links": [ + "#about" + ], + "priority": 3 + }, + { + "title": "Contact", + "content": "Redirecting to Join Us page...", + "url": "/contact/index.html#Contact", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Contact", + "content": "If you are not redirected automatically, click here.", + "url": "/contact/index.html#Contact", + "type": "text", + "links": [ + "join" + ], + "priority": 3 + }, + { + "title": "Contact", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/contact/index.html#Contact", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Contact", + "content": "Redirecting to Join Us page... If you are not redirected automatically, click here.", + "url": "/contact/index.html#Contact", + "type": "section", + "links": [ + "join" + ], + "priority": 3 + }, + { + "title": "Computational Multiphase \n Physics (CoMPhy) Lab", + "content": "Picture: Worthington jet formed due to bursting bubble.", + "url": "/index.html#Computational%2BMultiphase%2BPhysics%2BCoMPhy%2BLab", + "type": "text", + "links": [ + "research/#7" + ], + "priority": 3 + }, + { + "title": "Computational Multiphase \n Physics (CoMPhy) Lab", + "content": "Featured Research", + "url": "/index.html#Computational%2BMultiphase%2BPhysics%2BCoMPhy%2BLab", + "type": "text", + "links": [ + "#featured" + ], + "priority": 3 + }, + { + "title": "Featured Research", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/index.html#Featured%2BResearch", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "PhD Positions", + "content": "We are always looking for enthusiastic PhD students interested in:", + "url": "/join/index.html#PhD%2BPositions", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "PhD Positions", + "content": "If you are interested, please send your:", + "url": "/join/index.html#PhD%2BPositions", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "PhD Positions", + "content": "to:", + "url": "/join/index.html#PhD%2BPositions", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Master's Projects", + "content": "We have several ongoing projects suitable for master's students. Current opportunities are listed at the project page.", + "url": "/join/index.html#Master%27s%2BProjects", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Master's Projects", + "content": "Contact us to discuss these or other potential projects.", + "url": "/join/index.html#Master%27s%2BProjects", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Master's Projects", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/join/index.html#Master%27s%2BProjects", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "PhD Positions", + "content": "We are always looking for enthusiastic PhD students interested in: High-performance Computing\n Multiphase flows\n Physics-based modeling\n Soft singularities", + "url": "/join/index.html#PhD%2BPositions", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Master's Projects", + "content": "We have several ongoing projects suitable for master's students. Current opportunities are listed at the project page. Contact us to discuss these or other potential projects.", + "url": "/join/index.html#Master%27s%2BProjects", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Demirkır, Ç., Yang, R., Bashkatov, A., Sanjay, V., Lohse, D., & Krug, D. To jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles. Submitted to Phys. Rev. Lett. (2025).", + "content": "", + "url": "/research/index.html#Demirkr%2BYang%2BR%2BBashkatov%2BA%2BSanjay%2BV%2BLohse%2BD%2BKrug%2BD%2BTo%2Bjump%2Bor%2Bnot%2Bto%2Bjump%3A%2BAdhesion%2Band%2Bviscous%2Bdissipation%2Bdictate%2Bthe%2Bdetachment%2Bof%2Bcoalescing%2Bwall-attached%2Bbubbles%2BSubmitted%2Bto%2BPhys%2BRev%2BLett%2B2025", + "type": "paper", + "tags": [ + "Bubbles", + "Coalescence" + ], + "priority": 3 + }, + { + "title": "Dixit, A. K., Oratis, A., Zinelis, K., Lohse, D., & Sanjay, V. Viscoelastic Worthington jets & droplets produced by bursting bubbles. Received positive reviews in J. Fluid Mech. (2025).", + "content": "", + "url": "/research/index.html#Dixit%2BA%2BK%2BOratis%2BA%2BZinelis%2BK%2BLohse%2BD%2BSanjay%2BV%2BViscoelastic%2BWorthington%2Bjets%2Bdroplets%2Bproduced%2Bby%2Bbursting%2Bbubbles%2BReceived%2Bpositive%2Breviews%2Bin%2BJ%2BFluid%2BMech%2B2025", + "type": "paper", + "tags": [ + "Bubbles", + "Non-Newtonian", + "Jets", + "Soft-matter-singularities", + "Drops" + ], + "priority": 3 + }, + { + "title": "Sanjay, V., & Lohse, D. Unifying theory of scaling in drop impact: Forces & maximum spreading diameter. Received positive reviews in Phys. Rev. Lett. (2025).", + "content": "", + "url": "/research/index.html#Sanjay%2BV%2BLohse%2BD%2BUnifying%2Btheory%2Bof%2Bscaling%2Bin%2Bdrop%2Bimpact%3A%2BForces%2Bmaximum%2Bspreading%2Bdiameter%2BReceived%2Bpositive%2Breviews%2Bin%2BPhys%2BRev%2BLett%2B2025", + "type": "paper", + "tags": [ + "Drops", + "Dissipative anamoly", + "Superamphiphobic-surfaces", + "Impact forces" + ], + "priority": 3 + }, + { + "title": "Bashkatov, A., Bürkle, F., Demirkır, Ç., Ding, W., Sanjay, V., Babich, A., Yang, X., Mutschke, G., Czarske, J., Lohse, D., et al. Electrolyte spraying within H₂ bubbles during water electrolysis. Received positive reviews in Nat. Commun. (2025).", + "content": "", + "url": "/research/index.html#Bashkatov%2BA%2BBrkle%2BF%2BDemirkr%2BDing%2BW%2BSanjay%2BV%2BBabich%2BA%2BYang%2BX%2BMutschke%2BG%2BCzarske%2BJ%2BLohse%2BD%2Bet%2Bal%2BElectrolyte%2Bspraying%2Bwithin%2BH%2Bbubbles%2Bduring%2Bwater%2Belectrolysis%2BReceived%2Bpositive%2Breviews%2Bin%2BNat%2BCommun%2B2025", + "type": "paper", + "tags": [ + "Bubbles", + "Jets", + "Coalescence", + "Soft-matter-singularities", + "Drops" + ], + "priority": 3 + }, + { + "title": "[14] Sanjay, V., Zhang, B., Lv, C., & Lohse, D. The role of viscosity on drop impact forces on non-wetting surfaces. J. Fluid Mech., 1004, A6 (2025).", + "content": "", + "url": "/research/index.html#14%2BSanjay%2BV%2BZhang%2BB%2BLv%2BC%2BLohse%2BD%2BThe%2Brole%2Bof%2Bviscosity%2Bon%2Bdrop%2Bimpact%2Bforces%2Bon%2Bnon-wetting%2Bsurfaces%2BJ%2BFluid%2BMech%2B1004%2BA6%2B2025", + "type": "paper", + "tags": [ + "Drops", + "Impact forces", + "Featured" + ], + "priority": 3 + }, + { + "title": "[13] Kayal, L., Sanjay, V., Yewale, N., Kumar, A., & Dasgupta, R. Focusing of concentric free-surface waves. J. Fluid Mech., 1003, A14 (2025).", + "content": "", + "url": "/research/index.html#13%2BKayal%2BL%2BSanjay%2BV%2BYewale%2BN%2BKumar%2BA%2BDasgupta%2BR%2BFocusing%2Bof%2Bconcentric%2Bfree-surface%2Bwaves%2BJ%2BFluid%2BMech%2B1003%2BA14%2B2025", + "type": "paper", + "tags": [ + "Waves", + "Dissipative anamoly" + ], + "priority": 3 + }, + { + "title": "[12] Balasubramanian, A. G., Sanjay, V., Jalaal, M., Vinuesa, R., & Tammisola, O. Bursting bubble in an elastoviscoplastic medium. J. Fluid Mech., 1001, A9 (2024).", + "content": "", + "url": "/research/index.html#12%2BBalasubramanian%2BA%2BG%2BSanjay%2BV%2BJalaal%2BM%2BVinuesa%2BR%2BTammisola%2BO%2BBursting%2Bbubble%2Bin%2Ban%2Belastoviscoplastic%2Bmedium%2BJ%2BFluid%2BMech%2B1001%2BA9%2B2024", + "type": "paper", + "tags": [ + "Bubbles", + "Non-Newtonian", + "Jets", + "Soft-matter-singularities", + "Featured" + ], + "priority": 3 + }, + { + "title": "[11] Sanjay, V., Chantelot, P., & Lohse, D. When does an impacting drop stop bouncing? J. Fluid Mech., 958, A26 (2023).", + "content": "", + "url": "/research/index.html#11%2BSanjay%2BV%2BChantelot%2BP%2BLohse%2BD%2BWhen%2Bdoes%2Ban%2Bimpacting%2Bdrop%2Bstop%2Bbouncing%2BJ%2BFluid%2BMech%2B958%2BA26%2B2023", + "type": "paper", + "tags": [ + "Drops", + "Bouncing", + "Dissipative anamoly" + ], + "priority": 3 + }, + { + "title": "[10] Sanjay, V., Lakshman, S., Chantelot, P., Snoeijer, J. H., & Lohse, D. Drop impact on viscous liquid films. J. Fluid Mech., 958, A25 (2023).", + "content": "", + "url": "/research/index.html#10%2BSanjay%2BV%2BLakshman%2BS%2BChantelot%2BP%2BSnoeijer%2BJ%2BH%2BLohse%2BD%2BDrop%2Bimpact%2Bon%2Bviscous%2Bliquid%2Bfilms%2BJ%2BFluid%2BMech%2B958%2BA25%2B2023", + "type": "paper", + "tags": [ + "Drops", + "Bouncing", + "Superhydrophobic surfaces" + ], + "priority": 3 + }, + { + "title": "➡️ Sanjay, V. Viscous free-surface flows. Ph.D. Thesis, Physics of Fluids, University of Twente (2022).", + "content": "", + "url": "/research/index.html#%2BSanjay%2BV%2BViscous%2Bfree-surface%2Bflows%2BPhD%2BThesis%2BPhysics%2Bof%2BFluids%2BUniversity%2Bof%2BTwente%2B2022", + "type": "paper", + "tags": [ + "Drops", + "Jets", + "Sheets", + "Bubbles", + "Soft-matter-singularities", + "Non-Newtonian" + ], + "priority": 3 + }, + { + "title": "[9] Sanjay, V. Taylor--Culick retractions and the influence of the surroundings. J. Fluid Mech., 948, A14 (2022).", + "content": "", + "url": "/research/index.html#9%2BSanjay%2BV%2BTaylor--Culick%2Bretractions%2Band%2Bthe%2Binfluence%2Bof%2Bthe%2Bsurroundings%2BJ%2BFluid%2BMech%2B948%2BA14%2B2022", + "type": "paper", + "tags": [ + "Sheets", + "Dissipative anamoly", + "Retraction" + ], + "priority": 3 + }, + { + "title": "[8] Zhang, B., Sanjay, V., Shi, S., and Zhao, Y., and Lv, C., and Feng, X.-Q., & Lohse, D. Impact forces of water drops falling on superhydrophobic surfaces. Phys. Rev. Lett., 129(10), 104501 (2022).", + "content": "", + "url": "/research/index.html#8%2BZhang%2BB%2BSanjay%2BV%2BShi%2BS%2Band%2BZhao%2BY%2Band%2BLv%2BC%2Band%2BFeng%2BX-Q%2BLohse%2BD%2BImpact%2Bforces%2Bof%2Bwater%2Bdrops%2Bfalling%2Bon%2Bsuperhydrophobic%2Bsurfaces%2BPhys%2BRev%2BLett%2B12910%2B104501%2B2022", + "type": "paper", + "tags": [ + "Drops", + "Superhydrophobic surfaces", + "Impact forces" + ], + "priority": 3 + }, + { + "title": "[7] Sanjay, V., Lohse, D., & Jalaal, M. Bursting bubble in a viscoplastic medium. J. Fluid Mech., 922, A2 (2021).", + "content": "", + "url": "/research/index.html#7%2BSanjay%2BV%2BLohse%2BD%2BJalaal%2BM%2BBursting%2Bbubble%2Bin%2Ba%2Bviscoplastic%2Bmedium%2BJ%2BFluid%2BMech%2B922%2BA2%2B2021", + "type": "paper", + "tags": [ + "Bubbles", + "Jets", + "Non-Newtonian", + "Soft-matter-singularities" + ], + "priority": 3 + }, + { + "title": "[6] Ramírez-Soto, O., Sanjay, V., Lohse, D., Pham, J. T., & Vollmer, D. Lifting a sessile oil drop from a superamphiphobic surface with an impacting one. Sci. Adv., 6(34), eaba4330 (2020).", + "content": "", + "url": "/research/index.html#6%2BRamrez-Soto%2BO%2BSanjay%2BV%2BLohse%2BD%2BPham%2BJ%2BT%2BVollmer%2BD%2BLifting%2Ba%2Bsessile%2Boil%2Bdrop%2Bfrom%2Ba%2Bsuperamphiphobic%2Bsurface%2Bwith%2Ban%2Bimpacting%2Bone%2BSci%2BAdv%2B634%2Beaba4330%2B2020", + "type": "paper", + "tags": [ + "Drops", + "Superamphiphobic-surfaces", + "Lifting" + ], + "priority": 3 + }, + { + "title": "[5] Jain, A., Sanjay, V., & Das, A. K. Consequences of inclined and dual jet impingement in stagnant liquid and stratified layers. AIChE J., 65(1), 372-384 (2019).", + "content": "", + "url": "/research/index.html#5%2BJain%2BA%2BSanjay%2BV%2BDas%2BA%2BK%2BConsequences%2Bof%2Binclined%2Band%2Bdual%2Bjet%2Bimpingement%2Bin%2Bstagnant%2Bliquid%2Band%2Bstratified%2Blayers%2BAIChE%2BJ%2B651%2B372-384%2B2019", + "type": "paper", + "tags": [ + "Jets", + "Bubbles" + ], + "priority": 3 + }, + { + "title": "[4] Soni, A., Sanjay, V., & Das, A. K. Formation of fluid structures due to jet-jet and jet-sheet interactions. Chem. Eng. Sci., 191, 67-77 (2018).", + "content": "", + "url": "/research/index.html#4%2BSoni%2BA%2BSanjay%2BV%2BDas%2BA%2BK%2BFormation%2Bof%2Bfluid%2Bstructures%2Bdue%2Bto%2Bjet-jet%2Band%2Bjet-sheet%2Binteractions%2BChem%2BEng%2BSci%2B191%2B67-77%2B2018", + "type": "paper", + "tags": [ + "Jets" + ], + "priority": 3 + }, + { + "title": "[3] Sanjay, V., Das, A.K. Numerical assessment of hazard in compartmental fire having steady heat release rate from the source. Build. Simul. 11, 613–624 (2018).", + "content": "", + "url": "/research/index.html#3%2BSanjay%2BV%2BDas%2BAK%2BNumerical%2Bassessment%2Bof%2Bhazard%2Bin%2Bcompartmental%2Bfire%2Bhaving%2Bsteady%2Bheat%2Brelease%2Brate%2Bfrom%2Bthe%2Bsource%2BBuild%2BSimul%2B11%2B613624%2B2018", + "type": "paper", + "tags": [ + "Others", + "Fire", + "Evacuation" + ], + "priority": 3 + }, + { + "title": "[2] Sanjay, V., & Das, A. K. Formation of liquid chain by collision of two laminar jets. Phys. Fluids, 29(11), 112101 (2017).", + "content": "", + "url": "/research/index.html#2%2BSanjay%2BV%2BDas%2BA%2BK%2BFormation%2Bof%2Bliquid%2Bchain%2Bby%2Bcollision%2Bof%2Btwo%2Blaminar%2Bjets%2BPhys%2BFluids%2B2911%2B112101%2B2017", + "type": "paper", + "tags": [ + "Jets", + "Sheets" + ], + "priority": 3 + }, + { + "title": "[1] Sanjay, V., & Das, A. K. On air entrainment in a water pool by impingement of a jet. AIChE J., 63(11), 5169-5181 (2017).", + "content": "", + "url": "/research/index.html#1%2BSanjay%2BV%2BDas%2BA%2BK%2BOn%2Bair%2Bentrainment%2Bin%2Ba%2Bwater%2Bpool%2Bby%2Bimpingement%2Bof%2Ba%2Bjet%2BAIChE%2BJ%2B6311%2B5169-5181%2B2017", + "type": "paper", + "tags": [ + "Jets", + "Bubbles" + ], + "priority": 3 + }, + { + "title": "Sort by topic", + "content": "Click on any tag to filter papers by topic. Each paper can have multiple tags.", + "url": "/research/index.html#Sort%2Bby%2Btopic", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "[1] Sanjay, V., & Das, A. K. On air entrainment in a water pool by impingement of a jet. AIChE J., 63(11), 5169-5181 (2017).", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/research/index.html#1%2BSanjay%2BV%2BDas%2BA%2BK%2BOn%2Bair%2Bentrainment%2Bin%2Ba%2Bwater%2Bpool%2Bby%2Bimpingement%2Bof%2Ba%2Bjet%2BAIChE%2BJ%2B6311%2B5169-5181%2B2017", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Research", + "content": "Cover of that volume of J. Fluid Mech. As of March/April 2024, this highly cited paper received enough citations to place it in the top 1% of the academic field of Physics based on a highly cited threshold for the field and publication year. Source: Web of Science.\n Editor’s Suggestion of that issue of Phys. Rev. Lett.\n Research Highlight: Castelvecchi, D. The physics of a bouncing droplet’s impact. Nature, 609, 225 (2022).", + "url": "/research/index.html#Research", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "2024", + "content": "Cover of that volume of J. Fluid Mech.", + "url": "/research/index.html#2024", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "2022", + "content": "As of March/April 2024, this highly cited paper received enough citations to place it in the top 1% of the academic field of Physics based on a highly cited threshold for the field and publication year. Source: Web of Science.\n Editor’s Suggestion of that issue of Phys. Rev. Lett.\n Research Highlight: Castelvecchi, D. The physics of a bouncing droplet’s impact. Nature, 609, 225 (2022).", + "url": "/research/index.html#2022", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Dates", + "content": "March 10-13, 2025", + "url": "/teaching/2025-Basilisk101-Madrid.html", + "type": "teaching_detail", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Location", + "content": "Universidad Carlos III de Madrid, Spain", + "url": "/teaching/2025-Basilisk101-Madrid.html", + "type": "teaching_detail", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Duration", + "content": "4 days, full-time", + "url": "/teaching/2025-Basilisk101-Madrid.html", + "type": "teaching_detail", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Monday: Foundations", + "content": "Think before you compute 10:00-11:30\n Lecture (1a)\n \n \n \n \n Conservation laws and the numerical solution of the Navier–Stokes equations\n \n \n \n \n \n \n 11:45-13:00\n Lecture (1b)\n \n \n \n \n Advection-diffusion, diffusion-reaction, and other transport equations\n Brief intro to Basilisk coding framework First coding steps 15:00-18:00\n Hybrid Session\n \n \n \n \n Implementing basic transport equations in Basilisk C\n Whiteboard + coding", + "url": "/teaching/2025-Basilisk101-Madrid.html#Monday%3A%2BFoundations", + "type": "teaching_section", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Tuesday: Advanced Implementation", + "content": "Coding like a pro 10:00-11:15\n Hackathon (1c)\n \n \n \n \n Using headers in Basilisk, modular code structure, problem setup, and compilation\n \n \n \n \n \n \n 11:30-13:00\n Hackathon Continued\n \n \n \n \n Expanding on the morning tasks and code debugging", + "url": "/teaching/2025-Basilisk101-Madrid.html#Tuesday%3A%2BAdvanced%2BImplementation", + "type": "teaching_section", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Wednesday: Interface Dynamics", + "content": "Interface tracking methods 10:00-11:30\n Lecture (2a)\n \n \n \n \n Interface tracking methods (VoF, level set, phase-field approaches) and numerical strategies\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (2b)\n \n \n \n \n Hands-on tutorial applying interface-tracking to a simple two-phase problem Seminar 13:30-14:00\n Department seminar (2c)\n \n \n \n \n A note on the thrust of airfoils by José Mnauel Gordillo Non-Newtonian flows 15:00-16:00\n Lecture (3a)\n \n \n \n \n Non-Newtonian flows: viscoplasticity and viscoelasticity\n \n \n \n \n \n \n 16:15-18:00\n Hackathon (3b)\n \n \n \n \n Coding exercises for shear-thinning, viscoplastic, or viscoelastic fluids", + "url": "/teaching/2025-Basilisk101-Madrid.html#Wednesday%3A%2BInterface%2BDynamics", + "type": "teaching_section", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Thursday: Special Topics", + "content": "Special topics 10:00-11:30\n Lecture (4a)\n \n \n \n \n Special Topics: multilayer solver, lubrication equation, Marangoni flows, manifold death, and research-oriented examples\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (4b)\n \n \n \n \n Focused tutorials on the special topics introduced in the lecture\n \n \n \n \n \n \n 15:00-16:30\n Lecture (4c)\n \n \n \n \n Open discussion, deeper dives into advanced features, final code reviews, and next steps Prerequisites Basic knowledge of fluid mechanics\n Experience with programming (any language, C preferred)\n Understanding of partial differential equations\n Laptop with ability to compile C code Registration For registration details, please contact bubbles@ing.uc3m.es vatsalsy@comphy-lab.org function copyEmail(button) {\n const textToCopy = button.getAttribute('data-text');\n \n // Create a temporary textarea element to copy from\n const textarea = document.createElement('textarea');\n textarea.value = textToCopy;\n textarea.setAttribute('readonly', '');\n textarea.style.position = 'absolute';\n textarea.style.left = '-9999px';\n document.body.appendChild(textarea);\n \n // Select and copy the text\n textarea.select();\n document.execCommand('copy');\n \n // Remove the temporary element\n document.body.removeChild(textarea);\n \n // Show feedback\n const originalIcon = button.innerHTML;\n button.innerHTML = '';\n button.classList.add('copied');\n \n // Restore original state after a delay\n setTimeout(() => {\n button.innerHTML = originalIcon;\n button.classList.remove('copied');\n }, 2000);\n} Course GitHub Repository", + "url": "/teaching/2025-Basilisk101-Madrid.html#Thursday%3A%2BSpecial%2BTopics", + "type": "teaching_section", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Prerequisites", + "content": "Basic knowledge of fluid mechanics\n Experience with programming (any language, C preferred)\n Understanding of partial differential equations\n Laptop with ability to compile C code", + "url": "/teaching/2025-Basilisk101-Madrid.html#Prerequisites", + "type": "teaching_course_info", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Course Description", + "content": "This intensive 4-day course provides a comprehensive introduction to high-fidelity simulations using Basilisk C, a powerful computational framework for fluid dynamics. Participants will learn to implement and solve complex fluid mechanics problems with an emphasis on multiphase flows, interface dynamics, and non-Newtonian rheology. The course combines theoretical lectures with extensive hands-on sessions, allowing participants to immediately apply concepts through guided coding exercises. By the end of the course, you’ll be able to develop your own simulations for a variety of fluid dynamics applications.", + "url": "/teaching/2025-Basilisk101-Madrid.html#Course%2BDescription", + "type": "teaching_course_info", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - Registration", + "content": "For registration details, please contact bubbles@ing.uc3m.es vatsalsy@comphy-lab.org function copyEmail(button) {\n const textToCopy = button.getAttribute('data-text');\n \n // Create a temporary textarea element to copy from\n const textarea = document.createElement('textarea');\n textarea.value = textToCopy;\n textarea.setAttribute('readonly', '');\n textarea.style.position = 'absolute';\n textarea.style.left = '-9999px';\n document.body.appendChild(textarea);\n \n // Select and copy the text\n textarea.select();\n document.execCommand('copy');\n \n // Remove the temporary element\n document.body.removeChild(textarea);\n \n // Show feedback\n const originalIcon = button.innerHTML;\n button.innerHTML = '';\n button.classList.add('copied');\n \n // Restore original state after a delay\n setTimeout(() => {\n button.innerHTML = originalIcon;\n button.classList.remove('copied');\n }, 2000);\n} Course GitHub Repository", + "url": "/teaching/2025-Basilisk101-Madrid.html#Registration", + "type": "teaching_course_info", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C - CoMPhy Lab - What will you learn", + "content": "Think before you compute! Understanding the physics before implementation\n Writing the first code in Basilisk C Getting comfortable with the framework\n Solving conservation equations Numerical approaches to fluid dynamics\n Interface tracking methods Capturing multiphase phenomena accurately\n Non-Newtonian flows Modeling complex rheological behaviors", + "url": "/teaching/2025-Basilisk101-Madrid.html#What%2Bwill%2Byou%2Blearn", + "type": "teaching_course_info", + "priority": 2 + }, + { + "title": "Dates", + "content": "March 10-13, 2025", + "url": "/teaching/2025-Basilisk101-Madrid.html#Dates", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Location", + "content": "Universidad Carlos III de Madrid, Spain", + "url": "/teaching/2025-Basilisk101-Madrid.html#Location", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Duration", + "content": "4 days, full-time", + "url": "/teaching/2025-Basilisk101-Madrid.html#Duration", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Course Description", + "content": "This intensive 4-day course provides a comprehensive introduction to high-fidelity simulations using Basilisk C, a powerful computational framework for fluid dynamics. Participants will learn to implement and solve complex fluid mechanics problems with an emphasis on multiphase flows, interface dynamics, and non-Newtonian rheology.", + "url": "/teaching/2025-Basilisk101-Madrid.html#Course%2BDescription", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Course Description", + "content": "The course combines theoretical lectures with extensive hands-on sessions, allowing participants to immediately apply concepts through guided coding exercises. By the end of the course, you’ll be able to develop your own simulations for a variety of fluid dynamics applications.", + "url": "/teaching/2025-Basilisk101-Madrid.html#Course%2BDescription", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Registration", + "content": "For registration details, please contact", + "url": "/teaching/2025-Basilisk101-Madrid.html#Registration", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Registration", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/teaching/2025-Basilisk101-Madrid.html#Registration", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C", + "content": "Think before you compute! Understanding the physics before implementation\n Writing the first code in Basilisk C Getting comfortable with the framework\n Solving conservation equations Numerical approaches to fluid dynamics\n Interface tracking methods Capturing multiphase phenomena accurately\n Non-Newtonian flows Modeling complex rheological behaviors This intensive 4-day course provides a comprehensive introduction to high-fidelity simulations using Basilisk C, a powerful computational framework for fluid dynamics. Participants will learn to implement and solve complex fluid mechanics problems with an emphasis on multiphase flows, interface dynamics, and non-Newtonian rheology. The course combines theoretical lectures with extensive hands-on sessions, allowing participants to immediately apply concepts through guided coding exercises. By the end of the course, you’ll be able to develop your own simulations for a variety of fluid dynamics applications. 10:00-11:30\n Lecture (1a)\n \n \n \n \n Conservation laws and the numerical solution of the Navier–Stokes equations\n \n \n \n \n \n \n 11:45-13:00\n Lecture (1b)\n \n \n \n \n Advection-diffusion, diffusion-reaction, and other transport equations\n Brief intro to Basilisk coding framework 15:00-18:00\n Hybrid Session\n \n \n \n \n Implementing basic transport equations in Basilisk C\n Whiteboard + coding 10:00-11:15\n Hackathon (1c)\n \n \n \n \n Using headers in Basilisk, modular code structure, problem setup, and compilation\n \n \n \n \n \n \n 11:30-13:00\n Hackathon Continued\n \n \n \n \n Expanding on the morning tasks and code debugging 10:00-11:30\n Lecture (2a)\n \n \n \n \n Interface tracking methods (VoF, level set, phase-field approaches) and numerical strategies\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (2b)\n \n \n \n \n Hands-on tutorial applying interface-tracking to a simple two-phase problem 13:30-14:00\n Department seminar (2c)\n \n \n \n \n A note on the thrust of airfoils by José Mnauel Gordillo 15:00-16:00\n Lecture (3a)\n \n \n \n \n Non-Newtonian flows: viscoplasticity and viscoelasticity\n \n \n \n \n \n \n 16:15-18:00\n Hackathon (3b)\n \n \n \n \n Coding exercises for shear-thinning, viscoplastic, or viscoelastic fluids 10:00-11:30\n Lecture (4a)\n \n \n \n \n Special Topics: multilayer solver, lubrication equation, Marangoni flows, manifold death, and research-oriented examples\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (4b)\n \n \n \n \n Focused tutorials on the special topics introduced in the lecture\n \n \n \n \n \n \n 15:00-16:30\n Lecture (4c)\n \n \n \n \n Open discussion, deeper dives into advanced features, final code reviews, and next steps Basic knowledge of fluid mechanics\n Experience with programming (any language, C preferred)\n Understanding of partial differential equations\n Laptop with ability to compile C code For registration details, please contact", + "url": "/teaching/2025-Basilisk101-Madrid.html#High-Fidelity%2BSimulations%2BUsing%2BBasilisk%2BC", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "What will you learn?", + "content": "Think before you compute! Understanding the physics before implementation\n Writing the first code in Basilisk C Getting comfortable with the framework\n Solving conservation equations Numerical approaches to fluid dynamics\n Interface tracking methods Capturing multiphase phenomena accurately\n Non-Newtonian flows Modeling complex rheological behaviors", + "url": "/teaching/2025-Basilisk101-Madrid.html#What%2Bwill%2Byou%2Blearn", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Course Description", + "content": "This intensive 4-day course provides a comprehensive introduction to high-fidelity simulations using Basilisk C, a powerful computational framework for fluid dynamics. Participants will learn to implement and solve complex fluid mechanics problems with an emphasis on multiphase flows, interface dynamics, and non-Newtonian rheology. The course combines theoretical lectures with extensive hands-on sessions, allowing participants to immediately apply concepts through guided coding exercises. By the end of the course, you’ll be able to develop your own simulations for a variety of fluid dynamics applications.", + "url": "/teaching/2025-Basilisk101-Madrid.html#Course%2BDescription", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Course Schedule", + "content": "10:00-11:30\n Lecture (1a)\n \n \n \n \n Conservation laws and the numerical solution of the Navier–Stokes equations\n \n \n \n \n \n \n 11:45-13:00\n Lecture (1b)\n \n \n \n \n Advection-diffusion, diffusion-reaction, and other transport equations\n Brief intro to Basilisk coding framework 15:00-18:00\n Hybrid Session\n \n \n \n \n Implementing basic transport equations in Basilisk C\n Whiteboard + coding 10:00-11:15\n Hackathon (1c)\n \n \n \n \n Using headers in Basilisk, modular code structure, problem setup, and compilation\n \n \n \n \n \n \n 11:30-13:00\n Hackathon Continued\n \n \n \n \n Expanding on the morning tasks and code debugging 10:00-11:30\n Lecture (2a)\n \n \n \n \n Interface tracking methods (VoF, level set, phase-field approaches) and numerical strategies\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (2b)\n \n \n \n \n Hands-on tutorial applying interface-tracking to a simple two-phase problem 13:30-14:00\n Department seminar (2c)\n \n \n \n \n A note on the thrust of airfoils by José Mnauel Gordillo 15:00-16:00\n Lecture (3a)\n \n \n \n \n Non-Newtonian flows: viscoplasticity and viscoelasticity\n \n \n \n \n \n \n 16:15-18:00\n Hackathon (3b)\n \n \n \n \n Coding exercises for shear-thinning, viscoplastic, or viscoelastic fluids 10:00-11:30\n Lecture (4a)\n \n \n \n \n Special Topics: multilayer solver, lubrication equation, Marangoni flows, manifold death, and research-oriented examples\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (4b)\n \n \n \n \n Focused tutorials on the special topics introduced in the lecture\n \n \n \n \n \n \n 15:00-16:30\n Lecture (4c)\n \n \n \n \n Open discussion, deeper dives into advanced features, final code reviews, and next steps", + "url": "/teaching/2025-Basilisk101-Madrid.html#Course%2BSchedule", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Monday: Foundations", + "content": "10:00-11:30\n Lecture (1a)\n \n \n \n \n Conservation laws and the numerical solution of the Navier–Stokes equations\n \n \n \n \n \n \n 11:45-13:00\n Lecture (1b)\n \n \n \n \n Advection-diffusion, diffusion-reaction, and other transport equations\n Brief intro to Basilisk coding framework 15:00-18:00\n Hybrid Session\n \n \n \n \n Implementing basic transport equations in Basilisk C\n Whiteboard + coding", + "url": "/teaching/2025-Basilisk101-Madrid.html#Monday%3A%2BFoundations", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Tuesday: Advanced Implementation", + "content": "10:00-11:15\n Hackathon (1c)\n \n \n \n \n Using headers in Basilisk, modular code structure, problem setup, and compilation\n \n \n \n \n \n \n 11:30-13:00\n Hackathon Continued\n \n \n \n \n Expanding on the morning tasks and code debugging", + "url": "/teaching/2025-Basilisk101-Madrid.html#Tuesday%3A%2BAdvanced%2BImplementation", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Wednesday: Interface Dynamics", + "content": "10:00-11:30\n Lecture (2a)\n \n \n \n \n Interface tracking methods (VoF, level set, phase-field approaches) and numerical strategies\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (2b)\n \n \n \n \n Hands-on tutorial applying interface-tracking to a simple two-phase problem 13:30-14:00\n Department seminar (2c)\n \n \n \n \n A note on the thrust of airfoils by José Mnauel Gordillo 15:00-16:00\n Lecture (3a)\n \n \n \n \n Non-Newtonian flows: viscoplasticity and viscoelasticity\n \n \n \n \n \n \n 16:15-18:00\n Hackathon (3b)\n \n \n \n \n Coding exercises for shear-thinning, viscoplastic, or viscoelastic fluids", + "url": "/teaching/2025-Basilisk101-Madrid.html#Wednesday%3A%2BInterface%2BDynamics", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Thursday: Special Topics", + "content": "10:00-11:30\n Lecture (4a)\n \n \n \n \n Special Topics: multilayer solver, lubrication equation, Marangoni flows, manifold death, and research-oriented examples\n \n \n \n \n \n \n 11:45-13:00\n Hackathon (4b)\n \n \n \n \n Focused tutorials on the special topics introduced in the lecture\n \n \n \n \n \n \n 15:00-16:30\n Lecture (4c)\n \n \n \n \n Open discussion, deeper dives into advanced features, final code reviews, and next steps", + "url": "/teaching/2025-Basilisk101-Madrid.html#Thursday%3A%2BSpecial%2BTopics", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Prerequisites", + "content": "Basic knowledge of fluid mechanics\n Experience with programming (any language, C preferred)\n Understanding of partial differential equations\n Laptop with ability to compile C code", + "url": "/teaching/2025-Basilisk101-Madrid.html#Prerequisites", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Registration", + "content": "For registration details, please contact", + "url": "/teaching/2025-Basilisk101-Madrid.html#Registration", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Teaching - CoMPhy Lab - High-Fidelity Simulations Using Basilisk C", + "content": "Universidad Carlos III de Madrid March 10-13, 2025 A comprehensive course on using Basilisk C for simulating multiphase flows, interface tracking, and solving conservation equations. Learn to tackle complex fluid dynamics problems with high-fidelity numerical methods. View Course", + "url": "/teaching/index.html#High-Fidelity%2BSimulations%2BUsing%2BBasilisk%2BC", + "type": "teaching_section", + "priority": 2 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C", + "content": "High-Fidelity Simulations Using Basilisk C - Universidad Carlos III de Madrid\n - \n March 10-13, 2025 - A comprehensive course on using Basilisk C for simulating multiphase flows, interface tracking, and solving conservation equations. Learn to tackle complex fluid dynamics problems with high-fidelity numerical methods.", + "url": "/teaching/2025-Basilisk101-Madrid", + "type": "teaching_course", + "priority": 2 + }, + { + "title": "Teaching", + "content": "Welcome to the CoMPhy Lab’s educational resources. Apart from the university courses, we aim to develop and offer a range of workshops and tutorials on modern computational methods for multiphase flows and high-fidelity simulations.", + "url": "/teaching/index.html#Teaching", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C", + "content": "A comprehensive course on using Basilisk C for simulating multiphase flows, interface tracking, and solving conservation equations. Learn to tackle complex fluid dynamics problems with high-fidelity numerical methods.", + "url": "/teaching/index.html#High-Fidelity%2BSimulations%2BUsing%2BBasilisk%2BC", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "About Our Teaching Philosophy", + "content": "At CoMPhy Lab, we believe in hands-on learning and deep understanding of computational methods. Our courses combine theoretical foundations with practical implementation, allowing students to develop both conceptual understanding and technical skills.", + "url": "/teaching/index.html#About%2BOur%2BTeaching%2BPhilosophy", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "About Our Teaching Philosophy", + "content": "Our teaching approach emphasizes:", + "url": "/teaching/index.html#About%2BOur%2BTeaching%2BPhilosophy", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "About Our Teaching Philosophy", + "content": "If you’re interested in hosting a course or workshop with CoMPhy Lab, please contact us for collaboration opportunities.", + "url": "/teaching/index.html#About%2BOur%2BTeaching%2BPhilosophy", + "type": "text", + "links": [ + "join" + ], + "priority": 3 + }, + { + "title": "About Our Teaching Philosophy", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/teaching/index.html#About%2BOur%2BTeaching%2BPhilosophy", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Teaching", + "content": "Welcome to the CoMPhy Lab’s educational resources. Apart from the university courses, we aim to develop and offer a range of workshops and tutorials on modern computational methods for multiphase flows and high-fidelity simulations. At CoMPhy Lab, we believe in hands-on learning and deep understanding of computational methods. Our courses combine theoretical foundations with practical implementation, allowing students to develop both conceptual understanding and technical skills. Our teaching approach emphasizes: Think before you compute: Understanding the underlying physics before implementation\n Modular code structure: Building maintainable and extensible computational tools\n Advanced numerical methods: Mastering state-of-the-art techniques for complex problems\n Open science: Sharing knowledge and tools with the scientific community. Checkout If you’re interested in hosting a course or workshop with CoMPhy Lab, please contact us for collaboration opportunities.", + "url": "/teaching/index.html#Teaching", + "type": "section", + "links": [ + "teaching/2025-Basilisk101-Madrid", + "join" + ], + "priority": 3 + }, + { + "title": "High-Fidelity Simulations Using Basilisk C", + "content": "A comprehensive course on using Basilisk C for simulating multiphase flows, interface tracking, and solving conservation equations. Learn to tackle complex fluid dynamics problems with high-fidelity numerical methods.", + "url": "/teaching/index.html#High-Fidelity%2BSimulations%2BUsing%2BBasilisk%2BC", + "type": "section", + "links": [ + "teaching/2025-Basilisk101-Madrid" + ], + "priority": 3 + }, + { + "title": "About Our Teaching Philosophy", + "content": "At CoMPhy Lab, we believe in hands-on learning and deep understanding of computational methods. Our courses combine theoretical foundations with practical implementation, allowing students to develop both conceptual understanding and technical skills. Our teaching approach emphasizes: Think before you compute: Understanding the underlying physics before implementation\n Modular code structure: Building maintainable and extensible computational tools\n Advanced numerical methods: Mastering state-of-the-art techniques for complex problems\n Open science: Sharing knowledge and tools with the scientific community. Checkout If you’re interested in hosting a course or workshop with CoMPhy Lab, please contact us for collaboration opportunities.", + "url": "/teaching/index.html#About%2BOur%2BTeaching%2BPhilosophy", + "type": "section", + "links": [ + "teaching/2025-Basilisk101-Madrid", + "join" + ], + "priority": 3 + }, + { + "title": "Vatsal Sanjay (PI)", + "content": "Postdoc, Phys. Fluids - Univ. Twente / 2022-25\n Ph.D., Phys. Fluids - Univ. Twente / 2018-22\n B.Tech + M.Tech, Two-Phase Flow & Instability Lab, IIT-Roorkee / 2013-18\n Personal Website Research Interest: See here Download CV", + "url": "/team/index.html#Vatsal%2BSanjay%2BPI", + "type": "team_member", + "priority": 2 + }, + { + "title": "Ayush Dixit (Ph.D)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / 2023-now\n B.Tech + M.Tech, Two-Phase Flow & Instability Lab, IIT-Roorkee / 2018-23 Research Interest: Viscoelastic Flows, Bursting Bubbles, Respiratory Drops.", + "url": "/team/index.html#Ayush%2BDixit%2BPhD", + "type": "team_member", + "priority": 2 + }, + { + "title": "Aman Bhargava (Ph.D)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / 2024-now\n M.Sc. Chemical Engineering, Purdue University / 2022-23\n B.Tech. (Hons.) Chemical Engineering, IIT-Bombay / 2018-22 Research Interest: Inertial Contact Line, Drop Retraction.", + "url": "/team/index.html#Aman%2BBhargava%2BPhD", + "type": "team_member", + "priority": 2 + }, + { + "title": "Jnandeep Talukdar (M.Sc.)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / starting May 2025\n M.Sc. Student, Phys. Fluids - Univ. Twente / 2023-25\n B.Tech. Mechanical Engineering, IIT-Patna / 2019-23 Research Interest: Surfactant Dynamics, Dissipative Anomaly, Soft Wetting.", + "url": "/team/index.html#Jnandeep%2BTalukdar%2BMSc", + "type": "team_member", + "priority": 2 + }, + { + "title": "Saumili Jana (M.Sc.)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / starting Jul 2025\n B.Tech.+M.Tech. Student, IIT-Kharagpur / 2020-25\n Research Intern, Phys. Fluids - Univ. Twente / 2024 Research Interest: Soft Impact.", + "url": "/team/index.html#Saumili%2BJana%2BMSc", + "type": "team_member", + "priority": 2 + }, + { + "title": "Floris Hoek (M.Sc.)", + "content": "Joint with Martin van der Hoef and Alvaro Marin M.Sc. Student, Phys. Fluids - Univ. Twente / 2024 Research Interest: Molecular Dynamics Simulations of Evaporation-Driven Colloidal Self-Assembly.", + "url": "/team/index.html#Floris%2BHoek%2BMSc", + "type": "team_member", + "priority": 2 + }, + { + "title": "Xiangyu Zhang (Intern)", + "content": "Joint with Detlef Lohse Guest Researcher, Phys. Fluids - Univ. Twente / 2024\n City University of Hong Kong, China Research Interest: Viscoplastic Drop Impact.", + "url": "/team/index.html#Xiangyu%2BZhang%2BIntern", + "type": "team_member", + "priority": 2 + }, + { + "title": "Detlef Lohse", + "content": "Professor, Phys. Fluids - Univ. Twente Collaboration on: Drop Impact, Viscoelastic Flows, Dissipative Anomaly, Surfactant Dynamics, Electrolysis, Bubbles, and Everything in Between.", + "url": "/team/index.html#Detlef%2BLohse", + "type": "team_member", + "priority": 2 + }, + { + "title": "Jacco Snoeijer", + "content": "Professor, Phys. Fluids - Univ. Twente Collaboration on: Elastic Sheets, Viscoelasticity vs. Elasticity, Spinning Pizza.", + "url": "/team/index.html#Jacco%2BSnoeijer", + "type": "team_member", + "priority": 2 + }, + { + "title": "Dominik Krug", + "content": "Professor, RWTH Aachen University\n Adjunct Professor, Phys. Fluids - Univ. Twente Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Dominik%2BKrug", + "type": "team_member", + "priority": 2 + }, + { + "title": "Maziyar Jalaal (Mazi)", + "content": "Associate Professor, Fluid Lab, Univ. Amsterdam Collaboration on: Plastocapillarity, Viscoplastic Flows.", + "url": "/team/index.html#Maziyar%2BJalaal%2BMazi", + "type": "team_member", + "priority": 2 + }, + { + "title": "Uddalok Sen (Udo)", + "content": "Assistant Professor, PhySM, Wageningen University and Research Collaboration on: Drop Impact, Sheet Retraction.", + "url": "/team/index.html#Uddalok%2BSen%2BUdo", + "type": "team_member", + "priority": 2 + }, + { + "title": "Alvaro Marin", + "content": "Adjunct Professor, Phys. Fluids - Univ. Twente Collaboration on: Colloidal Systems, Evaporation, Shell Formation.", + "url": "/team/index.html#Alvaro%2BMarin", + "type": "team_member", + "priority": 2 + }, + { + "title": "Christian Diddens", + "content": "Group Leader, Phys. Fluids - Univ. Twente\n Developer of pyoomph Collaboration on: Surfactant Dynamics in Free Surface Flows, Dissipative Anomaly, Sliding Drops.", + "url": "/team/index.html#Christian%2BDiddens", + "type": "team_member", + "priority": 2 + }, + { + "title": "Gareth McKinley", + "content": "Professor, MIT Collaboration on: Die-Swelling, Viscoelastic Flows.", + "url": "/team/index.html#Gareth%2BMcKinley", + "type": "team_member", + "priority": 2 + }, + { + "title": "John Kolinski", + "content": "Asst. Professor, EPFL (École Polytechnique Fédérale de Lausanne) Collaboration on: Soft Impact", + "url": "/team/index.html#John%2BKolinski", + "type": "team_member", + "priority": 2 + }, + { + "title": "C. Ricardo Constante-Amores", + "content": "Asst. Professor, Univ. Illinois Urbana-Champaign Collaboration on: Non-Newtonian Flows, Bubble Bursting, Herschel–Bulkley Fluids, Elastic Coating.", + "url": "/team/index.html#C%2BRicardo%2BConstante-Amores", + "type": "team_member", + "priority": 2 + }, + { + "title": "Radu Cimpeanu", + "content": "Assc. Professor, Univ. Warwick Collaboration on: Open-Source Code Development, Non-Coalescence Impacts.", + "url": "/team/index.html#Radu%2BCimpeanu", + "type": "team_member", + "priority": 2 + }, + { + "title": "Jie Feng", + "content": "Asst. Professor, Univ. Illinois Urbana-Champaign Collaboration on: Elastic Coating, Bursting Bubbles.", + "url": "/team/index.html#Jie%2BFeng", + "type": "team_member", + "priority": 2 + }, + { + "title": "Omar Matar", + "content": "Professor, Imperial College London Collaboration on: Surfactant Dynamics, Viscoelastic Drop Impact.", + "url": "/team/index.html#Omar%2BMatar", + "type": "team_member", + "priority": 2 + }, + { + "title": "Ratul Dasgupta", + "content": "Assc. Professor, IIT-Bombay Collaboration on: Waves, Dissipative Anomaly.", + "url": "/team/index.html#Ratul%2BDasgupta", + "type": "team_member", + "priority": 2 + }, + { + "title": "Eric Lauga", + "content": "Professor, Univ. Cambridge Collaboration on: Mycofluidic Transport.", + "url": "/team/index.html#Eric%2BLauga", + "type": "team_member", + "priority": 2 + }, + { + "title": "Saikat Datta", + "content": "Senior Lecturer, Swansea University Collaboration on: Multiscale Simulation, Ice Nucleation and Removal, Hydrogen Storage.", + "url": "/team/index.html#Saikat%2BDatta", + "type": "team_member", + "priority": 2 + }, + { + "title": "Doris Vollmer", + "content": "Apl. Professor, Max Planck Institute for Polymer Research, Mainz, Germany. Collaboration on: Contact Line, Drop Impact, Superhydrophobic Surfaces.", + "url": "/team/index.html#Doris%2BVollmer", + "type": "team_member", + "priority": 2 + }, + { + "title": "Stéphane Zaleski", + "content": "Professor, Sorbonne Universite Collaboration on: Holey Sheets.", + "url": "/team/index.html#Stphane%2BZaleski", + "type": "team_member", + "priority": 2 + }, + { + "title": "Pierre Chantelot", + "content": "Postdoc, Institut Langevin, ESPCI Paris Collaboration on: Drop Impact", + "url": "/team/index.html#Pierre%2BChantelot", + "type": "team_member", + "priority": 2 + }, + { + "title": "Aleksandr Bashkatov", + "content": "Postdoc, RWTH Aachen University Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Aleksandr%2BBashkatov", + "type": "team_member", + "priority": 2 + }, + { + "title": "Vincent Bertin", + "content": "Postdoc, University Aix-Marseille Collaboration on: Elastic Sheets, Spinning Pizza.", + "url": "/team/index.html#Vincent%2BBertin", + "type": "team_member", + "priority": 2 + }, + { + "title": "Alexandros Oratis", + "content": "Postdoc, TU Delft Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Alexandros%2BOratis", + "type": "team_member", + "priority": 2 + }, + { + "title": "Arivazhagan Balasubramanian (Ari)", + "content": "Ph.D. Student, KTH Sweden Collaboration on: Elastoviscoplastic Flows, Bursting Bubbles", + "url": "/team/index.html#Arivazhagan%2BBalasubramanian%2BAri", + "type": "team_member", + "priority": 2 + }, + { + "title": "Konstantinos Zinelis (Costis)", + "content": "Postdoc, MIT Collaboration on: Viscoelastic Flows, Drop Impact.", + "url": "/team/index.html#Konstantinos%2BZinelis%2BCostis", + "type": "team_member", + "priority": 2 + }, + { + "title": "Swen van den Heuvel", + "content": "Now: Ph.D. Student, Phys. Fluids - Univ. Twente\n 2023: Graduated with M.Sc., Univ. Twente\n Thesis: Hydrodynamic forces acting on vertically rising bubbles", + "url": "/team/index.html#Swen%2Bvan%2Bden%2BHeuvel", + "type": "team_member", + "priority": 2 + }, + { + "title": "Niels Kuipers", + "content": "Now: M.Sc. Student, Adv. Technology - Univ. Twente\n 2023: Graduated with B.Sc., Univ. Twente\n Thesis: Partial coalescence of drops on viscous films", + "url": "/team/index.html#Niels%2BKuipers", + "type": "team_member", + "priority": 2 + }, + { + "title": "Tom Appleford", + "content": "Now: Ph.D. Student, Fluid Lab - Univ. Amsterdam\n 2022: Graduated with M.Sc., Univ. Amsterdam\n Thesis: The deformation of a droplet in a viscoplastic simple shear flow", + "url": "/team/index.html#Tom%2BAppleford", + "type": "team_member", + "priority": 2 + }, + { + "title": "Coen Verschuur", + "content": "Now: Ph.D. Student, Phys. Fluids - Univ. Twente\n 2020: Graduated with B.Sc., Univ. Twente\n Thesis: Early time dynamics in immiscible drop impacts", + "url": "/team/index.html#Coen%2BVerschuur", + "type": "team_member", + "priority": 2 + }, + { + "title": "Pim J. Dekker", + "content": "Now: Ph.D. Student, Phys. Fluids - Univ. Twente\n 2019: Graduated with B.Sc., Univ. Twente\n Thesis: Spreading of a drop on a water-air interface", + "url": "/team/index.html#Pim%2BJ%2BDekker", + "type": "team_member", + "priority": 2 + }, + { + "title": "Vatsal Sanjay (PI)", + "content": "Research Interest: See here", + "url": "/team/index.html#Vatsal%2BSanjay%2BPI", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Vatsal Sanjay (PI)", + "content": "Download CV", + "url": "/team/index.html#Vatsal%2BSanjay%2BPI", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Ayush Dixit (Ph.D)", + "content": "Joint with Detlef Lohse", + "url": "/team/index.html#Ayush%2BDixit%2BPhD", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Ayush Dixit (Ph.D)", + "content": "Research Interest: Viscoelastic Flows, Bursting Bubbles, Respiratory Drops.", + "url": "/team/index.html#Ayush%2BDixit%2BPhD", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Aman Bhargava (Ph.D)", + "content": "Joint with Detlef Lohse", + "url": "/team/index.html#Aman%2BBhargava%2BPhD", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Aman Bhargava (Ph.D)", + "content": "Research Interest: Inertial Contact Line, Drop Retraction.", + "url": "/team/index.html#Aman%2BBhargava%2BPhD", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jnandeep Talukdar (M.Sc.)", + "content": "Joint with Detlef Lohse", + "url": "/team/index.html#Jnandeep%2BTalukdar%2BMSc", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jnandeep Talukdar (M.Sc.)", + "content": "Research Interest: Surfactant Dynamics, Dissipative Anomaly, Soft Wetting.", + "url": "/team/index.html#Jnandeep%2BTalukdar%2BMSc", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Saumili Jana (M.Sc.)", + "content": "Joint with Detlef Lohse", + "url": "/team/index.html#Saumili%2BJana%2BMSc", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Saumili Jana (M.Sc.)", + "content": "Research Interest: Soft Impact.", + "url": "/team/index.html#Saumili%2BJana%2BMSc", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Floris Hoek (M.Sc.)", + "content": "Joint with Martin van der Hoef and Alvaro Marin", + "url": "/team/index.html#Floris%2BHoek%2BMSc", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Floris Hoek (M.Sc.)", + "content": "Research Interest: Molecular Dynamics Simulations of Evaporation-Driven Colloidal Self-Assembly.", + "url": "/team/index.html#Floris%2BHoek%2BMSc", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Xiangyu Zhang (Intern)", + "content": "Joint with Detlef Lohse", + "url": "/team/index.html#Xiangyu%2BZhang%2BIntern", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Xiangyu Zhang (Intern)", + "content": "Research Interest: Viscoplastic Drop Impact.", + "url": "/team/index.html#Xiangyu%2BZhang%2BIntern", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "We need you!", + "content": "See: Join Us for ongoing projects.", + "url": "/team/index.html#We%2Bneed%2Byou", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Detlef Lohse", + "content": "Collaboration on: Drop Impact, Viscoelastic Flows, Dissipative Anomaly, Surfactant Dynamics, Electrolysis, Bubbles, and Everything in Between.", + "url": "/team/index.html#Detlef%2BLohse", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jacco Snoeijer", + "content": "Collaboration on: Elastic Sheets, Viscoelasticity vs. Elasticity, Spinning Pizza.", + "url": "/team/index.html#Jacco%2BSnoeijer", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Dominik Krug", + "content": "Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Dominik%2BKrug", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Maziyar Jalaal (Mazi)", + "content": "Collaboration on: Plastocapillarity, Viscoplastic Flows.", + "url": "/team/index.html#Maziyar%2BJalaal%2BMazi", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Uddalok Sen (Udo)", + "content": "Collaboration on: Drop Impact, Sheet Retraction.", + "url": "/team/index.html#Uddalok%2BSen%2BUdo", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Alvaro Marin", + "content": "Collaboration on: Colloidal Systems, Evaporation, Shell Formation.", + "url": "/team/index.html#Alvaro%2BMarin", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Christian Diddens", + "content": "Collaboration on: Surfactant Dynamics in Free Surface Flows, Dissipative Anomaly, Sliding Drops.", + "url": "/team/index.html#Christian%2BDiddens", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Gareth McKinley", + "content": "Collaboration on: Die-Swelling, Viscoelastic Flows.", + "url": "/team/index.html#Gareth%2BMcKinley", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "John Kolinski", + "content": "Collaboration on: Soft Impact", + "url": "/team/index.html#John%2BKolinski", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "C. Ricardo Constante-Amores", + "content": "Collaboration on: Non-Newtonian Flows, Bubble Bursting, Herschel–Bulkley Fluids, Elastic Coating.", + "url": "/team/index.html#C%2BRicardo%2BConstante-Amores", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Radu Cimpeanu", + "content": "Collaboration on: Open-Source Code Development, Non-Coalescence Impacts.", + "url": "/team/index.html#Radu%2BCimpeanu", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jie Feng", + "content": "Collaboration on: Elastic Coating, Bursting Bubbles.", + "url": "/team/index.html#Jie%2BFeng", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Omar Matar", + "content": "Collaboration on: Surfactant Dynamics, Viscoelastic Drop Impact.", + "url": "/team/index.html#Omar%2BMatar", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Ratul Dasgupta", + "content": "Collaboration on: Waves, Dissipative Anomaly.", + "url": "/team/index.html#Ratul%2BDasgupta", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Eric Lauga", + "content": "Collaboration on: Mycofluidic Transport.", + "url": "/team/index.html#Eric%2BLauga", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Saikat Datta", + "content": "Collaboration on: Multiscale Simulation, Ice Nucleation and Removal, Hydrogen Storage.", + "url": "/team/index.html#Saikat%2BDatta", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Doris Vollmer", + "content": "Collaboration on: Contact Line, Drop Impact, Superhydrophobic Surfaces.", + "url": "/team/index.html#Doris%2BVollmer", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Stéphane Zaleski", + "content": "Collaboration on: Holey Sheets.", + "url": "/team/index.html#Stphane%2BZaleski", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Pierre Chantelot", + "content": "Collaboration on: Drop Impact", + "url": "/team/index.html#Pierre%2BChantelot", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Aleksandr Bashkatov", + "content": "Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Aleksandr%2BBashkatov", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Vincent Bertin", + "content": "Collaboration on: Elastic Sheets, Spinning Pizza.", + "url": "/team/index.html#Vincent%2BBertin", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Alexandros Oratis", + "content": "Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Alexandros%2BOratis", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Arivazhagan Balasubramanian (Ari)", + "content": "Collaboration on: Elastoviscoplastic Flows, Bursting Bubbles", + "url": "/team/index.html#Arivazhagan%2BBalasubramanian%2BAri", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Konstantinos Zinelis (Costis)", + "content": "Collaboration on: Viscoelastic Flows, Drop Impact.", + "url": "/team/index.html#Konstantinos%2BZinelis%2BCostis", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Team, collaborators, and Conference visits", + "content": "The locations marked on this map meet one of three criteria (in the order of preference): \n 1. Hometown of our team members (including alumni) in orange, \n 2. Base location of our collaborators in green,\n 3. Places where we have presented talks in purple, or\n 4. Places where we have visited for conferences (no talks) in gray.", + "url": "/team/index.html#Team%2Bcollaborators%2Band%2BConference%2Bvisits", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Team, collaborators, and Conference visits", + "content": "Loading map...", + "url": "/team/index.html#Team%2Bcollaborators%2Band%2BConference%2Bvisits", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Team, collaborators, and Conference visits", + "content": "© Copyright\n CoMPhy Lab 2025", + "url": "/team/index.html#Team%2Bcollaborators%2Band%2BConference%2Bvisits", + "type": "text", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Vatsal Sanjay (PI)", + "content": "Postdoc, Phys. Fluids - Univ. Twente / 2022-25\n Ph.D., Phys. Fluids - Univ. Twente / 2018-22\n B.Tech + M.Tech, Two-Phase Flow & Instability Lab, IIT-Roorkee / 2013-18\n Personal Website Research Interest: See here Download CV", + "url": "/team/index.html#Vatsal%2BSanjay%2BPI", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Ayush Dixit (Ph.D)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / 2023-now\n B.Tech + M.Tech, Two-Phase Flow & Instability Lab, IIT-Roorkee / 2018-23 Research Interest: Viscoelastic Flows, Bursting Bubbles, Respiratory Drops.", + "url": "/team/index.html#Ayush%2BDixit%2BPhD", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Aman Bhargava (Ph.D)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / 2024-now\n M.Sc. Chemical Engineering, Purdue University / 2022-23\n B.Tech. (Hons.) Chemical Engineering, IIT-Bombay / 2018-22 Research Interest: Inertial Contact Line, Drop Retraction.", + "url": "/team/index.html#Aman%2BBhargava%2BPhD", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jnandeep Talukdar (M.Sc.)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / starting May 2025\n M.Sc. Student, Phys. Fluids - Univ. Twente / 2023-25\n B.Tech. Mechanical Engineering, IIT-Patna / 2019-23 Research Interest: Surfactant Dynamics, Dissipative Anomaly, Soft Wetting.", + "url": "/team/index.html#Jnandeep%2BTalukdar%2BMSc", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Saumili Jana (M.Sc.)", + "content": "Joint with Detlef Lohse Ph.D. Student, Phys. Fluids - Univ. Twente / starting Jul 2025\n B.Tech.+M.Tech. Student, IIT-Kharagpur / 2020-25\n Research Intern, Phys. Fluids - Univ. Twente / 2024 Research Interest: Soft Impact.", + "url": "/team/index.html#Saumili%2BJana%2BMSc", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Floris Hoek (M.Sc.)", + "content": "Joint with Martin van der Hoef and Alvaro Marin M.Sc. Student, Phys. Fluids - Univ. Twente / 2024 Research Interest: Molecular Dynamics Simulations of Evaporation-Driven Colloidal Self-Assembly.", + "url": "/team/index.html#Floris%2BHoek%2BMSc", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Xiangyu Zhang (Intern)", + "content": "Joint with Detlef Lohse Guest Researcher, Phys. Fluids - Univ. Twente / 2024\n City University of Hong Kong, China Research Interest: Viscoplastic Drop Impact.", + "url": "/team/index.html#Xiangyu%2BZhang%2BIntern", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "We need you!", + "content": "See: Join Us for ongoing projects.", + "url": "/team/index.html#We%2Bneed%2Byou", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Detlef Lohse", + "content": "Professor, Phys. Fluids - Univ. Twente Collaboration on: Drop Impact, Viscoelastic Flows, Dissipative Anomaly, Surfactant Dynamics, Electrolysis, Bubbles, and Everything in Between.", + "url": "/team/index.html#Detlef%2BLohse", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jacco Snoeijer", + "content": "Professor, Phys. Fluids - Univ. Twente Collaboration on: Elastic Sheets, Viscoelasticity vs. Elasticity, Spinning Pizza.", + "url": "/team/index.html#Jacco%2BSnoeijer", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Dominik Krug", + "content": "Professor, RWTH Aachen University\n Adjunct Professor, Phys. Fluids - Univ. Twente Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Dominik%2BKrug", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Maziyar Jalaal (Mazi)", + "content": "Associate Professor, Fluid Lab, Univ. Amsterdam Collaboration on: Plastocapillarity, Viscoplastic Flows.", + "url": "/team/index.html#Maziyar%2BJalaal%2BMazi", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Uddalok Sen (Udo)", + "content": "Assistant Professor, PhySM, Wageningen University and Research Collaboration on: Drop Impact, Sheet Retraction.", + "url": "/team/index.html#Uddalok%2BSen%2BUdo", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Alvaro Marin", + "content": "Adjunct Professor, Phys. Fluids - Univ. Twente Collaboration on: Colloidal Systems, Evaporation, Shell Formation.", + "url": "/team/index.html#Alvaro%2BMarin", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Christian Diddens", + "content": "Group Leader, Phys. Fluids - Univ. Twente\n Developer of pyoomph Collaboration on: Surfactant Dynamics in Free Surface Flows, Dissipative Anomaly, Sliding Drops.", + "url": "/team/index.html#Christian%2BDiddens", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Gareth McKinley", + "content": "Professor, MIT Collaboration on: Die-Swelling, Viscoelastic Flows.", + "url": "/team/index.html#Gareth%2BMcKinley", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "John Kolinski", + "content": "Asst. Professor, EPFL (École Polytechnique Fédérale de Lausanne) Collaboration on: Soft Impact", + "url": "/team/index.html#John%2BKolinski", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "C. Ricardo Constante-Amores", + "content": "Asst. Professor, Univ. Illinois Urbana-Champaign Collaboration on: Non-Newtonian Flows, Bubble Bursting, Herschel–Bulkley Fluids, Elastic Coating.", + "url": "/team/index.html#C%2BRicardo%2BConstante-Amores", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Radu Cimpeanu", + "content": "Assc. Professor, Univ. Warwick Collaboration on: Open-Source Code Development, Non-Coalescence Impacts.", + "url": "/team/index.html#Radu%2BCimpeanu", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Jie Feng", + "content": "Asst. Professor, Univ. Illinois Urbana-Champaign Collaboration on: Elastic Coating, Bursting Bubbles.", + "url": "/team/index.html#Jie%2BFeng", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Omar Matar", + "content": "Professor, Imperial College London Collaboration on: Surfactant Dynamics, Viscoelastic Drop Impact.", + "url": "/team/index.html#Omar%2BMatar", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Ratul Dasgupta", + "content": "Assc. Professor, IIT-Bombay Collaboration on: Waves, Dissipative Anomaly.", + "url": "/team/index.html#Ratul%2BDasgupta", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Eric Lauga", + "content": "Professor, Univ. Cambridge Collaboration on: Mycofluidic Transport.", + "url": "/team/index.html#Eric%2BLauga", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Saikat Datta", + "content": "Senior Lecturer, Swansea University Collaboration on: Multiscale Simulation, Ice Nucleation and Removal, Hydrogen Storage.", + "url": "/team/index.html#Saikat%2BDatta", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Doris Vollmer", + "content": "Apl. Professor, Max Planck Institute for Polymer Research, Mainz, Germany. Collaboration on: Contact Line, Drop Impact, Superhydrophobic Surfaces.", + "url": "/team/index.html#Doris%2BVollmer", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Stéphane Zaleski", + "content": "Professor, Sorbonne Universite Collaboration on: Holey Sheets.", + "url": "/team/index.html#Stphane%2BZaleski", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Pierre Chantelot", + "content": "Postdoc, Institut Langevin, ESPCI Paris Collaboration on: Drop Impact", + "url": "/team/index.html#Pierre%2BChantelot", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Aleksandr Bashkatov", + "content": "Postdoc, RWTH Aachen University Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Aleksandr%2BBashkatov", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Vincent Bertin", + "content": "Postdoc, University Aix-Marseille Collaboration on: Elastic Sheets, Spinning Pizza.", + "url": "/team/index.html#Vincent%2BBertin", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Alexandros Oratis", + "content": "Postdoc, TU Delft Collaboration on: Electrolysis, Bubble Coalescence, Swimming Bubbles.", + "url": "/team/index.html#Alexandros%2BOratis", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Arivazhagan Balasubramanian (Ari)", + "content": "Ph.D. Student, KTH Sweden Collaboration on: Elastoviscoplastic Flows, Bursting Bubbles", + "url": "/team/index.html#Arivazhagan%2BBalasubramanian%2BAri", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Konstantinos Zinelis (Costis)", + "content": "Postdoc, MIT Collaboration on: Viscoelastic Flows, Drop Impact.", + "url": "/team/index.html#Konstantinos%2BZinelis%2BCostis", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Milan Sent", + "content": "2025: Graduated with B.Sc., Univ. Twente\n Thesis: Spinning Pizza", + "url": "/team/index.html#Milan%2BSent", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Valentin Rosario", + "content": "2024: Graduated with M.Sc., Univ. Amsterdam\n Thesis: Modelling the Ward–Hunt ice-shelf as viscoelastic solid", + "url": "/team/index.html#Valentin%2BRosario", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Swen van den Heuvel", + "content": "Now: Ph.D. Student, Phys. Fluids - Univ. Twente\n 2023: Graduated with M.Sc., Univ. Twente\n Thesis: Hydrodynamic forces acting on vertically rising bubbles", + "url": "/team/index.html#Swen%2Bvan%2Bden%2BHeuvel", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Niels Kuipers", + "content": "Now: M.Sc. Student, Adv. Technology - Univ. Twente\n 2023: Graduated with B.Sc., Univ. Twente\n Thesis: Partial coalescence of drops on viscous films", + "url": "/team/index.html#Niels%2BKuipers", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "C. H. (Luuk) Maurits", + "content": "2023: Graduated with M.Sc., Univ. Twente\n Thesis: When Laplace meets Marangoni", + "url": "/team/index.html#C%2BH%2BLuuk%2BMaurits", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Tom Appleford", + "content": "Now: Ph.D. Student, Fluid Lab - Univ. Amsterdam\n 2022: Graduated with M.Sc., Univ. Amsterdam\n Thesis: The deformation of a droplet in a viscoplastic simple shear flow", + "url": "/team/index.html#Tom%2BAppleford", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Twan Heijink", + "content": "Now: Software IVQA Engineer at Thales\n 2021: Graduated with B.Sc., Saxion Univ.\n Thesis: Standing waves at a fluid-fluid interface with plastocapillarity", + "url": "/team/index.html#Twan%2BHeijink", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Steven Meuleman", + "content": "Now: Mechanical Engineer at VIRO\n 2020: Graduated with B.Sc., Univ. Twente\n Thesis: Simulations of foam generation for a custom axisymmetric core-shell nozzle", + "url": "/team/index.html#Steven%2BMeuleman", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Thijmen Kroeze", + "content": "Now: CFD Engineer, Brink Climate Systems\n 2020: Graduated with B.Sc., Univ. Twente\n Thesis: Singular jet dynamics of drop impacts at high Bond numbers", + "url": "/team/index.html#Thijmen%2BKroeze", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Coen Verschuur", + "content": "Now: Ph.D. Student, Phys. Fluids - Univ. Twente\n 2020: Graduated with B.Sc., Univ. Twente\n Thesis: Early time dynamics in immiscible drop impacts", + "url": "/team/index.html#Coen%2BVerschuur", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Pim J. Dekker", + "content": "Now: Ph.D. Student, Phys. Fluids - Univ. Twente\n 2019: Graduated with B.Sc., Univ. Twente\n Thesis: Spreading of a drop on a water-air interface", + "url": "/team/index.html#Pim%2BJ%2BDekker", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Laurence Bruggink", + "content": "Now: Research Engineer at Alfen\n 2019: Graduated with B.Sc., Univ. Twente\n Thesis: Bursting bubble in a Herschel–Bulkley fluid", + "url": "/team/index.html#Laurence%2BBruggink", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "Team, collaborators, and Conference visits", + "content": "The locations marked on this map meet one of three criteria (in the order of preference): \n 1. Hometown of our team members (including alumni) in orange, \n 2. Base location of our collaborators in green,\n 3. Places where we have presented talks in purple, or\n 4. Places where we have visited for conferences (no talks) in gray.", + "url": "/team/index.html#Team%2Bcollaborators%2Band%2BConference%2Bvisits", + "type": "section", + "links": [ + + ], + "priority": 3 + }, + { + "title": "0_README - Welcome to the CoMPhy Lab's documentation hub", + "content": "Welcome to the CoMPhy Lab's documentation hub! We are based at the Physics of Fluids Department at the University of Twente, where we explore non-Newtonian free-surface flows and soft matter singularities.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - Elastoinertial turbulence:", + "content": "2025-02-24 [[Arrowheads in elastoinertial turbulence]]: Critical review of arrowhead structures in elastoinertial turbulence, examining their existence in 3D flows and experimental observations.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - Drop impact dynamics:", + "content": "2025-02-22 [[2025-JFM-viscous-drop-impact]]: Comprehensive study of viscosity's role in drop impact forces, from raindrops to inkjet printing applications.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - Capillary waves:", + "content": "2025-01-11 [[Features-of-capillary-waves-during-asymmetric-bubble-coalescence]]: Analysis of capillary wave dynamics during bubble coalescence, focusing on energy transfer and wave propagation mechanisms.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - H-B formulation:", + "content": "2024-12-31 [[Herschel–Bulkley formulation]]: Mathematical formulation of the Herschel-Bulkley model for non-Newtonian flows, with emphasis on yield stress fluids.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - Gauss' Law:", + "content": "2025-01-21 [[Gauss law of Electrostatics]]: Analysis of electric field flux through different surfaces using Gauss's law, with visual demonstrations.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - Seminar-UIUC", + "content": "2025-01-19 [[Seminar-UIUC-abstract]]: UIUC fluid seminar abstract exploring polymeric flows as a tunable testbed for unsteady, nonlinear continuum mechanics.", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "0_README - Connect With Us", + "content": "- 🌐 Website: [comphy-lab.org](http://www.comphy-lab.org)\n- 📧 Email: [vatsalsy@comphy-lab.org](mailto:vatsalsy@comphy-lab.org)\n- 🐦 Twitter: [@VatsalSanjay](https://twitter.com/VatsalSanjay)\n- 💻 GitHub: [github.com/VatsalSy](https://github.com/VatsalSy)", + "url": "https://blogs.comphy-lab.org/0_README", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - When a liquid drop hits a surface, the impact creates fascinating fluid dynamics that are crucial for applications ranging from inkjet printing to agricultural sprays", + "content": "When a liquid drop hits a surface, the impact creates fascinating fluid dynamics that are crucial for applications ranging from inkjet printing to agricultural sprays. In this work, we uncover how a liquid's viscosity dramatically affects the forces generated during these impacts.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - When a liquid drop hits a surface, the impact creates fascinating fluid dynamics that are crucial for applications ranging from inkjet printing to agricultural sprays", + "content": "Let's explore the key findings.\n![[_Media/JFM-viscous-drop-impact-blog-1740211822831.png]]\n> [!tldr] TL;DR\n> Viscosity alters the forces a liquid drop exerts when it strikes a non-wetting surface, shifting the balance from inertia-dominated (like water) to enhanced viscous effects (like honey).", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - When a liquid drop hits a surface, the impact creates fascinating fluid dynamics that are crucial for applications ranging from inkjet printing to agricultural sprays", + "content": "Two force peaks arise: one at the initial impact and another tied to the Worthington jet just before bounce. Dimensionless numbers (Weber and Ohnesorge) govern these regimes, showing why higher-viscosity drops can yield unexpectedly large forces.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - When a liquid drop hits a surface, the impact creates fascinating fluid dynamics that are crucial for applications ranging from inkjet printing to agricultural sprays", + "content": "The findings unify scaling laws across viscosities, guiding applications in printing, agriculture, and beyond, and pointing to future inquiries on soft surfaces and non-Newtonian fluids.\n> [!summary] Podcast\n> ", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - The Basics: What Happens When a Drop Hits a Surface?", + "content": "> [!note] Key Point\n> On a non-wetting surface, a drop goes through distinct phases: impact, spreading, retracting, and sometimes bouncing off. During this process, the surface experiences varying forces that can now be precisely measured and predicted.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - The Basics: What Happens When a Drop Hits a Surface?", + "content": "The impact process reveals two distinct force peaks:\n1. An initial peak when the drop first hits\n2.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - The Basics: What Happens When a Drop Hits a Surface?", + "content": "A second peak just before the drop potentially bounces off\nWhat makes this especially interesting is how these forces change based on two key properties:\n- Weber number ($We = \\rho V_0^2D_0/\\gamma$): Measures the dimensionless kinetic energy of the impacting drop.\n- Ohnesorge number ($Oh = \\eta/\\sqrt{\\rho\\gamma D_0}$): Represents the dimensionless viscosity of the impacting drop.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - The First Impact: A Tale of Two Regimes", + "content": "> [!important] First Peak Findings\n> The study reveals that the first impact force follows distinctly different patterns depending on the liquid's viscosity:\n> - For low viscosity liquids (like water), the force mainly depends on inertia\n> - For high viscosity liquids (like honey), viscous effects create stronger forces than expected", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Low Viscosity Behavior", + "content": "For liquids with low viscosity ($Oh < 0.1$), the first impact force ($F_1$) scales with the inertial force:\n$$\nF_1 \\sim \\rho V_0^2D_0^2\n$$\nwhere $\\rho$ is density, $V_0$ is impact velocity, and $D_0$ is drop diameter.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Low Viscosity Behavior", + "content": "This relationship holds remarkably well for viscosities up to 100 times that of water!", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - High Viscosity Surprises", + "content": "When viscosity becomes significant ($Oh > 0.1$), the force increases beyond what inertia alone would predict:\n$$\nF_1 \\sim \\rho V_0^2D_0^2\\sqrt{Oh}\n$$\nThis enhancement occurs because viscous forces resist the drop's deformation, leading to higher impact pressures.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - The Second Peak: Worthington Jets and Bouncing", + "content": "> [!note] Worthington Jet\n> The second force peak coincides with a fascinating phenomenon called a Worthington jet - a thin liquid column that can shoot upward just before the drop bounces off.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - The Second Peak: Worthington Jets and Bouncing", + "content": "The second peak reveals an intricate balance between different forces:\n- For low viscosity and high speed impacts: Force scales with inertia\n- For low speed impacts: Surface tension dominates\n- At a special condition ($We \\approx 9$, $Oh < 0.01$): A `singular` jet forms with surprisingly high forces\n![[_Media/JFM-viscous-drop-impact-blog-1740211923766.png]]", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Practical Implications", + "content": "> [!important] Applications\n> These findings have direct applications in:\n> - Inkjet printing: Controlling droplet behavior\n> - Agricultural sprays: Optimizing pesticide application\n> - Respiratory disease transmission: Understanding droplet impacts\n> - Industrial cooling: Enhancing heat transfer through controlled droplet impacts", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Future Research Directions", + "content": "This work opens several interesting avenues for future investigation:\n- Unifying theories for maximum spread diameter across all viscosities\n- Understanding impact forces on soft or compliant surfaces\n- Extending findings to non-Newtonian fluids like polymer solutions", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Technical Significance", + "content": "> [!note] For the technically inclined\n> The study provides a comprehensive framework for predicting impact forces through dimensionless numbers and scaling laws.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Technical Significance", + "content": "For researchers working in this field, the paper presents new scaling laws that unify previous observations and provide a foundation for future work.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Technical Significance", + "content": "The careful experimental validation combined with theoretical analysis makes this a significant contribution to our understanding of drop impact dynamics.\n> [!faq] Original Paper\n> Sanjay, V., Zhang, B., Lv, C., & Lohse, D. (2025). The role of viscosity on drop impact forces.", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Technical Significance", + "content": "Journal of Fluid Mechanics, 1004, A6. [Open Access](https://doi.org/10.1017/jfm.2024.982).", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "2025-JFM-viscous-drop-impact - Cover of J. Fluid Mech. vol 1004", + "content": "![[_Media/JFM-viscous-drop-impact-blog-1740211513533.jpg]]", + "url": "https://blogs.comphy-lab.org/Blog/2025-JFM-viscous-drop-impact", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - Executive Summary", + "content": "Arrowhead structures, nicknamed \"narwhals,\" were initially discovered as coherent patterns in elastoinertial turbulence (EIT) simulations.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - Executive Summary", + "content": "While these structures provided valuable insights into polymer-flow interactions $-$ they can be the pathway to explain elastoinertial turbulence $-$ recent research reveals they might be artifacts of 2D simulations that become unstable in realistic 3D flows. \n> [!abstract] Key Points Overview\n> - Coherent structures could explain the pathway to elastoinertial turbulence. \n> - Arrowhead (one such traveling wave coherent solution of viscoelastic channel flow) structures are unstable in 3D flows\n> - Lack of experimental validation.\n> - Numerical artifacts play significant role $-$ presence or lack of polymeric diffusion.\n> - Transient appearances may still influence flow dynamics.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - Problem Statement", + "content": "- **Central Issue:** The existence and significance of arrowhead structures in elastoinertial turbulence. \n- **Importance:** Understanding these structures could reveal fundamental mechanisms of polymer-flow interactions and turbulence development.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - Historical note", + "content": "The two Phys. Rev. Lett. outline the exact traveling wave solutions $-$ now commonly called arrowheads or narwhals. \n![|750](_Media/Arrowheads-in-elastoinertial-turbulence-1740331019797.png)\n[J. Page, Y. Dubief & R. R. Kerswell, Phys. Rev.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - Historical note", + "content": "Lett., 125:15, 154501 (2020)](https://doi.org/10.1103/PhysRevLett.125.154501)\n![](_Media/Arrowheads-in-elastoinertial-turbulence-1740331094800.png)\n[A. Morozov, Phys. Rev. Lett., 129:1, 017801 (2022)](https://doi.org/10.1103/PhysRevLett.129.017801)", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - Methodology", + "content": "The research community has employed multiple approaches to study arrowhead structures:\n> [!method] Research Methods\n> - 2D and 3D numerical simulations\n> - Linear stability analysis\n> - Flow visualization experiments\n> - Polymer diffusion modeling", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - What are arrowheads?", + "content": "**Elastoinertial turbulence (EIT)** is a chaotic flow state in dilute polymer solutions that arises when fluid inertia and polymer elasticity jointly drive instabilities.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - What are arrowheads?", + "content": "In this regime, simulations have revealed distinctive **arrowhead-shaped coherent structures** (nicknamed “narwhal” structures for their horn-like appearance).", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - What are arrowheads?", + "content": "These are highly organized patterns embedded within the turbulence, consisting of a polymer stress distribution coupled with a vortical flow pattern.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Arrowheads in elastoinertial turbulence - What are arrowheads?", + "content": "An arrowhead structure has\n* **Localized polymer stretch:** a thin sheet of highly stretched polymer (high elastic stress) forming a triangular, arrowhead-like region spanning from the near-wall area to the channel center (symmetric about the mid-plane).\n* **Flanking vortices:** a pair of counter-rotating vortices on either side of this polymer sheet.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "0_ToDo-Blog-public - tags:", - "content": "Each post should highlight the motivation, key findings, and broader implications of the work, along with engaging visuals or videos (where applicable).", - "url": "https://blogs.comphy-lab.org/0_ToDo-Blog-public", + "title": "Arrowheads in elastoinertial turbulence - What are arrowheads?", + "content": "These vortices pull fluid (and polymers) up from the walls toward the center, feeding and elongating the polymer-rich “horn” of the arrowhead.\n* **Coherent propagation:** the structure travels downstream as a **traveling wave**, maintaining its shape over time rather than dissipating like a random eddy.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "0_ToDo-Blog-public - tags:", - "content": "Work in Progress \nTo jump or not to jump: Adhesion and viscous dissipation dictate the detachment of coalescing wall-attached bubbles\nLink: arXiv:2501.05532\nViscoelastic Worthington jets & droplets produced by bursting bubbles\nLink: arXiv:2408.05089\nUnifying theory of scaling in drop impact: Forces & maximum spreading diameter\nLink: arXiv:2408.12714\nElectrolyte spraying within H₂ bubbles during water electrolysis\nLink: arXiv:2409.00515\n2025 \nThe role of viscosity on drop impact forces on non-wetting surfaces\nLink: arXiv:2311.03012\nFocusing of concentric free-surface waves\nLink: arXiv:2406.05416\n2024 \nBursting bubble in an elastoviscoplastic medium\nHighlight: Cover of J.", - "url": "https://blogs.comphy-lab.org/0_ToDo-Blog-public", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "Arrowhead structures emerge from a flow instability driven by polymer elasticity.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "0_ToDo-Blog-public - tags:", - "content": "Fluid Mech. Link: DOI\n2023 \nDrop impact on viscous liquid films\nLink: DOI\nWhen does an impacting drop stop bouncing? Link: DOI\n2022 \nPh.D.", - "url": "https://blogs.comphy-lab.org/0_ToDo-Blog-public", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "At high Weissenberg number ($Wi$, dimensionless stress relaxation time $-$ high $Wi$ imply strong elastic effects) and moderate Reynolds number ($Re$), an otherwise laminar channel flow becomes unstable to disturbances at the channel center.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "0_ToDo-Blog-public - tags:", - "content": "Thesis: Viscous free-surface flows\nLinks: Thesis Info, DOI, move here from old website\nImpact forces of water drops falling on superhydrophobic surfaces\nHighlights: Editor's Suggestion, Research Highlight in Nature\nLink: DOI\n2021 \nBursting bubble in a viscoplastic medium\nLink: DOI\n2020 \nLifting a sessile oil drop from a superamphiphobic surface with an impacting one\nLink: DOI\n2019 \nConsequences of inclined and dual jet impingement in stagnant liquid and stratified layers\nLink: DOI\n2018 \nFormation of fluid structures due to jet-jet and jet-sheet interactions\nLink: DOI\nNumerical assessment of hazard in compartmental fire having steady heat release rate from the source\nLink: DOI\n2017 \nFormation of liquid chain by collision of two laminar jets\nLink: DOI\nOn air entrainment in a water pool by impingement of a jet\nLink: DOI\nBack to main website\nHome, Team, Research, Github", - "url": "https://blogs.comphy-lab.org/0_ToDo-Blog-public", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "This **center-mode instability** begins as a pattern of vortices and polymer stretch in the middle of the channel, which grows and nonlinearly saturates into the arrowhead form.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "tags:\n - arrowhead\n - narwhal\n - Coherent\n - Elastoinertial\n - Turbulence\nCoherent structures could explain the pathway to elastoinertial turbulence.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "Above a critical $Wi$, the flow spontaneously develops arrowhead patterns; at higher $Wi$, these patterns persist and can dominate as a stable wave.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Arrowhead (one such traveling wave coherent solution of viscoelastic channel flow) structures are unstable in 3D flows\nLack of experimental validation. Numerical artifacts play significant role − presence or lack of polymeric diffusion. Transient appearances may still influence flow dynamics.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "At sufficiently large $Wi$, the chaotic EIT can give way to a single steady arrowhead state, indicating that this coherent structure becomes a stable attractor when elasticity dominates.\n**Polymer–flow coupling:** The self-sustaining nature of an arrowhead comes from a feedback loop between polymer stretching and fluid motion.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Problem Statement \nCentral Issue: The existence and significance of arrowhead structures in elastoinertial turbulence. Importance: Understanding these structures could reveal fundamental mechanisms of polymer-flow interactions and turbulence development. Historical note The two Phys. Rev.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "The polymer’s evolution equation captures this interplay:\n$$\n\\frac{D \\mathbf{C}}{Dt} = \\mathbf{C}\\cdot(\\nabla \\mathbf{u})^T + (\\nabla \\mathbf{u})\\cdot \\mathbf{C} - \\frac{1}{Wi}(\\mathbf{C} - \\mathbf{I})\n$$\nwhere $C$ is the polymer conformation tensor.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Lett. outline the exact traveling wave solutions − now commonly called arrowheads or narwhals. J. Page, Y. Dubief & R. R. Kerswell, Phys. Rev. Lett., 125:15, 154501 (2020)\nA. Morozov, Phys. Rev.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "In an arrowhead, the vortex pair generates strong shear and extensional flow that continuously amplifies polymer stretch along its arms. Because relaxation is slow at high $Wi$, a persistent high-tension polymer zone forms instead of relaxing away.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Lett., 129:1, 017801 (2022)Methodology The research community has employed multiple approaches to study arrowhead structures:Research Methods\n2D and 3D numerical simulations\nLinear stability analysis\nFlow visualization experiments\nPolymer diffusion modeling\nWhat are arrowheads?", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why do arrowheads form?", + "content": "That stretched-polymer zone exerts elastic stress back on the fluid, reinforcing the vortices that created it. Thus the vortices and polymer sheet sustain each other: the flow keeps the polymers stretched, and the polymer tension keeps the flow organized in the arrowhead pattern.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Elastoinertial turbulence (EIT) is a chaotic flow state in dilute polymer solutions that arises when fluid inertia and polymer elasticity jointly drive instabilities.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Different types of arrowheads", + "content": "![](_Media/Arrowheads-in-elastoinertial-turbulence-1740342415364.png)\nFig. Different realizations of arrowheads. Figure taken from [Y. Dubief, J. Page, R. R. Kerswell, V. E. Terrapon & V. Steinberg, Phys. Rev. Fluids, 7:7, 073301 (2022)](https://arxiv.org/pdf/2006.06770)", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In this regime, simulations have revealed distinctive arrowhead-shaped coherent structures (nicknamed “narwhal” structures for their horn-like appearance).", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why are arrowheads important?", + "content": "Identifying arrowhead structures can be pivotal for understanding EIT. They are the viscoelastic analog of coherent structures in Newtonian turbulence (like near-wall streaks and rolls), providing a clear `skeleton` for the turbulence.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "These are highly organized patterns embedded within the turbulence, consisting of a polymer stress distribution coupled with a vortical flow pattern.An arrowhead structure has\nLocalized polymer stretch: a thin sheet of highly stretched polymer (high elastic stress) forming a triangular, arrowhead-like region spanning from the near-wall area to the channel center (symmetric about the mid-plane).", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why are arrowheads important?", + "content": "This shows that EIT is not just random; it is built around repeatable polymer–flow patterns. Arrowhead structures also showcase a new route to sustain turbulence: they show that **elastic forces can maintain complex flow structures even at Reynolds numbers where a Newtonian flow would stay laminar**.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Flanking vortices: a pair of counter-rotating vortices on either side of this polymer sheet. These vortices pull fluid (and polymers) up from the walls toward the center, feeding and elongating the polymer-rich “horn” of the arrowhead.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Why are arrowheads important?", + "content": "Finally, they offer a bridge between regimes, connecting purely elastic turbulence ($Re ≈ 0$) with elastoinertial turbulence at higher $Re$ with $Wi \\gg 1$.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Coherent propagation: the structure travels downstream as a traveling wave, maintaining its shape over time rather than dissipating like a random eddy. Why do arrowheads form? Arrowhead structures emerge from a flow instability driven by polymer elasticity.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "A critical question is whether these arrowhead structures are present in **3D flows** and experiments, or if they are artifacts of idealized 2D simulations.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "At high Weissenberg number (Wi, dimensionless stress relaxation time − high Wi imply strong elastic effects) and moderate Reynolds number (Re), an otherwise laminar channel flow becomes unstable to disturbances at the channel center.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "It has been claimed – and largely supported by evidence – that a single arrowhead wave _disappears_ in fully 3D simulations and has never been observed in experiments.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "This center-mode instability begins as a pattern of vortices and polymer stretch in the middle of the channel, which grows and nonlinearly saturates into the arrowhead form.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "Recent studies confirm that in a 3D domain, an arrowhead (narwhal) state is **linearly unstable** and quickly breaks down into turbulence.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Above a critical Wi, the flow spontaneously develops arrowhead patterns; at higher Wi, these patterns persist and can dominate as a stable wave.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "Morozov and co-workers performed a linear stability analysis of the 2D travelling-wave solution and found it unstable to spanwise perturbations when embedded in a 3D domain ([M. Lellep, M. Linkmann & A. Morozov, Proc. Natl. Acad. Sci., 121:9, e2318851121 (2024)](https://doi.org/10.1073/pnas.2318851121)).", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "At sufficiently large Wi, the chaotic EIT can give way to a single steady arrowhead state, indicating that this coherent structure becomes a stable attractor when elasticity dominates.Polymer–flow coupling: The self-sustaining nature of an arrowhead comes from a feedback loop between polymer stretching and fluid motion.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "In other words, _“unlike 2D, in 3D the narwhal in a channel appears to become unstable, leading to chaotic flows”_. This means that a coherent arrowhead structure cannot persist as a steady state in a wide 3D channel; it inevitably triggers its own demise into disordered motion.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The polymer’s evolution equation captures this interplay:DCDt=C⋅(∇u)T+(∇u)⋅C−1Wi(C−I)where C is the polymer conformation tensor. In an arrowhead, the vortex pair generates strong shear and extensional flow that continuously amplifies polymer stretch along its arms.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "Indeed, direct 3D simulations of EIT show the flow filled with multiscale, transient structures rather than a single arrowhead.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Because relaxation is slow at high Wi, a persistent high-tension polymer zone forms instead of relaxing away. That stretched-polymer zone exerts elastic stress back on the fluid, reinforcing the vortices that created it.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "The characteristic structures of 3D EIT are **sheet-like regions of high polymer stretch** and streamwise vortices (often aligned in the spanwise direction) $–$ no long-lived arrowhead pattern is evident. Experimentally, too, **no** arrowhead or narwhal-shaped structures have been directly observed.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Thus the vortices and polymer sheet sustain each other: the flow keeps the polymers stretched, and the polymer tension keeps the flow organized in the arrowhead pattern.Different types of arrowheads \nFig. Different realizations of arrowheads. Figure taken from Y. Dubief, J. Page, R. R. Kerswell, V. E.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "Laboratory studies (using techniques like flow visualization or velocimetry in polymer solutions) report chaotic fluctuations and elastic “sheets” of polymer stretch, but not a stable arrowhead wave.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Terrapon & V. Steinberg, Phys. Rev. Fluids, 7:7, 073301 (2022) Why are arrowheads important? Identifying arrowhead structures can be pivotal for understanding EIT.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "For example, experimental and high-Reynolds 3D DNS studies show polymers stretched in thin sheets inclined to the flow and emerging vortex tubes, with **no mention of a sustained arrowhead** structure. Recent research largely _supports_ these claims.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "They are the viscoelastic analog of coherent structures in Newtonian turbulence (like near-wall streaks and rolls), providing a clear skeleton for the turbulence. This shows that EIT is not just random; it is built around repeatable polymer–flow patterns.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "The consensus is that the arrowhead/narwhal is a **2D artifact** in the sense that it cannot survive the spanwise degrees of freedom of a real 3D flow.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Arrowhead structures also showcase a new route to sustain turbulence: they show that elastic forces can maintain complex flow structures even at Reynolds numbers where a Newtonian flow would stay laminar.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "Additionally, **no experimental evidence** of arrowheads has emerged, despite the intensive study of EIT in channels and pipes over the past decade – reinforcing the idea that such structures, if they form, are immediately disrupted in real flows.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Finally, they offer a bridge between regimes, connecting purely elastic turbulence (Re≈0) with elastoinertial turbulence at higher Re with Wi≫1.Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "However, recent findings do _nuance_ this picture: even though a **stable** narwhal does not exist in 3D, researchers have noted that **transient** arrowhead-like patterns can _appear fleetingly_ within a 3D turbulent flow.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "A critical question is whether these arrowhead structures are present in 3D flows and experiments, or if they are artifacts of idealized 2D simulations.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "For instance, simulations of low-Re viscoelastic turbulence sometimes display instantaneous polymer-stress contours resembling the arrowhead shape ([J. R. C. King, R. J. Poole, C. P. Fonte & S. J. Lind, arXiv:2501.09421 (2025)](https://arxiv.org/abs/2501.09421)).", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "It has been claimed – and largely supported by evidence – that a single arrowhead wave disappears in fully 3D simulations and has never been observed in experiments. Recent studies confirm that in a 3D domain, an arrowhead (narwhal) state is linearly unstable and quickly breaks down into turbulence.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "These transient appearances suggest that the arrowhead solution still exists as an organizing saddle or ephemeral structure in phase space, even if it’s not sustained.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Morozov and co-workers performed a linear stability analysis of the 2D travelling-wave solution and found it unstable to spanwise perturbations when embedded in a 3D domain (M. Lellep, M. Linkmann & A. Morozov, Proc. Natl. Acad. Sci., 121:9, e2318851121 (2024)).", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Numerical vs. Experimental Evidence: Do Arrowheads Exist in 3D or in Reality?", + "content": "In summary, the latest evidence indicates that arrowhead/narwhal structures **do not persist** in fully 3D EIT or experiments – they are replaced by more complex chaotic dynamics – but they may manifest momentarily, hinting that they influence the flow as part of its underlying state space (rather than as an observable steady feature).", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In other words, “unlike 2D, in 3D the narwhal in a channel appears to become unstable, leading to chaotic flows”. This means that a coherent arrowhead structure cannot persist as a steady state in a wide 3D channel; it inevitably triggers its own demise into disordered motion.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "The formation and persistence of arrowhead structures are highly sensitive to modeling choices like polymer diffusion and domain dimensionality, raising the question of whether these structures are genuine physical features or numerical artifacts. **Polymer stress diffusion** in particular plays a pivotal role.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Indeed, direct 3D simulations of EIT show the flow filled with multiscale, transient structures rather than a single arrowhead.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "In simulations of viscoelastic fluids (Oldroyd-B or FENE-P models), a small artificial diffusion term is often added to the polymer constitutive equations for numerical stability.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The characteristic structures of 3D EIT are sheet-like regions of high polymer stretch and streamwise vortices (often aligned in the spanwise direction) – no long-lived arrowhead pattern is evident. Experimentally, too, no arrowhead or narwhal-shaped structures have been directly observed.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Recent work showed that even an _infinitesimal_ polymer diffusion can qualitatively change the flow’s stability characteristics. \n[M. Beneitez, J. Page, Y. Dubief & R. R. Kerswell, J.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Laboratory studies (using techniques like flow visualization or velocimetry in polymer solutions) report chaotic fluctuations and elastic “sheets” of polymer stretch, but not a stable arrowhead wave.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Fluid Mech., 981, A30 (2024)](https://doi.org/10.1017/jfm.2024.50) discovered a _polymer diffusive instability (PDI)_: with a nonzero diffusion, the laminar flow becomes linearly unstable, producing a small-scale traveling wave at the wall as the primary bifurcation.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "For example, experimental and high-Reynolds 3D DNS studies show polymers stretched in thin sheets inclined to the flow and emerging vortex tubes, with no mention of a sustained arrowhead structure. Recent research largely supports these claims.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Notably, this instability does _not_ exist when polymer diffusion is strictly zero – the base flow would be linearly stable in the absence of diffusion. The implication is that the arrowhead structure in 2D simulations can arise from the PDI – essentially a numerical artifact of including diffusion.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The consensus is that the arrowhead/narwhal is a 2D artifact in the sense that it cannot survive the spanwise degrees of freedom of a real 3D flow.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "The diffusive term “triggers” a finite-amplitude arrowhead-like wave that would not naturally appear at that parameter set without diffusion.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Additionally, no experimental evidence of arrowheads has emerged, despite the intensive study of EIT in channels and pipes over the past decade – reinforcing the idea that such structures, if they form, are immediately disrupted in real flows.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "In reality, molecular diffusion of polymers is extremely small, so such an instability might never dominate the transition; the flow could bypass it via a subcritical route.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "However, recent findings do nuance this picture: even though a stable narwhal does not exist in 3D, researchers have noted that transient arrowhead-like patterns can appear fleetingly within a 3D turbulent flow.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Thus, one must be cautious: the beautiful arrowhead patterns seen in some simulations may owe their existence to an unphysically large diffusion or other numerical regularization.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "For instance, simulations of low-Re viscoelastic turbulence sometimes display instantaneous polymer-stress contours resembling the arrowhead shape (J. R. C. King, R. J. Poole, C. P. Fonte & S. J. Lind, arXiv:2501.09421 (2025)).", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "In that sense, they are partly a _numerical artifact_.\n**Numerical resolution** and dimensionality further affect arrowhead formation.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "These transient appearances suggest that the arrowhead solution still exists as an organizing saddle or ephemeral structure in phase space, even if it’s not sustained.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Insufficient resolution can introduce excessive numerical diffusion (smoothing out small scales), potentially _artificially stabilizing_ a large-scale structure like the arrowhead.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In summary, the latest evidence indicates that arrowhead/narwhal structures do not persist in fully 3D EIT or experiments – they are replaced by more complex chaotic dynamics – but they may manifest momentarily, hinting that they influence the flow as part of its underlying state space (rather than as an observable steady feature).Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Likewise, restricting the simulation to 2D (as was done in the initial arrowhead studies) removes the 3D disturbances that would break up the arrowhead. The 2D assumption is a strong modeling simplification that essentially _locks in_ the coherent structure. As [M. Lellep, M. Linkmann & A. Morozov, Proc.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The formation and persistence of arrowhead structures are highly sensitive to modeling choices like polymer diffusion and domain dimensionality, raising the question of whether these structures are genuine physical features or numerical artifacts.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "Natl. Acad. Sci., 121:9, e2318851121 (2024)](https://doi.org/10.1073/pnas.2318851121) note, one cannot draw reliable conclusions about EIT dynamics from strictly 2D simulations.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Polymer stress diffusion in particular plays a pivotal role. In simulations of viscoelastic fluids (Oldroyd-B or FENE-P models), a small artificial diffusion term is often added to the polymer constitutive equations for numerical stability.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "In 2D, the narwhal is “benign” and can remain as a steady state, but this is sustained only because the normal 3D instability modes are disallowed.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Recent work showed that even an infinitesimal polymer diffusion can qualitatively change the flow’s stability characteristics. M. Beneitez, J. Page, Y. Dubief & R. R. Kerswell, J.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "In a fully resolved 3D simulation, that arrowhead state sits on a razor’s edge – any slight spanwise perturbation will cause it to oscillate or breakdown. Thus, the arrowhead’s longevity in 2D is not reflective of physical reality; it’s a consequence of an artificially constrained simulation.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Fluid Mech., 981, A30 (2024) discovered a polymer diffusive instability (PDI): with a nonzero diffusion, the laminar flow becomes linearly unstable, producing a small-scale traveling wave at the wall as the primary bifurcation.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "On the other hand, it’s too strong to dismiss arrowheads entirely as a “mere artifact.” They are _mathematically legitimate_ nonlinear solutions of the viscoelastic flow equations (even if attained under special conditions) and they capture real physics – notably, a mechanism of polymer stretching and feedback.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Notably, this instability does not exist when polymer diffusion is strictly zero – the base flow would be linearly stable in the absence of diffusion. The implication is that the arrowhead structure in 2D simulations can arise from the PDI – essentially a numerical artifact of including diffusion.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "The consensus view is that arrowhead/narwhal structures are **embedded but unstable** features of the real system. They are “real” solutions, but one that the unconstrained system will only transiently visit. Diffusion and other numerical choices can exaggerate their prominence.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The diffusive term “triggers” a finite-amplitude arrowhead-like wave that would not naturally appear at that parameter set without diffusion.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Arrowheads in elastoinertial turbulence - Role of Diffusion, Resolution, and Modeling Choices: Physical Feature or Numerical Artifact?", + "content": "In summary, high-fidelity simulations indicate that arrowheads do **not** represent a permanent physical flow pattern; rather, they are a byproduct of low-dimensional or diffusive modeling that nonetheless offer insight into the polymer–flow interactions in EIT.", + "url": "https://blogs.comphy-lab.org/Blog/Arrowheads in elastoinertial turbulence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In reality, molecular diffusion of polymers is extremely small, so such an instability might never dominate the transition; the flow could bypass it via a subcritical route.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - > [", + "content": "> [!tldr] TL;DR\n> During the coalescence of bubbles with different sizes, the **speed** of the ensuing capillary waves remains almost unchanged and scales with the inertio‐capillary velocity. However, the strength (or curvature) of these waves depends on the bubble size ratio.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Thus, one must be cautious: the beautiful arrowhead patterns seen in some simulations may owe their existence to an unphysically large diffusion or other numerical regularization.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - > [", + "content": "In the equal‐sized case, the wave curvature diminishes and then plateaus, whereas for highly asymmetric (large vs. tiny) bubbles, the curvature initially decreases but then rebounds sharply due to the changing geometry.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In that sense, they are partly a numerical artifact.Numerical resolution and dimensionality further affect arrowhead formation.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - > [", + "content": "Two **approximate** scaling laws emerge for the strongest wave curvature:  in the low‐viscosity limit and  in the moderate‐to‐higher viscosity regime.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Insufficient resolution can introduce excessive numerical diffusion (smoothing out small scales), potentially artificially stabilizing a large-scale structure like the arrowhead.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - > [", + "content": "Experimental data diverge somewhat from these simple power laws, indicating a need for refined models to explain the distinct curvature behavior at low Ohnesorge numbers.\n![Fig-1_schematic](_Media/20250112214056729_Features-of-capillary-waves-during-asymmetric-bubble-coalescence.png)\nFigure 1.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Likewise, restricting the simulation to 2D (as was done in the initial arrowhead studies) removes the 3D disturbances that would break up the arrowhead. The 2D assumption is a strong modeling simplification that essentially locks in the coherent structure. As M. Lellep, M. Linkmann & A. Morozov, Proc.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - > [", + "content": "Schematic of asymmetric coalescence of bubbles. Following the coalescnece, train of capillary waves travel on the surface of both bubbles.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Natl. Acad. Sci., 121:9, e2318851121 (2024) note, one cannot draw reliable conclusions about EIT dynamics from strictly 2D simulations. In 2D, the narwhal is “benign” and can remain as a steady state, but this is sustained only because the normal 3D instability modes are disallowed.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Control parameters", + "content": "**Ohnesorge number** (ratio of the inertio-capillary and inertio-viscous timescales)\n$$\nOh = \\frac{\\eta_l}{\\sqrt{\\rho_l\\gamma R_0}}\n$$\n**Asymmetry parameter** (ratio of the radii of the two bubbles)\n$$\n\\chi = \\frac{R}{r}\n$$", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In a fully resolved 3D simulation, that arrowhead state sits on a razor’s edge – any slight spanwise perturbation will cause it to oscillate or breakdown. Thus, the arrowhead’s longevity in 2D is not reflective of physical reality; it’s a consequence of an artificially constrained simulation.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Looking at the speed of the capillary waves", + "content": "> [!important]\n> The velocity of this capillary waves still scales with the inertio-capillary velocity!\n![Fig-2_waveTrajectory](_Media/20250112214130458_Features-of-capillary-waves-during-asymmetric-bubble-coalescence.png)\nFigure 2.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Looking at the speed of the capillary waves", + "content": "Trajectory of the capillary waves during coalescence of same sized bubbles ($R = r$). Different colors represent different Ohnesorge numbers $Oh$. \n![Fig-3_waveSpeed](_Media/20250112214151030_Features-of-capillary-waves-during-asymmetric-bubble-coalescence.png)\nFigure 3.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Looking at the speed of the capillary waves", + "content": "Trajectory of the capillary waves during coalescence of same unequal sized bubbles with $R \\gg r$. Different colors represent different Ohnesorge numbers $Oh$. \n> [!note]\n> Infact the velocity hardly changes from $R = r$ to $R \\gg r$", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Strength of capillary waves for $R = r$", + "content": "Although the speed of capillary waves remain the same. There can be differences in the strength of the waves. \n![Fig-4_capillary-waves-Same-sized](_Media/20250112214226072_Features-of-capillary-waves-during-asymmetric-bubble-coalescence.png)\nFigure 4.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Strength of capillary waves for $R = r$", + "content": "The curvature of the strongest capillary wave decreases in time and then saturates to a constant value.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Strength of capillary waves for $R = r$", + "content": "This is different from what happens at $R \\gg r$, \n![Fig-5_capillary-waves-champagne-bubbles](_Media/20250112214243110_Features-of-capillary-waves-during-asymmetric-bubble-coalescence.png)\nFigure 5.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Strength of capillary waves for $R = r$", + "content": "The curvature of the strongest capillary wave decreases in time, reaches a minima, and then increases sharply as the bubble cavity configuration changes (see video above, and also see [1]).", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Can we understand this change in curvature?", + "content": "Given the asymmetry at $R \\gg r$, the waves have this feature to come back up and the curvature increases whereas for $R = r$ symmetry of the problem results in no significant geometry change following flow focussing and the curvature does not further increase.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Can we understand this change in curvature?", + "content": "Looking at the balance between the kinetic energy (generated immediately following the coalescence event), \n$$\n\\frac{d}{d\\tau}\\int_{\\Omega_\\kappa}\\frac{\\rho V^2}{2}d\\Omega_\\kappa \\sim 2\\eta\\int_{\\Omega_\\eta}\\left(\\boldsymbol{\\mathcal{D}:\\mathcal{D}}\\right)d\\Omega_\\eta\n$$\n**Note:** Here, we balance the kinetic energy of the capillary waves (across volume $\\Omega_\\kappa$) with viscous dissipation across the bulk volume $\\Omega_\\eta$ where velocity gradients are non-zero.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Can we understand this change in curvature?", + "content": "Consequently, the volume scale associated with the kinetic energy carried by the waves is $\\Omega_\\kappa \\sim R\\kappa^{-2}$ and the dissipation volume scales as $\\Omega_\\eta \\sim R\\delta_\\eta^2$ where $\\delta_\\eta$ is the viscous boundary layer attached to the free-surface where velocity gradients are highest (see the videos above, the dark regions in visocus dissipation function characterize $\\Omega_\\eta$ and high velocity regions indicate $\\Omega_\\kappa$)\n$$\n\\frac{1}{\\tau}\\rho V^2 R\\kappa^{-2} \\sim \\eta\\left(\\frac{V}{\\kappa^{-1}}\\right)^2R\\delta^2\n$$\nRearranging the above equation, we can find the time scale associated with this transfer process:\n$$\n\\tau \\sim \\frac{\\rho}{\\eta}\\frac{\\kappa^{-4}}{\\delta^2}\n$$", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - Rearranging the expression and substituting inertio-capillary timescale", + "content": "$$\n\\kappa^4\\delta^2 \\sim \\frac{\\rho}{\\eta}\\sqrt{\\frac{\\gamma}{\\rho R^3}}\n$$\nNormalize both sides by $R^2$, \n$$\n\\tilde{\\kappa}^4\\tilde{\\delta}^2 \\sim \\frac{\\sqrt{\\rho\\gamma R}}{\\eta}\n$$", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - In the low viscosity limit,", + "content": "$\\delta \\sim \\kappa^{-1}$, which giving\n$$\n\\tilde{\\kappa} \\sim Oh^{-1/2}\n$$", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - In moderate high viscosity limit,", + "content": "$$\n\\delta \\sim \\sqrt{\\frac{\\eta}{\\rho}t} = \\sqrt{\\frac{\\eta}{\\rho}\\left(\\frac{\\rho\\kappa^{-3}}{\\gamma}\\right)^{1/2}}\n$$\n**Rearranging the expression and filling in the general equation relating $\\kappa$ and $\\delta$ gives** \n$$\n\\tilde{\\kappa}^{5/2} \\sim \\frac{\\rho\\gamma R}{\\eta^2}\n$$\nor, \n$$\n\\tilde{\\kappa} \\sim Oh^{-4/5}\n$$\n![Fig-6_curvatureAndOh-R](_Media/20250112214304930_Features-of-capillary-waves-during-asymmetric-bubble-coalescence.png)\nFigure 6.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - In moderate high viscosity limit,", + "content": "Minumum curvature of the strongest capillary wave as a function of the Ohnesorge number and the radii ratio of the two bubbles.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - In moderate high viscosity limit,", + "content": "The two scaling relations developed above are reasonable but the deviations observed in the data leave room for improvement.\n> [!cite] Note:\n> The scaling laws developed here are also described in detail in [2]\nSo, why does the radii ratio influence the curvature strongly but not the wave speed? **Unfortunately,** this is still an open question.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - In moderate high viscosity limit,", + "content": "The hand-wavy argument is given in this document (including the geometric and asymmetry arguments) but the scaling laws developed here only work approximately and clearly the data for $Oh \\to 0$ shows deviation in curvature. #foodForThought", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - More resources", + "content": "| [GitHub](https://github.com/VatsalSy/Asymmetries-in-coalescence) | [License](https://github.com/VatsalSy/Asymmetries-in-coalescence/blob/main/LICENSE) | [Latest Changes](https://github.com/VatsalSy/Asymmetries-in-coalescence/commits/main) | [[Features-of-capillary-waves-during-asymmetric-bubble-coalescence.pdf\\|pdf]] |\n| :--------------------------------------------------------------: | :---------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------: | ----------------------------------------------------------------------------- |\n[1] V.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - More resources", + "content": "Sanjay, D. Lohse, and M. Jalaal, “Bursting bubble in a viscoplastic medium,” _J. Fluid Mech._, vol. 922, p. A2, 2021.\n[2] J. M. Gordillo and J. Rodríguez-Rodríguez, “Capillary waves control the ejection of bubble bursting jets,” _J.", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Features-of-capillary-waves-during-asymmetric-bubble-coalescence - More resources", + "content": "Fluid Mech._, vol. 867, pp. 556–571, May 2019, doi: [10.1017/jfm.2019.161](https://doi.org/10.1017/jfm.2019.161).\n> [!significance]- Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)\n> Date published:: Jan 12, 2025
\n> Date modified:: Jan 26, 2025 at 11:50 CET\n> [!meta] Back to main website\n> [Home](https://comphy-lab.org/), [Team](https://comphy-lab.org/team), [Research](https://comphy-lab.org/research), [Github](https://github.com/comphy-lab)", + "url": "https://blogs.comphy-lab.org/Blog/Features-of-capillary-waves-during-asymmetric-bubble-coalescence", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Vatsal Sanjay ([https://comphy-lab", + "content": "Vatsal Sanjay ([https://comphy-lab.org](https://comphy-lab.org)),\nCoMPhy Lab, Physics of Fluids, Univ.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Vatsal Sanjay ([https://comphy-lab", + "content": "Twente\n$$\\eta(x)=a\\sum_{n=1}^{N}\\left[c_{n}\\,\\epsilon^{n}\\,\\cos\\bigl(nkx\\bigr)\\right],$$\nwhere the function $c_n$ is \n$$\nc_{n} \n= \\frac{(2n - 1)!!}{2^{n-1}\\,n!}.$$\n```c\n/**\n* @brief Calculates the Stokes coefficient for nth order wave\n* @param n Order of the wave\n* @return Coefficient value based on double factorial calculation\n*/\ndouble stokes_coefficient (int n) {\nif (n == 1) return 1.0;\nint k = 2*n - 1;\ndouble double_factorial = 1.0;\nfor (int i = 1; i <= k; i += 2)\ndouble_factorial *= i;\nreturn double_factorial / (pow(2,(n-1)) * tgamma(n+1));\n}\n/**\n* @brief Calculates the surface elevation for Stokes wave\n* @param x Horizontal position\n* @param a Wave amplitude\n* @param k Wave number\n* @param order Order of Stokes expansion\n* @return Surface elevation at position x\n*/\ndouble eta_stokes (double x, double a, double k, int order) {\ndouble eta = 0.0;\ndouble epsilon = k*a;\nfor (int n = 1; n <= order; n++) {\ndouble c = stokes_coefficient(n);\neta += c * pow(epsilon, n)*cos(n*k*x);\n}\nreturn eta * a;\n}\n```", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Executive Summary of Fenton's papers '90 and '99:", + "content": "## Executive Summary of Fenton's papers '90 and '99:", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Problem Statement", + "content": "How to describe nonlinear waves? \n- With a particular emphasis on extending the accuracy and applicability of wave theories for ocean engineering.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Problem Statement", + "content": "The primary focus is to address periodic standing waves and Stokes waves, which are critical for understanding wave interactions in shallow and deep water regimes. Central to this is determining coefficients and analytical solutions for arbitrary-order expansions.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Methodology", + "content": "- [[fentonNumericalMethodsNonlinear1999|Fenton (1999)]] emphasizes numerical solutions for nonlinear problems, including high-order Fourier methods for wave field expansions and their convergence properties. [@fentonNumericalMethodsNonlinear1999]\n- [[fentonNonlinearWaveTheories1990|Fenton (1990)]] extends nonlinear wave theories with cnoidal and Stokes theories to fifth-order expansions, using Fourier techniques for enhanced computational accuracy. [@fentonNonlinearWaveTheories1990] \n![schematic-of-problem](_Media/Stokes%20waves_arbitary%20order-20241225034827809.png)\nBoth employ polynomial and trigonometric expansions for solving boundary conditions and streamline the application of nonlinear theories in various wave contexts.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Key Findings", + "content": "1. **Equation of Arbitrary Order Standing Waves**:\n The governing expressions for surface elevation and velocity components leverage Fourier series expansions or hyperbolic functions, depending on the wave height and wavelength regime:\n - Standing wave elevation, $\\eta(x, t)$, approximates multiple harmonics where coefficients stem from iterative numerical techniques.\n - Stokes coefficients for arbitrary-order expansions use factorial-based formulas for precise amplitude corrections.\n2. **Numerical Accuracy**:\n - Both methods demonstrate high accuracy when wave heights and wavelengths align with their regimes of validity, but overlap regions where neither theory performs optimally exist.\n - The fifth-order Stokes expansion offers excellent performance for waves with moderate wavelengths, while cnoidal approximations excel for shallow water waves.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Implications", + "content": "The work advances computational methods to extend the precision of nonlinear wave predictions, enabling:\n- Safer and more cost-effective coastal structure designs.\n- Improved models for wave propagation over complex seabeds.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Recommendations", + "content": "One option is to use **mixed-order Stokes-cnoidal** expansions for transitional regimes and refine computational methods for boundary conditions in breaking wave scenarios.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Stokes waves_arbitary order - Arbitrary Order Standing Wave Equation", + "content": "A general formula for Stokes coefficients of the \\(n\\)-th order wave, as described in the texts, resembles:\n```c\ndouble stokes_coefficient(int n) {\n if (n == 1) return 1.0;\n double double_factorial = 1.0;\n for (int i = 1; i <= 2*n - 1; i += 2)\n double_factorial *= i;\n return double_factorial / (pow(2, n - 1) * tgamma(n + 1));\n}\n```\nAnd for the surface elevation of Stokes waves:\n```c\ndouble eta_stokes(double x, double a, double k, int order) {\n double eta = 0.0;\n double epsilon = k * a;\n for (int n = 1; n <= order; n++) {\n double c = stokes_coefficient(n);\n eta += c * pow(epsilon, n) * cos(n * k * x);\n }\n return eta * a;\n}\n```\nThese computations involve harmonic terms, with coefficients determined iteratively or analytically, ensuring convergence and numerical stability.", + "url": "https://blogs.comphy-lab.org/Blog/Stokes waves_arbitary order", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "On the other hand, it’s too strong to dismiss arrowheads entirely as a “mere artifact.” They are mathematically legitimate nonlinear solutions of the viscoelastic flow equations (even if attained under special conditions) and they capture real physics – notably, a mechanism of polymer stretching and feedback.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - Introduction", + "content": "Bubble bursting at the liquid–air interface is a ubiquitous phenomenon. Whether in a glass of champagne, a carbonated beverage, or a natural setting (e.g., mudpots, ocean spray), bubbles rise due to buoyancy and eventually rupture at the free surface.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The consensus view is that arrowhead/narwhal structures are embedded but unstable features of the real system. They are “real” solutions, but one that the unconstrained system will only transiently visit. Diffusion and other numerical choices can exaggerate their prominence.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - Introduction", + "content": "Upon bursting, the cavity created in the free surface collapses, generating jets and ejected droplets.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In summary, high-fidelity simulations indicate that arrowheads do not represent a permanent physical flow pattern; rather, they are a byproduct of low-dimensional or diffusive modeling that nonetheless offer insight into the polymer–flow interactions in EIT.Conclusion Recent research converges on a nuanced view of arrowhead (narwhal) structures in EIT.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - Introduction", + "content": "These droplets play important roles in:\n- **Aromatic transport** in champagne and sparkling beverages.\n- **Pathogen and aerosol spread** in contaminated water or biological fluids (coughing, sneezing).\n- **Cloud formation** through sea spray in the atmosphere.\n- **Geophysical processes**, such as mudpots or volcanic lakes involving complex rheology.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "They were a landmark discovery as a coherent viscoelastic wave, and they have deepened our insight into polymer–flow interactions. However, both simulations and theory now indicate that they are transient players in fully developed 3D turbulence rather than the primary architects of it.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - The Phenomenon", + "content": "When the bubble film ruptures, a “hole” forms in the thin liquid interface. Surface tension drives capillary waves that converge at the bottom of the cavity, shooting liquid upward in a narrow jet.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "In fact, the energy transfer analysis between flow and polymer reveals that both chaotic regimes maintain through the same near-wall mechanism, independent of the weak arrowhead structure.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - The Phenomenon", + "content": "This jet eventually breaks into droplets, as observed in:\n- **Champagne**: Enhancing aroma and flavor perception.\n- **Contaminated water**: Ejecting micro-droplets that can carry pathogens.\n- **Viscoplastic mud**: Where the yield stress of the medium significantly alters jet formation and droplet size.\n- **Viscoelastic fluids**: Such as mucosalivary fluids during sneezing or coughing.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "These findings indicate that the arrowhead represents a passive flow structure, detached from the self-sustaining mechanics of elastic turbulence inertia (EIT) (M. Beneitez, J. Page, Y. Dubief & R. R. Kerswell, J. Fluid Mech., 981, A30 (2024)).", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - The Phenomenon", + "content": "Extensive studies have addressed bubble bursting in Newtonian fluids (e.g., water). However, **non-Newtonian media**—including **viscoplastic** (mud, clay suspensions) and **viscoelastic** (polymeric solutions, mucosal fluids)—pose open research questions due to their complex rheological behavior.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "The community’s focus has shifted to how such structures populate the state space and trigger transitions, rather than expecting them to appear as steady patterns in experiments.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - Proposed Approach", + "content": "This combined proposal integrates numerical simulations with potential experimental validation to capture the entire process:\n1. **Fundamental Two-Phase Flow** \n - Implement and validate two-phase flow simulations (e.g., in [Basilisk C](http://basilisk.fr)) for bubble dynamics, jet formation, and droplet ejection in Newtonian fluids.\n2. **Non-Newtonian Rheology** \n - Extend the code to handle **generalized Newtonian** and **viscoelastic** models. \n - Explore how capillary waves and cavity collapse are altered by viscoplastic or viscoelastic effects.\n3. **Comparison & Validation** \n - Compare numerical results against known scaling laws [e.g., Duchemin et al. (2002), Walls et al. (2015), Deike et al. (2018)] and experimental data from ongoing parallel experiments.\n4. **Applications & Implications** \n - Relate findings to **aroma transport** in champagne, **aerosol generation** in pathogen-laden fluids, and **cloud formation** via marine aerosol. \n - Draw analogies to droplet formation in **coughing/sneezing**, focusing on the role of viscoelasticity in droplet sizes and distribution.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "Ongoing work continues to unravel the multi-stage transition to elastic and elasto-inertial turbulence – with arrowhead/narwhal waves serving as a valuable piece of the puzzle, albeit one with clear limitations.", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - Skills & What You Will Learn", + "content": "- **Fluid Dynamics Fundamentals** \n Develop an in-depth understanding of multiphase flows, capillary-driven phenomena, and wave–interface interactions.\n- **Rheology** \n Learn how non-Newtonian properties (viscoplasticity, viscoelasticity) influence flow and droplet formation.\n- **Computational Techniques** \n Gain experience using open-source codes (e.g., Basilisk C) for high-resolution simulations, parameter sweeps, and data analysis.\n- **Collaboration** \n Work alongside experimentalists, compare numerical and laboratory results, and interact with theorists modeling related flows.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Arrowheads in elastoinertial turbulence - tags:", - "content": "This critical understanding ensures that we appreciate the arrowhead structures for what they are: insightful and pedagogical solutions that illuminate EIT’s mechanics, but ultimately unstable in the wild chaos of real 3D turbulence.Metadata\nAuthor:: Vatsal Sanjay\nDate published:: Feb 24, 2025\nBack to main website\nHome, Team, Research, Github, Blogs\nLinks to this page0_README", - "url": "https://blogs.comphy-lab.org/Blog/Arrowheads+in+elastoinertial+turbulence", + "title": "Bursting-bubbles-complex - Supervision", + "content": "| **Supervisor** | **Email** | **Office** |\n|-----------------------------|---------------------------------------------|---------------------------|\n| **Ayush Dixit** | [a.k.dixit@utwente.nl](mailto:a.k.dixit@utwente.nl) | Meander 250 |\n| **Coen Verschuur** | [c.i.verschuur@utwente.nl](mailto:c.i.verschuur@utwente.nl) | Meander 114B |\n| **Dr.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "aliases:\n - Gauss law of ElectrostaticsGauss law of electrostatics Pre-requisites \nI assume a working knowledge of \nElectric field E→. Geometric description of electric field\nWhat is electric field flux? What is the electric field created by a point change q?", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Bursting-bubbles-complex - Supervision", + "content": "Vatsal Sanjay** | [vatsalsanjay@gmail.com](mailto:vatsalsanjay@gmail.com) | Meander 246B |\n| **Dr. Alexandros Oratis** | [a.t.oratis@utwente.nl](mailto:a.t.oratis@utwente.nl) | TU Delft |\n| **Assis. Prof. Dr.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "E=q/(4πε0r2)\nPrinciple of superposition of electric fields\nTL;DR\nGauss’ law states that the net electric flux through any closed surface is proportional to the total charge enclosed inside it.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Bursting-bubbles-complex - Supervision", + "content": "Maziyar (Mazi) Jalaal** | [m.jalaal@uva.nl](mailto:m.jalaal@uva.nl) | University of Amsterdam |\n| **Prof. Dr. Detlef Lohse** | [d.lohse@utwente.nl](mailto:d.lohse@utwente.nl) | Meander 261 |\nFeel free to reach out to any of the listed supervisors for more details.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Its integral form, ∮E→⋅dA→=qin/ε0, is most practically used with high‐symmetry geometries (spherical, cylindrical, planar). Even though it might seem universal, using it directly for complex geometries often requires additional methods.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Bursting-bubbles-complex - Key References", + "content": "- Deike, L., et al. (2018). *Dynamics of jets produced by bursting bubbles.* \n- Duchemin, L., et al. (2002). *Jet formation in bubble bursting.* \n- Ghabache, E., et al. (2016). *Evaporation of droplets from bursting bubbles.* \n- Gordillo, J.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "The differential form, ∇→⋅E→=ρ/ε0, underpins charge‐field relationships in Maxwell’s equations. Key insights include: flux remains invariant if charges stay within the boundary, and external charges yield zero net flux through a given surface.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Bursting-bubbles-complex - Key References", + "content": "M. (2019). *Capillary waves and jet formation in bubble collapse.* \n- Lhuissier, H., & Villermaux, E. (2012). *Bursting bubble film droplets.* \n- Walls, P. L. L., et al. (2015). *Jet drops from bursting bubbles: How gravity and viscosity couple to inhibit droplet production.* \n- Walls, A.", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", + "title": "Bursting-bubbles-complex - Key References", + "content": "C., et al. (2017). *Viscoelastic effects in droplet formation.* \n- Bourouiba, L. (2021). *Fluid dynamics of disease transmission.* \n- Sanjay, V., Lohse, D., & Jalaal, M. (2021). *Non-Newtonian bubble collapse in mudpots.*", + "url": "https://blogs.comphy-lab.org/Bursting-bubbles-complex", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - > [", + "content": "> [!tldr] TL;DR\n> The **Herschel–Bulkley** model unifies Newtonian, Bingham, and power-law fluids via a yield stress and a strain-rate-dependent viscosity. An $\\epsilon$-regularization ensures stable computations and recovers simpler models (Newtonian, Bingham) by tuning model parameters.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - > [", + "content": "Dimensionless groups (e.g., the plasto-capillary number  and the effective Ohnesorge) capture the interplay of fluid rheology, capillarity, and flow scales.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - > [", + "content": "Implementation details are provided, along with references, open-source code, and demonstrations of bubble-burst simulations in viscoplastic media.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - Features:", + "content": "* Yield stress $\\tau_y$\n* Power law dependance on the strain rate\n\t* Shear thinning for $n < 1$. \n\t* Shear thickening for $n > 1$. \n* Bingham model for $n = 1$. \n* Newtonian fluid for $n = 1$ and $\\tau_y = 0$.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - $\\varepsilon$-formulation", + "content": "$$\n\\boldsymbol{\\tau} = \n\\tau_{y}\\,\\boldsymbol{\\mathcal{I}} \\;+\\; K\\left(2\\boldsymbol{\\mathcal{D}}\\right)^{n}\n=\n2\\biggl[\\frac{\\tau_{y}}{2\\|\\boldsymbol{\\mathcal{D}}\\|+\\varepsilon}\\,\\boldsymbol{\\mathcal{I}}\n+\nK\\,\\bigl(2\\|\\boldsymbol{\\mathcal{D}}\\|+\\epsilon\\bigr)^{n-1}\n\\biggr]\\boldsymbol{\\mathcal{D}}.\n$$\nNormalizing stresses with $\\gamma/R_0$, length with $R_0$, and velocity with $\\sqrt{\\gamma/\\rho_lR_0}$...\n$$\n\\boldsymbol{\\tilde{\\tau}} =\n2\\biggl[\\frac{\\mathcal{J}}{2\\|\\boldsymbol{\\tilde{\\mathcal{D}}}\\|+\\varepsilon}\\,\\boldsymbol{\\mathcal{I}}\n+\nOh_K\\,\\bigl(2\\|\\boldsymbol{\\tilde{\\mathcal{D}}}\\|+\\epsilon\\bigr)^{n-1}\n\\biggr]\\boldsymbol{\\tilde{\\mathcal{D}}}.\n$$\nHere, the effective Ohnesorge is\n$$\nOh_K = \\frac{K}{\\sqrt{\\rho_l^n\\gamma^{2-n}R_0^{3n-2}}}\n$$\nThe plasto-capillary number $\\mathcal{J}$ is\n$$\\mathcal{J} = \\frac{\\tau_yR_0}{\\gamma}$$\nOne can easily see that putting $n = 1$ recovers the Bingham model with $Oh = \\eta_l/\\sqrt{\\rho_l\\gamma R_0}$.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - $\\varepsilon$-formulation", + "content": "Additionally, with $n = 1$ & $\\mathcal{J}$ = 0, the model will give a `Newtonian` response.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - Calculate the norm of the deformation tensor $\\boldsymbol{\\mathcal{D}}$:", + "content": "$$\\mathcal{D}_{11} = \\frac{\\partial u_r}{\\partial r}$$\n$$\\mathcal{D}_{22} = \\frac{u_r}{r}$$\n$$\\mathcal{D}_{13} = \\frac{1}{2}\\left( \\frac{\\partial u_r}{\\partial z}+ \\frac{\\partial u_z}{\\partial r}\\right)$$$$\\mathcal{D}_{31} = \\frac{1}{2}\\left( \\frac{\\partial u_z}{\\partial r}+ \\frac{\\partial u_r}{\\partial z}\\right)$$\n$$\\mathcal{D}_{33} = \\frac{\\partial u_z}{\\partial z}$$\n$$\\mathcal{D}_{12} = \\mathcal{D}_{23} = 0.$$\nThe second invariant is $\\mathcal{D}_2=\\sqrt{\\mathcal{D}_{ij}\\mathcal{D}_{ij}}$ (this is the Frobenius norm)\n$$\\mathcal{D}_2^2= \\mathcal{D}_{ij}\\mathcal{D}_{ij}= \\mathcal{D}_{11}\\mathcal{D}_{11} + \\mathcal{D}_{22}\\mathcal{D}_{22} + \\mathcal{D}_{13}\\mathcal{D}_{31} + \\mathcal{D}_{31}\\mathcal{D}_{13} + \\mathcal{D}_{33}\\mathcal{D}_{33}$$\n**Note:** $\\|\\mathcal{D}\\| = D_2/\\sqrt{2}$.
\nWe use the formulation as given in [Balmforth et al. (2013)](https://www.annualreviews.org/doi/pdf/10.1146/annurev-fluid-010313-141424) [1], who use the strain rate tensor $\\boldsymbol{\\dot{\\mathcal{S}}}$ which and its norm $\\sqrt{\\frac{1}{2}\\dot{\\mathcal{S}_{ij}}\\dot{\\mathcal{S}_{ij}}}$.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - Calculate the norm of the deformation tensor $\\boldsymbol{\\mathcal{D}}$:", + "content": "Of course, given $\\dot{\\mathcal{S}}_{ij}=2 D_{ij}$.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - More resources", + "content": "| [GitHub](https://github.com/comphy-lab/BurstingBubble_Herschel-Bulkley) | [Demo](https://youtu.be/NmvCVsiEZIA) | [License](https://github.com/comphy-lab/BurstingBubble_Herschel-Bulkley/blob/main/LICENSE) | [Latest Changes](https://github.com/comphy-lab/BurstingBubble_Herschel-Bulkley/commits/main) | [[Herschel–Bulkley formulation.pdf\\|pdf]] |\n| :---------------------------------------------------------------------: | :----------------------------------: | :----------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------: | ----------------------------------------- |", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - References", + "content": "[1] N. J. Balmforth, I. A. Frigaard, and G. Ovarlez, “Yielding to Stress: Recent Developments in Viscoplastic Fluid Mechanics,” _Annu. Rev. Fluid Mech._, vol. 46, pp. 121–146, Jan. 2014, doi: [10.1146/annurev-fluid-010313-141424](https://doi.org/10.1146/annurev-fluid-010313-141424).\n[2] V. Sanjay, D.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - References", + "content": "Lohse, and M. Jalaal, “Bursting bubble in a viscoplastic medium,” _J. Fluid Mech._, vol. 922, p.", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Herschel–Bulkley formulation - References", + "content": "A2, 2021.\n> [!significance]- Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)\n> Date published:: Dec 31, 2024
\n> Date modified:: Jan 26, 2025 at 11:50 CET\n> [!meta] Back to main website\n> [Home](https://comphy-lab.org/), [Team](https://comphy-lab.org/team), [Research](https://comphy-lab.org/research), [Github](https://github.com/comphy-lab)", + "url": "https://blogs.comphy-lab.org/Code-Documentations/Herschel–Bulkley formulation", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Gauss law of Electrostatics - > [", + "content": "> [!important]- Pre-requisites \n> I assume a working knowledge of \n> * Electric field $\\vec{E}$.\n> * [[Geometric description of electric field]]\n> * [[What is electric field flux?]]\n> * What is the electric field created by a point change $q$? \n> $E = q/(4\\pi\\varepsilon_0r^2)$\n> * [[Principle of superposition of electric fields]]\n> [!tldr] TL;DR\n> Gauss’ law states that the net electric flux through any closed surface is proportional to the total charge enclosed inside it.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Gauss law of Electrostatics - > [", + "content": "Its integral form, $\\oint \\vec{E} \\cdot d\\vec{A} = q_{\\text{in}}/\\varepsilon_0$, is most practically used with high‐symmetry geometries (spherical, cylindrical, planar). Even though it might seem universal, using it directly for complex geometries often requires additional methods.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Gauss law of Electrostatics - > [", + "content": "The differential form, $\\vec{\\nabla} \\cdot \\vec{E} = \\rho/\\varepsilon_0$, underpins charge‐field relationships in Maxwell’s equations. Key insights include: _flux remains invariant if charges stay within the boundary_, and _external charges yield zero net flux through a given surface_.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Gauss law of Electrostatics - > [", "content": "Applications to spherical shells, infinite planes, and wires highlight its computational utility. However, without symmetry, one typically reverts to direct integration or other approaches.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", + "title": "Gauss law of Electrostatics - > [", "content": "Often, one of the first wonders students encounter in electrostatics is the deceptively simple yet powerful Gauss' law. I still recall my own initial surprise when I realized flux through any closed surface enclosing a single charge remained the same, no matter how oddly shaped that surface was.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "In this post, I hope to convey that same amazement while walking you through the essential details and derivations.Question we ask: which of the following three surfaces will see the maximum flux of E→ pass through itself? Fig.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - > [", + "content": "In this post, I hope to convey that same amazement while walking you through the essential details and derivations.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "A cone, a sphere, and a batman symbol (enclose it in the front and the back) encircle a lonely charge of magnitude q. Which of the three will experience maximum eleectric field flux passing through them? This is perhaps the most counterintuitive result of the Gauss law.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Question we ask: which of the following three surfaces will see the maximum flux of $\\vec{E}$ pass through itself?", + "content": "![fig1](20250121002320090_Gauss%20law%20of%20Electrostatics.png)\nFig. A cone, a sphere, and a batman symbol (enclose it in the front and the back) encircle a lonely charge of magnitude $q$. Which of the three will experience maximum eleectric field flux passing through them?", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Try it yourself\nInstead of taking my (well, Gauss') word for it, try finding the flux through the cone and the circle by integrating the dot product of the local electric field and the area (note that for cone, we must account for both the lateral and the base area).", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Question we ask: which of the following three surfaces will see the maximum flux of $\\vec{E}$ pass through itself?", + "content": "This is perhaps the most counterintuitive result of the Gauss law. \n> [!question] Try it yourself\n> Instead of taking my (well, Gauss') word for it, try finding the flux through the cone and the circle by integrating the dot product of the local electric field and the area (note that for cone, we must account for both the lateral and the base area).", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", + "title": "Gauss law of Electrostatics - Question we ask: which of the following three surfaces will see the maximum flux of $\\vec{E}$ pass through itself?", "content": "Once you find the solution, make a PR at the GitHub repository please show all intermediate steps.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "General form of Gauss' law Main statement of Gauss' law\nThe flux of electric field E→ though a closed surface (known as the Gaussian surface) is equal to the amount of change enclosed by that surface. ∫AE→⋅n→dA=qin/ε0, E→ is the electric field, n is the normal vector to the area element dA, qin is the change enclosed inside the Gaussian surface and ε0 is the permittivity of free space.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - General form of Gauss' law", + "content": "> [!tldr] Main statement of Gauss' law\n> The flux of electric field $\\vec{E}$ though a closed surface (known as the Gaussian surface) is equal to the amount of change enclosed by that surface. $\\int_A\\vec{E}\\cdot\\vec{n}dA = q_{\\text{in}}/\\varepsilon_0$, $\\vec{E}$ is the electric field, $n$ is the normal vector to the area element $dA$, $q_{\\text{in}}$ is the change enclosed inside the Gaussian surface and $\\varepsilon_0$ is the [[permittivity of free space]].\n> * In the differential form, it is identical to:\n> $\\vec{\\nabla}\\cdot\\vec{E} = \\rho/\\varepsilon_0$, where $\\rho$ is the local electric changed density.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "In the differential form, it is identical to:\n∇→⋅E→=ρ/ε0, where ρ is the local electric changed density. Let us define the flux as:Φ=∫AE→⋅dA→=∫AE→⋅n^dAThen, ∫AE→⋅n^dA=qinε0Of course, qin isqin=∫AσdA=∫VρdV,where σ and ρ are the surface and volumetric change densities, respectively.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - General form of Gauss' law", + "content": "Let us define the flux as:\n$$\n\\Phi = \\int_A\\vec{E}\\cdot d\\vec{A} = \\int_A\\vec{E}\\cdot \\hat{n}dA\n$$\nThen, \n$$\n\\int_A\\vec{E}\\cdot \\hat{n}dA = \\frac{q_{\\text{in}}}{\\varepsilon_0}\n$$\nOf course, $q_\\text{in}$ is\n$$\nq_\\text{in} = \\int_A\\sigma dA = \\int_V\\rho dV,\n$$\nwhere $\\sigma$ and $\\rho$ are the surface and volumetric change densities, respectively.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Proof: Caution\nI leave it upto you to decide if the following derivations are the proofs or merely consistency checks for the Gauss' law.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Proof:", + "content": "> [!caution]\n> I leave it upto you to decide if the following derivations are the proofs or merely consistency checks for the Gauss' law.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Special case of spherical Gaussian surface enclosing a single charge: Electric field by a point change: E→=q4πε0r2r^Flux through a sphere of radius r, Φ=Er^⋅r^A=EA=q4πε0r24πr2=qε0Arbitary Gaussian surface enclosing a single charge: Electric field by a point change: E→=q4πε0r2r^Local flux at the indicated location:dΦ=Er^⋅n^dA=q4πε0r2cos⁡αdA=q4πε0cos⁡αdAr2Here, cos⁡αdA/r2=dΩ is in fact the solid angle subtended by the local area element.Φ=∫dΦ=∫Ωq4πε0dΩThe solid angle Ω integrates to give 4π resulting inΦ=qε0Consequences of Gauss' law Displace the charge all you want, it won’t change the flux\nThe flux of E→ only depends on the amount of charge contained inside a Gaussian surface and not on whether or not the charge is moving inside the space enclosed by this Gaussian surface.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Special case of spherical Gaussian surface enclosing a single charge:", + "content": "![|500](20250121013316786_Gauss%20law%20of%20Electrostatics.png)\nElectric field by a point change: \n$$ \n\\vec{E} = \\frac{q}{4\\pi\\varepsilon_0r^2}\\hat{r}\n$$\nFlux through a sphere of radius $r$, \n$$\n\\Phi = E\\hat{r}\\cdot\\hat{r}A = EA = \\frac{q}{4\\pi\\varepsilon_0r^2}4\\pi r^2 = \\frac{q}{\\varepsilon_0}\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Remarkable property: If charges are moved around but do not cross the boundary of A, the flux of E through A remains unchanged. Despite this unchanging flux, the field E itself can undergo substantial modifications everywhere else.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "> [!danger] Displace the charge all you want, it won’t change the flux\n> The flux of $\\vec{E}$ only depends on the amount of charge contained inside a Gaussian surface and not on whether or not the charge is moving inside the space enclosed by this Gaussian surface.\n**Remarkable property:** If charges are moved around **but do not cross** the boundary of $A$, the flux of $E$ through $A$ remains **unchanged**.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Conversely, if charges do cross the boundary of A, the flux through A will generally change.A charge outside the Gaussian surface imparts net zero flux in that control surface\nIt is easier to see by construction that electric field lines coming out of a charge outside a Gaussian surface will pass straight through without creating any global flux.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "Despite this unchanging flux, the field $E$ itself can undergo substantial modifications everywhere else.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "On the impossibility of equilibrium in electrostatics\nIn any electrostatic field, a charge cannot be in stable equilibrium. A single point charge q cannot remain in stable equilibrium under the electrostatic influence of other, fixed charges in vacuum. Can you think of a scenario? Say, we do.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "Conversely, if charges **do** cross the boundary of $A$, the flux through $A$ will generally change.\n> [!danger] A charge outside the Gaussian surface imparts net zero flux in that control surface\n> It is easier to see by construction that electric field lines coming out of a charge outside a Gaussian surface will pass straight through without creating any global flux. \n![|750](20250121023006325_Gauss%20law%20of%20Electrostatics.png)\n> [!danger] On the impossibility of equilibrium in electrostatics\nIn any electrostatic field, a charge cannot be in [stable equilibrium](https://en.wikipedia.org/wiki/Mechanical_equilibrium).", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "And now, let us enclose this q within a small closed surface A. For q to be in stable equilibrium, the net electric field from all other charges must point inward everywhere on A. Such an inward field is critical to create a restoring force for any small displacement of q.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "A single point charge $q$ cannot remain in stable equilibrium under the electrostatic influence of other, fixed charges in vacuum. Can you think of a scenario? Say, we do. And now, let us enclose this $q$ within a small closed surface $A$.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "However, Gauss’s theorem tells us that the total electric flux through A must be zero if no net charge (creating this electrostatic field) is contained inside A.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "For $q$ to be in stable equilibrium, the net electric field from all other charges must point inward everywhere on $A$. Such an inward field is critical to create a restoring force for any small displacement of $q$.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "This zero flux requirement forces the field to have both inward and outward components on the surface, contradicting the need for a purely inward field. Hence, no purely electrostatic arrangement of external charges can hold a point charge in stable equilibrium in a vacuum.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "However, Gauss’s theorem tells us that the total electric flux through $A$ must be zero if no net charge (creating this electrostatic field) is contained inside $A$.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Symmetries to the rescue Now, one of the best ways to make Gauss’ law practical is by using symmetry arguments. Below are three major symmetry cases that come in handy.Plannar symmetry Consider an infinite sheet with uniform surface‐charge density σ.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "This zero flux requirement forces the field to have both inward and outward components on the surface, contradicting the need for a purely inward field.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "By symmetry, the electric field must point perpendicular to the sheet and have the same magnitude on either side (left-right symmetry).  Select a \"pillbox\" (a short cylinder) that straddles the sheet as your Gaussian surface.  The flux then emerges through the two circular faces only; there is no flux through the curved surface because E→ is parallel there.  The integral form of Gauss’s law yields2EA=σAε0⟹E=σ2ε0.Hence, an infinite charged plane produces a constant electric field whose magnitude depends solely on σ.Special case: When two parallel sheets carry equal and opposite surface‐charge densities +σ and −σ, superposition implies that the fields from each sheet add in the region between them and cancel outside.  Specifically, in the space between the plates, each sheet contributes σ/(2ε0) in the same direction, giving a totalEbetween=σε0.Outside the plates, the fields from the two sheets have opposite directions and thus cancel to zero, assuming the plates are large compared to their separation.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Consequences of Gauss' law", + "content": "Hence, no purely electrostatic arrangement of external charges can hold a point charge in stable equilibrium in a vacuum.\n![|250](20250121015925070_Gauss%20law%20of%20Electrostatics.png)", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "This configuration approximates the uniform field of a parallel‐plate capacitor.Cyliindrical symmetry Consider an infinitely long wire with a uniform linear charge density λ.  By symmetry, the electric field E→ at distance r from the wire must point radially outward and have constant magnitude on a coaxial cylindrical surface of radius r.  Let us choose this coaxial cylinder as our Gaussian surface (length L).  The flux is through the curved surface only; both end caps see E→ parallel to their planes and hence yield no net contribution.  Applying Gauss’s law,E(2πrL)=λLε0⟹E=λ2πε0r.The field diminishes as 1/r from the wire.Spherical symmetry Here, let us consider two cases: 1. uniformly charged sphere with charge density ρ and 2. a thin spherical shell with change q.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Symmetries to the rescue", + "content": "Now, one of the best ways to make Gauss’ law practical is by using symmetry arguments. Below are three major symmetry cases that come in handy.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Both have a radius of a. Also, assume 4πa33ρ=q. For r>a: Here, the Gaussian surface contains the entire spherical object inside it. So, in both cases, the Gaussian surface sees a total charge of q.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Plannar symmetry", + "content": "![|750](20250121033252912_Gauss%20law%20of%20Electrostatics.png)\nConsider an infinite sheet with uniform surface‐charge density $\\sigma$.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Consequently, E=q4πε0r2For r a$:", + "content": "Here, the Gaussian surface contains the entire spherical object inside it. So, in both cases, the Gaussian surface sees a total charge of $q$. \nConsequently, \n$$\nE = \\frac{q}{4\\pi\\varepsilon_0r^2}\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "While it is indeed general as a statement of charge–field relationships, practical usage relies heavily on symmetry arguments to simplify the surface integral.Dependence on Symmetry Gauss’s integral theorem is most effective when the field and geometry exhibit high symmetry (e.g., spherical, cylindrical, or planar).", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - For $r < a$:", + "content": "* *Shell:* Charge enclosed inside the shell for $r [!note] Note\n> To play with the above plots, see: [[Gauss-law-of-electrostatics.ipynb]]", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "This makes the flux integral collapse to a simple multiplication, thus giving a direct link between enclosed charge and field magnitude.Limitations in Complex Geometries For configurations lacking these symmetries—such as a uniformly charged disk or other irregular charge distributions—no straightforward closed surface simplifies the flux integral.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - A critique of the Gauss' law in the non-local form", + "content": "One might wonder: is Gauss' law too good to be true for complicated geometries? Below, I share a brief critique.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "In these scenarios, one must resort to more laborious methods, like direct integration of Coulomb’s law or employing the local (differential) form combined with suitable boundary conditions.Note:\nOf course, let us be very clear that the above critique is only about the non-local form (or integral formulation) of Gauss' law.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Illusion of Generality", + "content": "The integral form,\n$$\n\\int_A \\vec{E} \\cdot d\\vec{A} = \\frac{q_\\text{in}}{\\varepsilon_0},\n$$\ncan give a misleading impression that it solves _any_ electrostatic field problem elegantly.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "If we use the more general differential form (or together with the Maxwell's laws of electromagnetism, the above limitations do not apply). Some food for throught Gauss' law is agnostic to the number of dimensions in the problem. In this note, we mainly looked at cases in 3D.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Illusion of Generality", + "content": "While it is indeed general as a statement of charge–field relationships, _practical_ usage relies heavily on symmetry arguments to simplify the surface integral.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Now, think about living in a 2D space. Answer the following: \nHow does the Coulomb's law change in 2D? Adapt Gauss’s law to a 2D problem, where flux becomes a line integral around a closed loop. Consider a point charge qqq in a 2D plane.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Dependence on Symmetry", + "content": "Gauss’s integral theorem is most effective when the field and geometry exhibit high symmetry (e.g., spherical, cylindrical, or planar). In such cases, one can choose a closed surface $A$ where the electric field $\\vec{E}$ is either constant in magnitude or zero over different parts of the surface.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Choose a circle of radius r around the charge as the \"Gaussian\" boundary. Compute the total radial component of E→ along this circle and show that it is proportional to q/ε0 (with an appropriate constant reflecting 2D geometry).", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Dependence on Symmetry", + "content": "This makes the flux integral collapse to a simple multiplication, thus giving a direct link between enclosed charge and field magnitude.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "For a hypothetical \"4D\" space, the electric field of a point charge might scale differently with distance. Use dimensional analysis to argue how Gauss’s law might look there, and what the \"closed surface” would mean in 4D.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Limitations in Complex Geometries", + "content": "For configurations lacking these symmetries—such as a uniformly charged disk or other irregular charge distributions—no straightforward closed surface simplifies the flux integral.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Hint: Highlight the dimension-agnostic idea that flux = enclosed charge/ε0​ remains structurally the same, although radius-dependencies of E→ and definitions of \"surface\" change with dimension.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Limitations in Complex Geometries", + "content": "In these scenarios, one must resort to more laborious methods, like direct integration of Coulomb’s law or employing the local (differential) form combined with suitable boundary conditions.\n> [!faq] Note:\n> Of course, let us be very clear that the above critique is only about the non-local form (or integral formulation) of Gauss' law.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Note: To submit answers to the questions above or in case you find a mistake in this note, please feel free to open a pull request at the repository: link to repository.Derivation of Gauss law in differential form Integral form: In this post, we encountered Gauss law in integral form as, ∮AE→⋅dA→=qinϵ0,where E→ is the electric field, qin is the total charge enclosed by A, and ϵ0 is the permittivity of free space.Relate enclosed charge to charge density.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Limitations in Complex Geometries", + "content": "If we use the more general differential form (or together with the Maxwell's laws of electromagnetism, the above limitations do not apply).", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "The enclosed charge can be expressed in terms of the volume charge density ρ using a volume integral:qin=∫VρdV.Here, V is the volume bounded by the surface (S).Apply the divergence theorem Rewrite the left side of Gauss’s law using the divergence theorem (also known as Gauss’s divergence theorem):∮AE→⋅dA→=∫V∇→⋅E→dV.Gauss' divergence therorem\nThis is yet another significant contribution from Gauss.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Some food for throught", + "content": "Gauss' law is agnostic to the number of dimensions in the problem. In this note, we mainly looked at cases in 3D. Now, think about living in a 2D space. Answer the following: \n1. How does the Coulomb's law change in 2D?\n2.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "It relates volume integrals to fluxes at the boundaries. This theorem is more generally used throughout the Physics literature.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Some food for throught", + "content": "Adapt Gauss’s law to a 2D problem, where **flux** becomes a line integral around a closed loop. Consider a point charge qqq in a 2D plane. Choose a circle of radius $r$ around the charge as the \"Gaussian\" boundary.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "For example, simplifying integrals in Rayleigh−Bénard convection or in Taylor−Culick retractions.\n∮AF⋅dA=∫V∇⋅FdVRate of change of a physical quantity (see Relationship between rate of change of a physical quantity and its divergence) in a volume is tied directly to its net flux across the boundary of that volume.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Some food for throught", + "content": "Compute the total radial component of $\\vec{E}$ along this circle and show that it is proportional to $q/\\varepsilon_0$ (with an appropriate constant reflecting 2D geometry).\n3. For a hypothetical \"4D\" space, the electric field of a point charge might scale differently with distance.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "More generally, in fluid mechanics, this principle underpins conservation laws such as mass, momentum, or energy.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Some food for throught", + "content": "Use dimensional analysis to argue how Gauss’s law might look there, and what the \"closed surface” would mean in 4D. **Hint:** Highlight the dimension-agnostic idea that flux = enclosed charge/$\\varepsilon_0$​ remains structurally the same, although radius-dependencies of $\\vec{E}$ and definitions of \"surface\" change with dimension.\n**Note:** To submit answers to the questions above or in case you find a mistake in this note, please feel free to open a pull request at the repository: [link to repository](https://github.com/comphy-lab/CoMPhy-Lab-Blogs).", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Thus, ∫V∇→⋅E→dV=1ϵ0∫VρdV.Conclude the differential form Because this equation must hold for any volume V, the integrands themselves must be equal at every point in space:∇→⋅E→=ρϵ0.This is Gauss’s law in differential form.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Integral form:", + "content": "In this post, we encountered Gauss law in integral form as, \n$$\n\\oint_A \\vec{E} \\cdot d\\vec{A} \\;=\\; \\frac{q_{\\text{in}}}{\\epsilon_0},\n$$\nwhere $\\vec{E}$ is the electric field, $q_{\\text{in}}$ is the total charge enclosed by $A$, and $\\epsilon_0$ is the permittivity of free space.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "It states that the divergence of the electric field at a point is proportional to the local charge density at that point.Significance to Maxwell's laws of electromagnetism The Gauss' law of electrostatics is one of the special cases of Maxwell's laws of electromagnetism.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Relate enclosed charge to charge density.", + "content": "The enclosed charge can be expressed in terms of the volume charge density $\\rho$ using a volume integral:\n$$\nq_{\\text{in}} \\;=\\; \\int_{V} \\rho \\, dV.\n$$\nHere, $V$ is the volume bounded by the surface \\(S\\).", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Maxwell's Equations Differential Form Gauss's Law (Electric): ∇→⋅E→=ρε0Gauss's Law (Magnetic): ∇→⋅B→=0Faraday's Law of Induction: ∇→×E→=−∂B→∂tAmpère–Maxwell Law: ∇→×B→=μ0J→+μ0ε0∂E→∂tIntegral Form Gauss's Law (Electric): ∮E→⋅dA→=qinε0Gauss's Law (Magnetic): ∮B→⋅dA→=0Faraday's Law of Induction: ∮E→⋅dℓ→=−ddt(∫B→⋅dA→)Ampère–Maxwell Law: ∮B→⋅dℓ→=μ0Iin+μ0ε0ddt(∫E→⋅dA→)Conclusion\nThat brings us to the end of this reflective overview of Gauss' law and its place within Maxwell's equations.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Conclude the differential form", + "content": "Because this equation must hold for any volume $V$, the integrands themselves must be equal at every point in space:\n$$\n\\vec{\\nabla} \\cdot \\vec{E} \\;=\\; \\frac{\\rho}{\\epsilon_0}.\n$$\nThis is Gauss’s law in **differential form**.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Even though the symmetrical geometries often steal the spotlight, the underlying message is that Gauss' law is deeply fundamental—tied intimately to how charges shape and define the electric field around them.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Conclude the differential form", + "content": "It states that the divergence of the electric field at a point is proportional to the local charge density at that point.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "I hope these notes, with their many examples, help you see both its elegance and its limitations. Info\nThanks for reading, and feel free to dive deeper (or suggest improvements) via the GitHub repository!", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Significance to Maxwell's laws of electromagnetism", + "content": "The Gauss' law of electrostatics is one of the special cases of Maxwell's laws of electromagnetism.", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "Some side notes:\nTo explore some history, see: History-of-Gauss\nHere, we discuss a lot about Gaussian surfaces.", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Gauss's Law (Electric):", + "content": "$$ \n\\vec{\\nabla} \\cdot \\vec{E} = \\frac{\\rho}{\\varepsilon_0}\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gauss law of Electrostatics - aliases:", - "content": "The fluid dynamicist in me cannot help but point out that a Gaussian surface is very similar to the control volume in fluid mechanics. 💡\nMetadata\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 25, 2025 at 14:22 \nBack to main website\nHome, Team, Research, Github\nLinks to this page0_READMEGaussian surface is very similar to the control volume in fluid mechanics", - "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss+law+of+Electrostatics", + "title": "Gauss law of Electrostatics - Faraday's Law of Induction:", + "content": "$$\n\\vec{\\nabla} \\times \\vec{E} = -\\frac{\\partial \\vec{B}}{\\partial t}\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", - "content": "aliases:\n - Seminar-UIUC-abstract\nSpeaker:: Vatsal Sanjay (CoMPhy Lab)\nSeminar:: Fluid seminar, University of Illinois Urbana-Champaign (UIUC)\nWhen:: Thu. January 30, 2025 at 1600h CST (2300h AMS time).", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "title": "Gauss law of Electrostatics - Ampère–Maxwell Law:", + "content": "$$\n\\vec{\\nabla} \\times \\vec{B} = \\mu_0 \\vec{J} + \\mu_0 \\varepsilon_0 \\frac{\\partial \\vec{E}}{\\partial t}\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", - "content": "How to attend:: Online, please email Vatsal (vatsalsanjay@gmail.com)\nPolymeric liquids provide a tunable testbed to explore unsteady, nonlinear continuum mechanics by systematically varying the amount and type of polymers.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "title": "Gauss law of Electrostatics - Gauss's Law (Electric):", + "content": "$$\n\\oint \\vec{E} \\cdot d\\vec{A} = \\frac{q_\\text{in}}{\\varepsilon_0}\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Gauss law of Electrostatics - Faraday's Law of Induction:", + "content": "$$\n\\oint \\vec{E} \\cdot d\\vec{\\ell} = -\\frac{d}{dt}\\left(\\int \\vec{B} \\cdot d\\vec{A}\\right)\n$$", + "url": "https://blogs.comphy-lab.org/Lecture-Notes/Gauss law of Electrostatics", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Seminar-Durham-abstract - > [", + "content": "> [!significance] Speaker\n> [Vatsal Sanjay](https://vatsalsanjay.com) ([CoMPhy Lab](https://comphy-lab.org))\nPolymeric liquids provide a tunable testbed to explore unsteady, nonlinear continuum mechanics by systematically varying the amount and type of polymers.", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", + "title": "Seminar-Durham-abstract - > [", "content": "We explore how such systems can probe a continuum of behaviors from Newtonian flows to elastically dominated regimes, making polymeric flows effectively the \"Drosophila\" of unsteady continuum mechanics.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", + "title": "Seminar-Durham-abstract - > [", "content": "This talk will demonstrate how adding polymers modifies instabilities in three canonical free-surface flows: sheets punctured by holes (Taylor–Culick retraction), bursting bubbles that emit droplets, and Worthington jets formed by impact.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", + "title": "Seminar-Durham-abstract - > [", "content": "Elastic stresses either create new singularities or suppress known ones, leading to distinct regimes in parameter space.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", + "title": "Seminar-Durham-abstract - > [", "content": "Numerical simulations and complementary experiments reveal how polymer relaxation time and modulus determine free-surface morphologies, droplet sizes, and jet velocities, with implications for aerosol generation and fluid processing.", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Seminar-Durham-abstract - > [", + "content": "By unifying concepts from fluid and solid mechanics, these results provide broad insight into controlling interfacial flows in manufacturing, pathogen transport, and beyond.\n![[_Media/Durham.png|How do polymeric flows influence classical hydrodyna ic singularities?]]\n> [!info]- Metadata\n> Posted by:: Vatsal\n> Date published:: 2025-02-21
\n> Date modified:: Feb 21, 2025 at 07:23 CET\n> [!meta] Back to main website\n> [Home](https://comphy-lab.org/), [Team](https://comphy-lab.org/team), [Research](https://comphy-lab.org/research), [Github](https://github.com/comphy-lab)\n[[Seminar-Durham-abstract.pdf|this page in .pdf]]", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Seminar-UIUC-abstract - > [", + "content": "> [!significance] Details\n> Speaker:: [Vatsal Sanjay](https://vatsalsanjay.com) ([CoMPhy Lab](https://comphy-lab.org))\n> Seminar:: Fluid seminar, University of Illinois Urbana-Champaign (UIUC)\n> \n> When:: Thu.", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Seminar-UIUC-abstract - > [", + "content": "January 30, 2025 at **1600h CST (2300h AMS time)**.
\n> How to attend:: Online, please email Vatsal ([vatsalsanjay@gmail.com](mailto:vatsalsanjay@gmail.com))\nPolymeric liquids provide a tunable testbed to explore unsteady, nonlinear continuum mechanics by systematically varying the amount and type of polymers.", "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-UIUC-abstract - aliases:", - "content": "By unifying concepts from fluid and solid mechanics, these results provide broad insight into controlling interfacial flows in manufacturing, pathogen transport, and beyond.abstract in .pdfMetadata\nPosted by:: Vatsal\nDate published:: 2025-01-19\nDate modified:: Jan 27, 2025 at 08:03 CET\nBack to main website\nHome, Team, Research, Github\nLinks to this page0_README", + "title": "Seminar-UIUC-abstract - > [", + "content": "We explore how such systems can probe a continuum of behaviors from Newtonian flows to elastically dominated regimes, making polymeric flows effectively the \"Drosophila\" of unsteady continuum mechanics.", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Seminar-UIUC-abstract - > [", + "content": "This talk will demonstrate how adding polymers modifies instabilities in three canonical free-surface flows: sheets punctured by holes (Taylor–Culick retraction), bursting bubbles that emit droplets, and Worthington jets formed by impact.", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "Seminar-UIUC-abstract - > [", + "content": "Elastic stresses either create new singularities or suppress known ones, leading to distinct regimes in parameter space.", "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Geometric description of electric field - type: atomic note", - "content": "type: atomic note\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 21, 2025 at 11:03 CET\nGeometric description of electric field \nField Lines: Draw lines so that at each point, their tangent matches the direction of E→\nDensity: The number of lines per unit area (normal to the lines) is proportional to ∥E→∥.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Geometric+description+of+electric+field", + "title": "Seminar-UIUC-abstract - > [", + "content": "Numerical simulations and complementary experiments reveal how polymer relaxation time and modulus determine free-surface morphologies, droplet sizes, and jet velocities, with implications for aerosol generation and fluid processing.", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "Geometric description of electric field - type: atomic note", - "content": "Direction: Arrows on the lines indicate the direction of E→. Interpretation: This visual map shows both the direction and magnitude of E→ across space. Links to this pageGauss law of Electrostatics", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Geometric+description+of+electric+field", + "title": "Seminar-UIUC-abstract - > [", + "content": "By unifying concepts from fluid and solid mechanics, these results provide broad insight into controlling interfacial flows in manufacturing, pathogen transport, and beyond.\n![Singularities](_Media/20250119213726033_Seminar-UIUC-abstract.png)\n[[Seminar-UIUC-abstract.pdf|abstract in .pdf]]\n> [!info]- Metadata\n> Posted by:: Vatsal\n> Date published:: 2025-01-19
\n> Date modified:: Jan 27, 2025 at 08:03 CET\n> [!meta] Back to main website\n> [Home](https://comphy-lab.org/), [Team](https://comphy-lab.org/team), [Research](https://comphy-lab.org/research), [Github](https://github.com/comphy-lab)", + "url": "https://blogs.comphy-lab.org/Talks/Seminar-UIUC-abstract", "type": "blog_excerpt", "priority": 3 }, { - "title": "What is electric field flux? - type: atomic note", - "content": "type: atomic note\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 21, 2025 at 11:06 CET\nWhat is electric field flux? Φ=AE→⋅n^=AEcos⁡αLinks to this pageGauss law of Electrostatics", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/What+is+electric+field+flux%3F", + "title": "Gaussian surface is very similar to the control volume in fluid mechanics - > [", + "content": "> [!significance] Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)
\n> Date published:: Jan 21, 2025
\n> Date modified:: Jan 21, 2025 at 11:03 CET", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian surface is very similar to the control volume in fluid mechanics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Principle of superposition of electric fields - type: atomic note", - "content": "type: atomic note\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 21, 2025 at 11:05 CET\nPrinciple of Superposition of Electric Fields The electric field from multiple sources is the vector sum of the individual fields at each point.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Principle+of+superposition+of+electric+fields", + "title": "Gaussian surface is very similar to the control volume in fluid mechanics", + "content": "They are closely related in a mathematical sense. In [[Gauss law of Electrostatics|Gauss’s law for electrostatics]], one picks a closed surface—the Gaussian surface—to evaluate the net electric flux and relate it to enclosed charge via the divergence theorem.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian surface is very similar to the control volume in fluid mechanics", "type": "blog_excerpt", "priority": 3 }, { - "title": "Principle of superposition of electric fields - type: atomic note", - "content": "If charges create electric fields E→1, E→2, …, then the total field is given by:E→total=E→1+E→2+⋯This linear superposition implies that each charge’s field contribution adds without altering the others’ fields, enabling straightforward calculation of net electric fields from complex charge distributions.Links to this pageGauss law of Electrostatics", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Principle+of+superposition+of+electric+fields", + "title": "Gaussian surface is very similar to the control volume in fluid mechanics", + "content": "In fluid mechanics, one defines a control volume (with a control surface) to analyze fluxes of mass, momentum, or energy. Both rely on the same underlying integral theorem (the divergence theorem) to connect fluxes through the surface to sources or sinks within the volume.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian surface is very similar to the control volume in fluid mechanics", "type": "blog_excerpt", "priority": 3 }, { - "title": "permittivity of free space - type: atomic note", - "content": "type: atomic note\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 21, 2025 at 11:05 CET\nPermittivity of free space In Gauss’s law, ε the permittivity of free space. It quantifies how an electric field propagates through a vacuum.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/permittivity+of+free+space", + "title": "Gaussian surface is very similar to the control volume in fluid mechanics", + "content": "The physical interpretations differ—charge density for electromagnetism versus mass or momentum for fluid flow—but the conceptual framework is very similar.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian surface is very similar to the control volume in fluid mechanics", "type": "blog_excerpt", "priority": 3 }, { - "title": "permittivity of free space - type: atomic note", - "content": "In the standard form of Gauss’s law,∮E⋅dA=Qencε0,appears as the proportionality constant relating the net electric flux through a closed surface to the total charge enclosed. Numerically, ε0≈8.854×10−12F/m.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/permittivity+of+free+space", + "title": "Geometric description of electric field - > [", + "content": "> [!significance] Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)
\n> Date published:: Jan 21, 2025
\n> Date modified:: Jan 21, 2025 at 11:03 CET", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Geometric description of electric field", "type": "blog_excerpt", "priority": 3 }, { - "title": "permittivity of free space - type: atomic note", - "content": "It also factors into the relationship between the speed of light c, the vacuum permeability μ0, and itself, via c=1ε0μ0.Links to this pageGauss law of Electrostatics", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/permittivity+of+free+space", + "title": "Geometric description of electric field", + "content": "* **Field Lines**: Draw lines so that at each point, their tangent matches the direction of $\\vec{E}$\n* **Density**: The number of lines per unit area (normal to the lines) is proportional to $\\|\\vec{E}\\|$.\n* **Direction**: Arrows on the lines indicate the direction of $\\vec{E}$.\n* **Interpretation**: This visual map shows both the direction and magnitude of $\\vec{E}$ across space.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Geometric description of electric field", "type": "blog_excerpt", "priority": 3 }, { - "title": "Relationship between rate of change of a physical quantity and its divergence - aliases:", - "content": "aliases:\n - Relationship between rate of change of a physical quantity and its divergence", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Relationship+between+rate+of+change+of+a+physical+quantity+and+its+divergence", + "title": "History-of-Gauss - > [", + "content": "> [!significance] Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)
\n> Date published:: Jan 21, 2025
\n> Date modified:: Jan 21, 2025 at 11:04 CET", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "History-of-Gauss - type: atomic note", - "content": "type: atomic note\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 21, 2025 at 11:04 CET\nHistory of Gauss (and one recent event): Carl Friedrich Gauss (1777–1855) was a brilliant mathematician who made breakthroughs in just about every area of math and physics you can think of–he crunched numbers like a prodigy even as a kid, later proved key theorems in algebra and laid the groundwork for number theory, geometry, and analysis.", + "title": "History-of-Gauss - History of Gauss (and one recent event):", + "content": "Carl Friedrich Gauss (1777–1855) was a brilliant mathematician who made breakthroughs in just about every area of math and physics you can think of–he crunched numbers like a prodigy even as a kid, later proved key theorems in algebra and laid the groundwork for number theory, geometry, and analysis.", "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "History-of-Gauss - type: atomic note", - "content": "Beyond math, he helped calculate the orbit of the dwarf planet Ceres, co-invented an early telegraph, and teamed up with physicist Wilhelm Weber to measure and model the Earth’s magnetic field.", + "title": "History-of-Gauss - History of Gauss (and one recent event):", + "content": "Beyond math, he helped calculate the orbit of the dwarf planet Ceres, co-invented an early telegraph, and teamed up with physicist **Wilhelm Weber** to measure and model the Earth’s magnetic field.", "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "History-of-Gauss - type: atomic note", + "title": "History-of-Gauss - History of Gauss (and one recent event):", "content": "His name is attached to many concepts, including \"Gauss’s law\" (topic of this blog) in electromagnetism, which is a cornerstone in understanding electric fields.", "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "History-of-Gauss - type: atomic note", - "content": "Gauss’s relentless curiosity earned him the nickname \"the Prince of Mathematicians,” and his work remains at the heart of modern science and engineering. Even today—nearly two centuries after his death—people still visit his grave in Göttingen to pay homage (see figure below, 😉). Fig.", + "title": "History-of-Gauss - History of Gauss (and one recent event):", + "content": "Gauss’s relentless curiosity earned him the nickname \"the Prince of Mathematicians,” and his work remains at the heart of modern science and engineering.", "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "History-of-Gauss - type: atomic note", - "content": "Potrait made availale by Johann Christian August Schwartz - Carl Friedrich Gauss 1777-1855. Ausstellung zum 200. Geburtstag. Städtisches Museum Göttingen. 16. Januar bis 13. März 1977. Göttingen, 1977, Frontispiz., Public Domain, Link\nFig.", + "title": "History-of-Gauss - History of Gauss (and one recent event):", + "content": "Even today—nearly two centuries after his death—people still visit his grave in Göttingen to pay homage (see figure below, 😉).\n![|250](_Media/20250120200507219_Gauss%20law%20of%20Electrostatics.png)\nFig. Potrait made availale by Johann Christian August Schwartz - Carl Friedrich Gauss 1777-1855.", "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "History-of-Gauss - type: atomic note", - "content": "Even after (almost) 200 years of his death, people still visit the grave of Carl Friedrich Gauss in Göettingen to pay homage to the master. Links to this pageGauss law of Electrostatics", + "title": "History-of-Gauss - History of Gauss (and one recent event):", + "content": "Ausstellung zum 200. Geburtstag. Städtisches Museum Göttingen. 16. Januar bis 13. März 1977. Göttingen, 1977, Frontispiz., Public Domain, Link\n![|250](_Media/20250120200806664_Gauss%20law%20of%20Electrostatics.png)\nFig.", "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gaussian surface is very similar to the control volume in fluid mechanics - type: atomic note", - "content": "type: atomic note\nAuthor:: Vatsal Sanjay\nDate published:: Jan 21, 2025\nDate modified:: Jan 21, 2025 at 11:03 CET\nGaussian surface is very similar to the control volume in fluid mechanics They are closely related in a mathematical sense.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian+surface+is+very+similar+to+the+control+volume+in+fluid+mechanics", + "title": "History-of-Gauss - History of Gauss (and one recent event):", + "content": "Even after (almost) 200 years of his death, people still visit the grave of Carl Friedrich Gauss in Göettingen to pay homage to the master.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/History-of-Gauss", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gaussian surface is very similar to the control volume in fluid mechanics - type: atomic note", - "content": "In Gauss’s law for electrostatics, one picks a closed surface—the Gaussian surface—to evaluate the net electric flux and relate it to enclosed charge via the divergence theorem. In fluid mechanics, one defines a control volume (with a control surface) to analyze fluxes of mass, momentum, or energy.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian+surface+is+very+similar+to+the+control+volume+in+fluid+mechanics", + "title": "Principle of superposition of electric fields - > [", + "content": "> [!significance] Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)
\n> Date published:: Jan 21, 2025
\n> Date modified:: Jan 21, 2025 at 11:05 CET", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Principle of superposition of electric fields", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gaussian surface is very similar to the control volume in fluid mechanics - type: atomic note", - "content": "Both rely on the same underlying integral theorem (the divergence theorem) to connect fluxes through the surface to sources or sinks within the volume.", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian+surface+is+very+similar+to+the+control+volume+in+fluid+mechanics", + "title": "Principle of Superposition of Electric Fields", + "content": "The electric field from multiple sources is the vector sum of the individual fields at each point.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Principle of superposition of electric fields", "type": "blog_excerpt", "priority": 3 }, { - "title": "Gaussian surface is very similar to the control volume in fluid mechanics - type: atomic note", - "content": "The physical interpretations differ—charge density for electromagnetism versus mass or momentum for fluid flow—but the conceptual framework is very similar.Links to this pageGauss law of Electrostatics", - "url": "https://blogs.comphy-lab.org/_AtomicNotes/Gaussian+surface+is+very+similar+to+the+control+volume+in+fluid+mechanics", + "title": "Principle of Superposition of Electric Fields", + "content": "If charges create electric fields $\\vec{E}_1$, $\\vec{E}_2$, $\\dots$, then the total field is given by:\n$$\n\\vec{E}_{\\text{total}} = \\vec{E}_1 + \\vec{E}_2 + \\cdots\n$$\nThis linear superposition implies that each charge’s field contribution adds without altering the others’ fields, enabling straightforward calculation of net electric fields from complex charge distributions.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Principle of superposition of electric fields", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-Durham-abstract - aliases:", - "content": "aliases:\n - Seminar-Durham-abstract\nVatsal Sanjay (CoMPhy Lab)\nPolymeric liquids provide a tunable testbed to explore unsteady, nonlinear continuum mechanics by systematically varying the amount and type of polymers.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "title": "Relationship between rate of change of a physical quantity and its divergence - For a conserved quantity (like mass, momentum, or energy), the local rate of change within a volume is directly linked to the divergence of its flux", + "content": "For a conserved quantity (like mass, momentum, or energy), the local rate of change within a volume is directly linked to the divergence of its flux.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Relationship between rate of change of a physical quantity and its divergence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-Durham-abstract - aliases:", - "content": "We explore how such systems can probe a continuum of behaviors from Newtonian flows to elastically dominated regimes, making polymeric flows effectively the \"Drosophila\" of unsteady continuum mechanics.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "title": "Relationship between rate of change of a physical quantity and its divergence - For a conserved quantity (like mass, momentum, or energy), the local rate of change within a volume is directly linked to the divergence of its flux", + "content": "In particular, conservation laws often take the form:\n$$\\frac{\\partial \\phi}{\\partial t} + \\nabla \\cdot \\mathbf{J} = 0$$\nwhere $\\phi$ is the density of the conserved quantity and $\\mathbf{J}$ is its flux.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Relationship between rate of change of a physical quantity and its divergence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-Durham-abstract - aliases:", - "content": "This talk will demonstrate how adding polymers modifies instabilities in three canonical free-surface flows: sheets punctured by holes (Taylor–Culick retraction), bursting bubbles that emit droplets, and Worthington jets formed by impact.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "title": "Relationship between rate of change of a physical quantity and its divergence - For a conserved quantity (like mass, momentum, or energy), the local rate of change within a volume is directly linked to the divergence of its flux", + "content": "Integrating over a volume and applying the divergence theorem:\n$$\\int_V \\frac{\\partial \\phi}{\\partial t} \\, dV + \\oint_{\\partial V} \\mathbf{J}\\cdot d\\mathbf{A} = 0$$\nshows that the rate of change of $\\phi$ in that volume (the first term) is exactly balanced by the net flux across the boundary (the second term).", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Relationship between rate of change of a physical quantity and its divergence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-Durham-abstract - aliases:", - "content": "Elastic stresses either create new singularities or suppress known ones, leading to distinct regimes in parameter space.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "title": "Relationship between rate of change of a physical quantity and its divergence - For a conserved quantity (like mass, momentum, or energy), the local rate of change within a volume is directly linked to the divergence of its flux", + "content": "Thus, $\\nabla \\cdot \\mathbf{J}$ encapsulates the `source` or `sink` behavior within the volume and is intimately connected to how $\\phi$ changes over time.", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/Relationship between rate of change of a physical quantity and its divergence", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-Durham-abstract - aliases:", - "content": "Numerical simulations and complementary experiments reveal how polymer relaxation time and modulus determine free-surface morphologies, droplet sizes, and jet velocities, with implications for aerosol generation and fluid processing.", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "title": "What is electric field flux? - > [", + "content": "> [!significance] Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)
\n> Date published:: Jan 21, 2025
\n> Date modified:: Jan 21, 2025 at 11:06 CET", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/What is electric field flux?", "type": "blog_excerpt", "priority": 3 }, { - "title": "Seminar-Durham-abstract - aliases:", - "content": "By unifying concepts from fluid and solid mechanics, these results provide broad insight into controlling interfacial flows in manufacturing, pathogen transport, and beyond.Metadata\nPosted by:: Vatsal\nDate published:: 2025-02-21\nDate modified:: Feb 21, 2025 at 07:23 CET\nBack to main website\nHome, Team, Research, Github\nthis page in .pdf", - "url": "https://blogs.comphy-lab.org/Talks/Seminar-Durham-abstract", + "title": "What is electric field flux?", + "content": "![|750](20250121024948930_What%20is%20electric%20field%20flux_.png)\n$$\n\\Phi = A\\vec{E}\\cdot\\hat{n} = AE\\cos\\alpha\n$$", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/What is electric field flux?", + "type": "blog_excerpt", + "priority": 3 + }, + { + "title": "permittivity of free space - > [", + "content": "> [!significance] Metadata\n> Author:: [Vatsal Sanjay](https://vatsalsanjay.com)
\n> Date published:: Jan 21, 2025
\n> Date modified:: Jan 21, 2025 at 11:05 CET", + "url": "https://blogs.comphy-lab.org/_AtomicNotes/permittivity of free space", "type": "blog_excerpt", "priority": 3 } diff --git a/assets/js/shortcut-key.js b/assets/js/shortcut-key.js new file mode 100644 index 0000000..2438fd7 --- /dev/null +++ b/assets/js/shortcut-key.js @@ -0,0 +1,16 @@ +document.addEventListener('DOMContentLoaded', function() { + // Detect if the user is on a Mac + const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0; + + // Update the displayed shortcut text + const defaultThemeElements = document.querySelectorAll('.default-theme-text'); + const macThemeElements = document.querySelectorAll('.mac-theme-text'); + + defaultThemeElements.forEach(function(element) { + element.style.display = isMac ? 'none' : 'inline'; + }); + + macThemeElements.forEach(function(element) { + element.style.display = isMac ? 'inline' : 'none'; + }); +}); \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index 6362f68..9095420 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -9,6 +9,18 @@ echo "Starting build process..." echo "Installing dependencies..." bundle install +# Install Node.js dependencies for blog content fetching +echo "Installing Node.js dependencies..." +cd scripts +npm install +cd .. + +# Fetch blog content from GitHub repository +echo "Fetching blog content from GitHub repository..." +cd scripts +npm run fetch-github +cd .. + # Build the Jekyll site echo "Building Jekyll site..." JEKYLL_ENV=production bundle exec jekyll build diff --git a/scripts/fetch_github_blog_content.js b/scripts/fetch_github_blog_content.js new file mode 100644 index 0000000..6ef749d --- /dev/null +++ b/scripts/fetch_github_blog_content.js @@ -0,0 +1,175 @@ +const fs = require('fs').promises; +const path = require('path'); +const { execSync } = require('child_process'); +const matter = require('gray-matter'); + +const OUTPUT_FILE = path.join(__dirname, 'blog_content.json'); +const REPO_URL = 'https://github.com/comphy-lab/CoMPhy-Lab-Blogs.git'; +const TEMP_DIR = path.join(__dirname, 'temp_blog_repo'); + +async function cloneRepository() { + console.log(`Cloning repository from ${REPO_URL}...`); + try { + // Remove temp directory if it exists + try { + await fs.rm(TEMP_DIR, { recursive: true, force: true }); + } catch (error) { + // Ignore if directory doesn't exist + } + + // Clone the repository + execSync(`git clone ${REPO_URL} ${TEMP_DIR}`, { stdio: 'inherit' }); + console.log('Repository cloned successfully'); + } catch (error) { + console.error('Error cloning repository:', error); + throw error; + } +} + +async function getMarkdownFiles(dir, fileList = []) { + const files = await fs.readdir(dir, { withFileTypes: true }); + + for (const file of files) { + const fullPath = path.join(dir, file.name); + + if (file.isDirectory()) { + // Skip .git, .github, and other hidden directories + if (!file.name.startsWith('.')) { + await getMarkdownFiles(fullPath, fileList); + } + } else if (file.name.endsWith('.md')) { + fileList.push(fullPath); + } + } + + return fileList; +} + +async function processBlogContent() { + const allEntries = []; + + try { + // Get all markdown files + const mdFiles = await getMarkdownFiles(TEMP_DIR); + console.log(`Found ${mdFiles.length} markdown files`); + + for (const filePath of mdFiles) { + const relativePath = path.relative(TEMP_DIR, filePath); + + // Skip files with "todo" in the name (case insensitive) + if (relativePath.toLowerCase().includes('todo')) { + console.log(`Skipping todo file: ${relativePath}`); + continue; + } + + try { + const fileContent = await fs.readFile(filePath, 'utf8'); + const { data, content } = matter(fileContent); + + // Skip files where publish is explicitly set to false + if (data.publish === false) { + console.log(`Skipping unpublished file: ${relativePath}`); + continue; + } + + // Get the URL based on the file path, converting to the format that would be used on the Obsidian Publish site + const urlPath = relativePath.replace(/\.md$/, '').replace(/\\/g, '/'); + const url = `https://blogs.comphy-lab.org/${urlPath}`; + + // Get the title from frontmatter or use filename + const title = data.title || path.basename(filePath, '.md'); + + // Clean up the content + const cleanContent = content + .replace(/^(created|status|modified|author|date published):.*$/gm, '') + .replace(/\n+/g, '\n') + .trim(); + + // Split content by headers + const sections = cleanContent.split(/(?=^#+\s+)/).map(s => s.trim()).filter(s => s); + + // If no headers found, treat the whole content as one section + const sectionsToProcess = sections.length > 0 ? sections : [cleanContent]; + + for (const section of sectionsToProcess) { + // Get section title + let sectionTitle; + let sectionContent; + + if (section.match(/^#+\s+/)) { + // If section starts with header, use it as title + const lines = section.split('\n'); + sectionTitle = lines[0].replace(/^#+\s+/, ''); + sectionContent = lines.slice(1).join('\n').trim(); + } else { + // Otherwise use main title + sectionTitle = title; + sectionContent = section; + } + + // Skip if no content left + if (!sectionContent) continue; + + // Split content into paragraphs + const paragraphs = sectionContent.split(/\n\n+/).map(p => p.trim()).filter(p => p); + + for (const para of paragraphs) { + // Skip code blocks, HTML and formatting-only content + if (para.startsWith('```') || para.startsWith('<') || para.match(/^[\s#*\-]+$/)) { + continue; + } + + // Skip very short paragraphs + if (para.length < 50) continue; + + // Create blog entry + allEntries.push({ + title: `${title} - ${sectionTitle}`, + content: para, + url: url, + type: 'blog_excerpt', + priority: 3 + }); + } + } + + } catch (error) { + console.error(`Error processing file ${filePath}:`, error.message); + } + } + + console.log(`Generated ${allEntries.length} searchable entries from blog content`); + return allEntries; + + } catch (error) { + console.error('Error processing blog content:', error); + return []; + } +} + +async function cleanup() { + console.log('Cleaning up temporary files...'); + try { + await fs.rm(TEMP_DIR, { recursive: true, force: true }); + console.log('Cleanup completed'); + } catch (error) { + console.error('Error during cleanup:', error); + } +} + +(async () => { + try { + console.log('Starting GitHub blog content fetch...'); + await cloneRepository(); + const entries = await processBlogContent(); + + await fs.writeFile(OUTPUT_FILE, JSON.stringify(entries, null, 2)); + console.log(`Written blog content to ${OUTPUT_FILE}`); + + await cleanup(); + } catch (error) { + console.error('Error:', error); + await cleanup(); + process.exit(1); + } +})(); \ No newline at end of file diff --git a/scripts/generate_search_db.rb b/scripts/generate_search_db.rb index 128b3c2..12d1615 100644 --- a/scripts/generate_search_db.rb +++ b/scripts/generate_search_db.rb @@ -130,6 +130,79 @@ def generate_anchor(text) end end +# Process teaching content from _teaching directory +Dir.glob(File.join(ROOT_DIR, '_teaching', '*.md')).each do |file| + puts "Processing teaching file #{file}..." + + content = File.read(file) + + # Extract YAML front matter to get permalink + front_matter = {} + if content.start_with?("---\n") + _, yaml_text, content = content.split("---\n", 3) + yaml_text.lines.each do |line| + if line.include?(":") + key, value = line.split(":", 2).map(&:strip) + front_matter[key] = value + end + end + end + + # Determine the URL for this teaching content + url = front_matter['permalink'] || '/teaching/' + + # Get the title from front matter or filename + title = front_matter['title'] || File.basename(file, '.md').gsub(/^\d{4}-/, '').tr('-', ' ') + + # Split content by headers + sections = content.split(/^#+\s+/) + sections.shift # Remove content before first header + + sections.each do |section| + next if section.strip.empty? + + # Extract header and content + lines = section.lines + header = lines.first.strip + content = lines[1..].join.strip + + next if header.empty? || content.empty? + next if content.length < 50 # Skip very short sections + + # Skip navigation-like sections + next if header.match?(/^(navigation|menu|contents|index)$/i) + + # Create entry for the section + entry = { + 'title' => "#{title} - #{header}", + 'content' => content, + 'url' => "#{url}##{generate_anchor(header)}", + 'type' => 'teaching_content', + 'priority' => 2 # Medium-high priority for teaching content + } + search_db << entry + + # Also create entries for individual paragraphs + paragraphs = content.split(/\n\n+/) + paragraphs.each do |para| + para = para.strip + next if para.empty? + next if para.length < 100 # Only include substantial paragraphs + next if para.start_with?('```') # Skip code blocks + next if para.start_with?('<') # Skip HTML + + entry = { + 'title' => "#{title} - #{header}", + 'content' => para, + 'url' => "#{url}##{generate_anchor(header)}", + 'type' => 'teaching_paragraph', + 'priority' => 2 + } + search_db << entry + end + end +end + # Process each HTML file Dir.glob(File.join(ROOT_DIR, '_site', '**', '*.html')) do |file| next if file.include?('/assets/') # Skip asset files @@ -146,6 +219,103 @@ def generate_anchor(text) # Extract page title title = doc.at_css('title')&.text || File.basename(file, '.html').capitalize + # Special handling for teaching pages + if url.include?('/teaching/') + # Process course details + doc.css('.course-details__item').each do |detail| + heading = detail.at_css('h4')&.text.to_s.strip + content = detail.at_css('p')&.text.to_s.strip + + next if heading.empty? || content.empty? + + # Create entry for course detail + entry = { + 'title' => "#{title} - #{heading}", + 'content' => content, + 'url' => url, + 'type' => 'teaching_detail', + 'priority' => 2 # Medium-high priority + } + search_db << entry + end + + # Process course schedule/sections + doc.css('h3').each do |heading| + heading_text = heading.text.strip + next if heading_text.empty? + + # Get content until next h3 + content_nodes = [] + current = heading.next_element + while current && current.name != 'h3' + content_nodes << current.text.strip unless current.text.strip.empty? + current = current.next_element + end + content = content_nodes.join(' ').strip + next if content.empty? + + # Create entry for course section + entry = { + 'title' => "#{title} - #{heading_text}", + 'content' => content, + 'url' => "#{url}##{generate_anchor(heading_text)}", + 'type' => 'teaching_section', + 'priority' => 2 + } + search_db << entry + end + + # Process specific teaching sections like Prerequisites, Course Description, etc. + ['Prerequisites', 'Course Description', 'Registration', 'What will you learn'].each do |section_name| + section = doc.xpath("//h2[contains(text(), '#{section_name}')]").first + next unless section + + # Get content until next h2 + content_nodes = [] + current = section.next_element + while current && current.name != 'h2' + content_nodes << current.text.strip unless current.text.strip.empty? + current = current.next_element + end + content = content_nodes.join(' ').strip + next if content.empty? + + # Create entry for the specific section + entry = { + 'title' => "#{title} - #{section_name}", + 'content' => content, + 'url' => "#{url}##{generate_anchor(section_name)}", + 'type' => 'teaching_course_info', + 'priority' => 2 + } + search_db << entry + end + + # Process course card content on index page + doc.css('.course-card').each do |card| + card_title = card.at_css('.course-card__title')&.text.to_s.strip + card_desc = card.at_css('.course-card__desc')&.text.to_s.strip + card_meta = card.css('.course-card__meta').map(&:text).join(' - ').strip + + next if card_title.empty? && card_desc.empty? + + content = [card_title, card_meta, card_desc].reject(&:empty?).join(' - ') + + # Get link to course page + course_link = card.at_css('.course-card__link')&.[]('href').to_s + + # Create entry for course card + entry = { + 'title' => card_title.empty? ? "Teaching course" : card_title, + 'content' => content, + 'url' => course_link.empty? ? url : course_link, + 'type' => 'teaching_course', + 'priority' => 2 + } + search_db << entry + end + end + # Special handling for team members doc.css('h2').each do |heading| name = heading.text.strip diff --git a/scripts/package.json b/scripts/package.json index d0d563e..9868d89 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -4,9 +4,13 @@ "description": "Blog content crawler for CoMPhy Lab website", "private": true, "scripts": { - "fetch": "node fetch_blog_content.js" + "fetch": "node fetch_blog_content.js", + "fetch-github": "node fetch_github_blog_content.js" }, "dependencies": { + "gray-matter": "^4.0.3" + }, + "optionalDependencies": { "puppeteer": "^22.0.0" }, "engines": {