Multiphysics in LI-ion batteries : how hard to implement?


I am not entirely sure this is exactly a request for new features… my question is this : to what extent is it possible to model multiphysics application for Li-ion battery, i.e. needing :

nonlinear mechanics
electrochemistry reactions and transport phenomenon
fluid mechanics

for instance, check “A multiphysics microstructure-resolved model for silicon anode
lithium-ion batteries”, Wang et al, J. of Power Sources, 348 (2017) 66-79.

If these needs are not yet in freefem, how hard would it be to implement them and would it be possible to receive some help to that regard ?

I am currently hesitating between freefem, SOFA and … comsol.

Best regards,


Hi there!

The short answer to your question is yes, it is entirely possible to model those physics in FreeFEM. There are several examples in the /examples/ folder of the FreeFEM install which demonstrate each of those physics separately, but you will need to develop an implementation for your coupled problem. That said, FreeFEM makes customization easy once you get over the initial learning curve.

If you have clear targeted questions, I have found the FreeFEM community here to be very helpful. However, I would not expect anyone to develop your code.

As far as the decision between FreeFEM and other packages, that is largely a matter of personal choice. If your needs are scientific, I would recommend avoiding proprietary softwares such as COMSOL, however. In my experience, proprietary softwares tend to take a “black box” approach which can hide some important technical details from the user.


Thanks a lot for your answer, Chris !! As a matter of fact, I would rather avoid comsol - both for licencing reasons and for “ideological” ones ;-).
I guess I should just go for it and try, betting on the help by the community, as you said. My main concern is about coupling fluid mechanics and finite transformation in solid mechanics : it seems to me that these are the two most difficult steps that I would be afraid to implement myself !
For the rest of it, I hope I’ll be able to learn and apply as it goes - I am not a applied math guy myself, that’s the problem, but I am not afraid of C++…

Once again, thanks for your answer !!


1 Like

No problem, Marc!

Check out this example once you’ve got the basics down.

Amazing !
Oh, yes, one final question : what are the meshing capacities ? Is it possible to provide meshes “from outside” or is there a hyper efficient mesher included for “semi-complex” geometries ?

Personally, I prefer to use GMSH, but FreeFEM’s internal mesher (BAMG) gets the job done just fine for simple geometries. See the meshing page for some examples. In particular, FreeFEM’s adaptmesh feature is very powerful for managing mesh resolution and computational expense.

Chris, thank you so much for all your answers !!! It’s been most helpful and I really appreciate it !
Now, I just have to start somewhere :wink:

Have a great day/evening,


1 Like

No problem! Best of luck! :slight_smile: