Profile-Based NLTE Corrections (Experimental)#
PySME also contains an experimental profile-based NLTE correction layer.
This is separate from the standard sme.nlte departure-coefficient workflow.
sme.nltecontrols traditional NLTE calculations based on element-specific NLTE grids and departure coefficients.sme.profile_nltecontrols profile corrections that are applied to selected wavelength regions after synthesis.
At the moment this interface is experimental and intentionally conservative.
Current Scope#
The current implementation supports:
one element provider at a time
a provider may internally cover multiple lines / multiple wavelength windows for that element
a default provider for hydrogen:
pysme_h_3dnlte_rbf
The current hydrogen provider is treated as one bundle. It is not a per-line toggle. If the provider is enabled, it operates on its supported Balmer-line windows as one provider.
Multiple profile-NLTE element providers at the same time are currently not supported.
Enable The Feature#
Use the sme.profile_nlte object:
from pysme.sme import SME_Structure
sme = SME_Structure()
sme.profile_nlte.enabled = True
sme.profile_nlte.element = "H"
You may optionally set the provider explicitly:
sme.profile_nlte.provider = "pysme_h_3dnlte_rbf"
If provider is left as None, PySME uses the default provider for the selected element.
Current Hydrogen Provider#
The built-in hydrogen provider currently supports these air-wavelength windows:
4335.0 - 4345.0 A4855.0 - 4868.0 A6550.0 - 6575.0 A
These correspond to the current bundled Balmer-line correction windows.
Runtime Summary#
After synthesis, PySME writes the provider status to:
sme.profile_nlte.summary
The summary currently includes:
requestedappliedelementproviderspeciesprofile_kinddata_keydata_sourceparameter_axesreference_labelcitation_infosupported_windows_airapplied_windows_airfallbackfallback_reason
Example:
{
"requested": True,
"applied": True,
"element": "H",
"provider": "pysme_h_3dnlte_rbf",
"species": "H 1",
"profile_kind": "intensity_ratio",
"data_key": "data.hlineprof",
"data_source": "lineprof.dat",
"parameter_axes": ["teff", "logg", "monh", "mu"],
"reference_label": "PySME bundled hydrogen profile dataset",
"citation_info": None,
"supported_windows_air": [
[4335.0, 4345.0],
[4855.0, 4868.0],
[6550.0, 6575.0],
],
"applied_windows_air": [
[6550.0, 6575.0],
],
"fallback": False,
"fallback_reason": None,
}
This is the recommended way to determine whether a synthesis actually used the profile-based correction.
Provider Metadata#
Each provider is described internally by a manifest-like metadata object. This provider metadata is what drives:
the default provider mapping for each element
supported wavelength windows
the species check
summary metadata shown to the user
future reference / citation bookkeeping
For the current hydrogen provider, PySME records:
the provider name
the element and species
the supported windows
the profile kind
the data location key
the bundled data-source name
a short reference label
an optional citation payload
For the current hydrogen provider, the scientific reference is:
Amarsi et al. (2018, A&A, 615, A139)
Effective temperature determinations of late-type stars based on 3D non-LTE Balmer line formation
The provider summary therefore includes both:
reference_labelcitation_info
so the citation can be surfaced directly to users and downstream tooling.
Fallback Behavior#
If the provider is requested but cannot be applied, PySME leaves the synthesis on the standard path and records the reason in sme.profile_nlte.summary.
Current fallback reasons include:
no_wavelength_overlapthe current synthesis window does not overlap any provider-supported wavelength region
no_matching_species_in_linelistthe current linelist does not contain the provider species
outside_profile_gridthe stellar parameters fall outside the supported provider grid
When one of these cases occurs, PySME also emits a WARNING-level log message.
Relationship To The Legacy Flag#
The old hydrogen-only flag
sme.tdnlte_H = True
is still accepted for backward compatibility.
Internally, it now maps onto the new profile-NLTE request path and fills sme.profile_nlte.summary.
New code should prefer sme.profile_nlte.
Important Limitations#
This is currently an experimental feature.
It is not a replacement for
sme.nlte.It is not yet a general multi-element profile-correction framework.
Only one profile-NLTE element provider can be active at a time.
The current hydrogen provider is handled as one element-level bundle, not as independently switchable individual lines.