manufactured-solutions / MASA

Method of Manufactured Solutions Repository
Other
47 stars 26 forks source link

MMS for shock-capturing codes #19

Open woodscn opened 9 years ago

woodscn commented 9 years ago

Hey guys,

I've been doing some work on an implementation of MMS for use with codes based on integral methods (finite-volume, etc.), including situations that lead to shocks. I thought it might be a project of interest to MASA, since you guys have become a center for MMS tools. The basic idea is to apply MMS directly to integral equations, where differentiability of the manufactured solution isn't an issue, though there is a trade-off in performance and accuracy, since the equations must be integrated numerically.

The code is primarily implemented in Python, making heavy use of Sympy to handle the symbolic manipulation and to generate code for the source terms, as well as SciPy to evaluate the flux and volume integrals.

I'd like to get these ideas incorporated into a larger project, if there's interest. Let me know what you think, and I'd be happy to answer any questions you might have.

Nathan Woods

roystgnr commented 9 years ago

I once took a look at a "piecewise" MMS for a shocked code - choosing a simple curved shock shape, picking the manufactured solution on the pre-shock side and getting the jump condition right with no delta functionals in the forcing function, then trying to extend the post-shock result smoothly backward.

As you may have noticed from the lack of such a solution in the library, I didn't get very far. But we'd still love to have a shocked solution to the Euler equations in the library somewhere. Is your python code online anywhere to look at?

woodscn commented 9 years ago

The code isn’t available yet. I’ve been holding on to it while I wait for a paper to work its way through the review process, but I will certainly make it available once that’s a little further along. 

In the meantime, I’m more wondering whether or not a Python project would fit with the C++ MASA. At present, the use of sympy and scipy are pretty integral to getting good accuracy and performance out of the integrator, and replicating the necessary functionality in another environment might be difficult, though not impossible. 

Integral MMS source terms are most naturally defined as integrals over cells. One way to use something like this would be to compute the sources beforehand for some predetermined mesh, and then to save the results to a file. They could then be read in and incorporated at runtime. 

The nice part about using the integral equations for MMS is that you can go ahead and through a step function into a solution to define all sorts of discontinuous behavior, and the integrator won’t complain. The downside is you can’t get analytic precision; you’re stuck with numerical methods for integrating the flux integrals. The other downside is you have to evaluate a bunch of these three-dimensional (for unsteady 3d euler) fluxes, though you can still get some very accurate results if you’re careful with the integration.

N

On Fri, Sep 19, 2014 at 11:19 AM, roystgnr notifications@github.com wrote:

I once took a look at a "piecewise" MMS for a shocked code - choosing a simple curved shock shape, picking the manufactured solution on the pre-shock side and getting the jump condition right with no delta functionals in the forcing function, then trying to extend the post-shock result smoothly backward.

As you may have noticed from the lack of such a solution in the library, I didn't get very far. But we'd still love to have a shocked solution to the Euler equations in the library somewhere. Is your python code online anywhere to look at?

Reply to this email directly or view it on GitHub: https://github.com/manufactured-solutions/MASA/issues/19#issuecomment-56207040

nicholasmalaya commented 9 years ago

Hi Nathan,

This sounds very interesting.

In terms of utilizing python routines-- this isn't a problem as MASA has optional python bindings. So we could integrate these parts in with the --with-python flag, and it would not be necessary.

Adding sympy and scipy are more severe requirements, as masa presently only requires a basic python interpreter. Are there any other optional libraries you are using?

And do you have a model document of some sort? Feel free to email if you prefer to avoid posting it openly (due to publication records). I'm at nick@ices.utexas.edu. Would help to see the forms more closely.

Thanks!

woodscn commented 9 years ago

I sent a write-up of the code to the address you provided, so you can take a look at exactly how this is implemented.

Scipy and sympy are the only library dependencies, though in both cases the development branch is required. It may be possible to use the code I’ve developed to generate specific verification solutions, without requiring python at all, but it wouldn’t likely be user-friendly. 

Let me know what you think. If you want to take this to a sidebar, my email address is woodscn@colorado.edu.

On Sat, Sep 20, 2014 at 5:07 PM, Nicholas Malaya notifications@github.com wrote:

Hi Nathan, This sounds very interesting. In terms of utilizing python routines-- this isn't a problem as MASA has optional python bindings. So we could integrate these parts in with the --with-python flag, and it would not be necessary. Adding sympy and scipy are more severe requirements, as masa presently only requires a basic python interpreter. Are there any other optional libraries you are using? And do you have a model document of some sort? Feel free to email if you prefer to avoid posting it openly (due to publication records). I'm at nick@ices.utexas.edu. Would help to see the forms more closely.

Thanks!

Reply to this email directly or view it on GitHub: https://github.com/manufactured-solutions/MASA/issues/19#issuecomment-56283157

woodscn commented 9 years ago

I'm finally able to make the code for this available at https://github.com/woodscn/BACL-MMS. There's also a paper that describes the idea available, at http://authors.elsevier.com/a/1QsPV508HRs4u

woodscn commented 9 years ago

I thought I would check back in with this idea. I'm starting to gear up for some more demonstration examples using higher-dimensional solutions, so it seemed like a good time to see what you all thought about it.

woodscn commented 8 years ago

The author link I provided earlier has since expired. The paper is now at http://www.sciencedirect.com/science/article/pii/S0021999115002168

woodscn commented 5 years ago

I'm still working in this area, and have a couple of different (better) approaches than what I put up earlier, if anyone is interested.

nicholasmalaya commented 5 years ago

Hi Nathan,

I think we certainly would be interested. And happy holidays.

Thanks,

-NM

roystgnr commented 5 years ago

Put it up! There might or might not be immediate interest (I believe @ajamar1 and a group in Illinois are still regularly using a MASA-enabled shock-capturing code right now), but even if there wasn't, you never know about the future. This would not be the first time I've seen an idea go from wishlist to implementation to critical feature despite years-long gaps in between each stage.