Laser deposition
Briareus.Deposition — Type
DepositionAbsorbed 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).
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
resolutiondown toedge_resolutionspot 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.
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.
Briareus.deposit — Method
deposit(op, beams) -> DepositionEvaluate 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.
Briareus.laser_flux — Method
laser_flux(dep, target) -> VectorAbsorbed laser intensity per element (TW/mm²; multiply by 1e14 for W/cm²).
Briareus.raytrace_component_power — Method
raytrace_component_power(target, beams; nspot = 41, ncone = 13, extent = nothing) -> MatrixPower (TW) each beam (rows) deposits on each component (columns, both sides), by the reference ray trace — exact power accounting independent of mesh resolution.
Briareus.raytrace_deposition — Method
raytrace_deposition(target, beams; nspot = 41, ncone = 13, extent = nothing) -> DepositionReference 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.
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.
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.
Briareus.line_of_sight_power — Method
line_of_sight_power(target, B, direction; elems = all) -> RealX-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θᵢ.
Briareus.radiance — Method
radiance(sol) -> VectorLambertian x-ray radiance B/π per element (TW mm⁻² sr⁻¹).
Briareus.render — Method
render(target, values, camera; background = NaN) -> MatrixImage 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.