{'fraction_non_alphanumeric': 0.018598884066955982, 'fraction_numerical': 0.0, 'mean_word_length': 5.560975609756097, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Distributed component architecture for scientific applications

The ideal goal of not having the user dealing with concurrency aspects has proven hard to achieve in the context of system (compiler, run-time) supported automatic parallelization for general purpose languages and applications. More focused approaches, of automatic parallelization for numerical applications with a regular structure have been successful. Still, they cannot fully handle irregular applications (e.g the solution of Partial Differential Equations (PDEs) for general geometries).This paper describes a new approach to the parallelization of scientific codes. We make use of the object-oriented and generic programming techniques in order to make parallelism implicit (invisible for the user). Instead of generating a new solution based on a existing one, we take advantage of the application characteristics in order to capture the concurrency infrastructure and to provide part of the solution process to the user. Our goal is to achieve "transparent" concurrency by giving the user the illusion of a sequential programming environment. We isolate the user from the tedious aspects of geometrical data representation, communication patterns computation and communication generation in the process of writing a parallel solver for PDEs. The user concentrates on providing only the local numerical computations which is a straight forward mapping from the numerical algorithm.Furthermore, we describe a system that demonstrates our approach. We address the issues of efficiency for our system and we show that our approach is scalable.