Question Regarding MacCormack Technique
I'm somewhat of a beginner/student to CFD development, and I'm making my way through John D. Anderson's "Computational Fluid Dynamics: The Basics With Applications" wherein Maccormack's finite differencing technique is being utilized to solve the flowfield for a quasi-1D, subsonic inflow-supersonic outflow isentropic nozzle. The governing flow equations are reduced for a quasi-1D Euler flow, and cast in strong conservation form. In writing my own program to solve this problem, I have been able to match Anderson's results for the first step in time. However, my code becomes unstable as I advance further in time, and I'm unable to obtain a stable solution using the Courant number, grid spacing, and time steps that Anderson specifies.
I'm wondering if this may have something to do with my implementation of calculating the time increment itself, which Anderson is a little vague in how he himself handles this. I know that for each grid point the time increment is calculated, and he in turn picks the minimum time increment calculated across each grid point to advance the solution to the next time step (global time marching approach). However, I'm left wondering if this is repeated for each time iteration, or if this minimum time increment calculated for the first time step is used for subsequent iterations. I have implemented the former approach, and I see that as the solution steps forward in time the minimum time increment calculated across all the grid points diminishes; eventhough, the grid spacing remains constant. Is this normal, or should the time increment remain constant while the solution marches in time? Any insights would be most helpful.
Recently I was trying to do the same example from Anderson and I experience the same problem. The absolute value of the divergence seems to scale with the timestep but no matter what the timestep is, the solution diverges. Since you encountered this problem a couple of years ago, do you perhaps know what the problem was?
With kind regards.
Anderson's CFD book page 336
Jeroen Wink - I think I have stumbled onto the same error. I have coded this thing twice, one in C++ and then again in Excel (first step). The central problem begins on page 336. Once I get the calculations to the end of the predictor step (page 349) , I can't get the same answers for F1, F2, F3 (row 15). The calculations work for row 16 and that's OK. I have tried a couple of things. 1.) Not using primitives in the calculation of J2. 2.) Fixing the d(Area)/dx at rows 0 and 30. I am unsure why he claims one needs the primitives calculated on the top of page 349, because the iteration loops can be closed without that calculation, and then one just extracts the primitives at the end of looping, as needed. The web rumors that a solutions manual exists, maybe we can unravel the mystery from this documentation. I'm not sure how any graduate student could turn in re-coded Anderson with out it being somewhat obvious.
|All times are GMT -4. The time now is 19:23.|