Fundamentals of Flow Assurance