DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
DNDSR Ideas

Next Step:

  • [x] wrap mesh for better access
  • [ ] check dist topo and comm with a global BFS data
  • [x] start CFV methods
  • [x] check on general json parsing
  • [x] octree and periodic bc ~~(using CGAL)~~ using nanoflann
  • [x] mesh reader: CGNS abutting interface with 1-to-1 face
  • [x] CFV limiters
  • [x] Euler Solver
  • [x] Facial Value output in Euler Solver
  • [x] kdtree for euler solver's wall dist finding
  • [ ] mesh: automatic global refinement
  • [ ] reorganize comm strategy and communication callings
  • [x] more bases in CFV
  • [x] more functional in CFV
  • [x] fully serial mesh partitioning
  • [ ] try scotch?
  • [x] serialization of euler solver
  • [x] restarting of euler solver
  • [x] 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
  • 2. decide node de-duplication, and get new set of nodes_deduplicated
  • 3. alter cell2node/bnd2node to point to correct nodes_deduplicated
  • 4. coord now stores nodes_deduplicated
  • partitioned:
  • 5. use faceID to detect cells that are affected by periodic, record them
  • 6. mask any mesh->coord[iNode] queries
  • 7. 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