Adjacent element solution

Hello,
Assuming a target element, then how to calculate the average value of adjacent element solutions within a target element? Could someone tell me the steps to implment in pyFR?

This could be implemented similarly to how the element-wise minimum entropy bounds are computed and passed for the entropy filter (allocating the necessary memory, making an element-wise kernel to compute the averages, and passing them via the interfaces).

Thanks for your kind reply.

The average value of adjacent element solutions in itself element can be computed by Vandermonde matrix. But I don’t know how to compute the average value of adjacent element solutions in the target element.

You don’t compute them in the target element, you compute the average values in every element and then you pass those values across the interfaces so each element has access to the averages of all of its interface-adjacent neighbors.

Maybe I didn’t make myself clear. As seen in the following eq. I_{j} is the target element, p1(x) is the solution in the adjacent element, I need to compute this value.

image

My mistake, I misread your question. I don’t think there’s a simple way of doing this without ruining the efficiency of high-order DSEM as it would require passing the entire element-wise solution across interfaces. To have it work for arbitrary meshes, you would likely need to transform the solution to a representation more fit for evaluating at arbitrary physical locations (such as the modal form with respect to the physical space) and pass it to adjacent elements via the interfaces to evaluate the average.

Is this mean to trasform the adjacent solution into the physcial locations? then pass it to target element using Integral weight to calculate average. and what’s the meaning of modal form with respect to the physical space?

To evaluate the solution of an adjacent element in your current element, you need to have some way of evaluating that solution (which is in reference space for that element) on your target element’s nodal points (which likely have a different transformation for that reference space). Unless your mesh is structured/uniform, there is not a simple way of evaluating those expressions and the most straightforward approach would likely be to transform that other element’s solution from reference space u(xi,eta,zeta) to physical space u(x,y,z) and evaluating that at the physical nodal locations (x,y,z) of your target element’s solution nodes. Furthermore, you need some way to evaluate the solution at arbitrary points (which nodal interpolating polynomials aren’t necessary the best for), so you will also likely need to transform that to a modal form such as monomials which are simpler to evaluate at arbitrary points.

After transforming other element’s solution, then how to transmit these values into target element? Are there any references in pyfr? including transform solution to a modal form.

Passing information between elements is done in the entropy filtering code, and transforming to modal form is done in both the entropy filtering code and the shock sensor code (although this is to Legendre polynomials, you may want to transform to monomials instead).

Ok, and how to transform solution to monomials? Could you link me to some reference.

If my mesh is structured/uniform, then what’s the process like?

This integral is nonsensical. Evaluating polynomials outside of their bounds is a complete non-starter; for one thing they are guaranteed to grow (as \lim_{x \rightarrow \infty} |p(x)| = \infty). In addition, there is no reason at all for quantities such as pressure to remain positive outside of the bounds of an element.

Regards, Freddie.

1 Like