Dear Pylith developers and users,
Now I am trying to add the effects of gravity. I read the manual carefully and tested section 7.9.8 (Step15.cfg and Step16.cfg), section 7.17, and section 7.18.12. Those examples work well! So, I tried to test my case.
The domain is meshed by tetrahedral elements. The left-, right-, front-, and back surfaces are fixed in the normal directions of those faces. The bottom is fixed in the vertical direction. Body force caused by gravity is considered. The initial stress field was set according to the density structure.
[pylithapp]
[pylithapp.problem]
bc = [x_pos,x_neg,y_pos,y_neg,z_neg]
gravity_field = spatialdata.spatialdb.GravityField
implicit.solver = pylith.problems.SolverLinear
[pylithapp.problem.formulation.time_step]
total_time = 0.0year
dt = 0.05year
[pylithapp.problem.materials]
UpperCrust = pylith.materials.ElasticIsotropic3D
… …
#for simplicity, other inputs for the lower crust and upper mantle are not shown)
UpperCrust
[pylithapp.problem.materials.UpperCrust]
db_initial_stress = spatialdata.spatialdb.SimpleDB
db_initial_stress.label = Initial stress in UpperCrust
db_initial_stress.iohandler.filename = spatialdb/mat_initial_stress_grav.spatialdb
db_initial_stress.query_type = linear
db_properties = spatialdata.spatialdb.SimpleDB
db_properties.label = Properties for UpperCrust
db_properties.iohandler.filename = spatialdb/mat_elastic.spatialdb
… …
#-----------------------------------------------------------------------
+x face
[pylithapp.problem.bc.x_pos]
bc_dof = [0]
label = face_xpos
db_initial.label = Dirichlet BC on +x
-x face
[pylithapp.problem.bc.x_neg]
bc_dof = [0]
label = face_xneg
db_initial.label = Dirichlet BC on -x
+y face
[pylithapp.problem.bc.y_pos]
bc_dof = [1]
label = face_ypos
db_initial.label = Dirichlet BC on +y
-y face
[pylithapp.problem.bc.y_neg]
bc_dof = [1]
label = face_yneg
db_initial.label = Dirichlet BC on -y
-z face
[pylithapp.problem.bc.z_neg]
bc_dof = [2]
label = face_zneg
db_initial.label = Dirichlet BC on -z
[pylithapp.problem.formulation.output.domain]
writer.filename = output_prestress/test.h5
[pylithapp.problem.materials.UpperCrust.output]
writer.filename = output_prestress/UpperCrust.h5
The resultant simulation does not show subsidence but uplift! I checked the density distribution and found that my settings are right (The density increases with depth!). So does the initial stress setting:
#SPATIAL.ascii 1
SimpleDB {
num-values = 6 // number of stress components
value-names = stress-xx stress-yy stress-zz stress-xy stress-yz stress-xz
value-units = GPa GPa GPa GPa GPa GPa // units
num-locs = 20 // number of locations
data-dim = 1 // 1D variations
space-dim = 3
cs-data = cartesian {
to-meters = 1.0e+3 // specify coordinates in km
space-dim = 3
}
}
// Columns are
// (1) x coordinate (km)
// (2) y coordinate (km)
// (3) z coordinate (km)
// (4) stress-xx ¶
// (5) stress-yy ¶
// (6) stress-zz ¶
// (7) stress-xy ¶
// (8) stress-yz ¶
// (9) stress-xz ¶
0.0 0.0 0.0 -.000000E+00 -.000000E+00 -.000000E+00 0.0 0.0 0.0
0.0 0.0 -2.0 -0.052564 -0.052564 -0.052564 0.0 0.0 0.0
0.0 0.0 -10.0 -0.266741 -0.266741 -0.266741 0.0 0.0 0.0
0.0 0.0 -20.0 -0.539366 -0.539366 -0.539366 0.0 0.0 0.0
0.0 0.0 -35.0 -0.961542 -0.961542 -0.961542 0.0 0.0 0.0
0.0 0.0 -50.0 -1.392544 -1.392544 -1.392544 0.0 0.0 0.0
0.0 0.0 -68.0 -1.988651 -1.988651 -1.988651 0.0 0.0 0.0
0.0 0.0 -80.0 -2.386056 -2.386056 -2.386056 0.0 0.0 0.0
0.0 0.0 -115.0 -3.545153 -3.545153 -3.545153 0.0 0.0 0.0
0.0 0.0 -150.0 -4.704250 -4.704250 -4.704250 0.0 0.0 0.0
0.0 0.0 -155.0 -4.869835 -4.869835 -4.869835 0.0 0.0 0.0
0.0 0.0 -165.0 -5.201006 -5.201006 -5.201006 0.0 0.0 0.0
0.0 0.0 -175.0 -5.532176 -5.532176 -5.532176 0.0 0.0 0.0
0.0 0.0 -185.0 -5.863347 -5.863347 -5.863347 0.0 0.0 0.0
0.0 0.0 -200.0 -6.360103 -6.360103 -6.360103 0.0 0.0 0.0
0.0 0.0 -220.0 -7.022444 -7.022444 -7.022444 0.0 0.0 0.0
0.0 0.0 -265.0 -8.512711 -8.512711 -8.512711 0.0 0.0 0.0
0.0 0.0 -310.0 -10.002979 -10.002979 -10.002979 0.0 0.0 0.0
0.0 0.0 -355.0 -11.493247 -11.493247 -11.493247 0.0 0.0 0.0
0.0 0.0 -400.0 -12.983514 -12.983514 -12.983514 0.0 0.0 0.0
Using the model-produced stress field as a new initial stress field (and I chose the option “db_initial_stress.query_type = nearest”), I re-run the simulation. The resultant vertical displacement field looks like
It does not show that most regions have ZERO z-displacement. However, Figure 7.93 has that pattern.
I am puzzled by what I obtained. Does someone else meet similar issues?
Best,
SZ
PS:
in the pylithapp.cfg, some settings are as follows
… …
[pylithapp.problem.materials.UpperCrust]
label = UpperCrust
id = 1
quadrature.cell = pylith.feassemble.FIATSimplex
quadrature.cell.dimension = 3
output.cell_filter = pylith.meshio.CellFilterAvg
output.writer = pylith.meshio.DataWriterHDF5
db_properties = spatialdata.spatialdb.SimpleDB
db_properties.label = Properties for UpperCrust
db_properties.iohandler.filename = spatialdb/mat_elasticspatialdb
… …
[pylithapp.problem.materials.UpperCrust.output]
cell_filter = pylith.meshio.CellFilterAvg
output_freq = time_step
time_step = 1*year
writer = pylith.meshio.DataWriterHDF5
cell_data_fields = [stress,total_strain]