Disclaimer: These numbers are most certainly “WRONG!” You should NOT use this post or anything from a random only tool to plan or execute dives. You WILL get bent. Not “may”, but WILL. You know this. DO NOT rely on this tool.
Here’s a scenario that should never happen, but to quote the eloquent Mr. Mackey, “There are no stupid questions. Only stupid people.”
I decided to answer the following question full well know the question sounds stupid:
Suppose you make it to your first deco stop and want to adjust your deco based on what happened between your max depth, and hitting the deco stop. Say you had a reg failure and had to fix it. Or a scooter got entangled in the line. Or you had a reverse squeeze so you had to pause for a bit longer. Now you’re AT your deco stop, and you’ve got two things – your average depth by the time you hit the stop, and your total runtime for the dive.
Given those two numbers, if you had to calculate deco, how much would it vary based on calculating it as a true multi-level dive where you accounted for the pause as a scheduled “level stop”?
Side note: Once again, remember the purpose of these questions isn’t about what should happen or should never happen, but to create a strong feedback loop in ensuring what should NEVER happen as a function of the cost/risk you incur when you do so. Basically if it should turn out that stopping mid way, and not keeping track of where you stopped and how long you stopped is going to add a ridiculous increase in deco, then you HAVE to make sure you remember it. If it should turn out, it doesn’t add more than a few minutes of deco based on your avg depth observed at your gas switch, then you can in an emergency, get the hell up to that gas switch, switch over, and run the numbers based on what you saw then.
The Program
Here’s a quick program I whipped up which lets you do just that:
//This function is a utility to get total dive time out of all segments var calculateDiveTime = function(diveplan) { var totalTime = 0; for (var index = 0; index < diveplan.length; index++) { var segment = diveplan[index]; totalTime = totalTime + segment.time; } return totalTime; } var buhlmann = dive.deco.buhlmann(); console.log("Second Level depth, Avg Depth at Deco Stop, Multi-Level Deco Time, Avg Depth Deco Time") for (var nextLevelTime = 5; nextLevelTime <= 30; nextLevelTime += 5) { for (var nextLevel=190; nextLevel > 70; nextLevel -= 10) { var plan = new buhlmann.plan(buhlmann.ZH16BTissues); plan.addBottomGas("18/45", 0.21, 0.35); plan.addDecoGas("50%", 0.50, 0); plan.addDecoGas("100%", 1.0, 0); plan.addDepthChange(0, dive.feetToMeters(200), "18/45", 5); plan.addFlat(dive.feetToMeters(200), "18/45", 25); var bottomTime = 30; //5 + 25 to start with var cumulativeDepth = (25 * 200) + (5 * 100); //Avg depth so far (25 mins at 200, and 5 minutes at 100 - which is mid-point when descending). //add a add depth change to next level var depthDiff = 200 - nextLevel; var timeToLevel = depthDiff/60; plan.addDepthChange(dive.feetToMeters(200), dive.feetToMeters(nextLevel), "18/45", timeToLevel); bottomTime += timeToLevel; cumulativeDepth += (timeToLevel * (nextLevel+(depthDiff/2))); //add a segment at next level plan.addFlat(dive.feetToMeters(nextLevel), "18/45", nextLevelTime); bottomTime += nextLevelTime; cumulativeDepth += (nextLevelTime * nextLevel); depthDiff = nextLevel - 70; timeToLevel = depthDiff/60; //This is aggressive since we won't hit 70 feet at 60 fpm plan.addDepthChange(dive.feetToMeters(nextLevel), dive.feetToMeters(70), "18/45", timeToLevel); bottomTime += timeToLevel; cumulativeDepth += (timeToLevel * (70+(depthDiff/2))); var avgDepthAtDecoBegin = cumulativeDepth/bottomTime; var decoPlan = plan.calculateDecompression(false, 0.2, 0.8, 1.6, 30); var totalTime = calculateDiveTime(decoPlan); var decoTimeFromMaxDepth = totalTime - bottomTime; plan = new buhlmann.plan(buhlmann.ZH16BTissues); plan.addBottomGas("18/45", 0.21, 0.35); plan.addDecoGas("50%", 0.50, 0); plan.addDecoGas("100%", 1.0, 0); plan.addFlat(dive.feetToMeters(avgDepthAtDecoBegin), "18/45", bottomTime); decoPlan = plan.calculateDecompression(false, 0.2, 0.8, 1.6, 30); totalTime = calculateDiveTime(decoPlan); var decoTimeFromAvgDepth = totalTime - bottomTime; console.log(nextLevel + ", " + nextLevelTime + ", " + avgDepthAtDecoBegin + ", " + decoTimeFromMaxDepth + ", " + decoTimeFromAvgDepth); } }
The Results (raw data)
The results I got were: