SpECTRE
v2024.03.19

A laser beam with Gaussian profile normally incident to the surface. More...
#include <LaserBeam.hpp>
Classes  
struct  BeamWidth 
Public Types  
using  options = tmpl::list< BeamWidth > 
using  argument_tags = tmpl::list< domain::Tags::Coordinates< 3, Frame::Inertial >, ::Tags::Normalized< domain::Tags::UnnormalizedFaceNormal< 3, Frame::Inertial > > > 
using  volume_tags = tmpl::list<> 
using  argument_tags_linearized = tmpl::list<> 
using  volume_tags_linearized = tmpl::list<> 
Public Member Functions  
LaserBeam (const LaserBeam &)=default  
LaserBeam &  operator= (const LaserBeam &)=default 
LaserBeam (LaserBeam &&)=default  
LaserBeam &  operator= (LaserBeam &&)=default 
std::unique_ptr< domain::BoundaryConditions::BoundaryCondition >  get_clone () const override 
LaserBeam (double beam_width)  
double  beam_width () const 
std::vector< elliptic::BoundaryConditionType >  boundary_condition_types () const override 
void  apply (gsl::not_null< tnsr::I< DataVector, 3 > * > displacement, gsl::not_null< tnsr::I< DataVector, 3 > * > n_dot_minus_stress, const tnsr::I< DataVector, 3 > &x, const tnsr::i< DataVector, 3 > &face_normal) const 
void  pup (PUP::er &p) override 
Public Member Functions inherited from elliptic::BoundaryConditions::BoundaryCondition< 3 >  
BoundaryCondition (const BoundaryCondition &)=default  
BoundaryCondition (BoundaryCondition &&)=default  
BoundaryCondition &  operator= (const BoundaryCondition &)=default 
BoundaryCondition &  operator= (BoundaryCondition &&)=default 
virtual std::vector< elliptic::BoundaryConditionType >  boundary_condition_types () const=0 
Public Member Functions inherited from domain::BoundaryConditions::BoundaryCondition  
BoundaryCondition (BoundaryCondition &&)=default  
BoundaryCondition &  operator= (BoundaryCondition &&)=default 
BoundaryCondition (const BoundaryCondition &)=default  
BoundaryCondition &  operator= (const BoundaryCondition &)=default 
BoundaryCondition (CkMigrateMessage *const msg)  
WRAPPED_PUPable_abstract (BoundaryCondition)  
virtual auto  get_clone () const > std::unique_ptr< BoundaryCondition >=0 
Static Public Member Functions  
static void  apply_linearized (gsl::not_null< tnsr::I< DataVector, 3 > * > displacement, gsl::not_null< tnsr::I< DataVector, 3 > * > n_dot_minus_stress) 
Static Public Attributes  
static constexpr Options::String  help 
Static Public Attributes inherited from elliptic::BoundaryConditions::BoundaryCondition< 3 >  
static constexpr size_t  volume_dim 
A laser beam with Gaussian profile normally incident to the surface.
This boundary condition represents a laser beam with Gaussian profile that exerts pressure normal to the surface of a reflecting material. The pressure we are considering here is
\begin{align} n_i T^{ij} = n^j \frac{e^{\frac{r^2}{r_0^2}}}{\pi r_0^2} \end{align}
where \(n_i\) is the unit normal pointing out of the surface, \(r\) is the coordinate distance from the origin in the plane perpendicular to \(n_i\) and \(r_0\) is the "beam width" parameter. The pressure profile and the angle of incidence can be generalized in future work. Note that we follow the convention of [121], [120], and [184] in defining the beam width, and other publications may include a factor of \(\sqrt{2}\) in its definition.
This boundary condition is used to simulate thermal noise induced in a mirror by the laser, as detailed for instance in [121], [120], and [184]. See also Elasticity::Solutions::HalfSpaceMirror
for an analytic solution that involves this boundary condition.

inlineoverridevirtual 

inlineoverridevirtual 
Implements domain::BoundaryConditions::BoundaryCondition.

staticconstexpr 