Characterization of Communication Patterns in Message-Passing Parallel Scientific Application Programs