SpECTRE  v2024.03.19
Elasticity::BoundaryConditions::LaserBeam Class Reference

A laser beam with Gaussian profile normally incident to the surface. More...

#include <LaserBeam.hpp>


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 [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.

Member Function Documentation

◆ boundary_condition_types()

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

◆ get_clone()

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

Member Data Documentation

◆ help

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

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