DNDSR Ideas¶
Next Step:¶
wrap mesh for better access
check dist topo and comm with a global BFS data
start CFV methods
check on general json parsing
octree and periodic bc ~~(using CGAL)~~ using nanoflann
mesh reader: CGNS abutting interface with 1-to-1 face
CFV limiters
Euler Solver
Facial Value output in Euler Solver
kdtree for euler solver’s wall dist finding
mesh: automatic global refinement
reorganize comm strategy and communication callings
more bases in CFV
more functional in CFV
fully serial mesh partitioning
try scotch?
serialization of euler solver
restarting of euler solver
data post-process utility (with VTK?)
wrap the mesh and vfv into iterator or range based for
wrap array into iterator or range based for
wrap derived arrays into iterator or range based for
About Periodic:¶
periodic is defined with bnd faces
periodic makes faces 2x duplicate, and nodes 8x duplicate max
steps in doing periodic ?:
at least in serial reader:
meshinfo:
coordSerial
cell2nodeSerial
bnd2nodeSerial
cellElemInfoSerial
bndElemInfoSerial
bnd2cellSerial
well, when we have this, we need to add something:
detect face-to-face_donor
decide node de-duplication, and get new set of nodes_deduplicated
alter cell2node/bnd2node to point to correct nodes_deduplicated
coord now stores nodes_deduplicated
partitioned:
use faceID to detect cells that are affected by periodic, record them
mask any mesh->coord[iNode] queries
in cfv, mask any coord-related (center, quadrature…) queries
the intention is to make topology unique and complete, treating faces with periodic like the inner ones
to ease cell2node query, in parallel:
create appended physcial_coord
for affected cells, convert cell2node(pointing to local) to point to physcial_coord (with minus meaning the physical_coord indices) (need a new adj state)
create means of inverting the process (to get original cell2node(pointing to local) topo)
when printing vis files, physcial_coord should be appended, and cell2node need to point to those, and coord data on physical_coord should copy those of original coord
mesh serialization state should be unaffected by periodic (not pointing to appended, or the physical_node_to_actual_node mapping should also be serialized)
findings:¶
if the periodic mesh is 2xN cell (3x(N+1)nodes), the current face interpolation makes wrong face findings (with less faces created than needed;); this thing could be ignored for now?
new rules:¶
periodic donor and main must be non-adjacent (not sharing nodes) (main-donor node mapping each pair is not identical) [reasoning: if periodicity needs this, means singularity point, replace this point with a small face with sym condition]
then, record cell2nodePi, and face2nodePi, to augment cell2node …, and:
nodePi: bit1-bit2-bit3, means [if peri1][if peri2][if peri3]
in the sense of peri-duplicated mesh, node in a cell is different when both cell2node(iCell,ic2n) and cell2nodePI(iCell,ic2n) are different; so use both cell2node and cell2nodePi for inner-cell coord calculation
in the sense of de-duplicated mesh, cell2node(iCell,ic2n) is unique, and points to a coord;
to get interpolate face, the faces are the same when both are true:
face2node are the same,
face2nodePi are collaborating: the xor (face2nodePiL_if2n, face2nodePiR_if2n) are the same
face2nodePi are got from the first cell, like face2node faceAtr are got from the first cell, (for de-duplicated faces, could be periodic-donor or main)
to query face-coords in cell, check is is periodic, if donor, face2cell[1] needs the face to trans-back; if main, face2cell[1] needs the face to trans; face2cell[0] is always good
to query other cell-coord through face, if face is periodic main, if cell is face2cell[0] then other cell needs trans back; cell is face2cell[1] then other cell needs trans
About Exporting Static Interfaces¶
Use pybind11?
Array objects for exporting:
MPI Top interface
Adj array (non uniform)
3d coord array
UDof array
URec array
Eigen Vec / Mat / Mats array ?
Rec Matrices array ?
About Increasing Performance:¶
using vectorized Riemann solver / face flux
using face - single - dissipation Riemann Solver
4-cached DBV
SGS init with last du
start with lower order
CFL adapt
RCM? reordering
mesh elevator¶
could just use serial
parallel: need some control on bnd-bnd / node-bnd
geometrical edge detection: 1. each node has set of norms on bnds; 2. on edge: see if norms of a endpoint is close to normal to the edge(or else dispose of it), which means filtering out those deviates the edge norm too much
rbf field: nodes include original bnd nodes and new bnd nodes