aboutsummaryrefslogtreecommitdiff
path: root/Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp
diff options
context:
space:
mode:
authorGravatar Edoardo Zoni <59625522+EZoni@users.noreply.github.com> 2020-10-02 13:40:15 -0700
committerGravatar GitHub <noreply@github.com> 2020-10-02 13:40:15 -0700
commit1831a01ef0de0d6251f79657ca8ba14638a155ab (patch)
tree929dc610c808c74350c671e25f2ec3af0d12136f /Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp
parentc2080c8edc7bd8370da64272fb421c373d5708df (diff)
downloadWarpX-1831a01ef0de0d6251f79657ca8ba14638a155ab.tar.gz
WarpX-1831a01ef0de0d6251f79657ca8ba14638a155ab.tar.zst
WarpX-1831a01ef0de0d6251f79657ca8ba14638a155ab.zip
Plot raw fields: fix bugs for rho and F data (#1392)
* Plot raw fields: fix bug for rho data * Add query for <diag_name>.plot_raw_rho * Check if MultiFabs are allocated and fix bug for coarse patch * Add same check for raw F data
Diffstat (limited to 'Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp')
-rw-r--r--Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp52
1 files changed, 37 insertions, 15 deletions
diff --git a/Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp b/Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp
index b0e90516a..72743131a 100644
--- a/Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp
+++ b/Source/Diagnostics/FlushFormats/FlushFormatPlotfile.cpp
@@ -478,16 +478,26 @@ FlushFormatPlotfile::WriteAllRawFields(
WriteRawMF( warpx.getBfield_fp(lev, 0), dm, raw_pltname, default_level_prefix, "Bx_fp", lev, plot_raw_fields_guards);
WriteRawMF( warpx.getBfield_fp(lev, 1), dm, raw_pltname, default_level_prefix, "By_fp", lev, plot_raw_fields_guards);
WriteRawMF( warpx.getBfield_fp(lev, 2), dm, raw_pltname, default_level_prefix, "Bz_fp", lev, plot_raw_fields_guards);
- if (plot_raw_F) WriteRawMF( warpx.getF_fp(lev), dm, raw_pltname, default_level_prefix, "F_fp", lev, plot_raw_fields_guards);
+ if (plot_raw_F) {
+ if (warpx.get_pointer_F_fp(lev) == nullptr) {
+ amrex::Warning("The user requested to write raw F data, but F_fp was not allocated");
+ } else {
+ WriteRawMF(warpx.getF_fp(lev), dm, raw_pltname, default_level_prefix, "F_fp", lev, plot_raw_fields_guards);
+ }
+ }
if (plot_raw_rho) {
- // Use the component 1 of `rho_fp`, i.e. rho_new for time synchronization
- // If nComp > 1, this is the upper half of the list of components.
- MultiFab rho_new(warpx.getF_fp(lev), amrex::make_alias, warpx.getF_fp(lev).nComp()/2, warpx.getF_fp(lev).nComp()/2);
- WriteRawMF( rho_new, dm, raw_pltname, default_level_prefix, "rho_fp", lev, plot_raw_fields_guards);
+ if (warpx.get_pointer_rho_fp(lev) == nullptr) {
+ amrex::Warning("The user requested to write raw rho data, but rho_fp was not allocated");
+ } else {
+ // Use the component 1 of `rho_fp`, i.e. rho_new for time synchronization
+ // If nComp > 1, this is the upper half of the list of components.
+ MultiFab rho_new(warpx.getrho_fp(lev), amrex::make_alias, warpx.getrho_fp(lev).nComp()/2, warpx.getrho_fp(lev).nComp()/2);
+ WriteRawMF(rho_new, dm, raw_pltname, default_level_prefix, "rho_fp", lev, plot_raw_fields_guards);
+ }
}
// Coarse path
- if (lev > 0){
+ if (lev > 0) {
WriteCoarseVector( "E",
warpx.get_pointer_Efield_cp(lev, 0), warpx.get_pointer_Efield_cp(lev, 1), warpx.get_pointer_Efield_cp(lev, 2),
warpx.get_pointer_Efield_fp(lev, 0), warpx.get_pointer_Efield_fp(lev, 1), warpx.get_pointer_Efield_fp(lev, 2),
@@ -500,15 +510,27 @@ FlushFormatPlotfile::WriteAllRawFields(
warpx.get_pointer_current_cp(lev, 0), warpx.get_pointer_current_cp(lev, 1), warpx.get_pointer_current_cp(lev, 2),
warpx.get_pointer_current_fp(lev, 0), warpx.get_pointer_current_fp(lev, 1), warpx.get_pointer_current_fp(lev, 2),
dm, raw_pltname, default_level_prefix, lev, plot_raw_fields_guards);
+ if (plot_raw_F) {
+ if (warpx.get_pointer_F_fp(lev) == nullptr) {
+ amrex::Warning("The user requested to write raw F data, but F_fp was not allocated");
+ } else if (warpx.get_pointer_F_cp(lev) == nullptr) {
+ amrex::Warning("The user requested to write raw F data, but F_cp was not allocated");
+ } else {
+ WriteCoarseScalar("F", warpx.get_pointer_F_cp(lev), warpx.get_pointer_F_fp(lev),
+ dm, raw_pltname, default_level_prefix, lev, plot_raw_fields_guards, 0);
+ }
+ }
+ if (plot_raw_rho) {
+ if (warpx.get_pointer_rho_fp(lev) == nullptr) {
+ amrex::Warning("The user requested to write raw rho data, but rho_fp was not allocated");
+ } else if (warpx.get_pointer_rho_cp(lev) == nullptr) {
+ amrex::Warning("The user requested to write raw rho data, but rho_cp was not allocated");
+ } else {
+ // Use the component 1 of `rho_cp`, i.e. rho_new for time synchronization
+ WriteCoarseScalar("rho", warpx.get_pointer_rho_cp(lev), warpx.get_pointer_rho_fp(lev),
+ dm, raw_pltname, default_level_prefix, lev, plot_raw_fields_guards, 1);
+ }
+ }
}
- if (plot_raw_F) WriteCoarseScalar(
- "F", warpx.get_pointer_F_cp(lev), warpx.get_pointer_F_fp(lev),
- dm, raw_pltname, default_level_prefix, lev,
- plot_raw_fields_guards, 0);
- if (plot_raw_rho) WriteCoarseScalar(
- "rho", warpx.get_pointer_rho_cp(lev), warpx.get_pointer_rho_fp(lev),
- dm, raw_pltname, default_level_prefix, lev,
- plot_raw_fields_guards, 1);
- // Use the component 1 of `rho_cp`, i.e. rho_new for time synchronization
}
}