[Mesa-users] Resolving TP-AGB
Théo-Courty
tcourty at apc.in2p3.fr
Thu Mar 26 11:51:00 UTC 2026
Dear Mesa users,
I’m trying to evolve stars with mass varying between 1-5 Msun from ZAMS to white dwarf cooling track with version r25.12.1. However, I encounter numerical difficulties during the late TP-AGB phase for a 5Msun model with Z=0.012 (remaining mass ~1.25 Msun). The first thermal pulses go smoothly, but the late evolution struggles and the timestep becomes small and goes into a loop of increase/decrease between -3 < log dt < -2.5. The limiting factor for dt is labelled as max increase until a retry and loops like this. I tried to lower max_timestep_factor to 1.01 but it does not solve the issue. I observe a lot of retries during that part of evolution until crash due to min_timestep_limit.
I am fairly new to mesa and not very experienced with debugging. Here are typical examples of error messages I get:
avg resid 0.223E-06 max resid dv_dt 1 0.35367E-03 mix type xx000 avg corr 0.474E-03 max corr lnd 451 -0.21100E-01 mix type 00000 avg+max corr+resid -- give up
hydro_mtx: logT too small 26764 407 3 6.7237179921904777D-01 5.3757388036508846D+00
hydro_mtx: logRho too large 26738 421 5 5.6268674362592407D+01 -7.8503397605837941D+00
I tried to include okay_to_reduce_gradT_excess = .true. which I found used in some inlists online, but with this parameter activated the star shows non-physical behavior (log L > 10^5-6 with few small timesteps) so I keep it to false.
Please find below the enlists I use which are based on make_co_wd test_suite which I modified to include element diffusion during MS and thermal pulses to remove the enveloppe instead of remove_env routine. Thanks a lot!
Best regards,
Théo
Common inlist for shared parameters
&star_job
show_log_description_at_start = .false.
change_net = .true.
new_net_name = 'co_burn_extras.net'
! age start at ZAMS
set_initial_age = .false.
set_initial_model_number = .false.
num_special_rate_factors = 2
reaction_for_special_factor(1) = 'r_c12_ag_o16'
special_rate_factor(1) = 1
filename_of_special_rate(1) = 'c12ag_deboer_sigma_0p0_2000_Tgrid.dat'
reaction_for_special_factor(2) = 'r_he4_he4_he4_to_c12'
special_rate_factor(2) = 1
filename_of_special_rate(2) = 'r_he4_he4_he4_to_c12_cf88.txt'
/ ! end of star_job namelist
&eos
/ ! end of eos namelist
&kap
Zbase = 1.2d-02
kap_file_prefix = 'gs98'
use_Type2_opacities = .true.
/ ! end of kap namelist
&controls
initial_mass = 5.00d+00
! winds
cool_wind_full_on_T = 9.99d9
hot_wind_full_on_T = 1d10
cool_wind_RGB_scheme = 'Reimers'
cool_wind_AGB_scheme = 'Blocker'
RGB_to_AGB_wind_switch = 1d-4
Reimers_scaling_factor = 0.1d0
Blocker_scaling_factor = 0.2d0
! when to stop
max_age = 1.4d+10
! mesh
max_allowed_nz = 20000 ! preventing 'fail to adjust mesh'
! diffusion
diffusion_v_max = 1d-5
do_element_diffusion = .false. ! Activated during MS and settling only
diffusion_use_full_net = .true.
! Solver controls.
diffusion_use_cgs_solver = .true.
diffusion_use_isolve = .true.
diffusion_rtol_for_isolve = 1d-4
diffusion_atol_for_isolve = 1d-5
diffusion_min_X_hard_limit = -1d-4
diffusion_maxsteps_for_isolve = 1000
diffusion_isolve_solver = 'ros2_solver'
! Timestep controls to prevent steps that are difficult for diffusion.
diffusion_steps_limit = 20
diffusion_steps_hard_limit = 150
diffusion_iters_limit = 50
diffusion_iters_hard_limit = 100
! convection
mlt_option = 'Henyey'
mixing_length_alpha = 1.8
use_Ledoux_criterion = .true.
thermohaline_coeff = 1d2
! timesteps
max_years_for_timestep = 1d7
time_delta_coeff = 1.0d0
use_gold2_tolerances = .true.
varcontrol_target = 1d-3
dX_nuc_drop_limit = 1d-2
delta_HR_limit = 0.1
! Atm
atm_option = 'T_tau'
atm_T_tau_relation = 'Eddington'
atm_T_tau_opacity = 'iterated'
atm_T_tau_max_iters = 100
! Overshoot
overshoot_scheme(1) = 'exponential'
overshoot_zone_type(1) = 'any'
overshoot_zone_loc(1) = 'any'
overshoot_bdy_loc(1) = 'any'
overshoot_f(1) = 0.014
overshoot_f0(1) = 0.004
/ ! end of controls namelist
AGB inlist
&star_job
load_saved_model = .true.
load_model_filename = 'end_he_core_burn.mod'
save_model_when_terminate = .true.
save_model_filename = 'end_AGB.mod'
required_termination_code_string = ''
set_initial_model_number = .true.
initial_model_number = 0
pgstar_flag = .true.
/ ! end of star_job namelist
&eos
/ ! end of eos namelist
&kap
/ ! end of kap namelist
&controls
log_directory = 'LOGS_AGB'
! energy conservation
energy_eqn_option = 'eps_grav'
use_time_centered_eps_grav = .true.
! when to stop
envelope_mass_limit = 1e-3
! winds
max_wind = 1d-2
! solver
retry_hold = 0
neg_mass_fraction_hold = 3
! mesh
mesh_delta_coeff = 1.0
! convection & dragging
num_cells_for_smooth_gradL_composition_term = 0
drag_coefficient = 1d0
min_q_for_drag = 0.98d0
alpha_semiconvection = 0.1
! timesteps
varcontrol_target = 1d-4
delta_lgL_He_limit = 0.005
lgL_He_burn_min = 2.0
dX_nuc_drop_limit = 1d-3
delta_HR_limit = 0.1
max_timestep_factor = 1.01d0
delta_lgTeff_limit = 0.005
delta_lgTeff_hard_limit = 0.01
delta_lgL_limit = 0.02
delta_lgL_hard_limit = 0.05
! output
num_trace_history_values = 2
trace_history_value_name(1) = 'rel_E_err'
trace_history_value_name(2) = 'log_rel_run_E_err'
!report_solver_progress = .true. ! set true to see info about solver iterations
!report_ierr = .true. ! if true, produce terminal output when have some internal error
!stop_for_bad_nums = .true.
/ ! end of controls namelist
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.mesastar.org/pipermail/mesa-users/attachments/20260326/955798f3/attachment.htm>
More information about the Mesa-users
mailing list