Skip to content
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

Physical variables stored in "topo_vector" returned by calling dynamic topography postprocessor in geoid code #1758

Closed
Shangxin-Liu opened this issue May 20, 2017 · 7 comments

Comments

@Shangxin-Liu
Copy link
Contributor

Shangxin-Liu commented May 20, 2017

Hi Ian, @ian-r-rose

I noticed that in the new geoid code's dynamic topography function that directly calls dynamic topography postprocessor, "topo_vector" is the vector returned by dynamic topography postprocessor, and then "topo_values" is evaluated at each quadrature points at the cell's boundary face from that. The "topo_values" is further stored into the surface and CMB dynamic topography data.

My concern is that what physical variable that "topo_vector" stores? Is it normal deviatoric shear stress (i.e., (2 * viscosity * strain_rate - P*I) * normal_direction) or the dynamic topography in meter? It seems that it's actually normal deviatoric shear stress from your new dynamic topography postprocessor, yes? Because my geoid code requires that "surface_stored_values" and "CMB_stored_values" stores the dynamic topography values in meter unit (later in the execute template the scale of dynamic topography contribution is further calculated), it seems that I need further change my code a little bit if "topo_vector" is actually the normal deviatoric shear stress instead of dynamic topography in meter.

@ian-r-rose
Copy link
Contributor

ian-r-rose commented May 20, 2017 via email

@Shangxin-Liu
Copy link
Contributor Author

Shangxin-Liu commented May 20, 2017

In the dynamic topography part of geoid code, I see that you evaluate the "topo_values" from "topo_vector" by the line 239:
fe_face_values[this->introspection().extractors.temperature].get_function_values(topo_vector, topo_values);

and the "topo_vector" is obtained by calling dynamic topography postprocessor in the line 170:
const LinearAlgebra::BlockVector topo_vector = dynamic_topography->topography_vector();

and back to your CBF dynamic topography postprocessor:

the "topo_vector" is assigned in the line 218:
topo_vector = distributed_topo_vector;

But I didn't see the place where the stress is divided by (density_contrast * gravity) before that. Can you explain this? It seems that I misunderstand or miss something. @ian-r-rose

@Shangxin-Liu
Copy link
Contributor Author

Shangxin-Liu commented May 20, 2017

Ok. Maybe I got this. I'd like to confirm with you. In your CBF dynamic topography code,

At the line 328, "distributed_topo_vector" is reassigned by true dynamic topography in meter of each face_dof_indices:
distributed_topo_vector[ face_dof_indices[i] ] = dynamic_topography * (backward_advection ? -1. : 1.);

And later in line 380 and 381, "topo_vector" is further reassigned by the true dynamic topography in meter stored in "distributed_topo_vector":
distributed_topo_vector.compress(VectorOperation::insert);
topo_vector = distributed_topo_vector;

Is this the way you assign the final true dynamic topography in meter to "topo_vector"? @ian-r-rose

@ian-r-rose
Copy link
Contributor

Yes, that is right. The distributed_topo_vector is a fully distributed vector, which is used in the solve for hte CBF system. After the solve is done, we copy it into topo_vector, which is the same thing but includes locally relevant DoFs.

@Shangxin-Liu
Copy link
Contributor Author

Shangxin-Liu commented May 20, 2017

And what does the line 380 mean?
distributed_topo_vector.compress(VectorOperation::insert);
including the locally relevant DoFs?

In the dynamic topography part in geoid code, does the line 239
fe_face_values[this->introspection().extractors.temperature].get_function_values(topo_vector, topo_values);
means the interpolation from "topo_vector" to "topo_values" of each quadrature point on the boundary face? @ian-r-rose

@gassmoeller
Copy link
Member

Hi Shangxin,

line 380 makes sure that all entries for values in ghost cells are communicated correctly between processor boundaries (also see http://dealii.org/developer/doxygen/deal.II/classLinearAlgebra_1_1distributed_1_1Vector.html#a80ce97e2d5d009dd79b2366f8d93ba28).

In the dynamic topography part in geoid code, does the line 239
fe_face_values[this->introspection().extractors.temperature].get_function_values(topo_vector, topo_values);
means the interpolation from "topo_vector" to "topo_values" of each quadrature point on the boundary face? @ian-r-rose

That is correct, this function evaluates the solution stored in topo_vector at the quadrature points, and stores the result in topo_values.

If this answers your question please close the issue.

@Shangxin-Liu
Copy link
Contributor Author

Thanks, Rene! I think you already told me this during GRC:) @gassmoeller

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants