Hi,
I am using Pointwise to generate fully 3D mesh. The mesh can be divided into two blocks, one is boundary layer mesh which is extruded from 2D, the other one, which in order to avoid the high aspect ratio in the farfield, is filled with 3D Tet mesh within surfaces. So inevitably, the pyramid type of mesh will appear on the boundary region of two blocks. I exported it of polynomial order of four to have better surface mesh with gmsh kernel. However when transferring to pyfr mesh, it gave me error:
ValueError: Pyramids with non-parallelogram bases are currently unsupported
I have talked with Pointwise support to decide make those pyramids a bit farfield to avoid being curved. But still not working. In the end, I changed the source code tolerance a bit:
def _check_pyr_parallelogram(self, foeles):
# Find PyFR node map for the quad face
fnmap = self._petype_fnmap['pyr']['quad'][0]
pfnmap = [self._nodemaps['quad', 4][i] for i in fnmap]
# Face nodes
fpts = self._nodepts[foeles[:, pfnmap]].swapaxes(0, 1)
# Check if parallelogram or not
if np.any(np.abs(fpts[0] - fpts[1] - fpts[2] + fpts[3]) > 1e-10): # changed here from 1e-10 to 1e-8
raise ValueError('Pyramids with non-parallelogram bases are '
'currently unsupported')
I changed tolerance to 10e-8 which can be compiled (POINTWISE out come is double precision). And I run the case, with terrible outcome:
Those pyramids (the surfaces between pyramid and prism mesh to be exactly) will generate some fluctuation will blow up the code or cause very small dt and eventually leads to terrible flow field. how can I solve this problem properly. Is that because I changed the tolerance leads to this problem?
It is a LES case, dx+ dz+ is around 2 times of a decent DNS case.
Thanks in ahead,
Zhenyang