This position paper urges decision makers in Germany to establish central Research Software Engineering (RSE) units within their institutions. The focus is not put primarily on the establishment of RSE services in general, as this has been done already elsewhere. Instead, we highlight central RSE units. Motivation for their existence is discussed, underpinned by working examples both in neighbouring fields as well as outside of Germany. The heart of this paper is a vision of a central RSE unit, its structure, and the definition of core support modules. We collected feedback from existing RSE departments and found that there is considerable diversity within the module distribution, even in such a small sample. These modules include consultation and development services, and infrastructure provisioning. RSE units do not necessarily need to provide all support modules. Our ideas take inspiration from existing RSE units in the UK and US, and adapt those to the German academic environment. An initial survey finds that there is considerable diversity within the module distribution, even within the few considered groups. We discuss initial observations on possible clusters, but further studies are needed. Finally, we discuss realisation strategies. While this paper focuses mostly on the German academic environment, some general strategies should also apply elsewhere.
This paper accompanies the publication of the open source lattice Boltzmann solver VIRTUALFLUIDS [DOI: 10.5281/zenodo.10283048]. Key features of VIRTUALFLUIDS are the cumulant collision operator, the ability to run multi-scale simulations based on compact interpolation grid refinement and its implementations for both GPU and massively parallel CPU systems. The differences in data structure for the different systems are explained in detail. PROGRAM SUMMARY Program Title: VIRTUALFLUIDS CPC Library link to program files: https://doi.org/10.17632/tfzdnz7vwx.1 Developer's repository link: https://git.rz.tu-bs.de/irmb/VirtualFluids.git Licensing provisions: GPLv3 Programming language: C++, C, Cuda, Python, CMake Nature of problem: High resolution transient computational fluid dynamics with applications in urban and environmental flows, wind engineering, porous materials, aero-acoustics etc. is implemented in a sustainable software environment. Solution method: Fluid flow is simulated with the super-convergent cumulant lattice Boltzmann method with compact interpolation grid refinement. The software is designed for massively parallel computation on various computer architectures, ranging from desktop computers to high performance clusters. GPU computation is enabled by a CUDA simulation kernel. A sustainable code basis is obtained through continuous integration and a wide range of tests i.e. unit tests, regression test, etc.
Research software has been categorized in different contexts to serve different goals. We start with a look at what research software is before we discuss the purpose of research software categories. We propose a multidimensional categorization of research software. We present a template for characterizing such categories. As selected dimensions, we present our proposed role-based, readiness-based, developer-based, and dissemination-based categories. Since our work has been inspired by various previous efforts to categorize research software, we discuss them as related works. We characterize all of these categories via the previously introduced template to enable a systematic comparison. We report on the multidimensional categorization of selected research software examples.
The term Research Software Engineer, or RSE, emerged a little over 10 years ago as a way to represent individuals working in the research community but focusing on software development. The term has been widely adopted and there are a number of high-level definitions of what an RSE is. However, the roles of RSEs vary depending on the institutional context they work in. At one end of the spectrum, RSE roles may look similar to a traditional research role. At the other extreme, they resemble that of a software engineer in industry. Most RSE roles inhabit the space between these two extremes. Therefore, providing a straightforward, comprehensive definition of what an RSE does and what experience, skills and competencies are required to become one is challenging. In this community paper we define the broad notion of what an RSE is, explore the different types of work they undertake, and define a list of fundamental competencies as well as values that define the general profile of an RSE. On this basis, we elaborate on the progression of these skills along different dimensions, looking at specific types of RSE roles, proposing recommendations for organisations, and giving examples of future specialisations. An appendix details how existing curricula fit into this framework.
Research Software Engineering (RSEng) is a key success factor in producing high-quality research software, which in turn enables and improves research outcomes. However, as a principal investigator or leader of a research group you may not know what RSEng is, where to get started with it, or how to use it to maximize its benefit for your research. RSEng also often comes with technical complexity, and therefore reduced accessibility to some researchers. The ten simple rules presented in this paper aim to improve the accessibility of RSEng, and provide practical and actionable advice to PIs and leaders for integrating RSEng into their research group. By following these rules, readers can improve the quality, reproducibility, and trustworthiness of their research software, ultimately leading to better, more reproducible and more trustworthy research outcomes.
Better software drives better research, a fundamental principle in the research software engineering community. Similarly, better architecture underpins better software, a core belief in the software engineering research community. Therefore, we advocate and emphasize the importance of designing robust architectures for research software to elevate the quality of research outcomes, and illustrate this with two case studies.
The term Research Software Engineer, or RSE, emerged a little over 10 years ago as a way to represent individuals working in the research community but focusing on software development. The term has been widely adopted and there are a number of high-level definitions of what an RSE is. However, the roles of RSEs vary depending on the institutional context they work in. At one end of the spectrum, RSE roles may look similar to a traditional research role. At the other extreme, they resemble that of a software engineer in industry. Most RSE roles inhabit the space between these two extremes. Therefore, providing a straightforward, comprehensive definition of what an RSE does and what experience, skills and competencies are required to become one is challenging. In this community paper we define the broad notion of what an RSE is, explore the different types of work they undertake, and define a list of foundational competencies as well as values that outline the general profile of an RSE. Further research and training can build upon this foundation of skills and focus on various aspects in greater detail. We expect that graduates and practitioners will have a larger and more diverse set of skills than outlined here. On this basis, we elaborate on the progression of these skills along different dimensions. We look at specific types of RSE roles, propose recommendations for organisations, give examples of future specialisations, and detail how existing curricula fit into this framework.
Research software has been categorized in different contexts to serve different goals. We start with a look at what research software is, before we discuss the purpose of research software categories. We propose a multi-dimensional categorization of research software. We present a template for characterizing such categories. As selected dimensions, we present our proposed role-based, developer-based, and maturity-based categories. Since our work has been inspired by various previous efforts to categorize research software, we discuss them as related works. We characterize all these categories via the previously introduced template, to enable a systematic comparison.
Research software has become a central asset in academic research. It optimizes existing and enables new research methods, implements and embeds research knowledge, and constitutes an essential research product in itself. Research software must be sustainable in order to understand, replicate, reproduce, and build upon existing research or conduct new research effectively. In other words, software must be available, discoverable, usable, and adaptable to new needs, both now and in the future. Research software therefore requires an environment that supports sustainability. Hence, a change is needed in the way research software development and maintenance are currently motivated, incentivized, funded, structurally and infrastructurally supported, and legally treated. Failing to do so will threaten the quality and validity of research. In this paper, we identify challenges for research software sustainability in Germany and beyond, in terms of motivation, selection, research software engineering personnel, funding, infrastructure, and legal aspects. Besides researchers, we specifically address political and academic decision-makers to increase awareness of the importance and needs of sustainable research software practices. In particular, we recommend strategies and measures to create an environment for sustainable research software, with the ultimate goal to ensure that software-driven research is valid, reproducible and sustainable, and that software is recognized as a first class citizen in research. This paper is the outcome of two workshops run in Germany in 2019, at deRSE19 - the first International Conference of Research Software Engineers in Germany - and a dedicated DFG-supported follow-up workshop in Berlin.
The UNO predicts that in 2030 over 60% of the world population will live in urban environments. This percentage will increase to up to 70% in the year 2050. With that said, more than ever it is essential that we protect the living conditions in inner-urban regions. In this regard the air quality is of particular importance. The microclimatic implications of the densely built-up area mainly influence the dispersal dynamics of pollutants in ambient air. These are in particular fine dust particles and nitrogen oxides [1, 2]. According to the UN as of today only 12% of the world wide urban population are exposed to an air quality that remains under the level set by WHO. According to this survey half of the urban population is exposed to more than two and a half times of the fine dust limit [3]. Major anthropogenic sources of these pollutants are motorized and private transport, the manufacturing industry, power plants and heating systems in private households. Wind field and pollutant dispersion simulations in the urban near-field on the scale of individual buildings or streets have been used for several decades both in science and practice [4]. Here primarily Reynolds Averaged Navier-Stokes (RANS) models are used to give answers to environmental and urban planning questions. However with these models only mean wind fields are represented and the important turbulent exchanges in the near-surface area are fully parameterized. Nowadays the computing power of high-performance computing (HPC) systems allow for more detailed turbulence modelling using Large Eddy Simulation (LES) [5, 6, 7] covering whole city districts with resolutions of up to 1m [8, 9]. On the one hand LES simulations show much better mean flow and concentration distribution and on the other hand provide a reliable prediction of the turbulent fluctuations of the flow characteristics. Vegetation influences are currently considered using simple inventory models covering the leaf area index [10]. In this work we present a LES-LBM based simulation environment using multiple General Purpose GPUs that allows for detailed predictions of the pollutant dispersion in city districts on the micro scale. Also the model respects dynamic traffic loads and local industrial sources of pollution on the building scale. In addition, micro scale partial models describe the influence of the vegetation (e.g. trees) on the pollutant dispersion.