Une application web moderne de calcul de profils de dรฉcompression pour la plongรฉe sous-marine, basรฉe sur l'algorithme Bรผhlmann ZHL-16C avec facteurs de gradient.
Cette application est destinรฉe ร des fins รฉducatives uniquement.
- Ne jamais utiliser cette application pour planifier de vraies plongรฉes
- Toujours utiliser des ordinateurs de plongรฉe certifiรฉs
- Suivre les procรฉdures de planification de plongรฉe appropriรฉes
- Ne jamais plonger au-delร de votre niveau de formation et de certification
- Plongรฉes simples : Calcul de profils pour des plongรฉes ร un seul niveau
- Plongรฉes multi-niveaux : Support des plongรฉes avec plusieurs segments de profondeur
- Multi-gaz : Gestion de plusieurs mรฉlanges gazeux (Air, Nitrox, Trimix)
- Algorithme Bรผhlmann ZHL-16C : Implรฉmentation complรจte avec 16 compartiments tissulaires
- Facteurs de gradient : Personnalisation des facteurs de gradient (GF Low/High)
- Graphique de profil : Visualisation interactive du profil de plongรฉe
- Paliers de dรฉcompression : Affichage dรฉtaillรฉ de tous les paliers requis
- Temps de plongรฉe : Calcul du temps total, temps de fond, et temps de dรฉcompression
- Limite sans dรฉcompression (NDL) : Calcul automatique pour les plongรฉes simples
- Mรฉlanges personnalisรฉs : Configuration de l'oxygรจne, azote et hรฉlium
- Profondeur maximale d'utilisation (MOD) : Calcul automatique basรฉ sur la PpO2
- Changements de gaz : Support des changements de gaz pendant la remontรฉe
- Validation de sรฉcuritรฉ : Vรฉrification de la toxicitรฉ de l'oxygรจne et de la narcose
- Design moderne : Interface basรฉe sur Carbon Design System d'IBM
- Responsive : Optimisรฉ pour desktop, tablette et mobile
- Thรจme sombre : Interface รฉlรฉgante avec thรจme sombre
- Avertissements : Systรจme d'alertes pour les conditions dangereuses
- Node.js (version 18 ou supรฉrieure)
- npm ou yarn
- Cloner le dรฉpรดt
git clone <repository-url>
cd decompression-calculator- Installer les dรฉpendances
npm install- Lancer le serveur de dรฉveloppement
npm run dev- Ouvrir dans le navigateur
http://localhost:5173
Pour plus de dรฉtails sur l'architecture et l'implรฉmentation :
- Architecture du Calculateur - Architecture technique complรจte du systรจme
- Guide d'Implรฉmentation de l'Algorithme Bรผhlmann - Guide dรฉtaillรฉ de l'algorithme ZHL-16C
- Design et Maquettes UI - Spรฉcifications de l'interface utilisateur et maquettes
- Diagramme d'Architecture - Diagrammes de flux et architecture du systรจme
- Checklist d'Implรฉmentation - Liste des tรขches et fonctionnalitรฉs implรฉmentรฉes
- Plan Multi-Niveaux Multi-Gaz - Spรฉcifications dรฉtaillรฉes pour les plongรฉes complexes
# Dรฉmarrer le serveur de dรฉveloppement
npm run dev
# Compiler pour la production
npm run build
# Prรฉvisualiser la version de production
npm run preview- Framework : Vue 3 avec Composition API
- Langage : TypeScript
- Build Tool : Vite
- UI Framework : Carbon Design System
- Charts : Chart.js avec vue-chartjs
- State Management : Pinia (prรชt ร l'emploi)
- Styling : Tailwind CSS + Carbon Styles
decompression-calculator/
โโโ src/
โ โโโ components/
โ โ โโโ calculator/ # Composants de calcul
โ โ โ โโโ DiveCalculatorInput.vue
โ โ โ โโโ DiveProfileResults.vue
โ โ โ โโโ GasManager.vue
โ โ โ โโโ SegmentManager.vue
โ โ โ โโโ RateConfiguration.vue
โ โ โโโ common/ # Composants communs
โ โ โ โโโ WarningsDisplay.vue
โ โ โโโ visualizations/ # Visualisations
โ โ โโโ DiveProfileChart.vue
โ โโโ utils/
โ โ โโโ buhlmann/ # Algorithme Bรผhlmann
โ โ โ โโโ constants.ts # Constantes ZHL-16C
โ โ โ โโโ decompression.ts # Calculs de dรฉcompression
โ โ โ โโโ gradientFactors.ts
โ โ โ โโโ tissueLoading.ts # Chargement des tissus
โ โ โโโ conversions.ts # Conversions d'unitรฉs
โ โ โโโ gasMix.ts # Calculs de mรฉlanges gazeux
โ โโโ types/
โ โ โโโ index.ts # Dรฉfinitions TypeScript
โ โโโ App.vue # Composant principal
โ โโโ main.ts # Point d'entrรฉe
โโโ public/ # Fichiers statiques
โโโ index.html # HTML principal
L'algorithme Bรผhlmann ZHL-16C modรฉlise l'absorption et l'รฉlimination des gaz inertes dans 16 compartiments tissulaires diffรฉrents, chacun avec des demi-temps spรฉcifiques :
- Compartiments rapides : 4 ร 12.5 minutes (tissus bien perfusรฉs)
- Compartiments lents : 18.5 ร 635 minutes (tissus peu perfusรฉs)
Les facteurs de gradient permettent d'ajuster la conservativitรฉ du profil :
- GF Low : Appliquรฉ au premier palier (ex: 30%)
- GF High : Appliquรฉ en surface (ex: 70%)
- Interpolation linรฉaire : Entre les deux valeurs
รquation de Schreiner (profondeur constante) :
P_tissue = P_inspired + (P_initial - P_inspired) ร e^(-kรt)
รquation de Haldane (changement de profondeur) :
P_tissue = P_i0 + R ร (t - 1/k) - (P_i0 - P_initial - R/k) ร e^(-kรt)
M-Value (pression ambiante tolรฉrรฉe) :
M-value = a + (P_ambient / b)
- Profondeur : 0-100 mรจtres
- Temps de fond : 1-999 minutes
- Mรฉlange gazeux : Air, Nitrox, ou Trimix personnalisรฉ
- Facteurs de gradient : GF Low (10-90%), GF High (50-100%)
- Segments multiples : Jusqu'ร 10 segments
- Gaz multiples : Jusqu'ร 5 mรฉlanges diffรฉrents
- Profondeur par segment : 0-100 mรจtres
- Durรฉe par segment : 1-999 minutes
- Descente : 20 m/min (configurable)
- Remontรฉe : 10 m/min (configurable)
- Palier de sรฉcuritรฉ : 3 minutes ร 5 mรจtres (automatique si applicable)
- Chargement des tissus : Calcul de la saturation en azote et hรฉlium
- Plafond de dรฉcompression : Profondeur minimale sรปre pour chaque tissu
- Paliers requis : Profondeur et durรฉe de chaque palier
- Temps total : Descente + fond + dรฉcompression + remontรฉe
- NDL : Limite sans dรฉcompression (plongรฉes simples)
- Avertissements : Toxicitรฉ O2, narcose, dรฉcompression excessive
- PpO2 : Vรฉrification de la pression partielle d'oxygรจne (< 1.4 bar en fond, < 1.6 bar en dรฉco)
- Narcose : Calcul de la profondeur รฉquivalente narcotique (END)
- Temps de dรฉcompression : Alerte si > 50% du temps total
- Profondeur maximale : Vรฉrification du MOD pour chaque gaz
- Panneau de saisie : Configuration des paramรจtres de plongรฉe
- Rรฉsultats : Affichage du profil calculรฉ
- Graphique : Visualisation du profil de plongรฉe
- Avertissements : Alertes de sรฉcuritรฉ
- Informations : Dรฉtails sur l'algorithme utilisรฉ
- Carbon Design System : Composants IBM Carbon
- Thรจme sombre : Interface รฉlรฉgante et moderne
- Responsive : Adaptรฉ ร tous les รฉcrans
- Accessibilitรฉ : Conforme aux standards WCAG
Profondeur : 30 mรจtres
Temps : 25 minutes
Gaz : Air (21% O2)
GF : 30/70
Profondeur : 25 mรจtres
Temps : 40 minutes
Gaz : Nitrox 32 (32% O2)
GF : 40/80
Segment 1 : 40m pendant 15 min (Trimix 18/45)
Segment 2 : 30m pendant 20 min (Trimix 18/45)
Segment 3 : 20m pendant 15 min (Nitrox 50)
GF : 30/70
- PADI - Professional Association of Diving Instructors
- SSI - Scuba Schools International
- TDI - Technical Diving International
Les contributions sont les bienvenues ! N'hรฉsitez pas ร :
- Signaler des bugs
- Proposer de nouvelles fonctionnalitรฉs
- Amรฉliorer la documentation
- Soumettre des pull requests
Ce projet est ร des fins รฉducatives. Consultez le fichier LICENSE pour plus de dรฉtails.
- Vue 3 avec
<script setup>et Composition API - TypeScript pour la sรฉcuritรฉ des types
- Vite pour un build ultra-rapide
- Carbon Design System pour l'UI
- Chart.js pour les visualisations
- Code TypeScript strict
- Composants rรฉutilisables
- Sรฉparation des prรฉoccupations
- Tests unitaires (ร venir)
- Documentation inline
Pour toute question ou problรจme :
- Ouvrir une issue sur GitHub
- Consulter la documentation
- Contacter l'รฉquipe de dรฉveloppement
Rappel : Cette application est uniquement ร des fins รฉducatives. Ne jamais l'utiliser pour planifier de vraies plongรฉes. Toujours utiliser des รฉquipements certifiรฉs et suivre une formation appropriรฉe.
A modern web application for calculating decompression dive profiles, based on the Bรผhlmann ZHL-16C algorithm with gradient factors.
This application is for educational purposes only.
- Never use this application to plan real dives
- Always use certified dive computers
- Follow proper dive planning procedures
- Never dive beyond your training and certification level
- Simple dives: Profile calculation for single-level dives
- Multi-level dives: Support for dives with multiple depth segments
- Multi-gas: Management of multiple gas mixes (Air, Nitrox, Trimix)
- Bรผhlmann ZHL-16C Algorithm: Complete implementation with 16 tissue compartments
- Gradient factors: Customizable gradient factors (GF Low/High)
- Profile chart: Interactive dive profile visualization
- Decompression stops: Detailed display of all required stops
- Dive times: Calculation of total time, bottom time, and decompression time
- No-decompression limit (NDL): Automatic calculation for simple dives
- Custom mixes: Configuration of oxygen, nitrogen, and helium
- Maximum operating depth (MOD): Automatic calculation based on PpO2
- Gas switches: Support for gas changes during ascent
- Safety validation: Oxygen toxicity and narcosis verification
- Modern design: Interface based on IBM's Carbon Design System
- Responsive: Optimized for desktop, tablet, and mobile
- Dark theme: Elegant interface with dark theme
- Warnings: Alert system for dangerous conditions
- Node.js (version 18 or higher)
- npm or yarn
- Clone the repository
git clone <repository-url>
cd decompression-calculator- Install dependencies
npm install- Start the development server
npm run dev- Open in browser
http://localhost:5173
For more details on architecture and implementation:
- Calculator Architecture - Complete technical system architecture
- Bรผhlmann Algorithm Implementation Guide - Detailed ZHL-16C algorithm guide
- UI Design and Mockups - User interface specifications and mockups
- Architecture Diagram - Flow diagrams and system architecture
- Implementation Checklist - List of implemented tasks and features
- Multi-Level Multi-Gas Plan - Detailed specifications for complex dives
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview- Framework: Vue 3 with Composition API
- Language: TypeScript
- Build Tool: Vite
- UI Framework: Carbon Design System
- Charts: Chart.js with vue-chartjs
- State Management: Pinia (ready to use)
- Styling: Tailwind CSS + Carbon Styles
decompression-calculator/
โโโ src/
โ โโโ components/
โ โ โโโ calculator/ # Calculator components
โ โ โ โโโ DiveCalculatorInput.vue
โ โ โ โโโ DiveProfileResults.vue
โ โ โ โโโ GasManager.vue
โ โ โ โโโ SegmentManager.vue
โ โ โ โโโ RateConfiguration.vue
โ โ โโโ common/ # Common components
โ โ โ โโโ WarningsDisplay.vue
โ โ โโโ visualizations/ # Visualizations
โ โ โโโ DiveProfileChart.vue
โ โโโ utils/
โ โ โโโ buhlmann/ # Bรผhlmann algorithm
โ โ โ โโโ constants.ts # ZHL-16C constants
โ โ โ โโโ decompression.ts # Decompression calculations
โ โ โ โโโ gradientFactors.ts
โ โ โ โโโ tissueLoading.ts # Tissue loading
โ โ โโโ conversions.ts # Unit conversions
โ โ โโโ gasMix.ts # Gas mix calculations
โ โโโ types/
โ โ โโโ index.ts # TypeScript definitions
โ โโโ App.vue # Main component
โ โโโ main.ts # Entry point
โโโ public/ # Static files
โโโ index.html # Main HTML
The Bรผhlmann ZHL-16C algorithm models the absorption and elimination of inert gases in 16 different tissue compartments, each with specific half-times:
- Fast compartments: 4 to 12.5 minutes (well-perfused tissues)
- Slow compartments: 18.5 to 635 minutes (poorly-perfused tissues)
Gradient factors allow adjusting the conservatism of the profile:
- GF Low: Applied at first stop (e.g., 30%)
- GF High: Applied at surface (e.g., 70%)
- Linear interpolation: Between the two values
Schreiner Equation (constant depth):
P_tissue = P_inspired + (P_initial - P_inspired) ร e^(-kรt)
Haldane Equation (depth change):
P_tissue = P_i0 + R ร (t - 1/k) - (P_i0 - P_initial - R/k) ร e^(-kรt)
M-Value (tolerated ambient pressure):
M-value = a + (P_ambient / b)
- Depth: 0-100 meters
- Bottom time: 1-999 minutes
- Gas mix: Air, Nitrox, or custom Trimix
- Gradient factors: GF Low (10-90%), GF High (50-100%)
- Multiple segments: Up to 10 segments
- Multiple gases: Up to 5 different mixes
- Depth per segment: 0-100 meters
- Duration per segment: 1-999 minutes
- Descent: 20 m/min (configurable)
- Ascent: 10 m/min (configurable)
- Safety stop: 3 minutes at 5 meters (automatic when applicable)
- Tissue loading: Calculation of nitrogen and helium saturation
- Decompression ceiling: Minimum safe depth for each tissue
- Required stops: Depth and duration of each stop
- Total time: Descent + bottom + decompression + ascent
- NDL: No-decompression limit (simple dives)
- Warnings: O2 toxicity, narcosis, excessive decompression
- PpO2: Oxygen partial pressure verification (< 1.4 bar at depth, < 1.6 bar during deco)
- Narcosis: Equivalent narcotic depth (END) calculation
- Decompression time: Alert if > 50% of total time
- Maximum depth: MOD verification for each gas
- Input panel: Dive parameter configuration
- Results: Calculated profile display
- Chart: Dive profile visualization
- Warnings: Safety alerts
- Information: Details about the algorithm used
- Carbon Design System: IBM Carbon components
- Dark theme: Elegant and modern interface
- Responsive: Adapted to all screens
- Accessibility: WCAG standards compliant
Depth: 30 meters
Time: 25 minutes
Gas: Air (21% O2)
GF: 30/70
Depth: 25 meters
Time: 40 minutes
Gas: Nitrox 32 (32% O2)
GF: 40/80
Segment 1: 40m for 15 min (Trimix 18/45)
Segment 2: 30m for 20 min (Trimix 18/45)
Segment 3: 20m for 15 min (Nitrox 50)
GF: 30/70
- PADI - Professional Association of Diving Instructors
- SSI - Scuba Schools International
- TDI - Technical Diving International
Contributions are welcome! Feel free to:
- Report bugs
- Propose new features
- Improve documentation
- Submit pull requests
This project is for educational purposes. See the LICENSE file for more details.
- Vue 3 with
<script setup>and Composition API - TypeScript for type safety
- Vite for ultra-fast builds
- Carbon Design System for UI
- Chart.js for visualizations
- Strict TypeScript code
- Reusable components
- Separation of concerns
- Unit tests (coming soon)
- Inline documentation
For any questions or issues:
- Open an issue on GitHub
- Consult the documentation
- Contact the development team
Reminder: This application is for educational purposes only. Never use it to plan real dives. Always use certified equipment and follow proper training.