Hi there,
Recently, I want to creat a model to reconcile the deformation in long-term and interseismic.
I used the Pylith v.2.2.2
In my viewpoint, I can set the faults with low friction coefficiency to simulate the long-term deformation. Because the MHT faults in Himalayan is free-slip without significant internal deformation.Secendly, when the long-term model reach the steady state, I set the faults with high friction coefficiency to simulate the interseismic deformation (locked).
Since pylith does not support setting different friction coefficients at different times within a single simulation, in my plan, I will first conduct a long-term simulation, and then use its results as the initial conditions for the interseismic simulation. Then, I will modify the friction coefficient to conduct the inter-earthquake simulation.
Can pylith be used to conduct this simulation, or can a similar simulation be achieved by other faults setting.
Since pylith does not support setting different friction coefficients at different times within a single simulation, in my plan, I will first conduct a long-term simulation, and then use its results as the initial conditions for the interseismic simulation. Then, I will modify the friction coefficient to conduct the inter-earthquake simulation.
Thank you for your reply. Regarding using the results of the previous simulation as the initial conditions for the next simulation, are there any specific examples that would be helpful for me to learn from?
Regarding using the results of the previous simulation as the initial conditions for the next simulation, are there any specific examples that would be helpful for me to learn from?
In PyLith v2.2.2 the best example is examples/2d/subduction/step04. It is likely not exactly what you are looking for, but it demonstrates the workflow of taking HDF5 output and turning it into a spatial database.
Recently, I encountered a small issue: I first performed a long-term simulation until it reached a steady state. The key point is that I now need to use the results of this long-term simulation (stress, strain) as initial conditions for the next stage of the interseismic simulation. However, the initial conditions I provided do not seem to be ideal, as shown in the figure below:
Figure 1 shows the results of the long-term simulation, displaying only stress_xx and stress_xy.
Since PyLith outputs stress and strain as cell data, and the .spatialdb file used as input for the initial conditions requires specifying the corresponding coordinates, I used MATLAB to read the .h5 file and convert the corresponding stress data into point data, and then plotted and checked the results as shown below Figure2:
As can be seen, the point data converted by MATLAB is almost identical to the original cell data.
Finally, I wrote the converted point data into the .spatialdb file and conducted a simple simulation. The results are shown below. For easy comparison, the colorbar range is the same in all figures. The following issues can be observed:
The magnitude of stress_xx has changed after input, especially at the bottom of the model.
The distribution pattern and magnitude of stress_xy differ significantly from the input values.
If you are using PyLith v3 or later, then we strongly recommend updating to the latest release (v4.2.0). With v3 or later, you can use a basis order of 2 and improve the resolution of the steady-state calculation (refer to the example suite where we demonstrate how a basis order of 2 provides much better resolution of the stress field). If you use a basis order of 2, the output will use (by default) a basis order of 1 (values at vertices). This will provide a better representation of the stress to use for initial conditions.
With PyLith v3 and later, the reference stress field in the “info” files, if discretized with the same basis order as the output stress field, should match the output stress field. The stress field output in the “data” files is the stress after the solution has been advanced one time step, so it may differ from the input stress field.
If you are using PyLith v2, a good option is to use PyLith v4.2.0 for the calculation of the initial stress and then use v2 if you need fault friction.
Yes, I am using PyLith v2.2.2. Regarding the issue of incorrectly specified initial conditions, if I use a more refined mesh, would this to some extent help avoid the errors introduced by nearest-neighbor interpolation?
Verify that the *info files with the material properties produced from the spatial database files match the Matlab plots. If the info files look like a coarse representation of what is in the spatial database files, then using a finer resolution can help.
Once the info files match the spatial database files, then run a static simulation with the same loading and boundary conditions as the gravity simulation. The solution should be very close.
Change one parameter at a time, going from Step 2 to the boundary value problem that you want to solve. This should help you identify any parameters that are causing a deviation in the starting solution from the gravity boundary value problem.
First, thank you for your suggestions, but I have some questions:
As I understand it, the *.info files output by PyLith only contain information related to material properties, such as density, and it seems they do not allow me to directly view the initial state.
Therefore, I used MATLAB to check the results of the first time step of the interseismic simulation and compared them with the stress results from the last time step of the long-term simulation (i.e., the initial state specified in the interseismic simulation’s .spatialdb file). I still found discrepancies between them.
Sorry for the confusion. You are correct. In PyLith version 2.2.2, the initial state information is not in the *info files. In PyLith version 3 and later, the reference state information is in the info files; this is one of the improvements we made.
My updated suggestion is then to either (1) use PyLith v2.2.2 and try to setup a static simulation with the initial state that matches the gravity simulation so that the output should match the input and change one parameter at a time in transitioning to a simulation of the boundary problem you want to solve, or (2) use PyLith v4.2.1 for the gravity simulation and diagnosing any mismatches in the initial state following the same procedure as in (1). Option (2) would allow you to generate a better estimate of the initial state using a higher order discretization of the displacement field and output at vertices (basis order 1) for the stress.