|
|
|||
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/model/GaussianRoughnessModel.hh 0006 //---------------------------------------------------------------------------// 0007 #pragma once 0008 0009 #include "corecel/data/ParamsDataStore.hh" 0010 #include "celeritas/inp/OpticalPhysics.hh" 0011 #include "celeritas/optical/surface/SurfaceModel.hh" 0012 0013 #include "GaussianRoughnessData.hh" 0014 0015 namespace celeritas 0016 { 0017 namespace inp 0018 { 0019 struct GaussianRoughness; 0020 } 0021 0022 namespace optical 0023 { 0024 //---------------------------------------------------------------------------// 0025 /*! 0026 * Gaussian roughness surface model. 0027 * 0028 * Approximates the surface roughness of an optical surface with the UNIFIED 0029 * Gaussian roughness model. 0030 */ 0031 class GaussianRoughnessModel : public SurfaceModel 0032 { 0033 public: 0034 //!@{ 0035 //! \name Type aliases 0036 using InputT = inp::GaussianRoughness; 0037 //!@} 0038 0039 public: 0040 // Construct the model from an ID and layer map 0041 GaussianRoughnessModel(SurfaceModelId, 0042 std::map<PhysSurfaceId, InputT> const&); 0043 0044 //! Get the list of physical surfaces this model applies to 0045 VecSurfaceLayer const& get_surfaces() const final { return surfaces_; } 0046 0047 // Execute the model with host data 0048 void step(CoreParams const&, CoreStateHost&) const final; 0049 0050 // Execute the model with device data 0051 void step(CoreParams const&, CoreStateDevice&) const final; 0052 0053 private: 0054 VecSurfaceLayer surfaces_; 0055 ParamsDataStore<GaussianRoughnessData> data_; 0056 }; 0057 0058 //---------------------------------------------------------------------------// 0059 } // namespace optical 0060 } // namespace celeritas
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|