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 outgrew itself. It is both over- and under-engineered: the architecture of some parts is too complicated for their own good, whereas some other parts (whose ...


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 recovered from. The former is, for example, if an input file can't be read -- for example if you are reading information from a file such as $HOME/.dealii ...


"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-negative reward. You're asking for a list of things of guidelines, but all of your examples are specific to the technical situation, not the social situation. That'...


The LaTeX package minted provides very extensive syntax highlighting (based on Pygments) and allows cross-referencing in both directions. You can escape to LaTeX from within the code part (the minted part) and you can refer in your main text to lines of code. On top of that, it provides a listings environment so that you can generate a "list of listings" (...


You should be able to store everything in one table and plot from that if your data is tidy. Check out this paper, it's only about 20 pages.


ArrayFire has a C++ API as well as a Python API. You can switch between several backends including CPU, CUDA, and OpenCL. It will also handle memory movement and kernel fusion for you. An example: /******************************************************* * Copyright (c) 2014, ArrayFire * All rights reserved. * * This file is distributed under 3-clause ...


One way to do this is to use Julia. Julia's CUDAnative.jl allows for automated recompilation of pretty general code to GPUs using the LLVM PTX backend. It just works on standard Julia code, so types, dispatches, etc. are all fine: most cases you shouldn't have to alter your code from the original to make it work. This has demonstrated to be performance ...


So, currently, Libxc project has a home here with this being its manual. Thanks for submitting the issue. Just to point out, if it happens that some content is not present on the GitLab for Libxc, you can try to search for it on archive.org. It seems like this project has been saved pretty well, featuring even historic perspective.


I wonder why no one mentioned Padb (Parallel Application Debugger) which is open source and free software as the OP prefers, but not as powerful as commercial counterparts for example: TotalView for HPC


I think PARDISO from Intel MKL should have the implementation you are looking for. According to the Preconditioners section, it allows for both ILU(0) and ILU(T). PARDISO natively offers shared-memory parallelization, and I do not believe any iterative procedure is used inside. So, dscrilut seems to satisfy all your requirements, from the first glance. I ...


OP's comment on OP: yes,numbers are intergers For arbitrarily large integer calculations, MAPLE is an option worth trying. it has very efficient implementations for a number of such calculations.


You might be interested in the R package Lmoments. Here is the documentation for it, as well. According to it, the package is capable of computing at least L-scale, Lskewness, L-kurtosis. While this is technically not a C/Java package, there are a lot of ways to call an R-function from C. For example, this. Moreover, according to the Lmoments package ...


In addition to the suggested in the comments VPython, I would look into GMSH, which now offers Python API. It will allow you to create the model relatively easily (offering some primitives to build from), provide cross-platform visualization, and even subsequent meshing (if that is of any interest to you).

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