Laser deposition

Briareus.Deposition — Type
Deposition

Absorbed laser power by element (element, TW), power striking the unmodeled back side of each component (backside, TW — e.g. the outside of a hohlraum, i.e. LEH clipping), and per-beam totals (per_beam, TW, power that landed on any opaque surface).

source
Briareus.DepositionOperator — Type
DepositionOperator(target, beams; level = 1, ncone = 13, resolution = 0.3,
                   reach = 2.0, maxlevel = 5, shadow = 0,
                   backside_resolution = 1.0, edge_resolution = 0.01,
                   profile = nothing)

Precomputed laser-deposition quadrature. For each beam, every opaque triangle side that faces the beam and belongs to an element is sampled at 4^level points, or more where the beam can land: a triangle within reach (mm) of the beam's footprint (2.5 spot semi-axes grown by the f-cone along the beam axis through the aim) is divided until its sub-triangles are no longer than resolution times the spot's smaller semi-axis, up to 4^maxlevel points; with shadow > 0, such a triangle crossed by a shadow edge (its points see different cone directions) is divided shadow times more. reach is the aim motion the operator stays accurate for; beyond it, deposition is resolved only at level. The defaults conserve each beam's power to 1e-4 when nothing clips and to 2e-3 when an entrance-hole lip clips several percent of it, on fine and coarse hohlraum meshes alike.

Unmodeled back sides (the outside of a hohlraum, whose power is the clipped backside loss) need only their total per component, and that is set by the open edges the light passes: an entrance-hole lip clipping 1e-4 of a beam puts the clipped light within ~1/50 of a spot semi-axis of the rim. Back sides are sampled at one point per triangle away from the beam; within reach,

  • a triangle on an open edge (an edge no other opaque triangle shares, such as an entrance-hole rim) or touching one at a vertex gets a Gauss rule graded geometrically toward it, from resolution down to edge_resolution spot semi-axes;
  • a triangle within one (larger) spot semi-axis of an open edge, where the shoulder of a clipped spot lands, is divided down to resolution;
  • the rest are divided down to backside_resolution.

On the NIF hohlraum, clipped power then matches ray traces (averaged over nspot 241–361) to 1% from 1e-4 to 5% of a beam, 2.5% at 1e-6, and 0.6% up to 50%, and is smooth in the aim. Element values do not depend on these two keywords.

Each point stores its area weight, the normal of the lit side and a bitmask of which of the ncone f-cone directions reach it from the lens without hitting another surface. These depend only on the target and the beam directions, so the operator stays valid as pointing, defocus, spot size, and power change — deposition is then a smooth function of those parameters (see deposit).

The beam is the superposition of ncone collimated sub-beams, one per f-cone direction dⱼ (cone_directions), each carrying the best-focus profile. A point receives from each visible direction the focal profile where the ray along dⱼ through it crosses the best-focus plane, times that ray's incidence factor |n·dⱼ|/(k·dⱼ). This is the geometric-optics convolution of the focal spot with the f-cone, sampled at the cone directions as the reference ray trace samples it, so the power on any surface that intercepts the whole beam is the beam power, at any distance from focus and any incidence; and shadows cast by objects near focus — a capsule at TCC, an LEH edge — are correlated with the part of the spot they block.

profile = VisRadProfile(...) replaces this with VisRad's beam model, so that a design can be checked in VisRad and its deposition reproduced. The model keeps the super-Gaussian's shape along the beam, with semi-axes that grow on a hyperbola and an envelope cut-off. Points are then sampled along the beam axis only (ncone is ignored), and the beam axis through each point decides its shadowing. The two models agree near focus; away from it VisRad's spot keeps its shape while the f-cone convolution softens the edges. Power on a surface that intercepts the whole beam is the beam's power in planes normal to the beam, and only approximately on tilted ones (VisRad normalizes per transverse plane).

The beams' ports must not change after construction.

source
Briareus.component_power — Method
component_power(dep, target) -> Dict{Symbol,Float64}

Absorbed laser power (TW) per component, plus back-side (outside) losses keyed as Symbol(name, "_outside") and :missed for power that strikes nothing.

source
Briareus.deposit — Method
deposit(op, beams) -> Deposition

Evaluate laser deposition for beams (same ports and order as at construction). The result is differentiable in every beam's aim, power, defocus and spot axes. Power that strikes no opaque surface (e.g. passes through a hohlraum and out the other LEH) is delivered - sum(per_beam). Threads share the work dynamically, and every sum is taken in a fixed order: the result is the same, bit for bit, on any number of threads.

source
Briareus.laser_flux — Method
laser_flux(dep, target) -> Vector

Absorbed laser intensity per element (TW/mm²; multiply by 1e14 for W/cm²).

source
Briareus.raytrace_component_power — Method
raytrace_component_power(target, beams; nspot = 41, ncone = 13, extent = nothing) -> Matrix

Power (TW) each beam (rows) deposits on each component (columns, both sides), by the reference ray trace — exact power accounting independent of mesh resolution.

source
Briareus.raytrace_deposition — Method
raytrace_deposition(target, beams; nspot = 41, ncone = 13, extent = nothing) -> Deposition

Reference deposition by geometric ray tracing. Each spot component (core, and halo if present) is sampled with an nspot × nspot grid of best-focus points spanning ±extent 1/e semi-axes (default: out to 1e-12 of the component's peak), each launched along ncone f-cone directions and weighted by the focal intensity. Rays travel straight (no refraction) to the first opaque surface. Power is conserved exactly; defocus is exact within the sampling. Not differentiable.

source
Briareus.OrthoCamera — Type
OrthoCamera(direction; up = ẑ, center = 0, width, height = width, nx = 256, ny = nx)

Orthographic camera looking along direction (from the camera toward the scene) at center, imaging a width × height mm field.

source
Briareus.camera_from_port — Method
camera_from_port(theta, phi; kwargs...)

Camera at the port (θ, φ) in degrees looking at TCC — e.g. an x-ray imager's line of sight.

source
Briareus.line_of_sight_power — Method
line_of_sight_power(target, B, direction; elems = all) -> Real

X-ray power per steradian (TW/sr) radiated toward a distant detector in direction (unit vector from the target toward the detector) by the given elements with radiosity B (TW/mm²), counting only unobstructed elements: Σ Bᵢ/π · Aᵢ cosθᵢ.

source
Briareus.radiance — Method
radiance(sol) -> Vector

Lambertian x-ray radiance B/π per element (TW mm⁻² sr⁻¹).

source
Briareus.render — Method
render(target, values, camera; background = NaN) -> Matrix

Image of a per-element field: each pixel shows values[e] for the element seen first along its line of sight (apertures are transparent), or background. Row 1 is the top of the image. Pass radiance(sol) for an x-ray image or laser_flux(dep, target) for a deposition map.

source