Hi Daniel, Thank you for your answer, I feel I am getting close thanks to you but it still does not work .. can you please shed some light on the following points :
1/ for the pressure equation, when you meant implicitTerm were you thinking about this : eqnP = fipy.ImplicitSourceTerm(coeff=1.0, var=p) == gm1*roE - 0.5*gm1*(roU**2 + roV**2)/ro 2/ Okay, for the dp/dx and dp/dy, I agree now I see that we can use a centralconvectionterm indeed. Can you confirm they are to be written as : coeffForX = fipy.CellVariable(mesh=mesh, rank=1) coeffForX[0] = 1.0 coeffForX[1] = 0.0 fipy.CentralDifferenceConvectionTerm(coeff=coeffForX, var=p) for dp/dx, and as : coeffForY = fipy.CellVariable(mesh=mesh, rank=1) coeffForY[0] = 0.0 coeffForY[1] = 1.0 fipy.CentralDifferenceConvectionTerm(coeff=coeffForY, var=p) for dp/dy ? As for the roE equation, I combined the gradient components into this : coeffConv = fipy.CellVariable(mesh=mesh, rank=1) coeffConv[0] = roU/ro coeffConv[1] = roV/ro fipy.CentralDifferenceConvectionTerm(coeff=coeffConv.faceValue, var=p) Does it seem reasonable to you ? 3/ By non-linear, I get that you mean sweeping the equations several times before actually updating the solution in time. But I don’t know what equations i am supposed to be sweeping here, I think I lack the experience. The whole system should be swept, like so : for step in range(steps): ro.updateOld() roU.updateOld() roV.updateOld() roE.updateOld() p.updateOld() # # eqn.solve(dt=dt) for sweep in range(sweeps): print "ITER %d, SWEEP %d"%(step+1, sweep+1) vi2D.plot() eqnP.sweep(dt=dt) eqnC.sweep(dt=dt) eqnMx.sweep(dt=dt) eqnMy.sweep(dt=dt) eqnE.sweep(dt=dt) or is it only a few equations, in a certain order ? I need your help on that please. Thank you so much again, Cordialement, -- T. BRIDEL-BERTOMEU 2017-05-18 16:28 GMT+02:00 Daniel Wheeler <[email protected]>: > Hi Thibault, > > I think that you are almost there with your implementation. There are > a few more things to do to get it working. > > - First, use an ImplciitSourceTerm rather than a TransientTerm to > represent "p" in the pressure equation. > > - Secondly, use a CentralDifferenceConvectionTerm in the momentum > equations to represent dp/dx etc. This will give you the implicit > coupling. Also, maybe, in the roE equation, though that is more > complicated. > > - Thirdly, as this is non-linear, you also need an extra non-linear > loop at each time step. > > - Fourthly, if you can't get this working in a coupled manner. Maybe > try uncoupling and solving each equation separately, but use the > non-linear loop mentioned above. Only when that is working you should > start coupling terms one by one. > > Cheers, > > Daniel > > > On Thu, May 18, 2017 at 5:55 AM, Thibault Bridel-Bertomeu > <[email protected]> wrote: > > Hello Daniel, > > > > Thank you for the paper and the script - I am afraid it will take me some > > time though, its impressive and long work !! > > > > Regarding the equations, I think I was not clear enough in my previous > > explanations, I apologize. > > In substance, I have 4 variables : ro, roU, roV and roE. They are > density, > > velocity along X, velocity along Y and energy. > > I also have 4 differential equations : > > > > dro/dt + nabla.(ro*[U,V]) = 0 > > droU/dt + nabla.(roU*[U,V]) = -dp / dx > > droV/dt + nabla.(roV*[U,V]) = -dp / dy > > droE/dt + nabla.(roE*[U,V]) = - d(p*(roU/ro))/dx - d(p*(roV/ro))/dy > > > > As you can see, they are written with a fifth variable, p, for pressure, > > that is related to the others by : > > > > p = (gamma-1.0)*roE - 0.5*(gamma-1.0)*(roU**2 + roV**2)/ro > > > > this is what I call the equation of state, it is not differential it is > just > > algebraic. > > > > I wager the differential equations above are not the most complex you > have > > seen or implemented in FiPy, and I think I succeeded, although of course, > > since the whole thing does not work, I cannot be sure. But then I am > stuck > > with that non-differential equation that I would have to solve with the > four > > differential (?) to close the system … > > > > Can you see what I am stuck with ? > > Also, could you please elaborate on the last paragraph of your previous > > e-mail ? « If you do include … » I am not sure I get why you speak of > > linearization and relaxation ? > > > > I attach the latest version of my non-working script .. > > > > Thanks for the help > > > > Best, > > > > Thibault > > > > -- > Daniel Wheeler > > _______________________________________________ > fipy mailing list > [email protected] > http://www.ctcms.nist.gov/fipy > [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ] >
_______________________________________________ fipy mailing list [email protected] http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
