New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A redundant inverse sign in the comment here? #2198
Conversation
When I read through this part, the inverse sign in this comment seems redundant because the left side is angular momentum and the right side is moment of inertial times angular velocity (\omega)?
Another thing I'm a little confused. From the line 428 to 430, I see the definition on the I_xy, I_xz and I_yz of the non-diagonal components of the moment of inertia. Should we have a negative sign before I_xy, I_xz and I_yz here because the definition of the moment of inertial tensor is supposed to be I cannot find the negative sign in the later code. The negative sign at the line 460 seems means corresponding "subtracting" at the line 465. Maybe I made a mistake or the moment of inertial has a different definition, but can you let me know :) ? @gassmoeller @tjhei |
I am far from an expert in this part of the code, but I think you might be right. If you are right the 2D version of the angular momentum and net rotation removal worked, but the 3D version was wrong and would create a velocity correction that would not cancel the angular momentum (or net rotation)? |
You are right that the inverse sign in the comment is a typo (the correct treatment is in the manual here). Also, looks like you are right that the products of inertia have a sign error. I think the reason we didn't notice earlier was that the products of inertia are sooooo much smaller than the diagonal terms (by a factor of maybe 10^-5) that the sign error didn't prevent the algorithm from still mostly working. |
I have some other stuff to do so feel free to take a stab at this @gassmoeller . This indeed seems influencing the results pretty little but anyway, let us fix this:) The reason why I looked at this patch is that I'd like to think of the possibility to add one more removing net rotation option to remove net rotation at each depth separately, instead of overall for the whole domain. Sometimes when the shallower part of the domain (say lithosphere) has a lateral viscosity variation, even if the net rotation is removed overall for the whole domain, the top part with LVV may still have a net rotation over the underlying deeper part. I guess Ian wrote this part to remove net rotation, so any insight/suggestions on how to write one more option to remove net rotation at each depth separately? @ian-r-rose From the line 463 to 465, the subtraction of the angular velocity is applied to the velocity of the whole domain. But any idea on how to apply this kind of subtraction to the velocity at each depth separately by "interpolate_onto_velocity_system"? AMR feature of ASPECT may be a challenge here. Or maybe the best way is to do this by my own after running ASPECT? @ian-r-rose |
I will take a look at it tomorrow. Lets test and merge this first (since it is only documentation). /run-tests |
On 05/02/2018 07:11 PM, Shangxin Liu wrote:
The reason why I looked at this patch is that I'd like to think of the
possibility to add one more removing net rotation option to remove net
rotation at each depth separately, instead overall for the whole domain.
Sometimes when the shallower part of the domain (say lithosphere) has a
lateral viscosity variation, even if the net rotation is removed overall for
the whole domain, the top part with LVV may still have a net rotation over the
underlying deeper part. I guess Ian wrote this part to remove net rotation, so
any insight/suggestions on how to write one more option to remove net rotation
at each depth separately? @ian-r-rose <https://github.com/ian-r-rose> From the
line 463 to 465, the subtraction of the angular velocity is applied to the
velocity of the whole domain. But any idea on how to apply this kind of
subtraction to the velocity at each depth separately by
"interpolate_onto_velocity_system"? AMR feature of ASPECT may be a challenge
here. Or maybe the best way is to do this by my own after running ASPECT?
@ian-r-rose <https://github.com/ian-r-rose>
Shangxin,
I think before you think about how to implement this, you'll have to define
what exactly you want to do. The net rotation correction adds a velocity field
to the current solution that at every point corresponds to a solid body
rotation. If you want to do this layer by layer, you will end up with adding a
field that is not continuous across layer interfaces. That's presumably not
what you want. Can you explain how you want to transition from the added
velocity field in one layer to that of the next layer?
|
Hi Wolfgang, @bangerth |
You would define a class like the But you didn't address my question. You are focused on how to do things that you forget what you want to do. If you subtract a rotation only for the lithosphere, then you get an infinite strain (a discontinuous velocity) at the interface between lithosphere and the region below. This is not physical. |
Yes, Wolfgang. @bangerth I forgot to mention that this "sublayer net rotation removal" indeed can only be applied at the final velocity field for output. The velocity field resulted from this "sublayer net rotation removal" cannot go into the solver for next time step due to the "discontinuous velocity" problem you mention. Because the net rotation of lithosphere with respect to the underlying mantle is a natural result when there is lateral viscosity variation within the lithosphere, keeping it in the flow field is physically correct. I'm thinking of removing this only when I want to compare the final output surface flow with the plate motion data in no-net-rotation frame. Feel free to point out if you have more thoughts on this. Can you give me a hint on how to define a class like the Rotation class used there that only returns a rotational velocity if |
The
You only need to modify the last function as follows:
|
Thanks, Wolfgang. Because I'd like to apply this "two-step" removal of the rotation (the first global removal like ASPECT currently does and the second top sublayer further removal), It seems that if I want both being applied in my simulation, I need to create another special "Rotation" class in null_space.cc file like you post. One thing I'm still a little concerned and this links to the question I post on Rene's pull request to perform the rotation statistics @gassmoeller : For the velocity field used in the post processor (such as in dynamic topography and geoid to compute strain rate), is it the velocity solution already with the pure rotation removed or the original one without the removal of the pure rotation? If it is the one already with the rotation removed as null_space.cc does, adding this second further rotation removal on the top sublayer here is perhaps not what I want due to the discontinuous velocity issue that leads to the infinite strain rate. I may add another postprocessor to only calculate the rotation vector \omega from the top sublayer and apply this rotation subtraction by myself to the output shallower velocity field from ASPECT. Any suggestions? @bangerth |
See my answer here: #2212 (comment) |
When I read through this part, the inverse sign in this comment seems redundant because the left side is angular momentum and the right side is moment of inertial times angular velocity (\omega)?