I have been trying to make a biologically accurate 2D spatial model of tissue layers, where different physiological processes happen. This includes mainly chemical reactions, diffusion and fluxes over boundaries.

I am making this model in COMSOL Multiphysics, a finite element software package that solves different physics like reaction-diffusion systems, although for my question this might not be really relevant.

In my geometry, I have really small regions between the cells of the tissue layers. These regions serve as openings where diffusion can take place between the cells (junctions). The quality of the mesh is not great here and if I want to improve the quality (mainly by introducing more elements and such), my simulation time increases drastically. The lesser quality mesh also causes convergence to take longer. I added a picture of the geometry to give an idea. I tried different meshes, all with different qualities of the elements and the number of elements ranging from 16000 to 50000.

My background in FEM is really limited and I wanted to know if I can tackle this problem in such a way that it:

  1. doesn't negatively affect the biology (keep the tissue domain sizes/problem etc as biologically accurate as possible),
  2. doesn't increase the simulation time drastically,
  3. give a better mesh quality. So I really want to know what the best way to go is, since I have already thought of some things.

So can I go with the lesser quality mesh (which is not really bad, but not good either), so that I can keep the small regions for optimum biological accuracy and have a relatively small computation time (and hope I won't run into convergence errors). But maybe there are possibilities that I am missing, for instance: is it possible to make the small domain bigger and then add some kind of factor to the diffusion rates. In other words, if I want to make the domain twice as large, do I factor the diffusion rate with half? Is that even accurate in chemical/physical laws :S.

Hopefully I made the problem a bit clear and thank you greatly in advance for the help.


Mesh of the tissue model


You're trying to have your cake and it it too. This does not work.

As a general rule, for problems with features on different length scales, you need meshes that are fine in at least some parts of the mesh. This results in many cells, and this results in long computations, small time steps, and many linear iterations. All of these implications are rather self-explanatory, but one can back them up with mathematical statements that prove that this is so. There is simply not very much you can about it: resolving small features will always be expensive.


With conforming triangular meshes, it will be difficult to make an isotropic mesh which adapts to multiple dramatically different length scales in such a short space without introducing extraneous triangles, some of which may have very large/small angles.

I'm not very familiar with them so take this with a grain of salt, but you may have better luck using mortar element methods. Rather than try to discretize the entire geometry on one mesh, you instead discretize the bulk medium and the junctions on completely separate, non-conforming meshes. The chemical species are modeled separately within each domain, and then coupled globally through the appropriate boundary fluxes; an iterative procedure is used to ensure that all the fluxes match properly across the boundary.

This method doesn't solve everything for you; it just exchanges the difficulty of getting a nice discretized geometry for the difficulty of coupling the PDEs across the junction boundaries in the correct way, which may be simpler in the end. It also has the distinct advantage of lending itself to parallelism quite naturally.


Resolving small features in FEM will always be costly, there is no getting away from that fact. Your problem seems to be framed in terms of computational burden. In my own case, I was looking at electric field problems in anatomical structures, so had a similar set of problems to your own. The question is usually how detailed a mesh is "good enough" for the particular problem: have you decided on a tolerance for mesh convergence?

Another possibility to consider is reducing the element order. By default COMSOL seems to prefer quadratic (2nd order) elements, but if you do not need to resolve derivatives in your solution then linear (1st order) elements will reduce the computational burden significantly.

As a beginner, I would probably stick with a single FEM for the solution before trying out more advanced techniques like mortar methods. But, as a beginner, remember that finite element analysis is a collection of skills rather than a monolithic ability, and you'll get better with each over time.


You can try:

  • You can use four-noded(quad) elements in place of all tria elements since it is a 2D domain and a lot of tria element will over-stiffen the domain.
  • You can use a meshing program instead of comsol to manually control the size and shape of elements. This way you may be able to control the number of elements and nodes rather than automatically meshing it in comsol.

I have a fairly detailed answer on meshing over here which you can refer to create a better mesh.

PS: If you comment with your feedback after trying out manual meshing, I may be able to recommend something specific.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.