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:

    1. detect face-to-face_donor

    1. decide node de-duplication, and get new set of nodes_deduplicated

    1. alter cell2node/bnd2node to point to correct nodes_deduplicated

    1. coord now stores nodes_deduplicated

  • partitioned:

    1. use faceID to detect cells that are affected by periodic, record them

    1. mask any mesh->coord[iNode] queries

    1. 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