Inquiry About Divergence Issue in Collision Model

Hello everyone.
I’m simulating a collision process (initial composition in Fig.1 ). The upper/lower crust (upcrust1 /lowcrust1 ) compositions diverge unexpectedly during runtime(Fig 2,raw data in collision1 2 3.zip,please merge them because the file is too large to upload directly).Is that because of my velocity boundary condition?



collsion1.zip (7.8 MB)
collsion2.zip (6.5 MB)
collision3.zip (6.3 MB)


set Dimension = 2
set Use years in output instead of seconds = true
set End time = 8e6
set Output directory =collision

SOLVER STUFF

non-linear stuff

set Nonlinear solver scheme = single Advection, iterated Stokes
set Nonlinear solver tolerance = 1e-3
set Max nonlinear iterations = 55
set CFL number = 1
set Resume computation = auto
set Pressure normalization= no
set Surface pressure=0

linear solver stuff

subsection Solver parameters
subsection Advection solver parameters
set GMRES solver restart length = 200
end
subsection Stokes solver parameters
set Linear solver tolerance = 1e-3
set Linear solver A block tolerance = 1.0e-3
set Use full A block as preconditioner = false

set Stokes solver type = block AMG

set Number of cheap Stokes solver steps= 5000

end
set Temperature solver tolerance = 1e-11
set Composition solver tolerance = 1e-11
end

subsection Discretization
set Temperature polynomial degree = 2
set Composition polynomial degree = 2
set Stokes velocity polynomial degree = 2
set Use discontinuous composition discretization = true
end
subsection Gravity model
set Model name = vertical

subsection Vertical
set Magnitude = 9.81
end
end
subsection Boundary velocity model
set Tangential velocity boundary indicators = bottom,right,top
set Prescribed velocity boundary indicators = left :function
subsection Function
set Function constants = cm=100.0, transition_upper_y=500e3, transition_lower_y=160e3,
right_speed=5.0, left_speed=-5.0, x_divider=1500e3
set Variable names = x,y
set Function expression = (x < x_divider) ? ((y >= transition_upper_y) ? right_speed/cm : (y <= transition_lower_y) ? left_speed/cm :\
right_speed/cm + (left_speed/cm - right_speed/cm) *(y - transition_upper_y) / (transition_lower_y - transition_upper_y)) :0;0
end
end

@3Faker3 A few quick questions and suggestions below:

  1. I would do a series of sensitivity tests to assess the effect of the linear and non-linear solver tolerances on the model behavior. In particular, the linear solver tolerance of 1e-3 for single Advection, iterated Stokes might be sufficiently low to produce unphysical behavior.

  2. What are the compositional boundary conditions and is the divergence you are referring to the odd striping pattern in the top left of the model?

  3. Can you provide a first-order description of the velocity BC and a plot showing the velocity vectors? It looks like you inflow above 500 km height and then transition to outflow to balance the inflow, but it would be good to confirm.