5

About your question #1: Whether something is "thin enough to be a membrane" or not is not a question of thickness. A "membrane" is an object that has no resistance to bending, just to stretching. On the other hand, 3d structures resist bending. For example, a 1cm thick layer of the floppy kind of foam that is sometimes used to pack ...


5

For comment #2 I would suggest looking into the immersed boundary (IB) method. The idea behind this method is to combine an Eulerian description of the fluid with a Lagrangian description of the solid structure. The fluid-structure coupling is achieved by injecting a force term into the Navier-Stokes momentum equations: $$ \rho\left(\frac{\partial \vec{u}(\...


5

I would suggest that you start with FreeCAD. It is a CAD software and you can do Finite Element Analysis using the graphic interface pretty straightforward. FreeCAD provides you all the stages needed in a Finite Element Analysis. In general, you would need the following: A CAD for the geometries, FreeCAD is a good option. Besides FreeCAD, I can suggest you ...


3

In my experience, learning FEM is less about coding and more about learning the math that constitutes the foundation of the method. Essentially coding FEM simulations boils down to physics and calculus, and you didn't mention your background in either of those. Another option for you would be to use a software package that has some prebuilt models included. ...


3

I think DifferentialEquations.jl in Julia has a very comprehensive suite of ODE solvers, including the ones you mentioned (Adams-Bashfort and GBS) and many others. This Julia library is becoming more and more popular nowadays, is well documented, and has quite the coverage here. Note: Chris Rackauckas is a core contributor to this project and is pretty ...


2

Before you start down this path it's important to determine whether there's enough data parallelism in your current code to make using a GPU worthwhile. I'd encourage you to start by describing your application and algorithms in more detail in the question. Depending on the application, there may be computational tasks for which library routines are ...


2

It is recommended to think about parallelization first and then discuss the implementation. Think about what the code does, what data dependencies exist, and what operations can be carried out in parallel. Then there are several C++ frameworks (alpaka, kokkos, or the ArrayFire library mentioned in another answer) that help you to introduce a layer of ...


2

OpenCL is runnable on multicore cpu, intel hd graphics and even DSP cards. It was pretty much the standard for cross platform gpu computing until compute shaders were introduced. There are various libraries that have OpenCL as a backend such as viennaCL or ArrayFire. Some of these libraries can use other backends for gpu computation such as CUDA, which runs ...


2

Task spooler has worked great for me in the past. It does everything you requested.


2

You can usually solve these kinds of equations via a transformation. Shampine discusses how Volterra integral equations can be transformed into an ODE which is then solved with a stiff ODE solver. If you discretize u(x) into a system of ODEs first then you can maybe do something similar in that case. If you want to handle a general functional ODEs directly, ...


2

Based on m previous comment, here is an example of a Python implementation to check in a brute-force manner that two conditions are equivalent. I just basically test all possible combinations for the logical values of the inputs. This results in $n 2^n$ operations. For example, it takes ~3s on my computer for $n=23$. It is of course much quicker for lower ...


2

Here is not exactly a tool but a convenient way to compare logical expressions graphically. Use electric circuits to represent your Boolean expressions: each resistor can be open gate (F) or closed gate (T), resistors in parallel means OR, and resistors in series means AND. Then, inspecting the two circuits (top and bottom in the picture) corresponding to ...


2

I would leave out a few things to make it more simple. This is how we do it for our code which is capable of using polyhedral meshes: https://github.com/nikola-m/freeCappuccino-dev/blob/master/src/mesh/geometry.f90 It is so called face based data structure. We use divergence theorem to compute geometrical data like volumes and cell center coordinates. This ...


1

If I recall correctly, every formula has a unique canonical conjunctive normal form and for each possible truth table you could make from some set of variables there is a corresponding canonical CNF. It follows then, that if two expressions have the same CNF they are equivalent. Therefore, if you can find a way of expressing your formula as a CNF (this is a ...


1

I think your question is a bit under-specified. However, a few simple tricks should cure your problem. First, you should be writing shell scripts that contain the required commands. Use taskspooler to call those scripts (or the commands within them) as appropriate. If you nest your calls to ts appropriately, taskspooler should have no problem handling them. #...


1

I would guess that it is possible to deploy PBS and SLURM on your local machine, but I'd personally say that's a bit overkill. I tend to use simple bash scripts. You can then list the execution commands like a to-do list, it is possible to run multiple jobs in parallel, and place a wait signal for them to finish, before continuing down the list. You can also ...


1

@federicopolini is right in his answer: Introduce $$ c= \sqrt{a}, d=\sqrt{b} $$ and your optimization problem will now read as follows: $$ \min (x-c^2)^2+(y-d^2)^2 $$ subject to the constraints $$ c+d = 2, \\ c\ge 0,\\ d\ge 0. $$ The inequality constraints are important to ensure that you get a solution that makes sense. Now, you can eliminate $d=...


1

From a comment: I suggest you to set $\sqrt{a}:=c$ and $\sqrt{b}:=d$ and then pass the problem in the variables c,d to whatever computational software you are using. I would avoid those non-smooth square roots in the constraints at all costs if it's possible. The general idea (from a very philosophical standpoint; this feels more like a comment than an ...


1

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 ...


1

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 ...


1

I will convert my comment to an answer. One of the commonly used simulation tools for multiphysics is Comsol. It would allow you to tie the simulations from different modules into one multiphysics model using a relatively simple GUI and allow for postprocessing & visualization. In particular, this paper describes the electrical and bubbly flow ...


1

Well Mathematica provides a reasonable amount of intrinsic functionality for working with Cellular Automata. It's not an area of the system I have extensive experience of and I don't know how it compares with other software with similar functionality. You might learn more about it's CA capabilities before breaking open your piggy-bank (maybe digging into ...


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