AMReX-Combustion / PeleLMeX

An adaptive mesh hydrodynamics simulation code for low Mach number reacting flows without level sub-cycling.
https://amrex-combustion.github.io/PeleLMeX/
BSD 3-Clause "New" or "Revised" License
32 stars 41 forks source link

Bondary conditions / Post-processing using PeleAnalysis-master #416

Open bazharz opened 1 month ago

bazharz commented 1 month ago

Hello,

I am contacting you because I am encountering an issue with post-processing. I have a 2D domain where I am simulating the propagation of a planar auto-ignition front. The boundary conditions of the domain are as follows: Outflow and Interior. Two faces perpendicular to the front propagation are set to Interior, while the two faces parallel to the propagation are set to Outflow.

First, do the boundary conditions cause any issues?

The goal is to quantify the front propagation speed, not to stabilize it in the middle of the domain with a fixed inflow speed of fresh gases.

To achieve this, I used the following formula: YC​=YH2​​O−YH2​​−YO2​​

ωC=ωH2O−ωH2−ωO2

C=(YC - YC,min) / (YC,max - YC,min)

Sl = (-grad_x(rho D_N2 grad_x(YC)) + \dot{omega}_C) / (rho_0 * grad_x(YC))

I then quantify this value at the isoline C = 0.5.

The problem I am facing is that I observe oscillations in the propagation speed when plotting it. I calculated this speed in the file print_Sl_coord_1.cpp within PeleAnalysis-master.

I have two questions:

  1. Could the Outflow boundary conditions on both ends influence the oscillations in the results?
  2. If not, could the way the gradients are calculated be inaccurate, causing these oscillations?

You can find here the link to the branch with pelelmex* files, the input.2d file, the initial condition .dat file, and the post-processing file.

I would also like to store the thermal diffusion term. Is it possible to do this from the source files and retrieve it in the same way as HeatRelease?

Thank you in advance for your help.

baperry2 commented 1 month ago

It would be helpful if you posted a plot of the oscillations so we can see what you are talking about. My first recommendation would be to see if the oscillations reduce with added grid refinement. Regarding boundary conditions, you should use whatever is physically representative of the system you are interested in.

If you are numerically approximating the derivatives in your formula through post-processing, then the values you are computing are inconsistent with those used in the PeleLMeX SDC algorithm (see documentation), which could cause unanticipated behavior. Also, unless you are using the unity Lewis number approximation in your simulation, it is not accurate to use D_N2 in your formula (although if you truly have an autoignition front diffusion effects should be negligible). You can get some of the diffusion terms, etc, by running PeleLMeX in evaluate mode (peleLM.run_mode = evaluate and peleLM.evaluate_vars = diffTerm, but I don't think there is an existing option to easily dump them on the fly.

bazharz commented 1 month ago

You can find the figure here. The oscillations increase with higher levels of AMR. For instance, in this case, I initialize an autoignition front with a constant speed of 10 m/s, and when measuring the speed using this formulation, the oscillations can vary by as much as 30 to 40 m/s. Regarding the choice of the diffusion coefficient, D_N2 was selected based on the unity Lewis number assumption, but that was just for initial validation. The goal is to evaluate the front speed to see if it continues to propagate at the initially set speed.

As for the formula, I’ve incorporated it so that the gradients are calculated the same way as in "grad.cpp".

Regarding the boundary conditions, I aim to have two outlets to allow for free propagation in the domain. However, I’m wondering if it’s appropriate to have inflow on the fresh gas side with zero velocity.

Thank you in advance for your help.

baperry2 commented 1 month ago

I don't see any figures there. You should be able to include figures embedded directly within your replies here.

Again, it's a bit unclear what you are actually trying to simulate, so I can't provide much advice on BCs. All I can say is to apply a BC that is consistent with the physical system you intend to simulate. Regardless, an inflow with zero velocity doesn't make sense to me. If you desire no incoming flow, you should probably specify some type of wall BC. A closed BC on the reactants side and open BC on the products side is suitable for measuring front propagation speed in many cases, but again this depends on your specific intentions.

bazharz commented 1 month ago

What I am trying to simulate is the propagation of an auto-ignition front in a system where the boundaries do not affect the front's propagation. It's like if I'm simulating the propagation of a front in a tube that is long enough for the ends to have a negligible impact.

You can find the image below. If it's not visible, it's located in the post-processing branch.

Sl
drummerdoc commented 1 month ago

A couple of comments. If your flame has or develops any curvature, your results will indeed be impacted by the domain size, as there is a maximum wavelength that is representable even if the physics "wants" to develop features that are larger (such as Landau-Darrius features). Also, when I've done this sort of calculation, I have set the fuel side boundary conditions to inflow and the opposite to outflow. Otherwise there is nothing to prevent "jiggling" of the reference frame in which you are running your flame.... interestingly, this jiggling of the reference frame ends up generating a Rayleigh-Taylor instability that you'd get with a gravity forcing of dense fluid over light. You can "control" the inlet velocity to keep the mean position of the flame stationary, but then need to add a bulk forcing to "undo" this coordinate frame acceleration. In your case, can you try fixing the fuel side to an inlet and setting the velocity to a constant somewhere close to the flame speed and see if this eliminates the oscillations?

bazharz commented 1 month ago

Thank you for your feedback. The initial field I have is a self-ignition front with a constant propagation speed, so there is a temperature gradient in the fresh gas zone. The goal is to quantify the propagation speed, not to stabilize the flame front, which is why I chose to impose outflow conditions at both ends of the 2D domain. I will now impose an inflow velocity and check if the propagation speed of the flame front still shows any oscillations.