Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:11:39

0001 //------------------------------- -*- C++ -*- -------------------------------//
0002 // Copyright Celeritas contributors: see top-level COPYRIGHT file for details
0003 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
0004 //---------------------------------------------------------------------------//
0005 //! \file celeritas/optical/surface/SurfaceModel.hh
0006 //---------------------------------------------------------------------------//
0007 #pragma once
0008 
0009 #include "celeritas/optical/action/ActionInterface.hh"
0010 #include "celeritas/phys/SurfaceModel.hh"
0011 
0012 namespace celeritas
0013 {
0014 namespace optical
0015 {
0016 //---------------------------------------------------------------------------//
0017 /*!
0018  * Optical surface physics model base class.
0019  *
0020  * Base class for implementing an optical surface physics model for a given
0021  * physics sub-step. Adds \c step functions to the core \c phys::SurfaceModel.
0022  *
0023  * Note that these are \em not "actions" added to the action interface.
0024  * Instead, they are stored by internally by \c SurfacePhysicsParams and
0025  * invoked by \c SurfaceSteppingAction.
0026  */
0027 class SurfaceModel : public ::celeritas::SurfaceModel
0028 {
0029   public:
0030     //!@{
0031     //! \name Type aliases
0032     using CoreStateHost = CoreState<MemSpace::host>;
0033     using CoreStateDevice = CoreState<MemSpace::device>;
0034     //!@}
0035 
0036   public:
0037     using ::celeritas::SurfaceModel::SurfaceModel;
0038 
0039     //! Execute the model with host data
0040     virtual void step(CoreParams const&, CoreStateHost&) const = 0;
0041 
0042     //! Execute the model with device data
0043     virtual void step(CoreParams const&, CoreStateDevice&) const = 0;
0044 };
0045 
0046 //---------------------------------------------------------------------------//
0047 }  // namespace optical
0048 }  // namespace celeritas