Grain size evolution with multiple initial composition

I am trying to make a model of continental lithosphere deformation with grain size evolution. In my box model, I have kept a rectangular block of continental lithosphere and want to see if grain size evolution change the deformation pattern within lithosphere.

I followed the give cookbook aspect/cookbooks/grain_size_ridge/grain_size_ridge.prm at main · geodynamics/aspect · GitHub and made sure this is running fine.

Now I am adding another continental field so that I can change the rheological properties of the continent and starting with a constant grain size every where. The section looks like the following

subsection Compositional fields
set Number of fields = 2
set Names of fields = grain_size, continent
set Compositional field methods = particles, field
set Mapped particle properties = grain_size:grain_size
end

subsection Initial composition model
set Model name = function

subsection Function
set Function expression = 5e-3; if(x>1500e3 && x<2500e3 && y>460e3,1,0) 
set Variable names      = x,y
end
end

I am keeping exactly same values of flow law parameters given in the cookbook, but getting an error:

Exception ‘ExcMessage("parse_map_to_double_array can only check the structure " “of the parsed map for " + options.property_name + " if an expected number of values for each key is given.”)’ on rank 20 on processing:

An error occurred in line <521> of file </tmp/ritop7377/easybuild/build/ASPECT/3.0.0/foss-2023a/aspect-3.0.0/source/utilities.cc> in function
std::vector aspect::Utilities::MapParsing::parse_map_to_double_array(const std::string&, Options&)
The violated condition was:
options.check_values_per_key == false || options.n_values_per_key.size() == options.list_of_required_keys.size()
Additional information:
parse_map_to_double_array can only check the structure of the parsed
map for Angles of internal friction if an expected number of values
for each key is given.

Not sure why angle of internal friction is being called, there is no mention in the input file.

I also tested with a 2-compositional field (background and continent) values by updating the material model parameters:

set Diffusion creep prefactor                   = 5e-15, 5e-15
set Diffusion activation energy                 = 3.75e5,3.75e5
set Diffusion activation volume                 = 4e-6,4e-6
set Diffusion creep grain size exponent         = 3,3


set Dislocation creep prefactor                 = 1e-15,1e-15
set Dislocation activation energy               = 5.3e5,5.3e5
set Dislocation activation volume               = 1.4e-5,1.4e-5
set Dislocation creep exponent                  = 3.5,3.5
set Dislocation viscosity iteration number      = 10000


set Work fraction for boundary area change      = 0.1,0.1
set Grain growth rate constant                  = 1.92e-10, 1.92e-10
set Grain growth activation energy              = 4e5, 4e5
set Grain growth activation volume              = 0,0


set Maximum viscosity                           = 1e23
set Minimum viscosity                           = 5e19
set Maximum temperature dependence of viscosity = 1e6

This changed some part of the error

Exception ‘ExcMessage("Error: The lists of grain size evolution and flow law parameters " “need to have the same length!”)’ on rank 33 on processing:


An error occurred in line <1039> of file </tmp/ritop7377/easybuild/build/ASPECT/3.0.0/foss-2023a/aspect-3.0.0/source/material_model/grain_size.cc> in function
void aspect::MaterialModel::GrainSize::parse_parameters(dealii::ParameterHandler&) [with int dim = 2]
The violated condition was:
false
Additional information:
Error: The lists of grain size evolution and flow law parameters need
to have the same length!

But, I have the same length for grain size evolution and flow law parameters.

Is there any recommendation about where I am missing the logic in the input file.

Thanks for your time

Regards,

Jyotirmoy

Hi Jyotirmoy,

Thanks for posting this on the forum! I don’t personally have any experience using the grain size material model, but looking at the source code in grain_size.cc there’s a comment on Line 1095 that seems related to the error you’re running into here. The comment (and other comments throughout grain_size.cc) suggest that the grain size material model does not work with different rheologies, and while in the .prm snippets you posted you aren’t technically changing the rheology (since you’re just copying the values), the syntax of having multiple entries for a given parameter is what seems to be triggering this error, because this is how you would change the rheology for different compositions.

Other material models use multiple compositions and allow for variable rheologies (i.e. Visco Plastic), and so you could use these working cases as a reference and take a stab at expanding the grain size material model to allow for variable rheology across different compositional fields, though I suspect that might be a non-trivial undertaking. If you do feel up for it then don’t hesitate to open a pull request to the ASPECT github repo!

Cheers,

Daniel

@Jyotirmoy_Paul:

  1. Indeed, as @daniel.douglas noted the grain_size material model does not support more than one lithology (chemical composition).
  2. There is a rough plan in place on developing a generalized framework for grain size evolution in models with multiple chemical compositions, but it will require a non-trivial amount of development work. As such, I would not expect any significant development on this front in the short term. If you are interested in contributing to the development efforts in this area, please let us know.

Cheers,

John

Hi Daniel and John,

@daniel.douglas @jbnaliboff

Thanks for your responses and explaining why this is not working. Seems like it is indeed a non-trivial problem. I will be interested to contribute to such development. I have not done ASPECT development before, but may be a good time to start.

Regards

Jyotirmoy