Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Difference between project Riemann1 and Shocktest? #647

Open
henry2004y opened this issue Aug 23, 2022 · 2 comments
Open

Difference between project Riemann1 and Shocktest? #647

henry2004y opened this issue Aug 23, 2022 · 2 comments

Comments

@henry2004y
Copy link
Contributor

The two projects Riemann1 and Shocktest has very similar setups. The required input parameters for the two projects are identical. The differences seem to be

  1. Shocktest is a subclass of TriAxisSearch (which is a subclass of Project), whereas Riemann1 is a direct subclass of Project.
  2. The default cfg files have a different set of input parameters.
  3. Riemann1 has more additional files.

I then check what makes the class TriAxisSearch different from a base Project class. It seems that for TriAxisSearch an optimized findBlocksToInitialize() is defined to start the loop from the initial bulk velocity, which makes it faster.

The findBlocksToInitialize() method for base TriAxisSearch has the following comment

* WARNING This assumes that the velocity space is isotropic (same resolution in vx, vy, vz).
*/
std::vector<vmesh::GlobalID> TriAxisSearch::findBlocksToInitialize(SpatialCell* cell,const uint popID) const {

but inside the function the vspace resolutions dvx, dvy, dvz seems to be completely decoupled such that different resolutions in the vx, vy, vz dimension are allowed?
creal dvxCell = cell->get_velocity_grid_cell_size(popID,refLevel)[0];
creal dvyCell = cell->get_velocity_grid_cell_size(popID,refLevel)[1];
creal dvzCell = cell->get_velocity_grid_cell_size(popID,refLevel)[2];


Should we keep both projects? Which one should we use to perform a 1D shock tube test?

@ykempf
Copy link
Contributor

ykempf commented Aug 23, 2022

I suppose the one using the TriAxisSearch will be more recent, as that's the optimised block initialisation version. Now you will have the most recent shock code in the IPShock project, that should easily be "simplified" to do a shock tube if the perturbations are set to zero and the shock width is made small.

@markusbattarbee
Copy link
Contributor

Indeed recent shock tests have been made with the IPshock class, but that one makes some assumptions about the frame of reference. So I think there is merit in perhaps keeping a simpler shocktest version alive as well.
If indeed those are the only differences then I'd say keep the shocktest and ditch the Riemann, but even ditching that one is optional and won't really change things.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants