The simulation of viscous free-surface water flow is a subject that has reached a certain maturity and is nowadays used in industrial applications, like the simulation of the flow around ships. While almost all methods used are based on the Navier-Stokes equations, the discretisation methods for the water surface differ widely. Many of these highly different methods are being used with success.We review three of these methods, by describing in detail their implementation in one particular code that is being used in industrial practice. The descriptions concern the principle of the method, numerical details, and the method's strengths and limitations. For each code, examples are given of its use. Finally, the methods are compared to determine the best field of application for each.The following surface descretisation methods are reviewed. First, surface fitting/mesh deformation in PARNAS-SOS, developed by MARIN; the description focuses on the efficient steady-state solution method of this code. Then surface capturing with Volume-of-Fluid in ISIS-CFD, developed by CNRS/Ecole Centrale de Nantes; the main topic of this review are the compressive flux discretisation schemes for the volume fraction that are used in this code. And finally, the Level Set method in SURF, developed by NMRI;
All software evolves, and programming languages and programming language tools are no exception. And just like in ordinary software construction, modular implementations can help ease the process of changing a language implementation and its dependent tools. However, the syntactic and semantic dependencies between language features make this a challenging problem. In this paper we detail how programming languages can be implemented in a modular fashion using the Rascal meta-programming language.Rascal supports extensible definition of concrete syntax, abstract syntax and operations on concrete and abstract syntax trees like matching, traversal and transformation. As a result, new language features can be added without having to change existing code. As a case study, we detail our solution of the LDTA'11 Tool Challenge: a modular implementation of Oberon-0, a relatively simple imperative programming language. The approach we sketch can be applied equally well to the implementation of domain-specific languages.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.