This paper describes an ongoing work in the development of a finite element analysis system, called TopFEM, based on the compact topological data structure, TopS [1,2]. This new framework was written to take advantage...
详细信息
This paper describes an ongoing work in the development of a finite element analysis system, called TopFEM, based on the compact topological data structure, TopS [1,2]. This new framework was written to take advantage of the topological data structure together with object-oriented programming concepts to handle a variety of finite element problems, spanning from fracture mechanics to topology optimization, in an efficient, but generic fashion. The class organization of the TopFEM system is described and discussed within the context of other frameworks in the literature that share similar ideas, such as Get-FEM++, ***, FEMOOP and OpenSees. Numerical examples are given to illustrate the capabilities of TopS attached to a finite element framework in the context of fracture mechanics and to establish a benchmark with other implementations that do not make use of a topological data structure. (C) 2013 Elsevier Ltd. All rights reserved.
This paper introduces NiHu, a C++ template library for boundary element methods (BEM). The library is capable of computing the coefficients of discretised boundary integral operators in a generic way with arbitrarily ...
详细信息
This paper introduces NiHu, a C++ template library for boundary element methods (BEM). The library is capable of computing the coefficients of discretised boundary integral operators in a generic way with arbitrarily defined kernels and function spaces. NiHu'S template core defines the workflow of a general BEM algorithm independent of the specific application. The core provides expressive syntax, based on the operator notation of the BEM, reflecting the mathematics behind boundary elements in the C++ source code. The customisable Component library contains elements specific to particular applications such as different numerical integration techniques and regularisation methods. The library can be used for creating a standalone C++ application using external open source libraries, or compiling a Matlab tool-box through the MEX interface. By massively exploiting C++ template metaprogramming, NiHu generates optimised codes for specific applications, including heterogeneous problems. The paper introduces the main concepts of the novel development, demonstrates its versatility and flexibility and compares the implementation's performance to that of other open source projects. (C) 2014 Elsevier Ltd. All rights reserved.
The overall goal of this research was to determine how to improve online delivery of programming courses, with the objective of advancing student engagement and learning outcomes. In order to improve the learning proc...
详细信息
ISBN:
(纸本)9780769537832
The overall goal of this research was to determine how to improve online delivery of programming courses, with the objective of advancing student engagement and learning outcomes. In order to improve the learning process for students with different pre-knowledge and preferred learning styles, a certain degree of adaptability must be introduced to eCourses. In learning environments that support this kind of functionalities students can choose different paths through course contents or can be directed to different parts of the instructional material depending on the pace of their advancement. This paper presents the implementation of such an environment by extending an Open Source Learning Management System Moodie, as well as possibilities of its usage in a typical introductory university course on object-oriented programming in Java.
We describe implementation of a modular system of computer codes for inversion of electromagnetic geophysical data, referred to as ModEM. The system is constructed with a fine level of modular granularity, with basic ...
详细信息
We describe implementation of a modular system of computer codes for inversion of electromagnetic geophysical data, referred to as ModEM. The system is constructed with a fine level of modular granularity, with basic components of the inversion - forward modeling, sensitivity computations, inversion search algorithms, model parametrization and regularization, data functionals - interchangeable, reusable and readily extensible. Modular sensitivity computations and generic interfaces to parallelized inversion algorithms provide a ready framework for rapid implementation of new applications or inversion algorithms. We illustrate the code's versatility and capabilities for code reuse through implementation of 3D magnetotelluric (MT) and controlled-source EM (CSEM) inversions, using essentially the same components. (C) 2014 Elsevier Ltd. All rights reserved.
In objectprogramming languages, the Visitor design pattern allows separation of algorithms and data structures. When applying this pattern to tree-like structures, programmers are always confronted with the difficult...
详细信息
In objectprogramming languages, the Visitor design pattern allows separation of algorithms and data structures. When applying this pattern to tree-like structures, programmers are always confronted with the difficulty of making their code evolve. One reason is that the code implementing the algorithm is interwound with the code implementing the traversal inside the visitor. When implementing algorithms such as data analyses or transformations, encoding the traversal directly into the algorithm turns out to be cumbersome as this type of algorithm only focuses on a small part of the data-structure model (e.g., program optimization). Unfortunately, typed programming languages like Java do not offer simple solutions for expressing generic traversals. Rewrite-based languages like ELAN or Stratego have introduced the notion of strategies to express both generic traversal and rule application control in a declarative way. Starting from this approach, our goal was to make the notion of strategic programming available in a widely used language such as Java and thus to offer generic traversals in typed Java structures. In this paper, we present the strategy language SL that provides programming support for strategies in Java. Copyright (c) 2012 John Wiley & Sons, Ltd.
The previously proposed class cohesion measures employ different approaches to assess the strength of the relations between the attributes and methods in a class. Access methods, constructors and destructors are speci...
详细信息
The previously proposed class cohesion measures employ different approaches to assess the strength of the relations between the attributes and methods in a class. Access methods, constructors and destructors are special types of methods with special characteristics that can falsely alter the class cohesion measurement. In this study, the authors empirically explored the impact of considering special methods (SPs) on the cohesion measures' abilities to predict the classes that can be intensively reused via instantiation (IRI). They considered classes in the JHotDraw and Eclipse systems. For each class, they obtained cohesion results using 17 measures in four different scenarios of considering or ignoring SPs. They collected the instantiation reusability data and applied a statistical technique to build a prediction model using each measure in each considered scenario. They investigated the significance of the changes in the prediction results. The authors' results demonstrated that cohesion had a negative impact on class instantiation reuse-proneness and that SPs had significant impacts on cohesion values and the abilities of the cohesion measures to predict IRI classes. In practice, when applying cohesion measures to predict IRI classes, the results suggest that SPs must be included in cohesion measurement.
Three object-oriented implementations of a prototype solver of the advection equation are introduced. The programs are based on Blitz++ (C++), NumPy (Python) and Fortran's built-in array containers. The solvers co...
详细信息
Three object-oriented implementations of a prototype solver of the advection equation are introduced. The programs are based on Blitz++ (C++), NumPy (Python) and Fortran's built-in array containers. The solvers constitute mentations of the Multidimensional Positive-Definite Advective Transport Algorithm (MPDATA). The introduced codes serve examples for how the application of object-oriented programming (OOP) techniques and new language constructs from C++ and Fortran 2008 allow to reproduce the mathematical notation used in the literature within the program code. A on the tradeoffs of the programming language choice is presented. The main angles of comparison are code brevity and clarity (and hence maintainability and auditability) as well as performance. All performance tests are carried out using free open-source compilers. In the case of Python, a significant performance gain is observed when switching from the standard terpreter (CPython) to the PyPy implementation of Python. Entire source code of all three implementations is embedded in text and is licensed under the terms of the GNU GPL license.
Hydroreservoirs usually serve two main purposes: hydropower production and water consumption. The great flexibility, low operating costs, and low carbon impact of hydroturbines turns them into a desirable technology i...
详细信息
Hydroreservoirs usually serve two main purposes: hydropower production and water consumption. The great flexibility, low operating costs, and low carbon impact of hydroturbines turns them into a desirable technology in the generator mix of power systems. In addition, sustainability and environmental concerns support their use in current power systems, along with other renewable energy sources like wind and solar energy. However, the stochastic nature of river inflows hinders their long-term use and hints at the need to use planning tools. Furthermore, it also requires the use of planning tools in order to balance present and future requirements. This work presents a simulation tool that is employed at Iberdrola to help in the preparation of medium-term hydroelectric production schedules. The main objective of the simulation is to follow the production guidelines given by a long-term hydrothermal problem, while avoiding spillages and failures to fulfill water release agreements. In order to achieve this, the simulation algorithm is structured around several phases that aim at coordinating the operation of all the elements in the basin. This way, the simulation tool provides the operator a way to evaluate the outcome from forecasts of either water inflows or future operation situations. Some of the potential applications of this simulation tool are shown in this work: general simulation in order to know in advance the consequences of possible inflow forecasts, and how to assess several maintenance schedules and different upgrade plans.
The article is halfway between agent technology and the mathematical reasoning needed to model tactical decision-making tasks. These models are applied to the air defense domain for command and control (C2). The artic...
详细信息
The article is halfway between agent technology and the mathematical reasoning needed to model tactical decision-making tasks. These models are applied to the air defense domain for command and control (C2). The article also addresses the issues related to evaluating agents, which are designed and implemented using the agent-programming paradigm. The agents are deployed in a simulated environment for performing C2 tasks, such as electronic counter-countermeasures, threat assessment, and weapon allocation. The simulated defense system runs without any human intervention and represents a state-of-the-art model for C2 autonomy. The use of agents as autonomous decision-making entities is particularly useful in view of futuristic network-centric warfare.
Design by contract (DbC) is a software development methodology that focuses on clearly defining the interfaces between components to produce better quality object-oriented software. Though there exists ample support f...
详细信息
Design by contract (DbC) is a software development methodology that focuses on clearly defining the interfaces between components to produce better quality object-oriented software. Though there exists ample support for DbC for sequential programs, applying DbC to concurrent programs presents several challenges. Using Java as the target programming language, we tackle such challenges by augmenting the Java Modelling Language (JML) and modifying the JML compiler (jmlc) to generate runtime assertion checking code to support DbC in concurrent programs. We applied our solution in a carefully designed case study on a highly concurrent industrial software system from the telecommunications domain to assess the effectiveness of contracts as test oracles in detecting and diagnosing functional faults in concurrent software. Based on these results, clear and objective requirements are defined for contracts to be effective test oracles for concurrent programs whilst balancing the effort to design them. Effort is measured indirectly through the contract complexity measure (CCM), a measure we define. Main results include that contracts of a realistic level of completeness and complexity can detect around 76 percent of faults and reduce the diagnosis effort for such faults tenfold. We, therefore, show that DbC can be applied to concurrent software and can be a valuable tool to improve the economics of software engineering.
暂无评论