PeleLM
PeleLM copied to clipboard
Inflow, Outflow, NoSlipWallIsotherm
peleLM.lo_bc = Inflow NoSlipWallIsotherm peleLM.hi_bc = Outflow NoSlipWallIsotherm the above is my boundary settings, when starting the computation, I always get the error:
Can you build a re-run with DEBUG=TRUE (either at the make cmd line or in the GNUmakefile), or follow the info at the top of the Backtrace to fill out the backtrace.
When I run PeleLM2d.gnu.DEBUG.MPI.ex inputs.2d, I also get the same error: Erroneous arithmetic operation Erroneous arithmetic operation See Backtrace.1 file for details See Backtrace.0 file for details Abort(8) on node 1 (rank 1 in comm 0): application called MPI_Abort(MPI_COMM_WORLD, 8) - process 1
Is the Backtrace containing more information? Activating the Debug should enable narrowing down the problem.
Backtrace:
0: ./PeleLM2d.gnu.DEBUG.ex(+0xea5c2e) [0x5608c6982c2e]
amrex::BLBackTrace::print_backtrace_info(_IO_FILE*) at /home/ubuntu/PeleLM/Submodules/amrex/Src/Base/AMReX_BLBackTrace.cpp:175
1: ./PeleLM2d.gnu.DEBUG.ex(+0xea572e) [0x5608c698272e]
amrex::BLBackTrace::handler(int) at /home/ubuntu/PeleLM/Submodules/amrex/Src/Base/AMReX_BLBackTrace.cpp:85
2: /lib/x86_64-linux-gnu/libc.so.6(+0x3ef10) [0x7f5db41eff10]
3: /lib/x86_64-linux-gnu/libm.so.6(logf32x+0x30) [0x7f5db49e7ad0]
?? ??:0
4: ./PeleLM2d.gnu.DEBUG.ex(+0x4c2f83) [0x5608c5f9ff83]
PeleLM::calcDiffusivity(double)::{lambda(int, int, int)#2}::operator()(int, int, int) const at /home/ubuntu/PeleLM/Submodules/PelePhysics/Transport/Simple.H:292
(inlined by) getTransportCoeff(int, int, int, amrex::Array4
_10: ./PeleLM2d.gnu.DEBUG.ex(+0xf9a36f) [0x5608c6a7736f]
amrex::Amr::InitializeInit(double, double, amrex::BoxArray const, amrex::Vector<int, std::allocator
You can see here which line triggers the abort:
PeleLM::calcDiffusivity(double)::{lambda(int, int, int)https://github.com/AMReX-Combustion/PeleLM/pull/2}::operator()(int, int, int) const at /home/ubuntu/PeleLM/Submodules/PelePhysics/Transport/Simple.H:292
which is:
logT[0] = std::log(Tloc);
Suggesting that the temperature is non-positive. This is called just after the state is initialized, so it seems as though your initial data is incorrectly setting a non-positive temperature. Can you guess maybe how that might have happened? The next step would be to find the cell where this is happening and look deeper into why the temperature has a bad value (perhaps uninitialized?).
My case file is EB_FlamePastCylinder (PeleLM/Exec/RegTests/EB_FlamePastCylinder), and I change the boundary from Interior to NoSlipWallIsotherm, the others remain the same. I am asking for your help to diagnose the issue. Thanks in advance for your time.
By changing the transverse boundaries from Interior to NoSlipWallIsotherm, the temperature y-boundaries changed to Dirichlet and need to be specified. All Dirichlet boundaries are specified in the bcnormal
function of pelelm_prob.H
, and without changing the current implementation, the temperature in the y+ is unspecified.
Two arguments of that function allow you to identify the boundary on which it is called: idir
can be either 0, 1 or 2 for X, Y or Z, respectively; sgn
indicates the boundary normal direction, +1 and -1 for the low and high boundary, respectively. Using these, you should be able to specify the temperature by filling s_ext[DEF_Temp]
in the y-direction.
YES, IT WORKS. Thanks a lot dear esclapez and drummerdoc for your reply. I have another question, can the boundary of EB be set to NoSlipWallIsotherm? Thanks again.