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

This was compiled with the latest version of Deal.ii 9.3.0-pre. #61

Merged
merged 10 commits into from
May 27, 2021

Conversation

AlexanderCicchino
Copy link
Collaborator

Added: - Operators class
- Unit tests verifying all operators: volume, surface, flux, and metric operators and functions
Part 1 of my latest merge

Added: - Operators class
	- Unit tests verifying all operators: volume, surface, flux, and metric operators and functions
Part 1 of my latest merge
@dougshidong
Copy link
Owner

As discussed, please run all the tests and provide a log of the test to confirm everything still works.

@AlexanderCicchino
Copy link
Collaborator Author

May_24_2021_test_log.log

@AlexanderCicchino
Copy link
Collaborator Author

@AlexanderCicchino
Copy link
Collaborator Author

The latest commit reversed back to the forked version of dealii and all files that same as master. The only changes are operators.cpp/h and the unit tests. It passes the previous failing tests too (see attached). Once the header file is properly cleaned up as per Doxygen standards, then it will be ready for pull.
results_NACA_opt.log

@dougshidong dougshidong self-requested a review May 26, 2021 21:13
@dougshidong dougshidong self-assigned this May 26, 2021
Comment on lines +61 to +82
prm.declare_entry("use_energy", "false",
dealii::Patterns::Bool(),
"Not calculate energy by default. Otherwise, get energy per iteration.");

prm.declare_entry("use_L2_norm", "false",
dealii::Patterns::Bool(),
"Not calculate L2 norm by default (M+K). Otherwise, get L2 norm per iteration.");

prm.declare_entry("use_classical_Flux_Reconstruction", "false",
dealii::Patterns::Bool(),
"Not use Classical Flux Reconstruction by default. Otherwise, use Classical Flux Reconstruction.");

prm.declare_entry("flux_reconstruction", "cDG",
dealii::Patterns::Selection("cDG | cSD | cHU | cNegative | cNegative2 | cPlus | cPlus1D |c10Thousand | cHULumped"),
"Flux Reconstruction. "
"Choices are <cDG | cSD | cHU | cNegative | cNegative2 | cPlus | cPlus1D | c10Thousand | cHULumped>.");

prm.declare_entry("flux_reconstruction_aux", "kDG",
dealii::Patterns::Selection("kDG | kSD | kHU | kNegative | kNegative2 | kPlus | k10Thousand"),
"Flux Reconstruction for Auxiliary Equation. "
"Choices are <kDG | kSD | kHU | kNegative | kNegative2 | kPlus | k10Thousand>.");

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm guessing some of those refer to some of your test parameters? Like whether you calculate the energy or l2 norm within the test? You might want to put those in a different subsection. We can merge this pull request an open an issue assigned to you to be fixed later? How does that sound?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes these are all parameters that will be used/properly defined in merge part 2. Basically energy = M+K norm, l2 = M norm, classical flux reconstruction is only reconstructing the surface integral, then the parameters correspond to all the different FR schemes.
Sounds good leaving it as an open issue, it will be fixed in merge part 2!


prm.declare_entry("use_classical_Flux_Reconstruction", "false",
dealii::Patterns::Bool(),
"Not use Classical Flux Reconstruction by default. Otherwise, use Classical Flux Reconstruction.");
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't exactly understand the option.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This only reconstructs the surface. So for nonlinear problems, its a good way of showing that ESFR with split forms is unstable unless you apply our volume reconstruction to the split form.

}
}
}
#if 0
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to delete those #if 0 or comment blocks for a cleaner code if you are done debugging. Since you have commited them they can always be retrieved within Git's log by checkout out previous commits. If it's a work in progress, of course, please do keep them.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I left those for now because it has all the covariant curl coded up. Was thinking of maybe adding it as an option? Like we could choose between invariant and conservative curl forms from the control file. If you'd like, we could open it as a topic/issue to be addressed in merge part 2?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup! More to-dos to be added to issues

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I thought this was in a different place. Yes those if statements are needed either way. What this is doing is comparing that M+K_HU recovers exactly a collocated DG mass matrix on GLL nodes of degree p+1. So the if statements are comparing them and writing into M_K_HU the maximum error.

Comment on lines 36 to 39
#include <deal.II/meshworker/dof_info.h>
#include <deal.II/meshworker/integration_info.h>
#include <deal.II/meshworker/simple.h>
#include <deal.II/meshworker/loop.h>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you need all those headers? Or were they copy pasted? Ideally you only include what you need, which should decrease dependencies and compilation times.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Honestly I copied and pasted most of them. I will go through them/clean up now.

{
pcout << "Destructing Operators..." << std::endl;
}
template <int dim, int nstate, typename real>
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm guessing this is copy pasted from the DG constructor. Consider moving that function our of DG, and use the same function for both DG and the Operator constructors. Right now, since this is copy pasted, we would have to change code at 2 locations if we find a bug or want to change something in the framework.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this is part of the focus for merge part 2. Since in part 2 I will be changing a fair bit in DG, I figured I will leave it untouched for the first part and just introduce the operators class.

@AlexanderCicchino
Copy link
Collaborator Author

All expected tests pass.
Results_May_26_2021_for_merge.log

@dougshidong dougshidong merged commit 9f4aa1f into dougshidong:master May 27, 2021
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

Successfully merging this pull request may close these issues.

None yet

2 participants