# Default mass conservation approximation

Hello folks,

Still I’m new to ASPECT. I’m puzzled by the mass conservation approximation in Section 2.11 in the manual. If nothing is specified EXPLICITLY for the option Formulation/Mass conservation, i.e., no ALA, no TALA, no BA, no ICA, what approximation is used in ASPECT? Incompressible? For example, in cookbooks, case Simple convection in a quarter of a 2d annulus says nothing about Formation/Mass conservation.

In Run-time input parameters/Formulation/Mass conservation, the default is Default: ask material model, while in manual Section 2.11.1 Mass conservation approximation, `ask material model` means using “isothermal compression” if the material model reports that it is compressible and “incompressible” otherwise. So how do I know if it’s compressible or not from material model? For example, if I set the following explicitly in Material model subsection:

``````set Solid compressibility = 3.2e-12
set Melt compressibility = 3.8462e-11
...
``````

The above means it’s compressible? If so, which approximation, TALA, ALA, BA or ICA? Also if there are no such settings, what approximation will be used?

Sorry for asking such rudimentary questions on the forum!

Thanks,
Mingming

Dear Mingming,

No need to apologise, this is a very reasonable question - you’ve searched for the answer to a sensible question in a sensible place and haven’t found what you needed.

Some of the Material Model descriptions explicitly say whether they are compressible or not. I find the quickest way to check if a material model is compressible is to check the is_compressible() function in the source code for that particular material model.

If the material is compressible and the user hasn’t selected an approximation, ICA (isentropic compression) is chosen, which is described in the manual as ASPECT’s original formulation, using the explicit compressible mass equation, and the full density for the temperature equation. It is described in much more detail here.

Best wishes,
Bob

Hi Bob,

Thanks for your quick reply. The `is_compressible()` function is helpful and straightforward. But I found even if `is_compressible` is set `false`, like line 49 in melt_global.cc, there are some calculations involving compressibility, like line 278 in melt_global.cc. I suspected that this is just for post process, or just for the output of melt properties, the output is not updated in the main code. While in melt_simple.cc I found:

``````      katz2003_model.calculate_reaction_rate_outputs(in, out);
katz2003_model.calculate_fluid_outputs(in, out, reference_T);
``````

which might be updating melt properties in the main code. Is that right? As a newbie I’m still trying to understand the code and its corresponding physical process.

Thanks,
Mingming

Dear Mingming,

But I found even if `is_compressible` is set `false` , like line 49 in melt_global.cc, there are some calculations involving compressibility, like line 278 in melt_global.cc. I suspected that this is just for post process, or just for the output of melt properties

When we talk about a model being incompressible, we do not mean that the density is constant in all the governing equations. If we did, thermal convection wouldn’t exist. What we do is set the density constant in the mass conservation equation (divergence = zero) and energy equation (no volumetric mechanical work done), but we still allow density to vary in the momentum equation: see On Incompressibility.

The Material Model that you mention (melt_global) solves a simple version of the melt transport equations, and in those equations the melt and solid densities are important (the difference in densities drives the flow). The line you reference determines the melt density, and that density is a function of pressure and temperature. The divergence of the bulk velocity in this model is still zero, as implied by the is_compressible() return value. This is inconsistent, but the inconsistency only has a small influence on the solution in many cases.

While in melt_simple.cc I found … which might be updating melt properties in the main code. Is that right?

The best thing to do (which you’ve probably done) is look at the katz2003_model code. Those functions update some of the model outputs that are used to forward-model the melt transport equations as defined by Katz et al. (2003).

Best wishes,
Bob

Hello Bob,

I see your point and I believe the source code is the first guide of the understanding of those physical processes. Thanks for your help!

Regards,
Mingming

1 Like