FEATool Multiphysics – Physics Simulation Made Easy
featool.comPhysics simulation is imho one of the things that feel like they should be easy but in reality is really difficult. And not talking about anything super fancy, just basic classical mechanics.
One of my dream projects would be to glue physics engine like Project Chrono[1] with modeling kernel like Open CASCADE[2], and some (FOSS) CAD (solvespace[3]?) to make an user friendly package to be able to setup simple scenes for simulation.
[1] https://projectchrono.org/
[2] http://www.opencascade.com/content/open-source-core-technolo...
Hey, you can actually use Open Cascade with ProjectChrono right now: http://api.projectchrono.org/group__cascade__module.html. There are also some nice tutorials (http://api.projectchrono.org/tutorial_demo_robot.html). A Solidworks add-in was also made: http://api.projectchrono.org/tutorial_table_of_content_chron....
I've only used Chrono::Sensor, Chrono::Vehicle, PyChrono and I work on a new module called SynChrono. Feel free to reach out if you have any questions.
Couple of comments.
Seems like you are just comsol.
As someone who does this 50+ hours a week in industry (although only structural modelling but frequently coupled with optics/heat transfer/) and is reasonably well versed in the up and coming research I have a couple of questions (or would have if I was a potential buyer).
Can you mix 1D-2D-and 3D elements (I know fenics cannot). But for complex assemblies, making idealized representations is typically worthwhile (and typically necessary if anything is e.g. bolted together). Can you even mix different types of 3D elements (e.g. tets/pyramids/wedges/hexs).
The future of finite element modeling is probably is nurbs-enhanced or IGES-enhanced. Why are you building the past/current instead of the future?
Can your solvers do HP-refinement? Or even just H refinement.
Can you do glued contacts?
How much do I have to know about the time stepping scheme, or does your software work that out for you.
If I am doing thermal control or dynamic control can you handle that (I like that it interfaces with matlab so I can plug it into simulink--you should hammer on that in your copy--that is a really nice differentiating factor for people who would use FEA to drive control e.g. smart materials people, active optics, aerodynamic control people).
How easy is it to do optimizations? For instance (at home) I keep thinking about wanting to optimize a piezoelectric diagram fan like GE uses in their lights but for computers, how much easier is that going to be than just figuring out an open source software on my own.
Why FENICS and not DEAL.II or MOOSE (I don't know, I am just curious. I used to use FENICs but got frustrated because their input syntax kept changing on me.
Also really cool.
I have been thinking about writing software in this space but more nichy for about the past year and am beginning to get started, any interest in collaboration?
Also if you want to ask me questions about my thinking as a user who thinks a lot in these problems space, feel free to email me (I will want it to move to a phone call, but don't want to post my phone number on hacker news).
> Seems like you are just comsol.
Maybe it isn't too clear, but Comsol is just one solver (depending how to look at it I guess), while the idea of FEATool is to be a fully integrated platform for "any" solver, and in the extension to be able to mix and match and combine them (plug and play so to speak). At present I have just been able to implement the built-in MATLAB based multiphysics solver, with interfaces to FEniCS, OpenFOAM, and SU2.
> Why FENICS and not DEAL.II or MOOSE (I don't know, I am just curious. I used to use FENICs but got frustrated because their input syntax kept changing on me.
No particular reason really, I just started with FEniCS as it is quite popular and I found the FEATool PDE syntax easy to convert to FEniCS Python scripts. The plan is to add more and more external solver options.
> As someone who does this 50+ hours a week in industry (although only structural modelling but frequently coupled with optics/heat transfer/) and is reasonably well versed in the up and coming research I have a couple of questions (or would have if I was a potential buyer).
Thank you, I really appreciate the interest and feedback. Unfortunately its kind of "not implemented/available yet" to all your technical questions, although FEATool technically can solve any system of PDEs, I haven't yet pre-defined and set up everything so it is easy for the end users. So as many things are possible to do by going down to the FEM matrix assembly syntax but from a users standpoint that is most often the same as it doesn't exist.
> Also really cool. I have been thinking about writing software in this space but more nichy for about the past year and am beginning to get started, any interest in collaboration?
Thanks again for the feedback, I'm certainly open to all and any collaborations (email in my profile). Yes, looking back I think starting in a niche would have been a better approach.
I am sceptical that you are going to find customers who are going to pay for using multiple solvers especially since they use the fortran routines on the back end and most fea solvers have been heavily verified by e.g. nafems. That said it might be a defining feature between choosing COMSOL vs. FEATool Multiphysics but I doubt it is a technical driver.
> Also if you want to ask me questions about my thinking as a user who thinks a lot in these problems space, feel free to email me (I will want it to move to a phone call, but don't want to post my phone number on hacker news).
Thank you for your offer, I could not find you contact info anywhere though, so I left my contact in my profile if anyone wants to get in touch for collaborations or anything at all really.
In the commercial space I always refer people to https://www.altair.com/inspire/ Which now uses SomSolid for analysis. From what I've heard (used to work there, still know people) it is way ahead of other FEA solvers. You can also find easy access to 3rd party tools through Altairs licensing model.
Yea, from the conversations I have had with the guys over at hypermesh, their tools are way more developed than the stuff MSC and Siemens put out. I am not well versed in the ANSYS or Abaqus.
Here is why the "one physics simulation should cover it all" idea will never work: The word "physics" is just too broad. Is it about particle simulation (classical N-body simulations)? Or is it about fluid simulation (classical CFD = computational fluid dynamics, or classical Navier-stokes)? Is it about a game engine, digital art or just for a fancy GUI? What about the hardware, should we use GPGPUs, distributed computing or so?
Talking about the output, what is it the user is actually interested in? Some direct simulation outcome, such as trajectories or densities, still images, time series or some derived quantities? Is the user capable of programming in some language, is interface scripting even required? Does she actually prefer a CLI?
There are a lot of different industries with different needs. For certain engineering tasks (such as aviation), there are long standing tools which work fine and people are used to. For hobbyists or the gaming industry, the same applies.
Disclaimer: I am a theoretical/computational physicist. Maybe I am too much thinking about simulating heavy ion collisions or black hole mergers, but given the physical problem you want to solve, there are quite different numerical methods applied. This applies for fundamental concepts: Besides the traditional linear algebra/partial differential equation solving, there are statistical approaches and nowadays artificial intelligence for obtaining a solution to a problem in a shorter time. The ways how to model physical reality are as diverse as the physical problems.
I mean yes, but also in mechanical engineering communities (and maybe others) we don't typical think of physics simulations in the way you do--it is well understood as a FEA tool which solves the shit we learned in undergraduate or a user provided weak form and nobody would confuse it with e.g. molecular dynamics, dft, particle dissipative dynamics.
Even though there are specialized tools, there is definitely a market for comsol like products. A problem here is they don't differentiate from comsol.
That being said, he/she/it/their would do a lot better focusing on a particular niche. For example thermal desktop is used for widely in the space industry for space simulations because it is the only off the shelf solver which does radiative heat transfer and controls well. But all the thermal analysts I know the UI is basically garbage and it solves their models way to slowly. They also have huge issues with their simulations taking for every so if you hammered on that problem for a while you would probably end up with a customer base.
Commercial multiphysics simulators such as COMSOL are widely used in engineering and experimental physics. Of course they cannot cover all possible use cases, but they are perfectly fine for the vast majority of simulations.
How is "one physics simulation should cover it" relevant?
This was a meta post considering a couple of posts such as https://news.ycombinator.com/item?id=24905261
It's a bit unclear who the target market is. Is it scientists? It doesn't seem to be for typical engineers who have a lot of very specific needs in FEA software. I can't see much aimed at them on the website. Examples of big difficult features that are useful for engineers are robust contact, automatic contact detection, plasticity, post-buckling, geometry defeaturing, automatic midplane extraction for shells, associativity with CAD models, being Ansys or Abaqus (because everyone knows and trusts them), not having to write scripts, not having to convert imperial units to a coherent system, not having to learn a huge complex pile of software (some tension with all the other requirements!), etc.
Easy to use FEA is a seemingly impossible goal because of the huge range of features that some users want and other users don't want as well as the fact that it has to combine a lot of concepts just don't seem to naturally fit well into any simple organizing principle for the user. Then there's the zillions of man-hours to do it all.
Thanks for the honest feedback. I started building FEATool far too many years ago not getting anywhere in academia after too many postdocs, since it was the one thing I'm passionate about and good at and I felt was "missing" when I was working. But yes, it seems more and more that each user has a very specific problem that they want to solve which is very hard to generalize for. And although I still think (most if not all) software could be much more user friendly, I probably have taken on more than I can chew (I only keep going now since I feel I have no choice with the years I've already invested).
Really cool project. I've used comsol in the past for some fluidics simulations. I agree, the open source multiphysics packages come with a steep learning curve (easier for the more tech literate).
How did you get out of the post-doc loop?
I can understand that, having experienced something similar myself. The problem with users wanting things is they're often things that aren't really compatible with your vision, so you have to compromise and eventually, if you "succeed", you end up being a giant mess that everybody complains about like ANSYS.
Supporting multiple solvers is surely going to mean having solver-specific features, isn't it? Which would eat away at what seems like your vision. Or are you able to keep it abstracted from that so they really are interchangeable?
> I can understand that, having experienced something similar myself. The problem with users wanting things is they're often things that aren't really compatible with your vision, so you have to compromise and eventually, if you "succeed", you end up being a giant mess that everybody complains about like ANSYS.
Yes, unfortunately that is exactly right as I already am getting the heat. No matter what is wrong Matlab, meshing, OpenFOAM, FEniCS etc it always comes back to me even if its from an external solver or component, leading to lots of support. So yeah, I know many things could be much better and I'm far from what my "vision" is, but I don't have such resources so I have to try to do the best I can.
> Supporting multiple solvers is surely going to mean having solver-specific features, isn't it? Which would eat away at what seems like your vision. Or are you able to keep it abstracted from that so they really are interchangeable?
I have so far kept it abstracted with a minimum set of features, but some solvers only support some physics, models, or features so as you allude to sooner or later it will begin to become specialized modes or so for each solver, which is not ideal and I'm not yet sure the best way to move forward.
Don't really know how this ended up on the front page now, but the overall "idea" that I have yet to find anyone else understand and believe in (even my old prof and colleagues don't seem to "get it"), is that: wouldn't it be great if there was a unified, ideally simple, interface from which you could just select any solver by the click of a button, whether you wanted to use OpenFOAM, FEniCS, or maybe even Ansys, etc. Then you could set up your simulation model once, and run it on "any" and many solvers (to validate and check results etc.). So that's what I've been trying to do by myself for the past 7 years or so. For better or worse it initially seemed like a good idea to use Matlab/Octave, but have been planning to eventually move either to Python or Pascal/Delphi backend.
I agree, in my lab our typical solution is a MATLAB/Python routine managing the simulations (submitting to a cluster, gathering the results, producing a report via LaTeX, changing some parameters, submitting again...) but these routines needs to be heavily customized for each project, version of the software, cluster, etc. and they always end being very fragile.
Yes, I think the initial simulation definition/set up can be "easy", but once you get to parallel shared memory clusters it unfortunately have to be much more hands on. I had hoped to eventually not only allow running individual solvers from a single interface, but also allow coupling them similar to PreCICE [1], however making that easy to use is something I've not dared attempt yet.
You mean like FEMAP or Hypermesh? Granted they are geared towards structural mechanics, but they will write input files for a host of solvers including ANSYS, ABAQUS, NASTRAN, MARC and LS-DYNA.
Is there really much value checking multiple solvers if you use the same pre-post which might introduce the same common errors, including user error, into all of them? I know it would be handy from time to time but validating solvers against each other seems like a small thing for an entire pre-post to be built around. It sounds a bit like compiling your software with multiple compilers to make sure it's correct. The bugs aren't usually in the compilers.
I guess the thing is most people only use one solver, but at least when I was doing research it would be rare that two physics solvers based on different discretizations give exactly the same results (sometimes wildly different). So I would say, yes, its actually very valuable, although time consuming, and something most users don't really consider or think about (just because your physics solver converges doesn't necessarily mean the physics are represented accurately).
Is this trying to be an open source COMSOL?
The first versions were open source asking for funding by donations. Although I would have really liked for FEATool to be open source (and I think such as tool would be ideally suited as such), unfortunately not having any form of funding but my personal savings, it was needless to say financially unsustainable (not to say that actually its financially much easier now).
Looks like it's not open source http://forum.featool.com/Queries-about-software-license-td20...
They mention using some open source solvers, so in that sense you could say that the open source COSMOL was already sitting around :)