#ifndef WARPX_FielIO_H_ #define WARPX_FielIO_H_ #include #ifdef WARPX_USE_OPENPMD # include #endif void PackPlotDataPtrs (amrex::Vector& pmf, const std::array,3>& data); void AverageAndPackVectorField( amrex::MultiFab& mf_avg, const std::array< std::unique_ptr, 3 >& vector_field, const amrex::DistributionMapping& dm, const int dcomp, const int ngrow ); void AverageAndPackScalarField( amrex::MultiFab& mf_avg, const amrex::MultiFab & scalar_field, const int dcomp, const int ngrow ); void WriteRawField( const amrex::MultiFab& F, const amrex::DistributionMapping& dm, const std::string& filename, const std::string& level_prefix, const std::string& field_name, const int lev, const bool plot_guards ); void WriteZeroRawField( const amrex::MultiFab& F, const amrex::DistributionMapping& dm, const std::string& filename, const std::string& level_prefix, const std::string& field_name, const int lev, const int ng ); void WriteCoarseScalar( const std::string field_name, const std::unique_ptr& F_cp, const std::unique_ptr& F_fp, const amrex::DistributionMapping& dm, const std::string& filename, const std::string& level_prefix, const int lev, const bool plot_guards, const int icomp=0 ); void WriteCoarseVector( const std::string field_name, const std::unique_ptr& Fx_cp, const std::unique_ptr& Fy_cp, const std::unique_ptr& Fz_cp, const std::unique_ptr& Fx_fp, const std::unique_ptr& Fy_fp, const std::unique_ptr& Fz_fp, const amrex::DistributionMapping& dm, const std::string& filename, const std::string& level_prefix, const int lev, const bool plot_guards ); std::unique_ptr getInterpolatedScalar( const amrex::MultiFab& F_cp, const amrex::MultiFab& F_fp, const amrex::DistributionMapping& dm, const int r_ratio, const amrex::Real* dx, const int ngrow ); std::array, 3> getInterpolatedVector( const std::unique_ptr& Fx_cp, const std::unique_ptr& Fy_cp, const std::unique_ptr& Fz_cp, const std::unique_ptr& Fx_fp, const std::unique_ptr& Fy_fp, const std::unique_ptr& Fz_fp, const amrex::DistributionMapping& dm, const int r_ratio, const amrex::Real* dx, const int ngrow ); void coarsenCellCenteredFields( amrex::Vector& coarse_mf, amrex::Vector& coarse_geom, const amrex::Vector& source_mf, const amrex::Vector& source_geom, int coarse_ratio, int finest_level ); #ifdef WARPX_USE_OPENPMD void setOpenPMDUnit( openPMD::Mesh mesh, const std::string field_name ); std::vector getReversedVec( const amrex::IntVect& v ); std::vector getReversedVec( const amrex::Real* v ); void WriteOpenPMDFields( const std::string& filename, const std::vector& varnames, const amrex::MultiFab& mf, const amrex::Geometry& geom, const int iteration, const double time ); #endif // WARPX_USE_OPENPMD #endif // WARPX_FielIO_H_