Pipe case RuntimeError

Hello,
I’m new to PyFR and have already installed the latest version. I’m trying to run a pipe case when running on CPU. This is the error message I get: Does anyone have any ideas for the reason?

File "/home/ubuntu/myenv/lib/python3.10/site-packages/pyfr/plugins/nancheck.py", line 20, in __call__
    raise RuntimeError(f'NaNs detected at t = {intg.tcurr}')
RuntimeError: NaNs detected at t = 2.4999999999999999

Pipe ini

[backend]
precision = double
rank-allocator = linear


[constants]
Pc = 10.0
gamma = 1.4
mu = 0.0003333333333333333
Pr = 0.71
[solver]
system = navier-stokes
order = 3


[solver-time-integrator]
formulation = std
scheme = rk45
controller = none
tstart = 0.0
tend = 20.0
dt = 0.05

[solver-interfaces]
riemann-solver = rusanov
ldg-beta = 0.5
ldg-tau = 0.1
[solver-interfaces-quad]
flux-pts = gauss-legendre

[solver-elements-hex]
soln-pts = gauss-legendre

[soln-plugin-nancheck]
nsteps = 50

[soln-plugin-writer]
dt-out = 50.0
basedir = .
basename = Ode-{t:.1f}


[soln-bcs-wall]
type = no-slp-adia-wall


[soln-bcs-inlet]
type = sub-in-frv
rho =1.0
u = 0.0
v = 0.0
w = 1.0

[soln-bcs-outlet]
type = sub-out-fp
p = Pc

[soln-ics]
rho =1.0
u = 0.0
v = 0.0
w = 0.0
p = Pc

Pipe.geo

// Gmsh project created on Wed Apr 16 17:31:07 2025
SetFactory("OpenCASCADE");

R=0.03;
H=0.06;
dx=0.1; //mesh size

//Square
L=R*0.3;
Rx=R*Cos(Pi/4);
Ry=R*Sin(Pi/4);


Point(1) = {-Rx, -Ry, 0, dx};
Point(2) = {-Rx, Ry, 0, dx};
Point(3) = {Rx, Ry, 0, dx};
Point(4) = {Rx, -Ry, 0, dx};
Point(5) = {-L, -L, 0, dx};
Point(6) = {-L, L, 0, dx};
Point(7) = {L, L, 0, dx};
Point(8) = {L, -L, 0, dx};
Point(9) = {0, 0, 0, dx};


Line(1) = {6, 7};
Line(2) = {7, 8};
Line(3) = {8, 5};
Line(4) = {5, 6};
Circle(5) = {2, 9, 3};
Circle(6) = {3, 9, 4};
Circle(7) = {4, 9, 1};
Circle(8) = {1, 9, 2};
Line(9) = {2, 6};
Line(10) = {3, 7};
Line(11) = {4, 8};
Line(12) = {1, 5};
Recursive Delete {
  Point{9}; 
}//+
Curve Loop(1) = {3, 4, 1, 2};
Plane Surface(1) = {1};
Curve Loop(2) = {4, -9, -8, 12};
Plane Surface(2) = {2};
Curve Loop(3) = {1, -10, -5, 9};
Plane Surface(3) = {3};
Curve Loop(4) = {2, -11, -6, 10};
Plane Surface(4) = {4};
Curve Loop(5) = {3, -12, -7, 11};
Plane Surface(5) = {5};

Transfinite Surface {1} = {5, 8, 7, 6};
Transfinite Surface {2} = {1, 5, 6, 2};
Transfinite Surface {3} = {6, 7, 3, 2};
Transfinite Surface {4} = {7, 8, 4, 3};
Transfinite Surface {5} = {8, 5, 1, 4};
Transfinite Curve {8, 9, 12, 4, 5, 10, 1, 6, 11, 2, 3, 7} = 15 Using Progression 1;
Recombine Surface {2, 3, 4, 5, 1};

//+
Extrude {0, 0, 0.05} {
  Surface{3}; Surface{2}; Surface{5}; Surface{4}; Surface{1}; Layers {10}; Recombine;
}


//+
Physical Surface(" inlet", 37) -= {5, 1, 4, 3, 2};
//+
Physical Surface("outlet", 38) = {2, 3, 4, 1, 5};
//+
Physical Surface("wall", 39) = {8, 12, 20, 16};
//+
Physical Volume("fluid", 40) = {2, 1, 4, 3, 5};

Have you tried looking at the flow shortly before it NaN’s? This will give you a clue as to where the issue is.

Regards, Freddie.

@fdw Thank Freddie,
I’d like to see the output data, but I’d also like to know how to check the flow quickly. As the picture below shows, the initial conditions are correct(z-velocity), which is to write the solution at 0 seconds. However, the calculation will give an error message.

I don’t follow your most recent message. Please elaborate. Also, have you tried reducing the time step size?

Thank you for your reply. I want to simulate pipe flow. It’s usually just a simple case, I thought. But the error message I get: NaNs detected at t=2.499. Freddie advised me to check flow shortly before it NaN’s, because I’m new to PyFR and do not know how to do it . The files Pipe ini and Pipe.geo have been uploaded. I have tried reducing the time step size, but it does not work. That’s all. I mentioned this issue yesterday.@p.vincent

Your simulation is internally inconsistent. Think about what is happening at the inlet where you impose a uniform velocity of w. Then, at the wall you impose a no-slip condition which implies zero velocity at the wall. Physically, this is not going to end well since at points where the inflow and walls intersect you are attempting to impose two incompatible conditions.

Regards, Freddie.

@p.vincent @fdw Thank you for your reply.
I changed the wall boundary condition, as Freddie said. I figured out the problem was the pipe mesh, because I tried a different pipe mesh that uploaded to the forum, and then the calculation worked.So PyFR is excellent. I don’t know which part of the mesh caused this issue until now. I will check the mesh again.