Model Configurations
See also
Parameter Reference for all available parameters. Examples for direct model calculation examples.
TopHat + ISM (Default)
The default configuration uses a top-hat jet in a uniform ISM environment with forward shock synchrotron emission:
# Basic configuration
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="tophat", medium="ism")
# Basic parameter set
params = [
ParamDef("E_iso", 1e50, 1e54, Scale.log), # Isotropic energy in erg
ParamDef("Gamma0", 10, 500, Scale.log), # Lorentz factor
ParamDef("theta_c", 0.01, 0.5, Scale.linear), # Opening angle in radians
ParamDef("theta_v", 0, 0, Scale.fixed), # Viewing angle (on-axis) in radians
ParamDef("n_ism", 1e-3, 100, Scale.log), # Number density in cm^-3
ParamDef("p", 2.1, 2.8, Scale.linear), # Electron spectral index
ParamDef("eps_e", 1e-3, 0.5, Scale.log), # Electron energy fraction
ParamDef("eps_B", 1e-5, 0.1, Scale.log), # Magnetic energy fraction
ParamDef("xi_e", 0.1, 1.0, Scale.linear), # Fraction of accelerated electrons
]
Jet Structure Variations
Power-law Structured Jet
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="powerlaw", medium="ism")
params = [
# Basic jet parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.3, Scale.linear),
ParamDef("theta_v", 0, 0.5, Scale.linear), # Allow off-axis viewing
# Power-law structure parameters
ParamDef("k_e", 1.5, 3.0, Scale.linear), # Energy power-law index, default 2.0 if not specified
ParamDef("k_g", 1.5, 3.0, Scale.linear), # Lorentz factor power-law, default 2.0 if not specified
# Medium and microphysics (same as default)
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Gaussian Structured Jet
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="gaussian", medium="ism")
params = [
# Basic parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.02, 0.2, Scale.linear), # Gaussian width parameter
ParamDef("theta_v", 0, 0.5, Scale.linear),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Two-Component Jet
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="two_component", medium="ism")
params = [
# Narrow component
ParamDef("E_iso", 1e50, 1e53, Scale.log), # Core energy
ParamDef("Gamma0", 100, 500, Scale.log), # Core Lorentz factor
ParamDef("theta_c", 0.01, 0.1, Scale.linear), # Core angle
# Wide component
ParamDef("E_iso_w", 1e49, 1e52, Scale.log), # Wide energy in erg
ParamDef("Gamma0_w", 10, 100, Scale.log), # Wide Lorentz factor
ParamDef("theta_w", 0.1, 0.5, Scale.linear), # Wide angle in radians
# Observation and medium (same as default)
ParamDef("theta_v", 0, 0.3, Scale.linear),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Step Power-law Jet
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="step_powerlaw", medium="ism")
params = [
# Core component (uniform)
ParamDef("E_iso", 1e51, 1e54, Scale.log), # Core energy
ParamDef("Gamma0", 50, 500, Scale.log), # Core Lorentz factor
ParamDef("theta_c", 0.01, 0.1, Scale.linear), # Core boundary
# Wing component (power-law)
ParamDef("E_iso_w", 1e49, 1e52, Scale.log), # Wing energy scale
ParamDef("Gamma0_w", 10, 100, Scale.log), # Wing Lorentz factor
ParamDef("k_e", 1.5, 3.0, Scale.linear), # Energy power-law
ParamDef("k_g", 1.5, 3.0, Scale.linear), # Lorentz factor power-law
# Standard parameters (same as default)
ParamDef("theta_v", 0, 0.3, Scale.linear),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Medium Type Variations
Stellar Wind Medium
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="tophat", medium="wind")
params = [
# Standard jet parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
# Wind medium parameter (replaces n_ism)
ParamDef("A_star", 1e-3, 1.0, Scale.log), # Wind parameter
# Standard microphysics (same as default)
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Stratified Medium: ISM-to-Wind
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="tophat", medium="wind")
params = [
# Standard jet parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
# Stratified medium parameters
ParamDef("A_star", 1e-5, 0.1, Scale.log), # Wind strength (outer)
ParamDef("n0", 1e-3, 10, Scale.log), # ISM density (inner) in cm^-3
# Standard microphysics (same as default)
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Stratified Medium: Wind-to-ISM
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="tophat", medium="wind")
params = [
# Standard jet parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
# Stratified medium (wind -> ISM)
ParamDef("A_star", 1e-3, 1.0, Scale.log), # Inner wind strength
ParamDef("n_ism", 1e-3, 100, Scale.log), # Outer ISM density
# Standard microphysics (same as default)
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Stratified Medium: ISM-Wind-ISM
fitter = Fitter(z=1.58, lumi_dist=3.364e28, jet="tophat", medium="wind")
params = [
# Standard jet parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
# Three-zone stratified medium
ParamDef("A_star", 1e-4, 0.1, Scale.log), # Wind parameter (middle)
ParamDef("n_ism", 1e-3, 100, Scale.log), # Outer ISM density
ParamDef("n0", 1e-2, 20, Scale.log), # Inner ISM density
# Standard microphysics (same as default)
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Important
Stratified Medium Physics:
A_star = 0: Pure ISM with density n_ism
n0 = infinity: Pure wind profile from center
A_star > 0, n0 < infinity: ISM-wind-ISM stratification
A_star > 0, n0 = infinity: Wind-ISM stratification
Density Profile: Inner (r < r1): n = n0, Middle (r1 < r < r2): n proportional to A_star/r^2, Outer (r > r2): n = n_ism
Reverse Shock
Basic Reverse Shock
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="tophat", medium="ism",
rvs_shock=True,
)
params = [
# Standard jet and medium parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
ParamDef("n_ism", 1e-3, 100, Scale.log),
# Jet duration (important for reverse shock)
ParamDef("tau", 1, 1e6, Scale.log), # Jet duration in seconds
# Forward shock microphysics (same as default)
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
# Reverse shock microphysics (can be different)
ParamDef("p_r", 2.1, 2.8, Scale.linear),
ParamDef("eps_e_r", 1e-3, 0.5, Scale.log),
ParamDef("eps_B_r", 1e-5, 0.1, Scale.log),
ParamDef("xi_e_r", 0.1, 1.0, Scale.linear),
]
Reverse Shock with Structured Jet
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="gaussian", medium="ism",
rvs_shock=True,
)
params = [
# Gaussian jet parameters
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 50, 500, Scale.log),
ParamDef("theta_c", 0.02, 0.2, Scale.linear),
ParamDef("theta_v", 0, 0.5, Scale.linear),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("tau", 1, 1e6, Scale.log),
# Forward + reverse shock microphysics
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
ParamDef("p_r", 2.1, 2.8, Scale.linear),
ParamDef("eps_e_r", 1e-3, 0.5, Scale.log),
ParamDef("eps_B_r", 1e-5, 0.1, Scale.log),
ParamDef("xi_e_r", 0.1, 1.0, Scale.linear),
]
Inverse Compton Radiation
For the physical details of inverse Compton and Klein-Nishina corrections, see GRB Afterglow Physics.
Forward Shock Inverse Compton
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="tophat", medium="ism",
fwd_ssc=True,
kn=True,
)
params = [
# Standard parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Reverse Shock Inverse Compton
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="tophat", medium="ism",
rvs_shock=True,
fwd_ssc=True,
rvs_ssc=True,
kn=True,
)
params = [
# Standard parameters with reverse shock
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("tau", 1, 100, Scale.log),
# Forward + reverse microphysics
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
ParamDef("p_r", 2.1, 2.8, Scale.linear),
ParamDef("eps_e_r", 1e-3, 0.5, Scale.log),
ParamDef("eps_B_r", 1e-5, 0.1, Scale.log),
ParamDef("xi_e_r", 0.1, 1.0, Scale.linear),
]
Energy Injection
Magnetar Spin-down Injection
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="tophat", medium="ism",
magnetar=True,
)
params = [
# Standard jet and medium parameters (same as default)
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.5, Scale.linear),
ParamDef("theta_v", 0, 0, Scale.fixed),
ParamDef("n_ism", 1e-3, 100, Scale.log),
# Magnetar injection parameters
ParamDef("L0", 1e42, 1e48, Scale.log), # Initial luminosity [erg/s]
ParamDef("t0", 10, 1000, Scale.log), # Spin-down timescale [s]
ParamDef("q", 1.5, 3.0, Scale.linear), # Power-law index
# Standard microphysics (same as default)
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Note
Magnetar Injection Profile: L(t) = L0 x (1 + t/t0)^(-q) for theta < theta_c
Magnetar with Structured Jet
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="powerlaw", medium="ism",
magnetar=True,
)
params = [
# Power-law jet with magnetar
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 10, 500, Scale.log),
ParamDef("theta_c", 0.01, 0.3, Scale.linear),
ParamDef("k_e", 1.5, 3.0, Scale.linear),
ParamDef("k_g", 1.5, 3.0, Scale.linear),
ParamDef("theta_v", 0, 0.5, Scale.linear),
ParamDef("n_ism", 1e-3, 100, Scale.log),
# Magnetar parameters
ParamDef("L0", 1e42, 1e48, Scale.log),
ParamDef("t0", 10, 1000, Scale.log),
ParamDef("q", 1.5, 3.0, Scale.linear),
# Standard microphysics
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
]
Complex Model Combinations
Full Physics: Structured Jet + Stratified Medium + Reverse Shock + IC + Magnetar
fitter = Fitter(
z=1.58, lumi_dist=3.364e28,
jet="gaussian", medium="wind",
rvs_shock=True,
fwd_ssc=True,
rvs_ssc=True,
kn=True,
magnetar=True,
)
params = [
# Gaussian jet
ParamDef("E_iso", 1e50, 1e54, Scale.log),
ParamDef("Gamma0", 50, 500, Scale.log),
ParamDef("theta_c", 0.02, 0.2, Scale.linear),
ParamDef("theta_v", 0, 0.5, Scale.linear),
ParamDef("tau", 1, 100, Scale.log),
# Stratified medium
ParamDef("A_star", 1e-4, 1.0, Scale.log),
ParamDef("n_ism", 1e-3, 100, Scale.log),
ParamDef("n0", 1e-2, 50, Scale.log),
# Magnetar injection
ParamDef("L0", 1e42, 1e48, Scale.log),
ParamDef("t0", 10, 1000, Scale.log),
ParamDef("q", 1.5, 3.0, Scale.linear),
# Forward shock microphysics
ParamDef("p", 2.1, 2.8, Scale.linear),
ParamDef("eps_e", 1e-3, 0.5, Scale.log),
ParamDef("eps_B", 1e-5, 0.1, Scale.log),
ParamDef("xi_e", 0.1, 1.0, Scale.linear),
# Reverse shock microphysics
ParamDef("p_r", 2.1, 2.8, Scale.linear),
ParamDef("eps_e_r", 1e-3, 0.5, Scale.log),
ParamDef("eps_B_r", 1e-5, 0.1, Scale.log),
ParamDef("xi_e_r", 0.1, 1.0, Scale.linear),
]
Warning
Complex Model Considerations:
- Use coarser resolution initially: resolution=(0.2, 0.7, 7)
- Increase live points: nlive=1000+
- Lower dlogz for better convergence: dlogz=0.05
- Consider parameter degeneracies in interpretation