LCOV - code coverage report
Current view: top level - include/crpropa/magneticField - MagneticFieldGrid.h (source / functions) Coverage Total Hit
Test: coverage.info.cleaned Lines: 0.0 % 1 0
Test Date: 2026-06-18 09:49:19 Functions: - 0 0

            Line data    Source code
       1              : #ifndef CRPROPA_MAGNETICFIELDGRID_H
       2              : #define CRPROPA_MAGNETICFIELDGRID_H
       3              : 
       4              : #include "crpropa/magneticField/MagneticField.h"
       5              : #include "crpropa/Grid.h"
       6              : 
       7              : namespace crpropa {
       8              : /**
       9              :  * \addtogroup MagneticFields
      10              :  * @{
      11              :  */
      12              : 
      13              : /**
      14              :  @class MagneticFieldGrid
      15              :  @brief Magnetic field on a periodic (or reflective), cartesian grid with trilinear interpolation.
      16              : 
      17              :  This class wraps a Grid3f to serve as a MagneticField.
      18              :  */
      19              : class MagneticFieldGrid: public MagneticField {
      20              :         ref_ptr<Grid3f> grid;
      21              : public:
      22              :         /**
      23              :          *Constructor
      24              :          @param grid Grid3f storing the magnetic field vectors
      25              :         */
      26              :         MagneticFieldGrid(ref_ptr<Grid3f> grid);
      27              :         void setGrid(ref_ptr<Grid3f> grid);
      28              :         ref_ptr<Grid3f> getGrid();
      29              :         Vector3d getField(const Vector3d &position) const;
      30              : };
      31              : 
      32              : /**
      33              :  @class ModulatedMagneticFieldGrid
      34              :  @brief Modulated magnetic field on a periodic grid.
      35              : 
      36              :  This class wraps a Grid3f to serve as a MagneticField.
      37              :  The field is modulated on-the-fly with a Grid1f.
      38              :  The Grid3f and Grid1f do not need to share the same origin, spacing or size.
      39              :  */
      40              : class ModulatedMagneticFieldGrid: public MagneticField {
      41              :         ref_ptr<Grid3f> grid;
      42              :         ref_ptr<Grid1f> modGrid;
      43              : public:
      44            0 :         ModulatedMagneticFieldGrid() {
      45              :         }
      46              :         /**
      47              :          *Constructor
      48              :          @param grid    Grid3f storing the magnetic field vectors
      49              :          @param modGrid Grid1f used to scale the magnetic field strength
      50              :                                         B^new_i = B^old_i * scale 
      51              :         */
      52              :         ModulatedMagneticFieldGrid(ref_ptr<Grid3f> grid, ref_ptr<Grid1f> modGrid);
      53              :         void setGrid(ref_ptr<Grid3f> grid);
      54              :         void setModulationGrid(ref_ptr<Grid1f> modGrid);
      55              :         ref_ptr<Grid3f> getGrid();
      56              :         ref_ptr<Grid1f> getModulationGrid();
      57              :         void setReflective(bool gridReflective, bool modGridReflective);
      58              :         Vector3d getField(const Vector3d &position) const;
      59              : };
      60              : /** @} */
      61              : } // namespace crpropa
      62              : 
      63              : #endif // CRPROPA_MAGNETICFIELDGRID_H
        

Generated by: LCOV version 2.0-1