12 votes

What guidelines should I follow for simulation software projects?

I maintain (and am the main coder of) a simulation software that has been developed for ~8 years and is used by few hundreds people. It all started as a side project during my PhD, and it clearly ...
user avatar
  • 657
12 votes
Accepted

What guidelines should I follow for simulation software projects?

"developers lack the skills". Maybe. I think it's much more likely that the developers lack the incentives. Making solid code is difficult and expensive and, in academia, comes with minimal-to-...
user avatar
  • 3,131
10 votes
Accepted

How should errors be reported in scientific libraries?

I'll give you my perspective, which is encoded in the deal.II project that you reference. First, there are two kinds of error conditions: Errors that can be recovered from, and errors that can not be ...
user avatar
9 votes
Accepted

Soft question: What are good libraries for solving ordinary differential equations?

In general, I'd say the following open source tools tend to be (roughly) best-of-breed, in the following order: PETSc has implemented a number of ODE solvers as part of TS, its time-stepping routines....
user avatar
9 votes
Accepted

Programming Finite Element Methods in C++

One of the authors of fenics, A. Logg, have written a very good paper on datastructures of storing meshes. The paper is A. Logg (2009). Efficient Representation of Computational Meshes http://arxiv....
user avatar
  • 435
8 votes

What's the fastest software(open source) to solve mixed integer programming problem

If you want to try a bunch of different solvers, give Julia's JuMP modeling framework a try. It lets you write your model as a JuMP model, and then switch out the solvers with one line of code. For ...
user avatar
8 votes
Accepted

Should I use a database to handle large amounts of results?

I would suggest that a full database may be overkill for your purposes, though it would certainly work. Even $5 \cdot 10^5$ rows should be no more than around 25mb of data. I would strongly recommend ...
user avatar
  • 2,473
8 votes

Programming Finite Element Methods in C++

In deal.II, we basically only use vectors. Maps are too slow and scatter data all around memory, so we typically don't use them if the keys are integers and within a given range. For example, for the ...
user avatar
8 votes
Accepted

Visualizing the solutions of the Differential equations by varying different parameters

You can try Geogebra (it is free). With SolveODE command and sliders you can do what yo want. For the usage of SolveODE command see. For example by using following command ...
user avatar
  • 643
8 votes

How to properly calculate CPU and GPU FLOPS performance?

You can calculate GFLOP rates this way, but the numbers are pretty meaningless on today's hardware: Floating point operations require a variable number of clock cycles. An addition is generally ...
user avatar
7 votes
Accepted

Using computational libraries on a machine without root access

Almost everything you can build and install in your own space. With GNU autotools, you can do something like ./configure --prefix=/path/to/your/work/space ... and ...
user avatar
  • 10.8k
7 votes

Speeding up a linear transform using Python

Assuming that your kernel is somewhat smooth, use low-rank approximation. Here's a naive example: ...
user avatar
  • 586
6 votes

Extracting system matrices from FEM software

All of the major finite element libraries (such as libMesh; FEniCS; or the project I run, deal.II) provide you with ready access to the system matrix and or any other matrices you need. They typically ...
user avatar
6 votes
Accepted

Best software to do big number calculations quickly

Why not give GMPY2 a try? From the introduction: gmpy2 is a C-coded Python extension module that supports multiple-precision arithmetic. gmpy2 is the successor to the original gmpy module. The gmpy ...
user avatar
  • 6,076
5 votes
Accepted

Solving a problem using multiple threads using CLP

By Clp, I assume that you're referring to the linear programming code that is part of the COIN-OR project: http://www.coin-or.org/Clp/ Clp's primal and dual simplex codes aren't multithreaded so ...
user avatar
5 votes
Accepted

Do C++ matrix libraries translate compound vector operations to single loops?

This is possible in C++ via expression templates. Section 1.9 of this technical report addresses your question.
user avatar
5 votes

Should I use a database to handle large amounts of results?

I highly recommend using a tool such as Sumatra for this. I used to have a similar "pedestrian" approach to yours for keeping track of many simulation runs with varying parameters, but in the end it ...
user avatar
  • 151
5 votes

How do I write dimensionally agnostic code?

The clear answers if you want to keep Fortran speed are to use a language which has proper code generation like Julia or C++. C++ templates have already been mentioned, so I'll mention Julia's tools ...
user avatar
5 votes

FOSS tools for creating high quality physics animations and simulations in 2d and 3d

For my work, I tend to have programs output a sequence of still images, and I then convert them to an animated format in a post-processing step. To make a video, I use ffmpeg (http://www.ffmpeg.org/); ...
user avatar
  • 1,522
5 votes

Additional cost associated with quad (or higher) precision

It depends on how quad precision is implemented. If you want to implement it as "traditional" floating point numbers with sign, mantissa, and exponent (the latter two just having more than the normal ...
user avatar
5 votes

Can other running processes harm the performance of my simulation?

If you just want the computational results and aren't running benchmarking tests then this isn't a serious problem. If you're trying to benchmark the performance of the code and get repeatable run ...
user avatar
5 votes
Accepted

How to solve the transcendental equation: $\tan(x) = \frac{2x}{x^2-1}$

Here is a simple (Matlab) Newton method as a first attempt to help get started. It finds 1087 roots with error below $10^{-11}$. ...
user avatar
4 votes
Accepted

Automated software optimization and tuning

You could just write an edit, compile, run loop in shell or Python that does it directly in the .h file if you think hard-coding this value is likely to give the compiler an advantage. If the runs are ...
user avatar
  • 10.8k
4 votes

FOSS tools for creating high quality physics animations and simulations in 2d and 3d

I think the basic ideas behind this question are extremely valuable (the question should be made a bit more precise, though), and it'd be nice to see an answer in a community wiki-style format, with a ...
user avatar
  • 256
4 votes
Accepted

convex optimization with objective function given by oracles

OK- so you're trying to maximize a concave function which is piecewise linear, and you can evaluate the function and get a subgradient at any desired point. This is equivalent to minimizing a convex ...
user avatar
4 votes

Visualizing the solutions of the Differential equations by varying different parameters

You can use DifferentialEquations.jl Online to visualize solutions to differential equations without a hassle. It's built using the Julia suite DifferentialEquations.jl, and the online interface is a ...
user avatar
4 votes

Pre/Post-processor for an academic finite element solver

Cubit/Trelis for generating meshes (Exodus.II files) and Paraview/Visit usually work well for low order FE codes. The advantage of Exodus.II is that it is a standard and therefore edge/side/face ...
user avatar
  • 1,779
4 votes

Finite volume software packages

Have a look at Pyclaw. This library has been around for quite a while and is fairly robust. It offers: Implementations of several Godunov-type methods and Riemann solvers in 1/2/3D. Adaptive mesh ...
user avatar
  • 2,116
4 votes

Coroutines for ODE solvers

You don't actually need co-routines for this -- you can achieve the same by just using regular callbacks into user code. For example, in the C programming language, the ODE solver routine would have ...
user avatar
4 votes
Accepted

Reference request: C++ and numerical analysis book

You may take a look at Peter Gottschling's Discovering Modern C++, especially chapter 7, where Mario Mulansky (one of the authors of odeint) implements a generic ODE Solver (using Runge-Kutta ...
user avatar
  • 156

Only top scored, non community-wiki answers of a minimum length are eligible