SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
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 = implementation defined
 
using argument_tags = implementation defined
 
using volume_tags = implementation defined
 
using argument_tags_linearized = implementation defined
 
using volume_tags_linearized = implementation defined
 

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::iJ< DataVector, 3 > &deriv_displacement, 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, const tnsr::iJ< DataVector, 3 > &deriv_displacement)
 

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

(1)niTij=njer2r02πr02

where ni is the unit normal pointing out of the surface, r is the coordinate distance from the origin in the plane perpendicular to ni and r0 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 , , and in defining the beam width, and other publications may include a factor of 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 , , and . 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: