nook.sources.ripl3.optical

The RIPL-3 optical segment: the optical model parameter archive.

om-parameter-u.dat holds 566 potentials separated by +++... lines. Each entry is free-format Fortran: a reference number, author/reference/ summary text, applicability ranges, then six potential components (real and imaginary volume, surface, spin-orbit), each with per-energy-range geometry (13 radius + 13 diffuseness coefficients) and strength (25 coefficients), then a Coulomb block and optional coupled-channel data.

This module stores the numbers, faithfully grouped, and does not evaluate potentials: turning the coefficient tables into V(r, E) means reimplementing om-retrieve’s formula zoo (dispersive integrals included), which is out of scope. jrange < 0 (volume-integral convention) is preserved as PotentialComponent.as_volume_integral.

Beware the number format: depths appear as .00000+0 and -3.00000-1 – Fortran exponents with the E elided – which float() rejects.

class nook.sources.ripl3.optical.PotentialRange(e_max_mev, radius_coefficients, diffuseness_coefficients, strength_coefficients)[source]

Bases: object

One energy range of one component: geometry and strength coefficients.

e_max_mev: float
radius_coefficients: tuple[float, ...]
diffuseness_coefficients: tuple[float, ...]
strength_coefficients: tuple[float, ...]
class nook.sources.ripl3.optical.PotentialComponent(kind: 'str', ranges: 'tuple[PotentialRange, ...]', as_volume_integral: 'bool' = False)[source]

Bases: object

kind: str
ranges: tuple[PotentialRange, ...]
as_volume_integral: bool = False

jrange was negative: coefficients give volume integrals instead of potential strengths.

class nook.sources.ripl3.optical.OpticalPotential(ripl_id, projectile, author, reference, summary, e_range_mev, z_range, a_range, model, relativistic, dispersive, components, coulomb=())[source]

Bases: object

One archive entry, applicability plus coefficient tables.

ripl_id: int
projectile: str
author: str
reference: str
summary: str
e_range_mev: tuple[float, float]
z_range: tuple[int, int]
a_range: tuple[int, int]
model: int
relativistic: int
dispersive: int
components: tuple[PotentialComponent, ...]
coulomb: tuple[tuple[float, ...], ...] = ()

(ecoul, rcoul0, rcoul, rcoul1, rcoul2, beta, acoul, rcoul3) rows.

applies_to(nuclide=None, energy_mev=None)[source]

Whether the entry covers the given nuclide and/or energy.

Either filter may be given alone; an omitted one is not checked.

class nook.sources.ripl3.optical.Deformation(nuclide, energy_kev, spin, parity, multipole, beta, reference)[source]

Bases: object

A row of om-deformations.dat: an excited-level beta_L.

nuclide: Nuclide
energy_kev: float
spin: float
parity: int
multipole: int
beta: float
reference: str
nook.sources.ripl3.optical.load_optical_potentials(path, nuclide=None, projectile=None, ripl_id=None, energy_mev=None)[source]

Archive entries, optionally filtered by applicability.

nook.sources.ripl3.optical.load_deformations(path, nuclide)[source]

Excited-level deformation parameters for coupled-channel calculations.