Dear developers:
I hope you’re doing everything well.When I run a model like this:
I want set velocity boundary conditions like this:
0-140km,left,zero velocity,right,v_x=influx,v_y=0
140-450km,left and right,v_y=0,v_x keeps variable outflux to account for mass conservation.
So I adopt geometry model:Box with lithosphere indicators:
subsection Geometry model
set Model name = box with lithosphere boundary indicators
subsection Box with lithosphere boundary indicators
set Box origin X coordinate =0
set Box origin Y coordinate = 0
set Lithospheric thickness = 140e3
set Use merged grids = true
set X extent = 800e3 # 500 km
set Y extent = 450e3 # 450 km
set X repetitions = 16
set Y repetitions = 10
end
end
And I set Boundary velocity model like this:
subsection Boundary velocity model
set Prescribed velocity boundary indicators = \
left lithosphere:zero velocity,\\
right lithosphere:function, \\
left y:function, \\
right y:function
set Tangential velocity boundary indicators = bottom
# set Zero velocity boundary indicators =
subsection Function
set Coordinate system = cartesian
set Function constants = influx=-10e-3 #10mm/yr
set Variable names = x,y
set Function expression = influx;0
end
end
And correspondingly Temperature boundary:
subsection Boundary temperature model
set Fixed temperature boundary indicators = top, bottom
set List of model names = box with lithosphere boundary indicators
subsection Box with lithosphere boundary indicators
\# set Boundary indicator to temperature mappings = top:300,bottom:1610
set Bottom temperature = 1610
set Top temperature = 300
end
end
Then the “Negative diffusion viscosity detected” come up with the first timestep when steping to solve Stokes system
An error occurred in line <124> of file </hpcdata/home/research/hzhang02/opt/aspect-3.0.0/source/material_model/rheology/diffusion_creep.cc> in function
double aspect::MaterialModel::Rheology::DiffusionCreep<dim>::compute_viscosity(double, double, double, unsigned int, const std::vector<double>&, const std::vector<unsigned int>&) const [with int dim = 2]
The violated condition was:
viscosity_diffusion > 0.0
Additional information:
Negative diffusion viscosity detected. This is unphysical and should
not happen. Check for negative parameters. Temperature and pressure
are 300 K, -431410827152.85846 Pa.
I think Temperature has no problem because it’s just simple and the temperature in the bug information is 300K,but the pressure is singular.And the material model is also normal because I can run it smoothing without influx boundary.
So I think there’s something wrong with Boundary model.Could you offer me some advice? Any guidance is usefull for me the fresh.Thanks!
Then I just try to prescribe the velocity boundary mor precisely,like this:
subsection Boundary velocity model
set Prescribed velocity boundary indicators = \
left lithosphere:zero velocity,\\
right lithosphere x:function, \\
right lithosphere y: zero velocity, \\
left y:zero velocity, \\
right y:zero velocity
set Tangential velocity boundary indicators = bottom
# set Zero velocity boundary indicators =
subsection Function
set Coordinate system = cartesian
set Function constants = influx=-10e-3 #10mm/yr
set Variable names = x,y
set Function expression = influx
end
end
Then some grammer bug happens:
An error occurred in line <340> of file </hpcdata/home/research/hzhang02/opt/aspect-3.0.0/source/boundary_velocity/interface.cc> in function
void aspect::BoundaryVelocity::Manager::parse_parameters(dealii::ParameterHandler&) [with int dim = 2]
The violated condition was:
boundary_velocity_indicators[boundary_id].first == comp
Additional information:
Different velocity plugins for the same boundary have to have the same
component selector. This was not the case for boundary: right
lithosphere, for plugin: zero velocity, with component selector: y


