/* * InterfaceVMGJob.hpp * * Created on: 10.06.2012 * Author: Frederik Heber */ #ifndef INTERFACEVMGJOB_HPP_ #define INTERFACEVMGJOB_HPP_ #ifdef HAVE_CONFIG_H #include #endif #include #include "base/interface.hpp" #include "base/vector.hpp" #include "units/particle/bspline.hpp" #include "units/particle/particle.hpp" #include "Jobs/VMGData.hpp" #include "Jobs/Grid/SamplingGrid.hpp" namespace VMG { class Grid; class MGGrid; class MGMultigrid; } namespace VMGInterfaces { class InterfaceVMGJob : public VMG::Interface { public: InterfaceVMGJob(const SamplingGrid &_sampled_input, VMGData &returndata, const std::vector< std::vector< double > > &_particle_positions, const std::vector< double > &_particle_charges, VMG::Boundary boundary, int levelMin, int levelMax, const VMG::Vector &_box_begin, vmg_float _box_end, const int& near_field_cells, int coarseningSteps=0, double alpha=1.6); ~InterfaceVMGJob() {} void ImportRightHandSide(VMG::Multigrid& multigrid); void ExportSolution(VMG::Grid& grid); protected: VMG::Particle::BSpline spl; private: //!> sampled density on the grid as input const SamplingGrid sampled_input; //!> sampled potential on the grid as output VMGData &returndata; //!> number of grid points per axis as \f$2^{\mathrm{level}}\f$ const int level; //!> nuclei charges std::list particles; //!> contains start of grid intervals double box_begin[3]; //!> contains end of grid intervals double box_end[3]; }; } #endif /* INTERFACEVMGJOB_HPP_ */