SpECTRE  v2022.09.02
Elasticity::BoundaryConditions::LaserBeam Class Reference

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
 
LaserBeamoperator= (const LaserBeam &)=default
 
 LaserBeam (LaserBeam &&)=default
 
LaserBeamoperator= (LaserBeam &&)=default
 
std::unique_ptr< domain::BoundaryConditions::BoundaryConditionget_clone () const override
 
 LaserBeam (double beam_width)
 
double beam_width () const
 
std::vector< elliptic::BoundaryConditionTypeboundary_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
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
virtual std::vector< elliptic::BoundaryConditionTypeboundary_condition_types () const=0
 
- Public Member Functions inherited from domain::BoundaryConditions::BoundaryCondition
 BoundaryCondition (BoundaryCondition &&)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
 BoundaryCondition (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (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
 

Detailed Description

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 [88] and [87] in defining the beam width, and other publications may include a 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 [88] and [87]. See also Elasticity::Solutions::HalfSpaceMirror for an analytic solution that involves this boundary condition.

Member Function Documentation

◆ boundary_condition_types()

std::vector< elliptic::BoundaryConditionType > Elasticity::BoundaryConditions::LaserBeam::boundary_condition_types ( ) const
inlineoverridevirtual

◆ get_clone()

std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > Elasticity::BoundaryConditions::LaserBeam::get_clone ( ) const
inlineoverridevirtual

Member Data Documentation

◆ help

constexpr Options::String Elasticity::BoundaryConditions::LaserBeam::help
staticconstexpr
Initial value:
=
"A laser beam with Gaussian profile normally incident to the surface."

The documentation for this class was generated from the following file: