#include "MultiDiagnostics.H" #include using namespace amrex; MultiDiagnostics::MultiDiagnostics () { ReadParameters(); /** Resize alldiags and initialize each element to a pointer to a * diagnostics. Calls the corresponding diagnostics constructor. */ alldiags.resize( ndiags ); for (int i=0; i(i, diags_names[i]); } else if ( diags_types[i] == DiagTypes::BackTransformed ){ alldiags[i] = std::make_unique(i, diags_names[i]); } else { amrex::Abort("Unknown diagnostic type"); } } } void MultiDiagnostics::InitData () { for( auto& diag : alldiags ){ diag->InitData(); } } void MultiDiagnostics::InitializeFieldFunctors ( int lev ) { for( auto& diag : alldiags ){ // Initialize functors to store pointers to fields. diag->InitializeFieldFunctors( lev ); } } void MultiDiagnostics::ReadParameters () { ParmParse pp("diagnostics"); int enable_diags = 1; pp.query("enable", enable_diags); if (enable_diags == 1) { pp.queryarr("diags_names", diags_names); ndiags = diags_names.size(); Print()<<"ndiags "<FilterComputePackFlush (step, force_flush); } } void MultiDiagnostics::NewIteration () { for( auto& diag : alldiags ){ diag->NewIteration(); } }