Beams and facilities
Briareus.Beam — Type
Beam(name; theta, phi, power = 1.0, spot, fnumber = 20.0, aim = (0,0,0),
defocus = 0.0, group = :none, quad = "")One laser beam entering from the port at polar angle theta and azimuth phi (degrees, target-chamber frame, z up). power in TW. group labels beams that share pointing parameters (e.g. a cone). wavelength is the nominal vacuum wavelength (µm) and dlambda the detuning from it (Å), used by laser–plasma models.
Briareus.SuperGaussianSpot — Type
SuperGaussianSpot(a, b = a; order = 2.0, angle = 0.0, halo = 0.0, halo_scale = 3.0,
halo_order = 2.0)Elliptical super-Gaussian best-focus intensity I ∝ exp(-[(u/a)² + (v/b)²]^(order/2)) with 1/e semi-axes a, b (mm). angle (radians) rotates the a axis from the port's θ̂ toward φ̂.
Measured phase-plate spots have low-level wings beyond the super-Gaussian core fit. A fraction halo of the power can be put in a second, broader component with semi-axes halo_scale·(a, b) and order halo_order — the halo matters for clearance and clipping checks, not for drive symmetry.
Briareus.VisRadProfile — Type
VisRadProfile(; envelope = 1.53645, focal_length = 7695.0)VisRad's analytic beam model (VR/powersources/setlaserprofileprops.html), for deposition that reproduces VisRad's (DepositionOperator(...; profile)). The beam is not the focal spot convolved over the f-cone, as in Briareus's default model. Instead the super-Gaussian keeps its shape along the beam with semi-axes
a(z) = a₀ √((z/z_A)² + 1), z_A = FL [(FL / (2a₀ f#))² − 1]^(-1/2),and likewise b(z) with zB, for distance z from best focus and final-optic distance FL (`focallength, mm; VisRad's port radius, 769.5 cm at NIF). Then a(FL) is the f-cone's radius at the lens. The profile is cut off at the elliptical radiusenvelope` (in 1/e semi-axes), and its peak is renormalized so the envelope holds the beam's power in every transverse plane. A surface absorbs the profile times the incidence factor |n·k| of the beam axis, where the axis reaches it unobstructed.
What is not modeled, for lack of VisRad's constants (see reference/research-notes.md, "The faint wings"):
- the exponent's change along the beam, n(z) = n₀[1 + 0.2 z/z₀], with z₀ unstated;
- the blend toward a square beam away from focus, whose weight f_sq = [z/√(z² + ab)]^Γ is not small at sub-mm defocus unless Γ is large;
- occultation by VisRad's ray grid. Here the beam axis through each point decides it.
Against a VisRad foil calculation the elements above 5% of peak agree within 1.4%. The wings at sub-mm defocus differ by up to ~20%. VisRad's effective envelope there lay near 1.64, against the file's ratio of 1.53645; the ratio's exact definition is unresolved. visrad_profile takes the parameters from a workspace.
Briareus.direction — Method
Unit propagation direction of a beam, -port.
Briareus.enclosed_fraction — Method
enclosed_fraction(spot, ρ)Fraction of the beam power inside elliptical radius ρ (core 1/e units) at best focus.
Briareus.focal_profile — Method
focal_profile(spot, power, ρ)Best-focus intensity (TW/mm²) at elliptical radius ρ (in units of the core 1/e semi-axes) for a beam of power TW.
Briareus.intensity — Method
intensity(frame_or_beam, x)Beam intensity (TW/mm², per unit area normal to the beam) at point x. Away from best focus the spot is the focal profile convolved with the geometric f-cone disk; this is approximated by widening the semi-axes so second moments add exactly (a(s)² = a² + s²/(16 F² m_n) with m_n = Γ(4/n)/(2Γ(2/n))) at fixed order n, for the core and halo components separately. This smooth profile serves envelope and clearance estimates; far from focus its shape departs from the convolution, so deposition (DepositionOperator, raytrace_deposition) sums over the cone directions instead.
Briareus.intensity — Method
intensity(profile::VisRadProfile, beam, x)Intensity (TW/mm², per unit area normal to the beam) of beam at point x under VisRad's beam model (VisRadProfile).
Briareus.port_angles — Method
Polar and azimuthal angles (degrees) of a beam's port.
Briareus.port_vector — Method
port_vector(theta, phi)Unit vector from TCC to a port at polar angle theta, azimuth phi (degrees).
Briareus.remake — Method
remake(beam; aim, power, defocus, spot, dlambda, port, fnumber, group, name)Copy of beam with the given fields replaced; the element type widens as needed (so ForwardDiff duals can flow through pointing parameters).
Briareus.spot_axes — Method
spot_axes(beam) -> (a, b)Unit vectors of the spot's a and b axes, transverse to the beam: the port's θ̂ and φ̂ turned by the spot's angle toward φ̂.
Briareus.wavelength — Method
Wavelength (µm) including the detuning dlambda.
Briareus.with_axes — Method
Same spot profile with semi-axes a, b (number type follows them).
Briareus.NIF_QUAD_NAMES — Constant
NIF_QUAD_NAMESNIF quad name of each indirect-drive chamber port (Dict(port => "Q11T", …)), read from the labeled LMF chamber-geometry figures; see nif_port, nif_bundle.
Briareus.beams_from_table — Method
beams_from_table(rows; spot, fnumber, power) -> Vector{Beam}Build beams from rows (NamedTuples or Dicts) with keys name, theta, phi (degrees) and optionally group, quad, power, aim, defocus, fnumber, spot. The keyword arguments supply defaults for rows that lack them; each may be a value or a function row -> value.
Briareus.nif_beams — Method
nif_beams(; power = 2.0, fnumber = 20.7, spot = nif_spot)All 192 indirect-drive NIF beams with their individual directions from the LMF beam table (data/nif_beams.csv, transcribed from beam-port-locations-updated-10-15-2020.xlsx of the LMF Shot RI Resources). Names are the facility beam names ("B111"–"B468": bundle xy, beam z; beams 1–4 form quad QxyT, 5–8 QxyB); quad is the quad name and group the cone. The mean direction of each quad's four beams is its port direction to within 0.004°.
Briareus.nif_bundle — Method
nif_bundle(beam_or_quad) -> StringBundle of a NIF quad or beam: the cluster and bundle digits of its quad name, e.g. "31" for Q31T and Q31B. A bundle's two quads sit in opposite hemispheres and need not share a cone.
Briareus.nif_bundles — Method
nif_bundles(beams) -> Dict{String,Vector{Int}}Indices of beams (NIF quads or beams) belonging to each bundle.
Briareus.nif_port — Method
nif_port(quad) -> IntChamber port number of a NIF quad name such as "Q31B" (see NIF_QUAD_NAMES).
Briareus.nif_quads — Method
nif_quads(; power = 8.0, fnumber = 7.9, spot = nif_spot)The 48 indirect-drive NIF quads as single beams (power in TW per quad, i.e. four beamlines). Port angles are the NIF User Guide table; group is the cone (:inner23, :inner30, :outer44, :outer50, shared by top and bottom), and name and quad are the quad name (e.g. "Q31B", see NIF_QUAD_NAMES; nif_port, nif_bundle). spot maps a cone to its SuperGaussianSpot.
Briareus.nif_spot — Method
nif_spot(cone; scale = 1.0)Best-focus CPP spot for a NIF cone (:inner23, :inner30, :outer44, :outer50), major axis along the port's φ̂ and minor along θ̂.
Briareus.omega_beams — Method
omega_beams(; cones = (:cone1, :cone2, :cone3), power = 0.5, fnumber = 6.7,
spot = omega_spot(:EIDI300))OMEGA beams in the hohlraum (P6–P7) frame (see omega_ports), restricted to cones (the 40 indirect-drive beams by default; pass cones = :all for all 60).
Briareus.omega_ports — Method
omega_ports() -> Vector{NamedTuple}The 60 OMEGA beam directions in a hohlraum frame whose z axis is a pentagon (P6–P7) axis. They are the vertices of a truncated icosahedron with hexagon:pentagon edge ratio 1.2 (cut at 1.2/3.4 of each icosahedron edge), which gives cones at 21.415°, 42.020°, 58.852° and 81.249° and their supplements (Sci. Rep. 13, 9883, 2023). The azimuthal origin puts cone 1 at φ = 0°, 72°, …; it is not tied to chamber coordinates. Groups are :cone1–:cone4; lower-hemisphere beams use the same groups.
Briareus.omega_spot — Function
omega_spot(name = :EIDI300)OMEGA phase-plate spots (1/e semi-axes, mm): :EIDI300 hohlraum elliptical plate (n = 4.1, 1/e diameters 290 × 212 µm), :SG4 (r₀ = 0.36 mm, n = 4.2 with SSD+PS), :SG8 (r₀ = 0.412 mm, n = 4.7). OMEGA Users' Guide (2014).