I have a mesh consisting of prisms and tetrahedra, generated in Pointwise and elevated to Q3. It was partitioned with METIS using the balanced argument. When I try to run PyFR with order = 0, I receive a “No suitable quadrature rule found”, despite having the appropriate [solver-interfaces-{tri,quad}] and [solver-elements-{pri,tet}]. If I run it with order = 1 or 2, I receive “TypeError: All viewed matrices must belong to the same allocation”.
In type.py, this error is raised during the “Validate the matrices” step:
# Validate the matrices
if any(not isinstance(m, mattypes) for m in self._mats):
raise TypeError('Incompatible matrix type for view')
if any(m.basedata != self.basedata for m in self._mats):
raise TypeError('All viewed matrices must belong to the same '
'allocation extent')
I can’t say I understand what is going on here, but I expect this is an issue with the mesh. The grid looks fine in Pointwise (prior to elevation) and when I load it in Tecplot (after elevation) I’m not seeing any glaring problems. Could anyone suggest a way to troubleshoot this?
Thanks,
Brian
Can you post your full configuration file along with the .msh
file.
Regards, Freddie.
Hi Freddie,
I’ve posted the .msh file here: Dropbox - SMC000 - Simplify your life
And my configuration below:
# Set Point 3
# NPR = 1.197, NTR = 1.0
[backend]
precision = double
rank-allocator = linear
[constants]
gamma = 1.4
mu = 0.00111
Pr = 0.71
# Custom
NPR = 1.197
NTR = 1.0
Ps = 101325
Ts = 288
Rhos = 1.225
Cp = 1006
[solver]
system = navier-stokes
order = 2
#viscosity-correction = sutherland
viscosity-correction = none
[solver-time-integrator]
formulation = std
#scheme = euler
#scheme = rk34
scheme = rk45
#controller = none
controller = pi
atol = 1e-5
rtol= 1e-5
tstart = 0
tend = 1.00
dt = 1e-9
[solver-interfaces]
riemann-solver = rusanov
ldg-beta = 0.5
ldg-tau = 0.1
[solver-interfaces-tri]
flux-pts = alpha-opt
[solver-interfaces-quad]
flux-pts = gauss-legendre
[solver-elements-tet]
soln-pts = alpha-opt
[solver-elements-pri]
soln-pts = alpha-opt~gauss-legendre-lobatto
[soln-ics]
rho = Rhos
u = 3.0
v = 0.0
w = 0.0
p = Ps
[soln-bcs-ext_inflow]
type = char-riem-inv
rho = Rhos
u = 3.0
v = 0.0
w = 0.0
p = Ps
[soln-bcs-farfield]
type = char-riem-inv
rho = Rhos
u = 3.0
v = 0.0
w = 0.0
p = Ps
[soln-bcs-visc]
type = no-slp-adia-wall
[soln-bcs-inflow]
type = sub-in-ftpttang
pt = NPR*Ps
cpTt = NTR*Ts*Cp
theta = 0.0
phi = 90.0
[soln-bcs-outflow]
type = sub-out-fp
p = Ps
[soln-plugin-writer]
dt-out = 0.000005
basedir = .
basename = soln-{t:.6f}
[soln-plugin-residual]
nsteps = 10
file = residual.csv
header = true
Looking through the mesh it does not appear as if there are any fluid elements:
$PhysicalNames
6
3 6 "vc-2"
2 1 "ext_inflow"
2 2 "farfield"
2 4 "inflow"
2 3 "outflow"
2 5 "visc"
$EndPhysicalNames
On my system this gives an import error when I try to convert the mesh to .pyfrm.
The quadrature rule error is expected at p = 0. In particular if you look at the list of triangular rules known to PyFR in PyFR/pyfr/quadrules/tri at develop · PyFR/PyFR · GitHub you’ll see there is no alpha-opt
rule with one point (which is what p = 0 corresponds to). Switching to williams-shunn
will resolve the issue, however. A similar line of reasoning holds for the tet element solution points.
Regards, Freddie.
Sorry Freddie, I forgot that I had modified the mesh after transferring it to my HPC to fix the import error: sed -i 's/"vc-2"/"fluid"/g' 240522_SMC000_sp3_re1e4.msh
This renames “vc-2” to “fluid” and allows for import.
I did look through the quadrules and switched to “flux-pts = williams-shunn” for [solver-interfaces-tri] and “soln-pts = shunn-ham” for [solver-elements-tet], which did allow me to run p = 0. Interestingly, this also seemed to fix the TypeError I was receiving from running p = 2. Thanks for your help.