Initialization error in Step 7
I believe the initialization in the Step 7 diffuse() function is incomplete: Only the nodes with an initial value of 2 are reset; all other nodes are left as they were after the last call to diffuse(). For example, if you run diffuse(10) twice in succession and look at statistics such as the maximum and minimum value of u, you will see that the results differ in the two runs. This occurs because the initial values outside of [0.5, 1.0], [0.5, 1.0] have not been reset to 1.0.
This can be remedied by adding "u = numpy.ones((ny, nx)) as the first statement in diffuse().
Thanks for putting these steps to CFD together; they have been very helpful to me. I hope this is a little helpful for you.
Bob
@Bob-McCrory Yes, you're right. Thanks for pointing this out! There are two ways to fix it, depending on what diffuse(...) wants to achieve.
diffuse(...)always starts the time-marching fromt=0. Then, we completely re-initializeuat the the beginning ofdiffuse(...)as you suggested.diffuse(...)always continues the time-marching from the current state fou. In this case, we remove the line ofu[int(.5 / dy)...] = ....