Calculations are based on the engine's bore, stroke, cylinder head chamber volume, piston design, deck clearance, and head gasket properties.
// calculate variables
swept_volume = ((bore / 2) * (bore / 2)) * 3.1415926535 * stroke / 1000 * 4;
piston_dome_displacement = piston_dome_displacement * 4;
headgasket_thickness = (((bore - (- headgasket_difference))/ 2) * ((bore - (- headgasket_difference)) / 2)) * 3.1415926535 * ((headgasket_thickness - (- piston_to_deck_height)) * 25.4) / 1000 * 4;
combustion_chamber_volume = combustion_chamber_volume * 4;
total_CCV = combustion_chamber_volume * 4;
total_BDC = ((bore / 2) * (bore / 2)) * 3.1415926535 * stroke * 4;
total_HGV = (((bore - (- headgasket_difference))/ 2) * ((bore - (- headgasket_difference)) / 2)) * 3.1415926535 * ((headgasket_thickness - (- piston_to_deck_height)) * 25.4) / 1000 * 4;
displacement = (total_CCV + total_BDC + total_HGV) / 1000;
// calculate compression ratio
tdc_volume = (swept_volume - piston_dome_displacement - (- combustion_chamber_volume) - (- headgasket_thickness));
bdc_volume = (combustion_chamber_volume - (- headgasket_thickness) - piston_dome_displacement);
compression_ratio = tdc_volume / bdc_volume;
hows that?