Required to calculate volume from pressure in Imperial.
Gas Consumed:–
Depth in ATM/Bar:–
SAC Rate (Pressure/min):–
RMV (Volume/min):–
What is SAC Rate and RMV?
SAC (Surface Air Consumption) and RMV (Respiratory Minute Volume) are critical metrics for scuba divers to understand their air consumption. Knowing these numbers helps you plan dives safely, ensuring you have enough gas to complete the dive and handle emergencies.
While the terms are often used interchangeably, there is a technical difference:
SAC Rate: Usually refers to the drop in tank pressure per minute, normalized to the surface. (e.g., 20 PSI/min). This number is specific to the size of the tank you are using.
RMV: Refers to the actual volume of gas breathed per minute (e.g., 0.6 CuFt/min or 15 Liters/min). This number is independent of tank size and is generally more useful for planning dives with different equipment.
How to Calculate SAC Rate Diving
The calculation involves determining how much gas you used, dividing it by the time spent underwater, and then normalizing that usage to surface pressure (1 ATM).
The Basic Formula
The logic follows these steps:
Calculate Gas Used:Start Pressure - End Pressure
Calculate Depth in ATM (Atmospheres):
Imperial: (Depth in feet / 33) + 1
Metric: (Depth in meters / 10) + 1
Calculate SAC (Pressure):(Gas Used / Time) / Depth ATM
Calculate RMV (Volume): Convert the pressure SAC to volume based on tank specifications.
Example Calculation (Imperial)
Let's say a diver does a 45-minute dive to an average depth of 50 feet. They are using an Aluminum 80 tank (rated 80 CuFt at 3000 PSI).
Start Pressure: 2900 PSI
End Pressure: 800 PSI
Gas Used: 2100 PSI
Depth (ATM): (50 / 33) + 1 = 2.51 ATM
Usage at Depth: 2100 PSI / 45 mins = 46.6 PSI/min
SAC Rate (Surface): 46.6 / 2.51 = 18.56 PSI/min
RMV (Volume): To get volume, we know 80 CuFt = 3000 PSI. So, (18.56 / 3000) * 80 = 0.49 CuFt/min.
Why Does SAC Rate Vary?
Several factors influence how fast you consume air:
Workload: Swimming against a current or kicking hard increases consumption significantly.
Depth: While SAC normalizes for depth, the actual gas density increases at depth, making the regulator work harder and filling your lungs with denser air.
Experience/Stress: New divers often breathe rapidly due to anxiety. Relaxed, experienced divers breathe slowly and deeply.
Temperature: Cold water often increases metabolic rate and air consumption.
Physical Fitness: Generally, better aerobic fitness leads to more efficient oxygen use.
Tips to Improve Your SAC Rate
Perfect Your Buoyancy: Struggling to stay neutral wastes immense energy.
Streamline Gear: Reduce drag to lower swimming effort.
Dive Often: Comfort in the water naturally slows breathing.
Slow Down: Move slowly and deliberately underwater. It's not a race.
function updateLabels() {
var system = document.getElementById('unitSystem').value;
var pressureGroup = document.getElementById('pressureGroup');
var tankVolLabel = document.getElementById('tankVolLabel');
var startPressLabel = document.getElementById('startPressLabel');
var endPressLabel = document.getElementById('endPressLabel');
var depthLabel = document.getElementById('depthLabel');
var tankInput = document.getElementById('tankSize');
var startInput = document.getElementById('startPressure');
var endInput = document.getElementById('endPressure');
var depthInput = document.getElementById('avgDepth');
if (system === 'imperial') {
tankVolLabel.textContent = "Tank Rated Volume (CuFt)";
startPressLabel.textContent = "Starting Pressure (PSI)";
endPressLabel.textContent = "Ending Pressure (PSI)";
depthLabel.textContent = "Average Depth (Feet)";
pressureGroup.style.display = "block";
// Set placeholders
tankInput.placeholder = "e.g. 80";
startInput.placeholder = "e.g. 3000";
endInput.placeholder = "e.g. 700";
depthInput.placeholder = "e.g. 45";
} else {
tankVolLabel.textContent = "Tank Volume (Liters)";
startPressLabel.textContent = "Starting Pressure (Bar)";
endPressLabel.textContent = "Ending Pressure (Bar)";
depthLabel.textContent = "Average Depth (Meters)";
pressureGroup.style.display = "none";
// Set placeholders
tankInput.placeholder = "e.g. 12";
startInput.placeholder = "e.g. 200";
endInput.placeholder = "e.g. 50";
depthInput.placeholder = "e.g. 15";
}
}
function calculateSAC() {
// Get Inputs
var system = document.getElementById('unitSystem').value;
var tankSize = parseFloat(document.getElementById('tankSize').value);
var startPressure = parseFloat(document.getElementById('startPressure').value);
var endPressure = parseFloat(document.getElementById('endPressure').value);
var avgDepth = parseFloat(document.getElementById('avgDepth').value);
var time = parseFloat(document.getElementById('bottomTime').value);
var ratedPressure = parseFloat(document.getElementById('ratedPressure').value); // Imperial only
// Validation
if (isNaN(tankSize) || isNaN(startPressure) || isNaN(endPressure) || isNaN(avgDepth) || isNaN(time) || time <= 0) {
alert("Please enter valid numbers for all fields. Time must be greater than 0.");
return;
}
if (system === 'imperial' && isNaN(ratedPressure)) {
alert("Please enter the Tank Rated Pressure (e.g., 3000 PSI).");
return;
}
// Logic
var gasConsumed = startPressure – endPressure;
if (gasConsumed <= 0) {
alert("Start pressure must be higher than end pressure.");
return;
}
var atm = 0;
var sacPressure = 0;
var rmvVolume = 0;
var usageUnit = "";
var sacUnit = "";
var rmvUnit = "";
if (system === 'imperial') {
// IMPERIAL CALCULATION
// 1 ATM = 33 feet seawater
atm = (avgDepth / 33) + 1;
// SAC in PSI/min
var consumptionPerMin = gasConsumed / time;
sacPressure = consumptionPerMin / atm;
// RMV in CuFt/min
// Tank Factor = Rated CuFt / Rated PSI
var tankFactor = tankSize / ratedPressure;
rmvVolume = sacPressure * tankFactor;
usageUnit = " PSI";
sacUnit = " PSI/min";
rmvUnit = " CuFt/min";
} else {
// METRIC CALCULATION
// 1 ATM = 10 meters seawater
atm = (avgDepth / 10) + 1;
// SAC in Bar/min
var consumptionPerMin = gasConsumed / time;
sacPressure = consumptionPerMin / atm;
// RMV in Liters/min
// In metric, tank size is actual volume in Liters.
// Bar * Liters = Total Liters of gas at surface pressure
rmvVolume = sacPressure * tankSize;
usageUnit = " Bar";
sacUnit = " Bar/min";
rmvUnit = " Liters/min";
}
// Display Results
document.getElementById('result-area').style.display = "block";
document.getElementById('resConsumed').textContent = gasConsumed.toFixed(0) + usageUnit;
document.getElementById('resAtm').textContent = atm.toFixed(2) + " ATM";
document.getElementById('resSac').textContent = sacPressure.toFixed(1) + sacUnit;
document.getElementById('resRmv').textContent = rmvVolume.toFixed(2) + rmvUnit;
}