Forked from
Air Shower Physics / corsika
2167 commits behind the upstream repository.
-
Ralf Ulrich authoredRalf Ulrich authored
IMagneticFieldModel.h 1.26 KiB
/*
* (c) Copyright 2020 CORSIKA Project, corsika-project@lists.kit.edu
*
* This software is distributed under the terms of the GNU General Public
* Licence version 3 (GPL Version 3). See file LICENSE for a full version of
* the license.
*/
#pragma once
#include <corsika/geometry/Point.h>
#include <corsika/geometry/Vector.h>
#include <corsika/units/PhysicalUnits.h>
namespace corsika::environment {
/**
* An interface for magnetic field models.
*
* This is the base interface for magnetic field model mixins.
*
*/
template <typename Model>
class IMagneticFieldModel : public Model {
// a type-alias for a magnetic field vector
using MagneticFieldVector =
corsika::geometry::Vector<corsika::units::si::magnetic_flux_density_d>;
public:
/**
* Evaluate the magnetic field at a given location.
*
* @param point The location to evaluate the field at.
* @returns The magnetic field vector at that point.
*/
virtual auto GetMagneticField(corsika::geometry::Point const&) const
-> MagneticFieldVector = 0;
/**
* A virtual default destructor.
*/
virtual ~IMagneticFieldModel() = default; // LCOV_EXCL_LINE
}; // END: class MagneticField
} // namespace corsika::environment