private void H_OH(Atom atomO, Atom atomH, Atom atomH2) {
		double angle = Math.abs(AngularBond.getAngle(atomH, atomO, atomH2));
		if (Math.abs(angle - H2O_ANGLE) > ANGLE_TOLL)
			return;
		double bondLength = getBondLength(atomO, atomH);
		double bondStrength = getBondStrength(atomO, atomH);
		double bondEnergy = type.getParameter(Reaction.O2_2H2__2H2O.VHO).doubleValue();
		double xOH = atomO.rx - atomH.rx;
		double yOH = atomO.ry - atomH.ry;
		double rOH = Math.hypot(xOH, yOH);
		RadialBond rBond = new RadialBond.Builder(atomO, atomH).bondLength(bondLength).bondStrength(bondStrength)
				.chemicalEnergy(bondEnergy).build();
		AngularBond aBond = new AngularBond(atomH, atomH2, atomO, H2O_ANGLE);
		double pot = bondEnergy - 0.5 * bondStrength * (rOH - bondLength) * (rOH - bondLength) - 0.5
				* aBond.getBondStrength() * (angle - H2O_ANGLE) * (angle - H2O_ANGLE);
		atomO.storeCurrentVelocity();
		atomH.storeCurrentVelocity();
		atomH2.storeCurrentVelocity();
		if (conserve(atomO.getIndex(), atomH.getIndex(), atomH2.getIndex(), pot)) {
			bonds.add(rBond);
			bends.add(aBond);
			atomO.setRadical(false);
			atomH.setRadical(false);
			atomH2.setRadical(false);
			bondChanged = true;
		}
		else {
			atomO.restoreVelocity();
			atomH.restoreVelocity();
			atomH2.restoreVelocity();
		}
	}