solprop.nonlinear.tdse#
Declare the immutable, provider-independent helium TDSE response specification.
All physical quantities use SI. The optional atomic package is imported only by
its runtime adapter, never by these records. See SEP 12 for the distinct linear,
cubic and ionisation calibrations and the restricted first implementation, and
SEP 20 for the haCC two-electron model (HaccBasis), the atomic time
window (TDSEAtomicWindow) and the weak-field consistency policy
(TDSEConsistency).
Module Attributes
The three explicit cubic retention or replacement policies of SEP 12. |
|
The atomic model family: single active electron, or two-electron haCC (SEP 20). |
Classes
|
Describe a helium haCC model and basis, a provider preset or a custom one. |
|
Drive the atom only over an interval of the optical lattice (SEP 20, 4.6). |
|
Describe a fully resolved helium atomic basis without native objects. |
|
Record the qualification status and domain of one calibration. |
|
Set the policy of the haCC weak-field linear consistency check (SEP 20, 5.4). |
|
Declare runtime resources separately from the atomic scientific model. |
|
Own the complete electronic nonlinear response of scalar helium. |
|
Specify integer refinement of the existing fine response lattice. |
- class solprop.nonlinear.tdse.HaccBasis(ions, neutral_square, radial_edges, radial_orders, angular_limit, angular_order, scaling_radius, scaling_angle, infinite_order, decay, gauge_radius, cut_energy, max_step_au, *, source, preset=None)[source]#
Bases:
objectDescribe a helium haCC model and basis, a provider preset or a custom one.
haCC (hybrid anti-symmetrised coupled channels; Majety, Zielinski and Scrinzi, New J. Phys. 17, 063002, 2015, doi:10.1088/1367-2630/17/6/063002) expands the two-electron state as a correlated neutral plus antisymmetrised products of frozen He+ channels with an active electron on a radial finite-element axis absorbed by infinite-range exterior complex scaling beyond
scaling_radius. Every field is SI exceptmax_step_au, an explicitly named exception that preserves the provider’s exact binary step ceiling in atomic units of time.- Attributes:
- ions{1, 2}
Frozen He+ shells
n <= ions: 1 is haCC(1) (the 1s channel), 2 is haCC(5) (1s, 2s, 2p0 and 2p+-1).- neutral_squareint
Largest
lof the correlated neutral’s(l, l, 0)squares, 0 to 7.- radial_edgestuple of float
Element boundaries in m, from zero, strictly increasing.
- radial_orderstuple of int
Points per element, each 2 to 64.
- angular_limit{‘particle’, ‘total’}
Whether
angular_orderbounds the active electron’slor the totalL.- angular_orderint
The angular bound, 1 to 120.
- scaling_radiusfloat
R0 in m, exactly a nonzero radial edge, where irECS starts.
- scaling_anglefloat
irECS angle in rad, strictly between 0 and pi/2.
- infinite_orderint
Points of the infinite element, 1 to 64.
- decayfloat
Positive infinite-element decay exponent in 1/m.
- gauge_radiusfloat or None
Rg in m, a radial edge strictly inside R0: length gauge inside, velocity gauge outside (the mixed gauge).
Noneis the pure velocity-gauge control, representable only for a custom basis.- cut_energyfloat
Positive spectral cut above the ground root in J.
- max_step_aufloat
Positive largest RK4 step in atomic units of time.
- sourcestr
Provenance: the preset’s evidence, or the user’s reasons for a custom basis.
- presetstr or None
The provider’s preset identity,
hacc-helium-<1|5>-v<version>-<16 hex>for the standard numerics orhacc-helium-<1|5>-fast-v<version>-<16 hex>for the fast variant, orNonefor a custom basis. Its model number must agree withions.
- Raises:
- MaterialError
If a field is out of range, of the wrong type or inconsistent.
Examples
>>> from solprop.nonlinear.tdse import HaccBasis >>> a0 = 5.29177210544e-11 >>> basis = HaccBasis( ... 1, 1, tuple(x * a0 for x in (0.0, 1.0, 4.0, 12.0)), (6, 6, 6), ... "particle", 2, 12 * a0, 0.15, 6, 1.0 / a0, 4 * a0, 1e-16, 0.05, ... source="tiny unconverged custom basis", ... ) >>> basis.label, basis.qualified ('haCC(1) (custom)', False)
- property identity: str[source]#
Return the SHA-256 identity of every field, tagged as a haCC basis.
The
kindtag keeps a haCC identity distinct from any SAETDSEBasisidentity;presetdistinguishes a preset from a custom basis with the same numbers.- Returns:
- str
Hexadecimal digest of canonical JSON with
kind="hacc_helium".
- property label: str[source]#
Return the model’s name, with
(custom)for a non-preset basis.- Returns:
- str
haCC(1)orhaCC(5), followed by `` fast`` for the fast preset variant and by `` (custom)`` whenpresetisNone.
- class solprop.nonlinear.tdse.TDSEAtomicWindow(duration=None, taper=5e-15)[source]#
Bases:
objectDrive the atom only over an interval of the optical lattice (SEP 20, 4.6).
The atom starts from its ground state at the first lattice sample at or after
-duration / 2and stops at the last at or before+duration / 2. The drive and the nonlinear source are both multiplied by the same gate: a Planck taper of widthtaperinside each end, one between the tapers and zero outside. The gate is the source gate of the windowed response, so a window needs the native closure, whose source is gated. Dropping the field outside the window is a finite-memory approximation, not a property of FFT padding.- Attributes:
- durationfloat or None
Nominal atomic duration in s, finite and positive.
Noneis resolved from the capillary request’strange; a direct construction must give it.- taperfloat
Width of each inner Planck taper in s, finite and positive; it must be less than half the duration.
- Raises:
- MaterialError
If a value is non-finite, non-positive, boolean, or the taper is not shorter than half the duration.
- class solprop.nonlinear.tdse.TDSEBasis(name, radial_edges, radial_orders, lmax, cut_energy, *, source, m=0, potential='helium_tong05', potential_version=1, scaling_radius=None, scaling_angle=None, infinite_order=None, decay=None, cuts=())[source]#
Bases:
objectDescribe a fully resolved helium atomic basis without native objects.
- Attributes:
- namestr
Descriptive preset or custom-basis name; numerical fields are authoritative.
- radial_edgestuple of float
Increasing finite-element boundaries in m, beginning at zero.
- radial_orderstuple of int
Gauss-Lobatto points per finite element, each between 2 and 64.
- lmaxint
Largest angular momentum, nonnegative and at most 4096.
- cut_energyfloat
Positive spectral cut in J.
- sourcestr
Provenance for the numerical choices.
- mint
Magnetic quantum number; the initial helium route requires zero.
- potentialstr
Built-in provider identity, initially
helium_tong05only.- potential_versionint
Positive revision of the provider’s potential definition.
- scaling_radiusfloat or None
Exterior-complex-scaling boundary in m, exactly a positive radial edge.
- scaling_anglefloat or None
Scaling angle in rad, strictly between zero and pi/2.
- infinite_orderint or None
Infinite-element points, between 1 and 64.
- decayfloat or None
Positive infinite-element decay exponent in 1/m.
- cutstuple of float
Optional observation boundaries in m, increasing positive edges below the physical boundary. Scaling fields must all be given or all absent.
- class solprop.nonlinear.tdse.TDSECalibration(identity, status, basis_identity, wavelength_range, *, source, uncertainty=None, limitations=())[source]#
Bases:
objectRecord the qualification status and domain of one calibration.
- Attributes:
- identitystr
Persistent identity of the measured or explicitly provisional record.
- status{‘research’, ‘qualified’}
Whether the declared domain has supporting qualification evidence.
- basis_identitystr
Identity of the resolved basis used for that record.
- wavelength_rangetuple of float
Increasing positive wavelength bounds in m; these describe the stated calibration, not arbitrary broadband frequency mixing.
- sourcestr
Evidence reference, including the source of a research hypothesis.
- uncertaintyfloat or None
Nonnegative finite relative uncertainty; required for a qualified record.
- limitationstuple of str
Explicit interpretation limits; a research record requires at least one.
- class solprop.nonlinear.tdse.TDSEConsistency(warn=0.1, refuse=0.3, enforce=True)[source]#
Bases:
objectSet the policy of the haCC weak-field linear consistency check (SEP 20, 5.4).
Before the first propagation call of a haCC run the per-atom linear susceptibility of the model is compared with optmat’s helium through the ratio kappa_1.
|kappa_1 - 1| <= warnpasses, up torefusewarns, above it refuses; an invalid extraction always refuses. These are policy, not physics: they never enter a descriptor, identity or resume key.- Attributes:
- warnfloat
Positive finite warning bound on
|kappa_1 - 1|; default 0.1.- refusefloat
Finite refusal bound, at least
warn; default 0.3, the range of gross errors (an electron count applied twice, a sign, a unit).- enforcebool
False skips the check entirely, with a warning: no atomic call, no cache.
- Raises:
- MaterialError
If a bound is boolean, non-finite, non-positive or
warn > refuse.
- class solprop.nonlinear.tdse.TDSEExecution(device='cpu', memory_limit=None, max_batch_rows=32, max_atomic_calls=None, complement='deterministic')[source]#
Bases:
objectDeclare runtime resources separately from the atomic scientific model.
- Attributes:
- device{‘cpu’, ‘cuda’, ‘hip’}
Required installed provider execution family; there is no implicit fallback.
- memory_limitint or None
Positive persistent-memory budget in bytes, or no explicit limit.
- max_batch_rowsint
Positive maximum number of radial rows in one provider call.
- max_atomic_callsint or None
Positive limit on attempted provider calls, including failures and diagnostics.
- complement{‘deterministic’, ‘vendor_blas’}
Explicit provider projector arithmetic; availability is checked at preparation.
- class solprop.nonlinear.tdse.TDSEGasResponse(target, basis, max_atomic_step, kerr_model, remainder_scale, calibration, sampling, *, cubic_scale=None, model='sae', atomic_window='auto', consistency=TDSEConsistency(warn=0.1, refuse=0.3, enforce=True))[source]#
Bases:
objectOwn the complete electronic nonlinear response of scalar helium.
- Attributes:
- targetstr
Initially
heliumonly, in its prepared ground state.- basisTDSEBasis or HaccBasis
Fully resolved atomic specification: an SAE radial, angular, spectral-cut and potential record for
model="sae", a haCC model and basis formodel="hacc".- max_atomic_stepfloat
Positive maximum internal atomic step in s; actual subdivision is recorded. For haCC it must equal
basis.max_step_auin seconds within two units in the last place; the provider receivesbasis.max_step_auitself.- kerr_model{‘optmat_cubic’, ‘tdse_shadow’, ‘tdse_native’}
Cubic replacement policy. The native option retains the complete native nonlinear current after first-order subtraction, with explicit scaling, and its source is always gated and edge-free (SEP 26): the remainder
Sis multiplied by the fine-grid temporal Planck collar, or by the atomic window’s gate when one is set, and the edge term is subtracted,F[g S] - F[g' S] / (i omega)on the active bins, the transform of the current held at its taper-weighted value after the window rather than switched off. The gate needs a steady-current certificate of at most 1e-10 on the lattice and band, checked at translation. Raw provider currents are unchanged; the cubic replacements are never gated. haCC admitstdse_nativeonly: the provider has no third order of its closed whole-atom current.- remainder_scalefloat
Positive finite dimensionless current-remainder scale. Applied after subtracting the raw first-order current for
tdse_native, or the raw first- and third-order currents for the other policies. Native scale 1 retains the unscaled nonlinearity; any other positive value is explicit. haCC requires exactly 1.0: its current is already the whole atom’s.- calibrationTDSECalibration
Separate evidence identity and domain; never an implicit electron multiplier.
- samplingTDSESampling
Response-lattice refinement policy.
- cubic_scalefloat or None
Positive finite dimensionless third-order dipole scale, required only for
tdse_shadow. It is independent ofremainder_scale.- model{‘sae’, ‘hacc’}
Atomic model family, which must match the basis type.
- atomic_windowTDSEAtomicWindow, ‘auto’ or None
Interval of the optical lattice the atom is driven over.
"auto"resolves toNone(the full lattice) for SAE and toTDSEAtomicWindow()(the requested duration, 5 fs tapers) for haCC. An explicitNoneselects the full lattice for haCC too.- consistencyTDSEConsistency
Policy of the haCC weak-field linear check; only the default is admitted for SAE. Never part of a descriptor, identity or resume key.
- atomic_window: TDSEAtomicWindow | Literal['auto'] | None = 'auto'#
- calibration: TDSECalibration#
- consistency: TDSEConsistency = TDSEConsistency(warn=0.1, refuse=0.3, enforce=True)#
- sampling: TDSESampling#
- property traits: ResponseTraits[source]#
Return the scalar real-field memory response traits.
- Returns:
- ResponseTraits
Field-grid, scalar, density-dependent temporal response.
- solprop.nonlinear.tdse.TDSEKerrModel#
The three explicit cubic retention or replacement policies of SEP 12.
alias of
Literal[‘optmat_cubic’, ‘tdse_shadow’, ‘tdse_native’]
- solprop.nonlinear.tdse.TDSEModel#
The atomic model family: single active electron, or two-electron haCC (SEP 20).
alias of
Literal[‘sae’, ‘hacc’]
- class solprop.nonlinear.tdse.TDSESampling(refinement=1)[source]#
Bases:
objectSpecify integer refinement of the existing fine response lattice.
- Attributes:
- refinementint
Positive power of two multiplying the existing fine sample count. The coarse spectrum, time window and collars stay fixed. No tail taper, endpoint duplication or field-area correction is applied.