LCOV - code coverage report
Current view: top level - star/private - star_profile_def.f90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 98.7 % 607 599
Test Date: 2025-05-08 18:23:42 Functions: 100.0 % 3 3

            Line data    Source code
       1              : ! ***********************************************************************
       2              : !
       3              : !   Copyright (C) 2014-2019  The MESA Team
       4              : !
       5              : !   This program is free software: you can redistribute it and/or modify
       6              : !   it under the terms of the GNU Lesser General Public License
       7              : !   as published by the Free Software Foundation,
       8              : !   either version 3 of the License, or (at your option) any later version.
       9              : !
      10              : !   This program is distributed in the hope that it will be useful,
      11              : !   but WITHOUT ANY WARRANTY; without even the implied warranty of
      12              : !   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      13              : !   See the GNU Lesser General Public License for more details.
      14              : !
      15              : !   You should have received a copy of the GNU Lesser General Public License
      16              : !   along with this program. If not, see <https://www.gnu.org/licenses/>.
      17              : !
      18              : ! ***********************************************************************
      19              : 
      20              :       module star_profile_def
      21              : 
      22              :       use star_def
      23              :       use utils_lib, only: StrLowCase
      24              : 
      25              :       implicit none
      26              : 
      27              :    ! profile column options
      28              : 
      29              :       ! abundances -- names from chem_Name array in chem_def
      30              :       ! nuclear reaction eps - names from reaction_Name array in rates_def
      31              :       ! nuclear reaction category eps - names from category_name array in net_def
      32              :       ! items specified in another file - include 'filename'
      33              :       ! star_data items from the following list
      34              : 
      35              :       integer, parameter :: p_zone = 1
      36              :       integer, parameter :: p_k = p_zone + 1
      37              :       integer, parameter :: p_log_Lrad_div_Ledd = p_k + 1
      38              :       integer, parameter :: p_log_Lconv_div_L = p_log_Lrad_div_Ledd + 1
      39              :       integer, parameter :: p_log_Lrad_div_L = p_log_Lconv_div_L + 1
      40              :       integer, parameter :: p_log_Lconv = p_log_Lrad_div_L + 1
      41              :       integer, parameter :: p_log_Lrad = p_log_Lconv + 1
      42              :       integer, parameter :: p_lum_conv_MLT = p_log_Lrad + 1
      43              :       integer, parameter :: p_lum_conv = p_lum_conv_MLT + 1
      44              :       integer, parameter :: p_lum_conv_div_lum_Edd = p_lum_conv + 1
      45              :       integer, parameter :: p_lum_rad_div_L_Edd = p_lum_conv_div_lum_Edd + 1
      46              :       integer, parameter :: p_lum_rad_div_L = p_lum_rad_div_L_Edd + 1
      47              : 
      48              :       integer, parameter :: p_lum_conv_div_L = p_lum_rad_div_L + 1
      49              :       integer, parameter :: p_lum_conv_div_lum_rad = p_lum_conv_div_L + 1
      50              :       integer, parameter :: p_lum_plus_lum_adv = p_lum_conv_div_lum_rad + 1
      51              :       integer, parameter :: p_lum_adv = p_lum_plus_lum_adv + 1
      52              :       integer, parameter :: p_lum_rad = p_lum_adv + 1
      53              :       integer, parameter :: p_log_abs_lum_erg_s = p_lum_rad + 1
      54              :       integer, parameter :: p_lum_erg_s = p_log_abs_lum_erg_s + 1
      55              :       integer, parameter :: p_L = p_lum_erg_s + 1
      56              :       integer, parameter :: p_luminosity = p_L + 1
      57              :       integer, parameter :: p_log_g = p_luminosity + 1
      58              :       integer, parameter :: p_grav = p_log_g + 1
      59              :       integer, parameter :: p_r_div_g = p_grav + 1
      60              :       integer, parameter :: p_g_div_r = p_r_div_g + 1
      61              :       integer, parameter :: p_eps_nuc_plus_nuc_neu = p_g_div_r + 1
      62              : 
      63              :       integer, parameter :: p_eps_nuc_minus_non_nuc_neu = p_eps_nuc_plus_nuc_neu + 1
      64              :       integer, parameter :: p_net_nuclear_energy = p_eps_nuc_minus_non_nuc_neu + 1
      65              :       integer, parameter :: p_net_energy = p_net_nuclear_energy + 1
      66              :       integer, parameter :: p_logL = p_net_energy + 1
      67              :       integer, parameter :: p_log_Ledd = p_logL + 1
      68              :       integer, parameter :: p_log_L_div_Ledd = p_log_Ledd + 1
      69              :       integer, parameter :: p_lum_div_Ledd = p_log_L_div_Ledd + 1
      70              :       integer, parameter :: p_signed_log_power = p_lum_div_Ledd + 1
      71              :       integer, parameter :: p_v_kms = p_signed_log_power + 1
      72              :       integer, parameter :: p_vel_km_per_s = p_v_kms + 1
      73              :       integer, parameter :: p_log_abs_v = p_vel_km_per_s + 1
      74              :       integer, parameter :: p_superad_reduction_factor = p_log_abs_v + 1
      75              :       integer, parameter :: p_gradT_excess_effect = p_superad_reduction_factor + 1
      76              :       integer, parameter :: p_log_diff_grads = p_gradT_excess_effect + 1
      77              :       integer, parameter :: p_diff_grads = p_log_diff_grads + 1
      78              : 
      79              :       integer, parameter :: p_v = p_diff_grads + 1
      80              :       integer, parameter :: p_velocity = p_v + 1
      81              :       integer, parameter :: p_rmid = p_velocity + 1
      82              :       integer, parameter :: p_logR_cm = p_rmid + 1
      83              :       integer, parameter :: p_radius_km = p_logR_cm + 1
      84              :       integer, parameter :: p_radius_cm = p_radius_km + 1
      85              :       integer, parameter :: p_radius = p_radius_cm + 1
      86              :       integer, parameter :: p_logR = p_radius + 1
      87              :       integer, parameter :: p_log_q = p_logR + 1
      88              :       integer, parameter :: p_q = p_log_q + 1
      89              :       integer, parameter :: p_log_dq = p_q + 1
      90              :       integer, parameter :: p_dq = p_log_dq + 1
      91              : 
      92              :       integer, parameter :: p_pgas_div_p =  p_dq + 1
      93              :       integer, parameter :: p_pgas_div_ptotal = p_pgas_div_p + 1
      94              : 
      95              :       integer, parameter :: p_prad_div_pgas = p_pgas_div_ptotal + 1
      96              :       integer, parameter :: p_prad_div_pgas_div_L_div_Ledd = p_prad_div_pgas + 1
      97              : 
      98              :       integer, parameter :: p_log_dmbar_m_div_r = p_prad_div_pgas_div_L_div_Ledd + 1
      99              :       integer, parameter :: p_dmbar_m_div_r = p_log_dmbar_m_div_r + 1
     100              :       integer, parameter :: p_m_div_r = p_dmbar_m_div_r + 1
     101              :       integer, parameter :: p_mass_grams = p_m_div_r + 1
     102              :       integer, parameter :: p_log_mass = p_mass_grams + 1
     103              :       integer, parameter :: p_mass = p_log_mass + 1
     104              :       integer, parameter :: p_mmid = p_mass + 1
     105              : 
     106              :       integer, parameter :: p_dm = p_mmid + 1
     107              :       integer, parameter :: p_dm_bar = p_dm + 1
     108              : 
     109              :       integer, parameter :: p_m_grav = p_dm_bar + 1
     110              :       integer, parameter :: p_mass_correction_factor = p_m_grav + 1
     111              :       integer, parameter :: p_m_grav_div_m_baryonic = p_mass_correction_factor + 1
     112              : 
     113              :       integer, parameter :: p_xr = p_m_grav_div_m_baryonic + 1
     114              :       integer, parameter :: p_xr_cm = p_xr + 1
     115              :       integer, parameter :: p_xr_div_R = p_xr_cm + 1
     116              :       integer, parameter :: p_log_xr = p_xr_div_R + 1
     117              :       integer, parameter :: p_log_xr_cm = p_log_xr + 1
     118              :       integer, parameter :: p_log_xr_div_R = p_log_xr_cm + 1
     119              : 
     120              :       integer, parameter :: p_xm = p_log_xr_div_R + 1
     121              :       integer, parameter :: p_xq = p_xm + 1
     122              :       integer, parameter :: p_logxq = p_xq + 1
     123              :       integer, parameter :: p_logxm = p_logxq + 1
     124              : 
     125              :       integer, parameter :: p_log_radial_depth = p_logxm + 1
     126              :       integer, parameter :: p_log_column_depth = p_log_radial_depth + 1
     127              :       integer, parameter :: p_dRstar_div_dr =p_log_column_depth + 1
     128              :       integer, parameter :: p_dr_div_R =p_dRstar_div_dr + 1
     129              : 
     130              :       integer, parameter :: p_log_dr_div_R = p_dr_div_R + 1
     131              :       integer, parameter :: p_r_div_R = p_log_dr_div_R + 1
     132              :       integer, parameter :: p_log_dr = p_r_div_R + 1
     133              :       integer, parameter :: p_log_dr_div_rmid = p_log_dr + 1
     134              :       integer, parameter :: p_dr_div_rmid = p_log_dr_div_rmid + 1
     135              :       integer, parameter :: p_dlogR = p_dr_div_rmid + 1
     136              : 
     137              :       integer, parameter :: p_cell_internal_energy_fraction_start = p_dlogR + 1
     138              :       integer, parameter :: p_cell_internal_energy_fraction = p_cell_internal_energy_fraction_start + 1
     139              : 
     140              :       integer, parameter :: p_log_rel_E_err = p_cell_internal_energy_fraction + 1
     141              :       integer, parameter :: p_ergs_error_integral = p_log_rel_E_err + 1
     142              :       integer, parameter :: p_ergs_rel_error_integral = p_ergs_error_integral + 1
     143              :       integer, parameter :: p_ergs_error = p_ergs_rel_error_integral + 1
     144              : 
     145              :       integer, parameter :: p_t_rad = p_ergs_error + 1
     146              :       integer, parameter :: p_log_t_rad = p_t_rad + 1
     147              :       integer, parameter :: p_log_dt_cs_div_dr = p_log_t_rad + 1
     148              :       integer, parameter :: p_dt_cs_div_dr = p_log_dt_cs_div_dr + 1
     149              :       integer, parameter :: p_dr_div_cs = p_dt_cs_div_dr + 1
     150              :       integer, parameter :: p_log_dr_div_cs = p_dr_div_cs + 1
     151              :       integer, parameter :: p_dr_div_cs_yr = p_log_dr_div_cs + 1
     152              :       integer, parameter :: p_log_dr_div_cs_yr = p_dr_div_cs_yr + 1
     153              : 
     154              :       integer, parameter :: p_cell_collapse_time = p_log_dr_div_cs_yr + 1
     155              :       integer, parameter :: p_log_cell_collapse_time = p_cell_collapse_time + 1
     156              : 
     157              :       integer, parameter :: p_log_acoustic_depth = p_log_cell_collapse_time + 1
     158              :       integer, parameter :: p_log_acoustic_radius = p_log_acoustic_depth + 1
     159              :       integer, parameter :: p_acoustic_depth = p_log_acoustic_radius + 1
     160              :       integer, parameter :: p_acoustic_radius = p_acoustic_depth + 1
     161              :       integer, parameter :: p_acoustic_r_div_R_phot = p_acoustic_radius + 1
     162              : 
     163              :       integer, parameter :: p_x = p_acoustic_r_div_R_phot + 1
     164              :       integer, parameter :: p_log_x = p_x + 1
     165              :       integer, parameter :: p_y = p_log_x + 1
     166              :       integer, parameter :: p_log_y = p_y + 1
     167              :       integer, parameter :: p_z = p_log_y + 1
     168              :       integer, parameter :: p_log_z = p_z + 1
     169              : 
     170              :       integer, parameter :: p_compression_gradient = p_log_z + 1
     171              :       integer, parameter :: p_logdq = p_compression_gradient + 1
     172              :       integer, parameter :: p_dq_ratio = p_logdq + 1
     173              :       integer, parameter :: p_tau_eff = p_dq_ratio + 1
     174              :       integer, parameter :: p_tau_eff_div_tau = p_tau_eff + 1
     175              :       integer, parameter :: p_xtau = p_tau_eff_div_tau + 1
     176              :       integer, parameter :: p_tau = p_xtau + 1
     177              :       integer, parameter :: p_kap_frac_lowT = p_tau + 1
     178              :       integer, parameter :: p_kap_frac_highT = p_kap_frac_lowT + 1
     179              :       integer, parameter :: p_kap_frac_Type2 = p_kap_frac_highT + 1
     180              :       integer, parameter :: p_kap_frac_Compton = p_kap_frac_Type2 + 1
     181              :       integer, parameter :: p_kap_frac_op_mono = p_kap_frac_Compton + 1
     182              :       integer, parameter :: p_extra_opacity_factor = p_kap_frac_op_mono + 1
     183              :       integer, parameter :: p_log_kap_times_factor = p_extra_opacity_factor + 1
     184              :       integer, parameter :: p_log_kap = p_log_kap_times_factor + 1
     185              :       integer, parameter :: p_log_opacity = p_log_kap + 1
     186              :       integer, parameter :: p_energy = p_log_opacity + 1
     187              :       integer, parameter :: p_logM = p_energy + 1
     188              :       integer, parameter :: p_logtau_sub_xlogtau = p_logM + 1
     189              :       integer, parameter :: p_xlogtau = p_logtau_sub_xlogtau + 1
     190              :       integer, parameter :: p_logtau = p_xlogtau + 1
     191              :       integer, parameter :: p_temperature = p_logtau + 1
     192              :       integer, parameter :: p_logT_face = p_temperature + 1
     193              :       integer, parameter :: p_logT_bb = p_logT_face + 1
     194              :       integer, parameter :: p_logT_face_div_logT_bb = p_logT_bb + 1
     195              :       integer, parameter :: p_logT = p_logT_face_div_logT_bb + 1
     196              :       integer, parameter :: p_density = p_logT + 1
     197              :       integer, parameter :: p_rho = p_density + 1
     198              :       integer, parameter :: p_logRho = p_rho + 1
     199              :       integer, parameter :: p_pgas = p_logRho+ 1
     200              :       integer, parameter :: p_logPgas = p_pgas + 1
     201              :       integer, parameter :: p_prad = p_logPgas + 1
     202              :       integer, parameter :: p_pressure = p_prad + 1
     203              :       integer, parameter :: p_logP = p_pressure + 1
     204              :       integer, parameter :: p_logE = p_logP + 1
     205              :       integer, parameter :: p_grada = p_logE + 1
     206              :       integer, parameter :: p_dE_dRho = p_grada + 1
     207              :       integer, parameter :: p_Cv = p_dE_dRho + 1
     208              :       integer, parameter :: p_Cp = p_Cv + 1
     209              :       integer, parameter :: p_thermal_time_to_surface = p_Cp + 1
     210              :       integer, parameter :: p_log_thermal_time_to_surface = p_thermal_time_to_surface + 1
     211              :       integer, parameter :: p_log_CpT = p_log_thermal_time_to_surface + 1
     212              :       integer, parameter :: p_log_CpT_absMdot_div_L = p_log_CpT + 1
     213              :       integer, parameter :: p_logS = p_log_CpT_absMdot_div_L + 1
     214              :       integer, parameter :: p_logS_per_baryon = p_logS + 1
     215              :       integer, parameter :: p_gamma1 = p_logS_per_baryon + 1
     216              :       integer, parameter :: p_gamma3 = p_gamma1 + 1
     217              :       integer, parameter :: p_eta = p_gamma3 + 1
     218              :       integer, parameter :: p_gam = p_eta + 1
     219              :       integer, parameter :: p_mu = p_gam + 1
     220              : 
     221              :       integer, parameter :: p_eos_frac_OPAL_SCVH = p_mu + 1
     222              :       integer, parameter :: p_eos_frac_HELM = p_eos_frac_OPAL_SCVH + 1
     223              :       integer, parameter :: p_eos_frac_Skye = p_eos_frac_HELM + 1
     224              :       integer, parameter :: p_eos_frac_PC = p_eos_frac_Skye + 1
     225              :       integer, parameter :: p_eos_frac_FreeEOS = p_eos_frac_PC + 1
     226              :       integer, parameter :: p_eos_frac_CMS = p_eos_frac_FreeEOS + 1
     227              :       integer, parameter :: p_eos_frac_ideal = p_eos_frac_CMS + 1
     228              : 
     229              :       integer, parameter :: p_log_rho_times_r3 = p_eos_frac_ideal + 1
     230              :       integer, parameter :: p_rho_times_r3 = p_log_rho_times_r3 + 1
     231              :       integer, parameter :: p_v_times_t_div_r = p_rho_times_r3 + 1
     232              :       integer, parameter :: p_v_div_r = p_v_times_t_div_r + 1
     233              : 
     234              :       integer, parameter :: p_log_c_div_tau = p_v_div_r + 1
     235              :       integer, parameter :: p_log_v_escape = p_log_c_div_tau + 1
     236              :       integer, parameter :: p_v_div_vesc = p_log_v_escape + 1
     237              :       integer, parameter :: p_v_div_v_escape = p_v_div_vesc + 1
     238              :       integer, parameter :: p_v_div_cs = p_v_div_v_escape + 1
     239              :       integer, parameter :: p_v_div_csound = p_v_div_cs + 1
     240              :       integer, parameter :: p_csound_face = p_v_div_csound + 1
     241              :       integer, parameter :: p_log_csound = p_csound_face + 1
     242              :       integer, parameter :: p_csound = p_log_csound + 1
     243              :       integer, parameter :: p_scale_height = p_csound + 1
     244              :       integer, parameter :: p_omega = p_scale_height + 1
     245              : 
     246              :       integer, parameter :: p_log_omega = p_omega + 1
     247              :       integer, parameter :: p_log_j_rot = p_log_omega + 1
     248              : 
     249              :       integer, parameter :: p_log_J_inside = p_log_j_rot + 1
     250              :       integer, parameter :: p_log_J_div_M53 = p_log_J_inside + 1
     251              :       integer, parameter :: p_log_abs_dlnR_domega = p_log_J_div_M53 + 1
     252              :       integer, parameter :: p_log_abs_shear = p_log_abs_dlnR_domega + 1
     253              :       integer, parameter :: p_shear = p_log_abs_shear + 1
     254              :       integer, parameter :: p_i_rot = p_shear + 1
     255              :       integer, parameter :: p_j_rot = p_i_rot + 1
     256              :       integer, parameter :: p_v_rot = p_j_rot + 1
     257              :       integer, parameter :: p_fp_rot = p_v_rot + 1
     258              : 
     259              : 
     260              :       integer, parameter :: p_ft_rot = p_fp_rot + 1
     261              :       integer, parameter :: p_ft_rot_div_fp_rot = p_ft_rot + 1
     262              :       integer, parameter :: p_w_div_w_crit_roche = p_ft_rot_div_fp_rot + 1
     263              :       integer, parameter :: p_w_div_w_crit_roche2 = p_w_div_w_crit_roche + 1
     264              :       integer, parameter :: p_log_am_nu_rot = p_w_div_w_crit_roche2 + 1
     265              :       integer, parameter :: p_log_am_nu_non_rot = p_log_am_nu_rot + 1
     266              :       integer, parameter :: p_log_am_nu = p_log_am_nu_non_rot + 1
     267              : 
     268              :       integer, parameter :: p_eps_phase_separation = p_log_am_nu + 1
     269              :       integer, parameter :: p_eps_WD_sedimentation = p_eps_phase_separation + 1
     270              :       integer, parameter :: p_log_eps_WD_sedimentation = p_eps_WD_sedimentation + 1
     271              : 
     272              :       integer, parameter :: p_eps_diffusion = p_log_eps_WD_sedimentation + 1
     273              :       integer, parameter :: p_log_eps_diffusion = p_eps_diffusion + 1
     274              : 
     275              :       integer, parameter :: p_log_e_field = p_log_eps_diffusion + 1
     276              :       integer, parameter :: p_e_field = p_log_e_field + 1
     277              :       integer, parameter :: p_log_g_field_element_diffusion = p_e_field + 1
     278              :       integer, parameter :: p_g_field_element_diffusion = p_log_g_field_element_diffusion + 1
     279              : 
     280              :       integer, parameter :: p_log_eE_div_mg_element_diffusion = p_g_field_element_diffusion + 1
     281              :       integer, parameter :: p_eE_div_mg_element_diffusion = p_log_eE_div_mg_element_diffusion + 1
     282              : 
     283              :       integer, parameter :: p_r_polar = p_eE_div_mg_element_diffusion + 1
     284              :       integer, parameter :: p_log_r_polar = p_r_polar + 1
     285              :       integer, parameter :: p_r_equatorial = p_log_r_polar + 1
     286              :       integer, parameter :: p_log_r_equatorial = p_r_equatorial + 1
     287              :       integer, parameter :: p_r_e_div_r_p = p_log_r_equatorial + 1
     288              : 
     289              :       integer, parameter :: p_omega_crit = p_r_e_div_r_p + 1
     290              :       integer, parameter :: p_omega_div_omega_crit = p_omega_crit + 1
     291              : 
     292              :       integer, parameter :: p_am_log_sig = p_omega_div_omega_crit + 1
     293              :       integer, parameter :: p_am_log_sig_omega = p_am_log_sig + 1
     294              :       integer, parameter :: p_am_log_sig_j = p_am_log_sig_omega + 1
     295              : 
     296              :       integer, parameter :: p_am_log_nu_omega = p_am_log_sig_j + 1
     297              :       integer, parameter :: p_am_log_nu_j = p_am_log_nu_omega + 1
     298              :       integer, parameter :: p_am_log_nu_rot = p_am_log_nu_j + 1
     299              :       integer, parameter :: p_am_log_nu_non_rot = p_am_log_nu_rot + 1
     300              : 
     301              :       integer, parameter :: p_richardson_number = p_am_log_nu_non_rot + 1
     302              :       integer, parameter :: p_am_domega_dlnR = p_richardson_number + 1
     303              :       integer, parameter :: p_am_log_D_visc = p_am_domega_dlnR + 1
     304              :       integer, parameter :: p_am_log_D_DSI = p_am_log_D_visc + 1
     305              :       integer, parameter :: p_am_log_D_SH = p_am_log_D_DSI + 1
     306              :       integer, parameter :: p_am_log_D_SSI = p_am_log_D_SH + 1
     307              :       integer, parameter :: p_am_log_D_ES = p_am_log_D_SSI + 1
     308              :       integer, parameter :: p_am_log_D_GSF = p_am_log_D_ES + 1
     309              :       integer, parameter :: p_am_log_D_ST = p_am_log_D_GSF + 1
     310              :       integer, parameter :: p_am_log_nu_ST = p_am_log_D_ST + 1
     311              : 
     312              :       integer, parameter :: p_dynamo_log_B_r = p_am_log_nu_ST + 1
     313              :       integer, parameter :: p_dynamo_log_B_phi = p_dynamo_log_B_r + 1
     314              :       integer, parameter :: p_grada_face = p_dynamo_log_B_phi + 1
     315              : 
     316              :       integer, parameter :: p_gradr_div_grada = p_grada_face + 1
     317              :       integer, parameter :: p_gradr_sub_grada = p_gradr_div_grada + 1
     318              :       integer, parameter :: p_entropy = p_gradr_sub_grada + 1
     319              :       integer, parameter :: p_free_e = p_entropy + 1
     320              :       integer, parameter :: p_logfree_e = p_free_e + 1
     321              :       integer, parameter :: p_chiRho = p_logfree_e + 1
     322              :       integer, parameter :: p_chiT = p_chiRho + 1
     323              :       integer, parameter :: p_chiRho_for_partials = p_chiT + 1
     324              :       integer, parameter :: p_chiT_for_partials = p_chiRho_for_partials + 1
     325              :       integer, parameter :: p_rel_diff_chiRho_for_partials = p_chiT_for_partials + 1
     326              :       integer, parameter :: p_rel_diff_chiT_for_partials = p_rel_diff_chiRho_for_partials + 1
     327              :       integer, parameter :: p_QQ = p_rel_diff_chiT_for_partials + 1
     328              : 
     329              :       integer, parameter :: p_eos_phase = p_QQ + 1
     330              :       integer, parameter :: p_latent_ddlnT = p_eos_phase + 1
     331              :       integer, parameter :: p_latent_ddlnRho = p_latent_ddlnT + 1
     332              : 
     333              :       integer, parameter :: p_x_mass_fraction_H = p_latent_ddlnRho + 1
     334              :       integer, parameter :: p_y_mass_fraction_He = p_x_mass_fraction_H + 1
     335              :       integer, parameter :: p_z_mass_fraction_metals = p_y_mass_fraction_He + 1
     336              : 
     337              :       integer, parameter :: p_abar = p_z_mass_fraction_metals + 1
     338              :       integer, parameter :: p_zbar = p_abar + 1
     339              :       integer, parameter :: p_z2bar = p_zbar + 1
     340              :       integer, parameter :: p_ye = p_z2bar + 1
     341              : 
     342              :       integer, parameter :: p_dkap_dlnrho_face = p_ye + 1
     343              :       integer, parameter :: p_dkap_dlnT_face = p_dkap_dlnrho_face + 1
     344              :       integer, parameter :: p_opacity = p_dkap_dlnt_face + 1
     345              : 
     346              :       integer, parameter :: p_deps_dlnd_face = p_opacity + 1
     347              :       integer, parameter :: p_deps_dlnT_face = p_deps_dlnd_face + 1
     348              :       integer, parameter :: p_d_epsnuc_dlnd = p_deps_dlnT_face + 1
     349              :       integer, parameter :: p_d_lnepsnuc_dlnd = p_d_epsnuc_dlnd + 1
     350              :       integer, parameter :: p_d_lnepsnuc_dlnT = p_d_lnepsnuc_dlnd + 1
     351              :       integer, parameter :: p_d_epsnuc_dlnT = p_d_lnepsnuc_dlnT + 1
     352              :       integer, parameter :: p_eps_nuc_start = p_d_epsnuc_dlnT + 1
     353              :       integer, parameter :: p_signed_log_eps_nuc = p_eps_nuc_start + 1
     354              : 
     355              : 
     356              :       integer, parameter :: p_log_abs_eps_nuc = p_signed_log_eps_nuc + 1
     357              :       integer, parameter :: p_eps_nuc = p_log_abs_eps_nuc + 1
     358              : 
     359              :       integer, parameter :: p_eps_nuc_neu_total = p_eps_nuc + 1
     360              :       integer, parameter :: p_non_nuc_neu = p_eps_nuc_neu_total + 1
     361              : 
     362              :       integer, parameter :: p_nonnucneu_plas = p_non_nuc_neu + 1
     363              :       integer, parameter :: p_nonnucneu_brem = p_nonnucneu_plas + 1
     364              :       integer, parameter :: p_nonnucneu_phot = p_nonnucneu_brem + 1
     365              :       integer, parameter :: p_nonnucneu_pair = p_nonnucneu_phot + 1
     366              :       integer, parameter :: p_nonnucneu_reco = p_nonnucneu_pair + 1
     367              :       integer, parameter :: p_log_irradiation_heat = p_nonnucneu_reco + 1
     368              :       integer, parameter :: p_alpha_mlt = p_log_irradiation_heat + 1
     369              :       integer, parameter :: p_cgrav_factor = p_alpha_mlt + 1
     370              :       integer, parameter :: p_log_extra_L = p_cgrav_factor + 1
     371              :       integer, parameter :: p_extra_L = p_log_extra_L + 1
     372              :       integer, parameter :: p_extra_jdot = p_extra_L + 1
     373              :       integer, parameter :: p_extra_omegadot = p_extra_jdot + 1
     374              :       integer, parameter :: p_extra_grav = p_extra_omegadot + 1
     375              :       integer, parameter :: p_extra_heat = p_extra_grav + 1
     376              :       integer, parameter :: p_div_v = p_extra_heat + 1
     377              :       integer, parameter :: p_d_v_div_r_dm = p_div_v + 1
     378              :       integer, parameter :: p_d_v_div_r_dr = p_d_v_div_r_dm + 1
     379              : 
     380              :       integer, parameter :: p_dvdt_grav = p_d_v_div_r_dr + 1
     381              :       integer, parameter :: p_dvdt_dPdm = p_dvdt_grav + 1
     382              :       integer, parameter :: p_du = p_dvdt_dPdm + 1
     383              :       integer, parameter :: p_P_face = p_du + 1
     384              : 
     385              :       integer, parameter :: p_log_P_face = p_P_face + 1
     386              : 
     387              :       integer, parameter :: p_dlnP_dlnR = p_log_P_face + 1
     388              :       integer, parameter :: p_dlnRho_dlnR = p_dlnP_dlnR + 1
     389              : 
     390              :       integer, parameter :: p_gradP_div_rho = p_dlnRho_dlnR + 1
     391              :       integer, parameter :: p_dPdr_div_grav = p_gradP_div_rho + 1
     392              :       integer, parameter :: p_env_eps_grav = p_dPdr_div_grav + 1
     393              : 
     394              :       integer, parameter :: p_log_abs_eps_grav_dm_div_L = p_env_eps_grav + 1
     395              :       integer, parameter :: p_eps_grav_composition_term = p_log_abs_eps_grav_dm_div_L + 1
     396              : 
     397              :       integer, parameter :: p_eps_grav_plus_eps_mdot = p_eps_grav_composition_term + 1
     398              :       integer, parameter :: p_ergs_eps_grav_plus_eps_mdot = p_eps_grav_plus_eps_mdot + 1
     399              : 
     400              :       integer, parameter :: p_ergs_mdot = p_ergs_eps_grav_plus_eps_mdot + 1
     401              :       integer, parameter :: p_eps_mdot = p_ergs_mdot + 1
     402              : 
     403              :       integer, parameter :: p_dm_eps_grav = p_eps_mdot + 1
     404              : 
     405              :       integer, parameter :: p_log_xm_div_delta_m = p_dm_eps_grav + 1
     406              :       integer, parameter :: p_xm_div_delta_m = p_log_xm_div_delta_m + 1
     407              :       integer, parameter :: p_eps_grav = p_xm_div_delta_m + 1
     408              :       integer, parameter :: p_signed_log_eps_grav = p_eps_grav + 1
     409              :       integer, parameter :: p_log_conv_L_div_L = p_signed_log_eps_grav + 1
     410              :       integer, parameter :: p_conv_L_div_L = p_log_conv_L_div_L + 1
     411              :       integer, parameter :: p_mlt_Zeta = p_conv_L_div_L + 1
     412              :       integer, parameter :: p_mlt_Gamma = p_mlt_Zeta + 1
     413              :       integer, parameter :: p_mlt_mixing_length = p_mlt_Gamma + 1
     414              :       integer, parameter :: p_mlt_Pturb = p_mlt_mixing_length + 1
     415              :       integer, parameter :: p_mlt_mixing_type = p_mlt_Pturb + 1
     416              : 
     417              :       integer, parameter :: p_grada_sub_gradT = p_mlt_mixing_type + 1
     418              :       integer, parameter :: p_gradT_sub_a = p_grada_sub_gradT + 1
     419              :       integer, parameter :: p_gradT_div_grada = p_gradT_sub_a + 1
     420              : 
     421              :       integer, parameter :: p_gradT_rel_err = p_gradT_div_grada + 1
     422              :       integer, parameter :: p_gradr_sub_gradT = p_gradT_rel_err + 1
     423              :       integer, parameter :: p_gradT_sub_gradr = p_gradr_sub_gradT + 1
     424              :       integer, parameter :: p_gradT_div_gradr = p_gradT_sub_gradr + 1
     425              :       integer, parameter :: p_log_gradT_div_gradr = p_gradT_div_gradr + 1
     426              : 
     427              :       integer, parameter :: p_log_mlt_Gamma = p_log_gradT_div_gradr + 1
     428              :       integer, parameter :: p_log_mlt_vc = p_log_mlt_Gamma + 1
     429              :       integer, parameter :: p_conv_vel_div_mlt_vc = p_log_mlt_vc + 1
     430              :       integer, parameter :: p_mlt_vc = p_conv_vel_div_mlt_vc + 1
     431              :       integer, parameter :: p_mlt_D = p_mlt_vc + 1
     432              :       integer, parameter :: p_mlt_gradT = p_mlt_D + 1
     433              :       integer, parameter :: p_mlt_log_abs_Y = p_mlt_gradT + 1
     434              :       integer, parameter :: p_tdc_num_iters = p_mlt_log_abs_Y + 1
     435              :       integer, parameter :: p_mlt_Y_face = p_tdc_num_iters + 1
     436              :       integer, parameter :: p_dvc_dt_TDC_div_g = p_mlt_Y_face + 1
     437              : 
     438              :       integer, parameter :: p_delta_r = p_dvc_dt_TDC_div_g + 1
     439              :       integer, parameter :: p_delta_L = p_delta_r + 1
     440              :       integer, parameter :: p_delta_cell_vol = p_delta_L + 1
     441              :       integer, parameter :: p_delta_entropy = p_delta_cell_vol + 1
     442              :       integer, parameter :: p_delta_T = p_delta_entropy + 1
     443              :       integer, parameter :: p_delta_rho = p_delta_T + 1
     444              :       integer, parameter :: p_delta_eps_nuc = p_delta_rho + 1
     445              :       integer, parameter :: p_delta_mu = p_delta_eps_nuc + 1
     446              :       integer, parameter :: p_log_D_conv = p_delta_mu + 1
     447              : 
     448              :       integer, parameter :: p_log_D_leftover = p_log_D_conv  + 1
     449              :       integer, parameter :: p_log_D_semi = p_log_D_leftover + 1
     450              :       integer, parameter :: p_log_D_anon = p_log_D_semi + 1
     451              :       integer, parameter :: p_log_D_ovr = p_log_D_anon + 1
     452              :       integer, parameter :: p_log_D_thrm = p_log_D_ovr + 1
     453              :       integer, parameter :: p_log_D_rayleigh_taylor = p_log_D_thrm + 1
     454              :       integer, parameter :: p_log_D_minimum = p_log_D_rayleigh_taylor + 1
     455              :       integer, parameter :: p_log_D_omega = p_log_D_minimum + 1
     456              : 
     457              :       integer, parameter :: p_log_D_mix_rotation = p_log_D_omega + 1
     458              :       integer, parameter :: p_log_D_mix_non_rotation = p_log_D_mix_rotation + 1
     459              :       integer, parameter :: p_log_D_mix = p_log_D_mix_non_rotation + 1
     460              :       integer, parameter :: p_conv_vel = p_log_D_mix + 1
     461              :       integer, parameter :: p_dt_times_conv_vel_div_mixing_length = p_conv_vel + 1
     462              :       integer, parameter :: p_log_dt_times_conv_vel_div_mixing_length = p_dt_times_conv_vel_div_mixing_length + 1
     463              : 
     464              :       integer, parameter :: p_log_lambda_RTI_div_Hrho = p_log_dt_times_conv_vel_div_mixing_length + 1
     465              :       integer, parameter :: p_lambda_RTI = p_log_lambda_RTI_div_Hrho + 1
     466              :       integer, parameter :: p_dPdr_info = p_lambda_RTI + 1
     467              :       integer, parameter :: p_dRhodr_info = p_dPdr_info + 1
     468              : 
     469              :       integer, parameter :: p_source_plus_alpha_RTI = p_dRhodr_info + 1
     470              :       integer, parameter :: p_log_source_RTI = p_source_plus_alpha_RTI + 1
     471              :       integer, parameter :: p_log_source_plus_alpha_RTI = p_log_source_RTI + 1
     472              :       integer, parameter :: p_source_minus_alpha_RTI = p_log_source_plus_alpha_RTI + 1
     473              :       integer, parameter :: p_log_source_minus_alpha_RTI = p_source_minus_alpha_RTI + 1
     474              : 
     475              :       integer, parameter :: p_dudt_RTI = p_log_source_minus_alpha_RTI + 1
     476              :       integer, parameter :: p_dedt_RTI = p_dudt_RTI + 1
     477              :       integer, parameter :: p_eta_RTI = p_dedt_RTI + 1
     478              :       integer, parameter :: p_log_eta_RTI = p_eta_RTI + 1
     479              : 
     480              :       integer, parameter :: p_boost_for_eta_RTI = p_log_eta_RTI + 1
     481              :       integer, parameter :: p_log_boost_for_eta_RTI = p_boost_for_eta_RTI + 1
     482              : 
     483              :       integer, parameter :: p_alpha_RTI = p_log_boost_for_eta_RTI + 1
     484              :       integer, parameter :: p_log_alpha_RTI = p_alpha_RTI + 1
     485              :       integer, parameter :: p_log_etamid_RTI = p_log_alpha_RTI + 1
     486              :       integer, parameter :: p_log_sig_RTI = p_log_etamid_RTI + 1
     487              :       integer, parameter :: p_log_sigmid_RTI = p_log_sig_RTI + 1
     488              : 
     489              :       integer, parameter :: p_burn_avg_epsnuc = p_log_sigmid_RTI + 1
     490              :       integer, parameter :: p_log_burn_avg_epsnuc = p_burn_avg_epsnuc + 1
     491              :       integer, parameter :: p_burn_num_iters = p_log_burn_avg_epsnuc + 1
     492              : 
     493              :       integer, parameter :: p_log_sig_raw_mix = p_burn_num_iters + 1
     494              :       integer, parameter :: p_log_sig_mix = p_log_sig_raw_mix + 1
     495              :       integer, parameter :: p_log_conv_vel = p_log_sig_mix + 1
     496              :       integer, parameter :: p_conv_vel_div_L_vel = p_log_conv_vel + 1
     497              :       integer, parameter :: p_conv_vel_div_csound = p_conv_vel_div_L_vel + 1
     498              :       integer, parameter :: p_mix_type = p_conv_vel_div_csound + 1
     499              :       integer, parameter :: p_mixing_type = p_mix_type + 1
     500              : 
     501              :       integer, parameter :: p_log_mlt_D_mix = p_mixing_type + 1
     502              :       integer, parameter :: p_log_Cp_T_div_t_sound = p_log_mlt_D_mix + 1
     503              :       integer, parameter :: p_log_t_thermal = p_log_Cp_T_div_t_sound + 1
     504              :       integer, parameter :: p_log_t_sound = p_log_t_thermal + 1
     505              :       integer, parameter :: p_pressure_scale_height_cm = p_log_t_sound + 1
     506              :       integer, parameter :: p_pressure_scale_height = p_pressure_scale_height_cm + 1
     507              : 
     508              :       integer, parameter :: p_gradT_sub_grada = p_pressure_scale_height + 1
     509              :       integer, parameter :: p_gradT = p_gradT_sub_grada + 1
     510              :       integer, parameter :: p_gradr = p_gradT + 1
     511              :       integer, parameter :: p_cno_div_z = p_gradr + 1
     512              : 
     513              :       integer, parameter :: p_dE = p_cno_div_z + 1
     514              :       integer, parameter :: p_dr = p_dE + 1
     515              :       integer, parameter :: p_dv = p_dr + 1
     516              : 
     517              :       integer, parameter :: p_dr_ratio = p_dv + 1
     518              :       integer, parameter :: p_dt_dv_div_dr = p_dr_ratio + 1
     519              : 
     520              :       integer, parameter :: p_dlog_h1_dlogP = p_dt_dv_div_dr + 1
     521              :       integer, parameter :: p_dlog_he3_dlogP = p_dlog_h1_dlogP + 1
     522              :       integer, parameter :: p_dlog_he4_dlogP = p_dlog_he3_dlogP + 1
     523              :       integer, parameter :: p_dlog_c12_dlogP = p_dlog_he4_dlogP + 1
     524              :       integer, parameter :: p_dlog_c13_dlogP = p_dlog_c12_dlogP + 1
     525              :       integer, parameter :: p_dlog_n14_dlogP = p_dlog_c13_dlogP + 1
     526              :       integer, parameter :: p_dlog_o16_dlogP = p_dlog_n14_dlogP + 1
     527              :       integer, parameter :: p_dlog_ne20_dlogP = p_dlog_o16_dlogP + 1
     528              :       integer, parameter :: p_dlog_mg24_dlogP = p_dlog_ne20_dlogP + 1
     529              :       integer, parameter :: p_dlog_si28_dlogP = p_dlog_mg24_dlogP + 1
     530              : 
     531              :       integer, parameter :: p_dlog_pp_dlogP = p_dlog_si28_dlogP + 1
     532              :       integer, parameter :: p_dlog_cno_dlogP = p_dlog_pp_dlogP + 1
     533              :       integer, parameter :: p_dlog_3alf_dlogP = p_dlog_cno_dlogP + 1
     534              : 
     535              :       integer, parameter :: p_dlog_burn_c_dlogP = p_dlog_3alf_dlogP + 1
     536              :       integer, parameter :: p_dlog_burn_n_dlogP = p_dlog_burn_c_dlogP + 1
     537              :       integer, parameter :: p_dlog_burn_o_dlogP = p_dlog_burn_n_dlogP + 1
     538              : 
     539              :       integer, parameter :: p_dlog_burn_ne_dlogP = p_dlog_burn_o_dlogP + 1
     540              :       integer, parameter :: p_dlog_burn_na_dlogP = p_dlog_burn_ne_dlogP + 1
     541              :       integer, parameter :: p_dlog_burn_mg_dlogP = p_dlog_burn_na_dlogP + 1
     542              : 
     543              :       integer, parameter :: p_dlog_cc_dlogP = p_dlog_burn_mg_dlogP + 1
     544              :       integer, parameter :: p_dlog_co_dlogP = p_dlog_cc_dlogP + 1
     545              :       integer, parameter :: p_dlog_oo_dlogP = p_dlog_co_dlogP + 1
     546              : 
     547              :       integer, parameter :: p_dlog_burn_si_dlogP = p_dlog_oo_dlogP + 1
     548              :       integer, parameter :: p_dlog_burn_s_dlogP = p_dlog_burn_si_dlogP + 1
     549              :       integer, parameter :: p_dlog_burn_ar_dlogP = p_dlog_burn_s_dlogP + 1
     550              :       integer, parameter :: p_dlog_burn_ca_dlogP = p_dlog_burn_ar_dlogP + 1
     551              :       integer, parameter :: p_dlog_burn_ti_dlogP = p_dlog_burn_ca_dlogP + 1
     552              :       integer, parameter :: p_dlog_burn_cr_dlogP = p_dlog_burn_ti_dlogP + 1
     553              :       integer, parameter :: p_dlog_burn_fe_dlogP = p_dlog_burn_cr_dlogP + 1
     554              : 
     555              :       integer, parameter :: p_dlog_pnhe4_dlogP = p_dlog_burn_fe_dlogP + 1
     556              :       integer, parameter :: p_dlog_photo_dlogP = p_dlog_pnhe4_dlogP + 1
     557              :       integer, parameter :: p_dlog_other_dlogP = p_dlog_photo_dlogP + 1
     558              : 
     559              :       integer, parameter :: p_dlnX_dr = p_dlog_other_dlogP + 1
     560              :       integer, parameter :: p_dlnY_dr = p_dlnX_dr + 1
     561              :       integer, parameter :: p_dlnRho_dr = p_dlnY_dr + 1
     562              : 
     563              :       integer, parameter :: p_logR_kap = p_dlnRho_dr + 1
     564              :       integer, parameter :: p_logW = p_logR_kap + 1
     565              :       integer, parameter :: p_logV = p_logW + 1
     566              :       integer, parameter :: p_logQ = p_logV + 1
     567              :       integer, parameter :: p_log_mdot_cs = p_logQ + 1
     568              :       integer, parameter :: p_log_mdot_v = p_log_mdot_cs + 1
     569              :       integer, parameter :: p_log_L_div_CpTMdot = p_log_mdot_v + 1
     570              :       integer, parameter :: p_cs_at_cell_bdy = p_log_L_div_CpTMdot + 1
     571              : 
     572              :       integer, parameter :: p_total_energy_sign = p_cs_at_cell_bdy + 1
     573              :       integer, parameter :: p_total_energy = p_total_energy_sign + 1
     574              : 
     575              :       integer, parameter :: p_Ptrb = p_total_energy + 1
     576              :       integer, parameter :: p_log_Ptrb = p_Ptrb + 1
     577              :       integer, parameter :: p_log_w = p_log_Ptrb + 1
     578              :       integer, parameter :: p_w = p_log_w + 1
     579              :       integer, parameter :: p_etrb = p_w + 1
     580              :       integer, parameter :: p_log_etrb = p_etrb + 1
     581              :       integer, parameter :: p_Pvsc = p_log_etrb + 1
     582              :       integer, parameter :: p_Hp_face = p_Pvsc + 1
     583              :       integer, parameter :: p_Y_face = p_Hp_face + 1
     584              :       integer, parameter :: p_PII_face = p_Y_face + 1
     585              :       integer, parameter :: p_Chi = p_PII_face + 1
     586              :       integer, parameter :: p_COUPL = p_Chi + 1
     587              :       integer, parameter :: p_SOURCE = p_COUPL + 1
     588              :       integer, parameter :: p_DAMP = p_SOURCE + 1
     589              :       integer, parameter :: p_DAMPR = p_DAMP + 1
     590              :       integer, parameter :: p_Eq = p_DAMPR + 1
     591              :       integer, parameter :: p_Uq = p_Eq + 1
     592              :       integer, parameter :: p_Lr = p_Uq + 1
     593              :       integer, parameter :: p_Lr_div_L = p_Lr + 1
     594              :       integer, parameter :: p_Lc = p_Lr_div_L + 1
     595              :       integer, parameter :: p_Lc_div_L = p_Lc + 1
     596              :       integer, parameter :: p_Lt = p_Lc_div_L + 1
     597              :       integer, parameter :: p_Lt_div_L = p_Lt + 1
     598              : 
     599              :       integer, parameter :: p_rsp_log_erad = p_Lt_div_L + 1
     600              :       integer, parameter :: p_rsp_erad = p_rsp_log_erad + 1
     601              :       integer, parameter :: p_rsp_logEt = p_rsp_erad + 1
     602              :       integer, parameter :: p_rsp_Et = p_rsp_logEt + 1
     603              :       integer, parameter :: p_rsp_Pt = p_rsp_Et + 1
     604              :       integer, parameter :: p_rsp_Lr = p_rsp_Pt + 1
     605              :       integer, parameter :: p_rsp_Lc = p_rsp_Lr + 1
     606              :       integer, parameter :: p_rsp_Lt = p_rsp_Lc + 1
     607              :       integer, parameter :: p_rsp_Eq = p_rsp_Lt + 1
     608              :       integer, parameter :: p_rsp_Uq = p_rsp_Eq + 1
     609              :       integer, parameter :: p_rsp_src_snk = p_rsp_Uq + 1
     610              :       integer, parameter :: p_rsp_src = p_rsp_src_snk + 1
     611              :       integer, parameter :: p_rsp_sink = p_rsp_src + 1
     612              :       integer, parameter :: p_rsp_damp = p_rsp_sink + 1
     613              :       integer, parameter :: p_rsp_dampR = p_rsp_damp + 1
     614              :       integer, parameter :: p_rsp_Hp_face = p_rsp_dampR + 1
     615              :       integer, parameter :: p_rsp_Y_face = p_rsp_Hp_face + 1
     616              :       integer, parameter :: p_rsp_log_heat_exchange_timescale = p_rsp_Y_face + 1
     617              :       integer, parameter :: p_rsp_log_dt_div_heat_exchange_timescale = p_rsp_log_heat_exchange_timescale + 1
     618              :       integer, parameter :: p_rsp_heat_exchange_timescale = p_rsp_log_dt_div_heat_exchange_timescale + 1
     619              :       integer, parameter :: p_rsp_Pvsc = p_rsp_heat_exchange_timescale + 1
     620              :       integer, parameter :: p_rsp_Chi = p_rsp_Pvsc + 1
     621              :       integer, parameter :: p_rsp_gradT = p_rsp_Chi + 1
     622              :       integer, parameter :: p_rsp_Lr_div_L = p_rsp_gradT + 1
     623              :       integer, parameter :: p_rsp_Lc_div_L = p_rsp_Lr_div_L + 1
     624              :       integer, parameter :: p_rsp_Lt_div_L = p_rsp_Lc_div_L + 1
     625              : 
     626              :       integer, parameter :: p_d_u_div_rmid_start = p_rsp_Lt_div_L + 1
     627              :       integer, parameter :: p_d_u_div_rmid = p_d_u_div_rmid_start + 1
     628              : 
     629              :       integer, parameter :: p_cell_ie_div_star_ie = p_d_u_div_rmid + 1
     630              :       integer, parameter :: p_log_cell_specific_IE = p_cell_ie_div_star_ie + 1
     631              :       integer, parameter :: p_log_cell_ie_div_star_ie = p_log_cell_specific_IE + 1
     632              : 
     633              :       integer, parameter :: p_cell_specific_PE = p_log_cell_ie_div_star_ie + 1
     634              :       integer, parameter :: p_cell_specific_IE = p_cell_specific_PE + 1
     635              :       integer, parameter :: p_cell_specific_KE = p_cell_specific_IE + 1
     636              :       integer, parameter :: p_cell_IE_div_IE_plus_KE = p_cell_specific_KE + 1
     637              :       integer, parameter :: p_cell_KE_div_IE_plus_KE = p_cell_IE_div_IE_plus_KE + 1
     638              : 
     639              :       integer, parameter :: p_grada_sub_gradr = p_cell_KE_div_IE_plus_KE + 1
     640              :       integer, parameter :: p_gradL_sub_gradr = p_grada_sub_gradr + 1
     641              :       integer, parameter :: p_gradL = p_gradL_sub_gradr + 1
     642              :       integer, parameter :: p_sch_stable = p_gradL + 1
     643              :       integer, parameter :: p_ledoux_stable = p_sch_stable + 1
     644              :       integer, parameter :: p_grad_density = p_ledoux_stable + 1
     645              :       integer, parameter :: p_grad_temperature = p_grad_density + 1
     646              : 
     647              :       integer, parameter :: p_dominant_isoA_for_thermohaline = p_grad_temperature + 1
     648              : 
     649              :       integer, parameter :: p_dominant_isoZ_for_thermohaline = p_dominant_isoA_for_thermohaline + 1
     650              :       integer, parameter :: p_gradL_composition_term = p_dominant_isoZ_for_thermohaline + 1
     651              :       integer, parameter :: p_log_brunt_nonB = p_gradL_composition_term + 1
     652              : 
     653              :       integer, parameter :: p_log_brunt_B = p_log_brunt_nonB + 1
     654              :       integer, parameter :: p_brunt_nonB = p_log_brunt_B + 1
     655              :       integer, parameter :: p_brunt_B = p_brunt_nonB + 1
     656              :       integer, parameter :: p_lamb_S2 = p_brunt_B + 1
     657              :       integer, parameter :: p_lamb_S = p_lamb_S2 + 1
     658              :       integer, parameter :: p_lamb_Sl1 = p_lamb_S + 1
     659              :       integer, parameter :: p_lamb_Sl2 = p_lamb_Sl1 + 1
     660              :       integer, parameter :: p_lamb_Sl3 = p_lamb_Sl2 + 1
     661              :       integer, parameter :: p_lamb_Sl10 = p_lamb_Sl3 + 1
     662              :       integer, parameter :: p_sign_brunt_N2 = p_lamb_Sl10 + 1
     663              :       integer, parameter :: p_brunt_A_div_x2 = p_sign_brunt_N2 + 1
     664              :       integer, parameter :: p_brunt_A = p_brunt_A_div_x2 + 1
     665              : 
     666              :       integer, parameter :: p_brunt_N2 = p_brunt_A + 1
     667              :       integer, parameter :: p_brunt_N2_structure_term = p_brunt_N2 + 1
     668              :       integer, parameter :: p_brunt_N2_composition_term = p_brunt_N2_structure_term + 1
     669              :       integer, parameter :: p_log_brunt_N2_structure_term = p_brunt_N2_composition_term + 1
     670              :       integer, parameter :: p_log_brunt_N2_composition_term = p_log_brunt_N2_structure_term + 1
     671              :       integer, parameter :: p_log_brunt_N2_dimensionless = p_log_brunt_N2_composition_term + 1
     672              :       integer, parameter :: p_brunt_N2_dimensionless = p_log_brunt_N2_dimensionless + 1
     673              :       integer, parameter :: p_brunt_N_dimensionless = p_brunt_N2_dimensionless + 1
     674              :       integer, parameter :: p_brunt_N = p_brunt_N_dimensionless + 1
     675              :       integer, parameter :: p_brunt_frequency = p_brunt_N + 1
     676              :       integer, parameter :: p_log_brunt_N2 = p_brunt_frequency + 1
     677              :       integer, parameter :: p_log_brunt_N = p_log_brunt_N2 + 1
     678              :       integer, parameter :: p_brunt_N_div_r_integral = p_log_brunt_N + 1
     679              :       integer, parameter :: p_brunt_nu = p_brunt_N_div_r_integral + 1
     680              :       integer, parameter :: p_log_brunt_nu = p_brunt_nu + 1
     681              :       integer, parameter :: p_log_lamb_Sl1 = p_log_brunt_nu + 1
     682              :       integer, parameter :: p_log_lamb_Sl2 = p_log_lamb_Sl1 + 1
     683              :       integer, parameter :: p_log_lamb_Sl3 = p_log_lamb_Sl2 + 1
     684              :       integer, parameter :: p_log_lamb_Sl10 = p_log_lamb_Sl3 + 1
     685              :       integer, parameter :: p_brunt_N2_sub_omega2 = p_log_lamb_Sl10 + 1
     686              :       integer, parameter :: p_sl2_sub_omega2 = p_brunt_N2_sub_omega2 + 1
     687              :       integer, parameter :: p_k_r_integral = p_sl2_sub_omega2 + 1
     688              : 
     689              :       integer, parameter :: p_log_dt_div_tau_conv = p_k_r_integral + 1
     690              :       integer, parameter :: p_dt_div_tau_conv = p_log_dt_div_tau_conv + 1
     691              :       integer, parameter :: p_tau_conv = p_dt_div_tau_conv + 1
     692              :       integer, parameter :: p_tau_qhse = p_tau_conv + 1
     693              :       integer, parameter :: p_tau_epsnuc = p_tau_qhse + 1
     694              :       integer, parameter :: p_tau_cool = p_tau_epsnuc + 1
     695              : 
     696              :       integer, parameter :: p_max_abs_xa_corr = p_tau_cool + 1
     697              :       integer, parameter :: p_log_zFe = p_max_abs_xa_corr + 1
     698              :       integer, parameter :: p_zFe = p_log_zFe + 1
     699              :       integer, parameter :: p_u = p_zFe + 1
     700              :       integer, parameter :: p_u_face = p_u + 1
     701              :       integer, parameter :: p_dPdr_dRhodr_info = p_u_face + 1
     702              :       integer, parameter :: p_RTI_du_diffusion_kick = p_dPdr_dRhodr_info + 1
     703              :       integer, parameter :: p_log_du_kick_div_du = p_RTI_du_diffusion_kick + 1
     704              : 
     705              :       integer, parameter :: p_Frad_div_cUrad = p_log_du_kick_div_du + 1
     706              :       integer, parameter :: p_lum_rad_div_L_Edd_sub_fourPrad_div_PchiT = p_Frad_div_cUrad + 1
     707              : 
     708              :       integer, parameter :: p_flux_limit_R = p_lum_rad_div_L_Edd_sub_fourPrad_div_PchiT + 1
     709              :       integer, parameter :: p_flux_limit_lambda = p_flux_limit_R + 1
     710              : 
     711              :       integer, parameter :: p_col_id_max = p_flux_limit_lambda
     712              : 
     713              :       character (len=maxlen_profile_column_name) :: profile_column_name(p_col_id_max)
     714              :       type (integer_dict), pointer :: profile_column_names_dict
     715              : 
     716              : 
     717              :       contains
     718              : 
     719              : 
     720            1 :       subroutine profile_column_names_init(ierr)
     721              :          use utils_lib, only: integer_dict_define
     722              :          integer, intent(out) :: ierr
     723              :          integer :: i, cnt
     724              : 
     725            1 :          ierr = 0
     726              : 
     727            1 :          cnt = 0
     728          580 :          profile_column_name(:) = ''
     729              : 
     730            1 :          profile_column_name(p_zone) = 'zone'
     731            1 :          profile_column_name(p_k) = 'k'
     732            1 :          profile_column_name(p_L) = 'L'
     733            1 :          profile_column_name(p_luminosity) = 'luminosity'
     734            1 :          profile_column_name(p_lum_erg_s) = 'lum_erg_s'
     735            1 :          profile_column_name(p_log_abs_lum_erg_s) = 'log_abs_lum_erg_s'
     736            1 :          profile_column_name(p_log_Lrad_div_Ledd) = 'log_Lrad_div_Ledd'
     737            1 :          profile_column_name(p_log_Lrad_div_L) = 'log_Lrad_div_L'
     738            1 :          profile_column_name(p_lum_plus_lum_adv) = 'lum_plus_lum_adv'
     739            1 :          profile_column_name(p_lum_adv) = 'lum_adv'
     740            1 :          profile_column_name(p_lum_rad) = 'lum_rad'
     741            1 :          profile_column_name(p_lum_conv) = 'lum_conv'
     742            1 :          profile_column_name(p_lum_conv_MLT) = 'lum_conv_MLT'
     743              : 
     744            1 :          profile_column_name(p_lum_conv_div_lum_Edd) = 'lum_conv_div_lum_Edd'
     745            1 :          profile_column_name(p_lum_rad_div_L_Edd) = 'lum_rad_div_L_Edd'
     746              :          profile_column_name(p_lum_rad_div_L) = 'lum_rad_div_L'
     747            1 :          profile_column_name(p_lum_conv_div_L) = 'lum_conv_div_L'
     748            1 :          profile_column_name(p_lum_conv_div_lum_rad) = 'lum_conv_div_lum_rad'
     749            1 :          profile_column_name(p_log_Lrad) = 'log_Lrad'
     750            1 :          profile_column_name(p_log_Lconv) = 'log_Lconv'
     751            1 :          profile_column_name(p_log_Lconv_div_L) = 'log_Lconv_div_L'
     752            1 :          profile_column_name(p_lum_rad_div_L) = 'lum_rad_div_L'
     753              : 
     754            1 :          profile_column_name(p_grav) = 'grav'
     755            1 :          profile_column_name(p_log_g) = 'log_g'
     756            1 :          profile_column_name(p_r_div_g) = 'r_div_g'
     757            1 :          profile_column_name(p_g_div_r) = 'g_div_r'
     758            1 :          profile_column_name(p_net_nuclear_energy) = 'net_nuclear_energy'
     759              : 
     760            1 :          profile_column_name(p_eps_nuc_plus_nuc_neu) = 'eps_nuc_plus_nuc_neu'
     761            1 :          profile_column_name(p_eps_nuc_minus_non_nuc_neu) = 'eps_nuc_minus_non_nuc_neu'
     762            1 :          profile_column_name(p_net_energy) = 'net_energy'
     763            1 :          profile_column_name(p_logL) = 'logL'
     764            1 :          profile_column_name(p_log_Ledd) = 'log_Ledd'
     765            1 :          profile_column_name(p_lum_div_Ledd) = 'lum_div_Ledd'
     766            1 :          profile_column_name(p_log_L_div_Ledd) = 'log_L_div_Ledd'
     767            1 :          profile_column_name(p_signed_log_power) = 'signed_log_power'
     768            1 :          profile_column_name(p_log_abs_v) = 'log_abs_v'
     769            1 :          profile_column_name(p_log_diff_grads) = 'log_diff_grads'
     770            1 :          profile_column_name(p_diff_grads) = 'diff_grads'
     771            1 :          profile_column_name(p_gradT_excess_effect) = 'gradT_excess_effect'
     772            1 :          profile_column_name(p_superad_reduction_factor) = 'superad_reduction_factor'
     773              : 
     774            1 :          profile_column_name(p_v) = 'v'
     775            1 :          profile_column_name(p_velocity) = 'velocity'
     776            1 :          profile_column_name(p_v_kms) = 'v_kms'
     777            1 :          profile_column_name(p_vel_km_per_s) = 'vel_km_per_s'
     778            1 :          profile_column_name(p_radius_km) = 'radius_km'
     779            1 :          profile_column_name(p_radius_cm) = 'radius_cm'
     780            1 :          profile_column_name(p_radius) = 'radius'
     781            1 :          profile_column_name(p_rmid) = 'rmid'
     782            1 :          profile_column_name(p_logR_cm) = 'logR_cm'
     783            1 :          profile_column_name(p_logR) = 'logR'
     784            1 :          profile_column_name(p_log_q) = 'log_q'
     785            1 :          profile_column_name(p_q) = 'q'
     786            1 :          profile_column_name(p_dq) = 'dq'
     787            1 :          profile_column_name(p_log_dq) = 'log_dq'
     788            1 :          profile_column_name(p_logtau_sub_xlogtau) = 'logtau_sub_xlogtau'
     789            1 :          profile_column_name(p_xlogtau) = 'xlogtau'
     790            1 :          profile_column_name(p_logtau) = 'logtau'
     791            1 :          profile_column_name(p_pgas_div_p) = 'pgas_div_p'
     792            1 :          profile_column_name(p_pgas_div_ptotal) = 'pgas_div_ptotal'
     793              : 
     794            1 :          profile_column_name(p_prad_div_pgas) = 'prad_div_pgas'
     795            1 :          profile_column_name(p_prad_div_pgas_div_L_div_Ledd) = 'prad_div_pgas_div_L_div_Ledd'
     796              : 
     797            1 :          profile_column_name(p_m_div_r) = 'm_div_r'
     798            1 :          profile_column_name(p_dmbar_m_div_r) = 'dmbar_m_div_r'
     799            1 :          profile_column_name(p_log_dmbar_m_div_r) = 'log_dmbar_m_div_r'
     800              : 
     801            1 :          profile_column_name(p_log_mass) = 'log_mass'
     802            1 :          profile_column_name(p_mass) = 'mass'
     803            1 :          profile_column_name(p_mass_grams) = 'mass_grams'
     804            1 :          profile_column_name(p_mmid) = 'mmid'
     805              : 
     806            1 :          profile_column_name(p_dm) = 'dm'
     807            1 :          profile_column_name(p_dm_bar) = 'dm_bar'
     808              : 
     809            1 :          profile_column_name(p_xr) = 'xr'
     810            1 :          profile_column_name(p_xr_cm) = 'xr_cm'
     811            1 :          profile_column_name(p_xr_div_R) = 'xr_div_R'
     812            1 :          profile_column_name(p_log_xr) = 'log_xr'
     813            1 :          profile_column_name(p_log_xr_cm) = 'log_xr_cm'
     814            1 :          profile_column_name(p_log_xr_div_R) = 'log_xr_div_R'
     815              : 
     816            1 :          profile_column_name(p_m_grav) = 'm_grav'
     817            1 :          profile_column_name(p_mass_correction_factor) = 'mass_correction_factor'
     818            1 :          profile_column_name(p_m_grav_div_m_baryonic) = 'm_grav_div_m_baryonic'
     819              : 
     820            1 :          profile_column_name(p_log_x) = 'log_x'
     821            1 :          profile_column_name(p_x) = 'x'
     822            1 :          profile_column_name(p_log_y) = 'log_y'
     823            1 :          profile_column_name(p_y) = 'y'
     824            1 :          profile_column_name(p_log_z) = 'log_z'
     825            1 :          profile_column_name(p_z) = 'z'
     826              : 
     827            1 :          profile_column_name(p_xm) = 'xm'
     828            1 :          profile_column_name(p_xq) = 'xq'
     829            1 :          profile_column_name(p_logxm) = 'logxm'
     830            1 :          profile_column_name(p_logxq) = 'logxq'
     831            1 :          profile_column_name(p_logdq) = 'logdq'
     832              : 
     833            1 :          profile_column_name(p_log_radial_depth) = 'log_radial_depth'
     834            1 :          profile_column_name(p_log_column_depth) = 'log_column_depth'
     835            1 :          profile_column_name(p_dRstar_div_dr) = 'dRstar_div_dr'
     836            1 :          profile_column_name(p_dr_div_R) = 'dr_div_R'
     837            1 :          profile_column_name(p_log_dr_div_R) = 'log_dr_div_R'
     838            1 :          profile_column_name(p_r_div_R) = 'r_div_R'
     839            1 :          profile_column_name(p_dr_div_rmid) = 'dr_div_rmid'
     840            1 :          profile_column_name(p_log_dr_div_rmid) = 'log_dr_div_rmid'
     841            1 :          profile_column_name(p_log_dr) = 'log_dr'
     842            1 :          profile_column_name(p_dlogR) = 'dlogR'
     843              : 
     844            1 :          profile_column_name(p_cell_internal_energy_fraction_start) = 'cell_internal_energy_fraction_start'
     845            1 :          profile_column_name(p_cell_internal_energy_fraction) = 'cell_internal_energy_fraction'
     846            1 :          profile_column_name(p_ergs_error) = 'ergs_error'
     847            1 :          profile_column_name(p_log_rel_E_err) = 'log_rel_E_err'
     848            1 :          profile_column_name(p_ergs_error_integral) = 'ergs_error_integral'
     849            1 :          profile_column_name(p_ergs_rel_error_integral) = 'ergs_rel_error_integral'
     850              : 
     851            1 :          profile_column_name(p_t_rad) = 't_rad'
     852            1 :          profile_column_name(p_log_t_rad) = 'log_t_rad'
     853              : 
     854            1 :          profile_column_name(p_log_dt_cs_div_dr) = 'log_dt_cs_div_dr'
     855            1 :          profile_column_name(p_dt_cs_div_dr) = 'dt_cs_div_dr'
     856            1 :          profile_column_name(p_dr_div_cs) = 'dr_div_cs'
     857            1 :          profile_column_name(p_log_dr_div_cs) = 'log_dr_div_cs'
     858            1 :          profile_column_name(p_dr_div_cs_yr) = 'dr_div_cs_yr'
     859            1 :          profile_column_name(p_log_dr_div_cs_yr) = 'log_dr_div_cs_yr'
     860              : 
     861            1 :          profile_column_name(p_cell_collapse_time) = 'cell_collapse_time'
     862            1 :          profile_column_name(p_log_cell_collapse_time) = 'log_cell_collapse_time'
     863              : 
     864            1 :          profile_column_name(p_log_acoustic_depth) = 'log_acoustic_depth'
     865            1 :          profile_column_name(p_log_acoustic_radius) = 'log_acoustic_radius'
     866            1 :          profile_column_name(p_acoustic_depth) = 'acoustic_depth'
     867            1 :          profile_column_name(p_acoustic_radius) = 'acoustic_radius'
     868            1 :          profile_column_name(p_acoustic_r_div_R_phot) = 'acoustic_r_div_R_phot'
     869              : 
     870            1 :          profile_column_name(p_compression_gradient) = 'compression_gradient'
     871            1 :          profile_column_name(p_dq_ratio) = 'dq_ratio'
     872            1 :          profile_column_name(p_tau_eff) = 'tau_eff'
     873            1 :          profile_column_name(p_tau_eff_div_tau) = 'tau_eff_div_tau'
     874            1 :          profile_column_name(p_xtau) = 'xtau'
     875            1 :          profile_column_name(p_tau) = 'tau'
     876            1 :          profile_column_name(p_extra_opacity_factor) = 'extra_opacity_factor'
     877            1 :          profile_column_name(p_log_kap_times_factor) = 'log_kap_times_factor'
     878            1 :          profile_column_name(p_log_kap) = 'log_kap'
     879            1 :          profile_column_name(p_log_opacity) = 'log_opacity'
     880            1 :          profile_column_name(p_kap_frac_lowT) = 'kap_frac_lowT'
     881            1 :          profile_column_name(p_kap_frac_highT) = 'kap_frac_highT'
     882            1 :          profile_column_name(p_kap_frac_Type2) = 'kap_frac_Type2'
     883            1 :          profile_column_name(p_kap_frac_Compton) = 'kap_frac_Compton'
     884            1 :          profile_column_name(p_kap_frac_op_mono) = 'kap_frac_op_mono'
     885            1 :          profile_column_name(p_energy) = 'energy'
     886            1 :          profile_column_name(p_logM) = 'logM'
     887            1 :          profile_column_name(p_temperature) = 'temperature'
     888            1 :          profile_column_name(p_logT_face) = 'logT_face'
     889            1 :          profile_column_name(p_logT_bb) = 'logT_bb'
     890            1 :          profile_column_name(p_logT_face_div_logT_bb) = 'logT_face_div_logT_bb'
     891            1 :          profile_column_name(p_logT) = 'logT'
     892              : 
     893              : 
     894            1 :          profile_column_name(p_rho) = 'rho'
     895            1 :          profile_column_name(p_density) = 'density'
     896            1 :          profile_column_name(p_logRho) = 'logRho'
     897            1 :          profile_column_name(p_pgas) = 'pgas'
     898            1 :          profile_column_name(p_logPgas) = 'logPgas'
     899            1 :          profile_column_name(p_prad) = 'prad'
     900            1 :          profile_column_name(p_pressure) = 'pressure'
     901            1 :          profile_column_name(p_logP) = 'logP'
     902            1 :          profile_column_name(p_logE) = 'logE'
     903            1 :          profile_column_name(p_grada) = 'grada'
     904            1 :          profile_column_name(p_dE_dRho) = 'dE_dRho'
     905            1 :          profile_column_name(p_Cv) = 'cv'
     906            1 :          profile_column_name(p_thermal_time_to_surface) = 'thermal_time_to_surface'
     907            1 :          profile_column_name(p_log_thermal_time_to_surface) = 'log_thermal_time_to_surface'
     908            1 :          profile_column_name(p_Cp) = 'cp'
     909            1 :          profile_column_name(p_log_CpT) = 'log_CpT'
     910            1 :          profile_column_name(p_log_CpT_absMdot_div_L) = 'log_CpT_absMdot_div_L'
     911            1 :          profile_column_name(p_logS) = 'logS'
     912            1 :          profile_column_name(p_logS_per_baryon) = 'logS_per_baryon'
     913            1 :          profile_column_name(p_gamma1) = 'gamma1'
     914            1 :          profile_column_name(p_gamma3) = 'gamma3'
     915            1 :          profile_column_name(p_eta) = 'eta'
     916            1 :          profile_column_name(p_gam) = 'gam'
     917            1 :          profile_column_name(p_mu) = 'mu'
     918              : 
     919            1 :          profile_column_name(p_eos_frac_OPAL_SCVH) = 'eos_frac_OPAL_SCVH'
     920            1 :          profile_column_name(p_eos_frac_HELM) = 'eos_frac_HELM'
     921            1 :          profile_column_name(p_eos_frac_Skye) = 'eos_frac_Skye'
     922            1 :          profile_column_name(p_eos_frac_PC) = 'eos_frac_PC'
     923            1 :          profile_column_name(p_eos_frac_FreeEOS) = 'eos_frac_FreeEOS'
     924            1 :          profile_column_name(p_eos_frac_CMS) = 'eos_frac_CMS'
     925            1 :          profile_column_name(p_eos_frac_ideal) = 'eos_frac_ideal'
     926              : 
     927            1 :          profile_column_name(p_log_rho_times_r3) = 'log_rho_times_r3'
     928            1 :          profile_column_name(p_rho_times_r3) = 'rho_times_r3'
     929            1 :          profile_column_name(p_v_times_t_div_r) = 'v_times_t_div_r'
     930            1 :          profile_column_name(p_v_div_r) = 'v_div_r'
     931              : 
     932            1 :          profile_column_name(p_log_c_div_tau) = 'log_c_div_tau'
     933            1 :          profile_column_name(p_log_v_escape) = 'log_v_escape'
     934            1 :          profile_column_name(p_v_div_v_escape) = 'v_div_v_escape'
     935            1 :          profile_column_name(p_v_div_vesc) = 'v_div_vesc'
     936            1 :          profile_column_name(p_v_div_cs) = 'v_div_cs'
     937            1 :          profile_column_name(p_v_div_csound) = 'v_div_csound'
     938            1 :          profile_column_name(p_log_csound) = 'log_csound'
     939            1 :          profile_column_name(p_csound) = 'csound'
     940            1 :          profile_column_name(p_csound_face) = 'csound_face'
     941              : 
     942            1 :          profile_column_name(p_omega) = 'omega'
     943            1 :          profile_column_name(p_log_omega) = 'log_omega'
     944            1 :          profile_column_name(p_log_j_rot) = 'log_j_rot'
     945            1 :          profile_column_name(p_log_J_div_M53) = 'log_J_div_M53'
     946            1 :          profile_column_name(p_log_J_inside) = 'log_J_inside'
     947            1 :          profile_column_name(p_shear) = 'shear'
     948            1 :          profile_column_name(p_log_abs_shear) = 'log_abs_shear'
     949            1 :          profile_column_name(p_log_abs_dlnR_domega) = 'log_abs_dlnR_domega'
     950            1 :          profile_column_name(p_i_rot) = 'i_rot'
     951            1 :          profile_column_name(p_j_rot) = 'j_rot'
     952            1 :          profile_column_name(p_v_rot) = 'v_rot'
     953            1 :          profile_column_name(p_fp_rot) = 'fp_rot'
     954            1 :          profile_column_name(p_ft_rot) = 'ft_rot'
     955            1 :          profile_column_name(p_ft_rot_div_fp_rot) = 'ft_rot_div_fp_rot'
     956            1 :          profile_column_name(p_w_div_w_crit_roche) = 'w_div_w_crit_roche'
     957            1 :          profile_column_name(p_w_div_w_crit_roche2) = 'w_div_w_crit_roche2'
     958            1 :          profile_column_name(p_log_am_nu_rot) = 'log_am_nu_rot'
     959            1 :          profile_column_name(p_log_am_nu_non_rot) = 'log_am_nu_non_rot'
     960            1 :          profile_column_name(p_log_am_nu) = 'log_am_nu'
     961              : 
     962            1 :          profile_column_name(p_eps_phase_separation) = 'eps_phase_separation'
     963            1 :          profile_column_name(p_eps_WD_sedimentation) = 'eps_WD_sedimentation'
     964            1 :          profile_column_name(p_log_eps_WD_sedimentation) = 'log_eps_WD_sedimentation'
     965              : 
     966            1 :          profile_column_name(p_eps_diffusion) = 'eps_diffusion'
     967            1 :          profile_column_name(p_log_eps_diffusion) = 'log_eps_diffusion'
     968              : 
     969            1 :          profile_column_name(p_log_e_field) = 'log_e_field'
     970            1 :          profile_column_name(p_e_field) = 'e_field'
     971            1 :          profile_column_name(p_log_g_field_element_diffusion) = 'log_g_field_element_diffusion'
     972            1 :          profile_column_name(p_g_field_element_diffusion) = 'g_field_element_diffusion'
     973            1 :          profile_column_name(p_log_eE_div_mg_element_diffusion) = 'log_eE_div_mg_element_diffusion'
     974            1 :          profile_column_name(p_eE_div_mg_element_diffusion) = 'eE_div_mg_element_diffusion'
     975              : 
     976            1 :          profile_column_name(p_r_polar) = 'r_polar'
     977            1 :          profile_column_name(p_log_r_polar) = 'log_r_polar'
     978            1 :          profile_column_name(p_r_equatorial) = 'r_equatorial'
     979            1 :          profile_column_name(p_log_r_equatorial) = 'log_r_equatorial'
     980            1 :          profile_column_name(p_r_e_div_r_p) = 'r_e_div_r_p'
     981            1 :          profile_column_name(p_omega_crit) = 'omega_crit'
     982            1 :          profile_column_name(p_omega_div_omega_crit) = 'omega_div_omega_crit'
     983              : 
     984            1 :          profile_column_name(p_am_log_sig) = 'am_log_sig'
     985            1 :          profile_column_name(p_am_log_sig_omega) = 'am_log_sig_omega'
     986            1 :          profile_column_name(p_am_log_sig_j) = 'am_log_sig_j'
     987              : 
     988            1 :          profile_column_name(p_am_log_nu_omega) = 'am_log_nu_omega'
     989            1 :          profile_column_name(p_am_log_nu_j) = 'am_log_nu_j'
     990            1 :          profile_column_name(p_am_log_nu_rot) = 'am_log_nu_rot'
     991            1 :          profile_column_name(p_am_log_nu_non_rot) = 'am_log_nu_non_rot'
     992              : 
     993            1 :          profile_column_name(p_am_domega_dlnR) = 'am_domega_dlnR'
     994            1 :          profile_column_name(p_richardson_number) = 'richardson_number'
     995            1 :          profile_column_name(p_am_log_D_visc) = 'am_log_D_visc'
     996            1 :          profile_column_name(p_am_log_D_DSI) = 'am_log_D_DSI'
     997            1 :          profile_column_name(p_am_log_D_SH) = 'am_log_D_SH'
     998            1 :          profile_column_name(p_am_log_D_SSI) = 'am_log_D_SSI'
     999            1 :          profile_column_name(p_am_log_D_ES) = 'am_log_D_ES'
    1000            1 :          profile_column_name(p_am_log_D_GSF) = 'am_log_D_GSF'
    1001            1 :          profile_column_name(p_am_log_D_ST) = 'am_log_D_ST'
    1002            1 :          profile_column_name(p_am_log_nu_ST) = 'am_log_nu_ST'
    1003              : 
    1004            1 :          profile_column_name(p_dynamo_log_B_r) = 'dynamo_log_B_r'
    1005            1 :          profile_column_name(p_dynamo_log_B_phi) = 'dynamo_log_B_phi'
    1006              : 
    1007            1 :          profile_column_name(p_grada_face) = 'grada_face'
    1008            1 :          profile_column_name(p_gradr_div_grada) = 'gradr_div_grada'
    1009            1 :          profile_column_name(p_gradr_sub_grada) = 'gradr_sub_grada'
    1010            1 :          profile_column_name(p_scale_height) = 'scale_height'
    1011              : 
    1012            1 :          profile_column_name(p_entropy) = 'entropy'
    1013            1 :          profile_column_name(p_free_e) = 'free_e'
    1014            1 :          profile_column_name(p_logfree_e) = 'logfree_e'
    1015            1 :          profile_column_name(p_chiRho) = 'chiRho'
    1016            1 :          profile_column_name(p_chiT) = 'chiT'
    1017            1 :          profile_column_name(p_QQ) = 'QQ'
    1018              : 
    1019            1 :          profile_column_name(p_eos_phase) = 'eos_phase'
    1020            1 :          profile_column_name(p_latent_ddlnT) = 'latent_ddlnT'
    1021            1 :          profile_column_name(p_latent_ddlnRho) = 'latent_ddlnRho'
    1022              : 
    1023            1 :          profile_column_name(p_chiRho_for_partials) = 'chiRho_for_partials'
    1024            1 :          profile_column_name(p_chiT_for_partials) = 'chiT_for_partials'
    1025            1 :          profile_column_name(p_rel_diff_chiRho_for_partials) = 'rel_diff_chiRho_for_partials'
    1026            1 :          profile_column_name(p_rel_diff_chiT_for_partials) = 'rel_diff_chiT_for_partials'
    1027              : 
    1028            1 :          profile_column_name(p_x_mass_fraction_H) = 'x_mass_fraction_H'
    1029            1 :          profile_column_name(p_y_mass_fraction_He) = 'y_mass_fraction_He'
    1030            1 :          profile_column_name(p_z_mass_fraction_metals) = 'z_mass_fraction_metals'
    1031              : 
    1032            1 :          profile_column_name(p_abar) = 'abar'
    1033            1 :          profile_column_name(p_zbar) = 'zbar'
    1034            1 :          profile_column_name(p_z2bar) = 'z2bar'
    1035            1 :          profile_column_name(p_ye) = 'ye'
    1036            1 :          profile_column_name(p_opacity) = 'opacity'
    1037            1 :          profile_column_name(p_dkap_dlnrho_face) = 'dkap_dlnrho_face'
    1038            1 :          profile_column_name(p_dkap_dlnT_face) = 'dkap_dlnT_face'
    1039              : 
    1040            1 :          profile_column_name(p_eps_nuc_start) = 'eps_nuc_start'
    1041            1 :          profile_column_name(p_eps_nuc) = 'eps_nuc'
    1042            1 :          profile_column_name(p_signed_log_eps_nuc) = 'signed_log_eps_nuc'
    1043            1 :          profile_column_name(p_log_abs_eps_nuc) = 'log_abs_eps_nuc'
    1044              : 
    1045            1 :          profile_column_name(p_d_epsnuc_dlnd) = 'd_epsnuc_dlnd'
    1046            1 :          profile_column_name(p_d_epsnuc_dlnT) = 'd_epsnuc_dlnT'
    1047            1 :          profile_column_name(p_d_lnepsnuc_dlnd) = 'd_lnepsnuc_dlnd'
    1048            1 :          profile_column_name(p_d_lnepsnuc_dlnT) = 'd_lnepsnuc_dlnT'
    1049            1 :          profile_column_name(p_deps_dlnd_face) = 'deps_dlnd_face'
    1050            1 :          profile_column_name(p_deps_dlnT_face) = 'deps_dlnT_face'
    1051            1 :          profile_column_name(p_eps_nuc_neu_total) = 'eps_nuc_neu_total'
    1052              : 
    1053            1 :          profile_column_name(p_non_nuc_neu) = 'non_nuc_neu'
    1054            1 :          profile_column_name(p_nonnucneu_plas) = 'nonnucneu_plas'
    1055            1 :          profile_column_name(p_nonnucneu_brem) = 'nonnucneu_brem'
    1056            1 :          profile_column_name(p_nonnucneu_phot) = 'nonnucneu_phot'
    1057            1 :          profile_column_name(p_nonnucneu_pair) = 'nonnucneu_pair'
    1058            1 :          profile_column_name(p_nonnucneu_reco) = 'nonnucneu_reco'
    1059              : 
    1060            1 :          profile_column_name(p_log_irradiation_heat) = 'log_irradiation_heat'
    1061            1 :          profile_column_name(p_extra_L) = 'extra_L'
    1062            1 :          profile_column_name(p_log_extra_L) = 'log_extra_L'
    1063            1 :          profile_column_name(p_extra_jdot) = 'extra_jdot'
    1064            1 :          profile_column_name(p_extra_omegadot) = 'extra_omegadot'
    1065            1 :          profile_column_name(p_extra_grav) = 'extra_grav'
    1066            1 :          profile_column_name(p_extra_heat) = 'extra_heat'
    1067            1 :          profile_column_name(p_alpha_mlt) = 'alpha_mlt'
    1068            1 :          profile_column_name(p_cgrav_factor) = 'cgrav_factor'
    1069            1 :          profile_column_name(p_div_v) = 'div_v'
    1070              : 
    1071            1 :          profile_column_name(p_d_v_div_r_dm) = 'd_v_div_r_dm'
    1072            1 :          profile_column_name(p_d_v_div_r_dr) = 'd_v_div_r_dr'
    1073            1 :          profile_column_name(p_dvdt_grav) = 'dvdt_grav'
    1074            1 :          profile_column_name(p_dvdt_dPdm) = 'dvdt_dPdm'
    1075            1 :          profile_column_name(p_du) = 'du'
    1076            1 :          profile_column_name(p_P_face) = 'P_face'
    1077            1 :          profile_column_name(p_log_P_face) = 'log_P_face'
    1078              : 
    1079            1 :          profile_column_name(p_dlnP_dlnR) = 'dlnP_dlnR'
    1080            1 :          profile_column_name(p_dlnRho_dlnR) = 'dlnRho_dlnR'
    1081            1 :          profile_column_name(p_gradP_div_rho) = 'gradP_div_rho'
    1082            1 :          profile_column_name(p_dPdr_div_grav) = 'dPdr_div_grav'
    1083              : 
    1084            1 :          profile_column_name(p_log_abs_eps_grav_dm_div_L) = 'log_abs_eps_grav_dm_div_L'
    1085            1 :          profile_column_name(p_eps_grav_composition_term) = 'eps_grav_composition_term'
    1086            1 :          profile_column_name(p_dm_eps_grav) = 'dm_eps_grav'
    1087              : 
    1088            1 :          profile_column_name(p_eps_grav_plus_eps_mdot) = 'eps_grav_plus_eps_mdot'
    1089            1 :          profile_column_name(p_ergs_eps_grav_plus_eps_mdot) = 'ergs_eps_grav_plus_eps_mdot'
    1090            1 :          profile_column_name(p_ergs_mdot) = 'ergs_mdot'
    1091            1 :          profile_column_name(p_eps_mdot) = 'eps_mdot'
    1092              : 
    1093            1 :          profile_column_name(p_log_xm_div_delta_m) = 'log_xm_div_delta_m'
    1094            1 :          profile_column_name(p_xm_div_delta_m) = 'xm_div_delta_m'
    1095            1 :          profile_column_name(p_eps_grav) = 'eps_grav'
    1096            1 :          profile_column_name(p_env_eps_grav) = 'env_eps_grav'
    1097            1 :          profile_column_name(p_signed_log_eps_grav) = 'signed_log_eps_grav'
    1098            1 :          profile_column_name(p_mlt_mixing_length) = 'mlt_mixing_length'
    1099            1 :          profile_column_name(p_log_conv_L_div_L) = 'log_conv_L_div_L'
    1100            1 :          profile_column_name(p_conv_L_div_L) = 'conv_L_div_L'
    1101            1 :          profile_column_name(p_mlt_Zeta) = 'mlt_Zeta'
    1102            1 :          profile_column_name(p_mlt_Gamma) = 'mlt_Gamma'
    1103            1 :          profile_column_name(p_mlt_Pturb) = 'mlt_Pturb'
    1104            1 :          profile_column_name(p_mlt_mixing_type) = 'mlt_mixing_type'
    1105              : 
    1106            1 :          profile_column_name(p_grada_sub_gradT) = 'grada_sub_gradT'
    1107            1 :          profile_column_name(p_gradT_sub_grada) = 'gradT_sub_grada'
    1108              : 
    1109            1 :          profile_column_name(p_gradT_sub_a) = 'gradT_sub_a'
    1110            1 :          profile_column_name(p_gradT_div_grada) = 'gradT_div_grada'
    1111              : 
    1112            1 :          profile_column_name(p_gradT_rel_err) = 'gradT_rel_err'
    1113            1 :          profile_column_name(p_gradr_sub_gradT) = 'gradr_sub_gradT'
    1114            1 :          profile_column_name(p_gradT_sub_gradr) = 'gradT_sub_gradr'
    1115            1 :          profile_column_name(p_gradT_div_gradr) = 'gradT_div_gradr'
    1116            1 :          profile_column_name(p_log_gradT_div_gradr) = 'log_gradT_div_gradr'
    1117              : 
    1118            1 :          profile_column_name(p_log_mlt_Gamma) = 'log_mlt_Gamma'
    1119            1 :          profile_column_name(p_log_mlt_vc) = 'log_mlt_vc'
    1120            1 :          profile_column_name(p_conv_vel_div_mlt_vc) = 'conv_vel_div_mlt_vc'
    1121            1 :          profile_column_name(p_mlt_vc) = 'mlt_vc'
    1122            1 :          profile_column_name(p_mlt_D) = 'mlt_D'
    1123            1 :          profile_column_name(p_mlt_gradT) = 'mlt_gradT'
    1124            1 :          profile_column_name(p_mlt_Y_face) = 'mlt_Y_face'
    1125            1 :          profile_column_name(p_mlt_log_abs_Y) = 'mlt_log_abs_Y'
    1126            1 :          profile_column_name(p_tdc_num_iters) = 'tdc_num_iters'
    1127            1 :          profile_column_name(p_dvc_dt_TDC_div_g) = 'dvc_dt_TDC_div_g'
    1128              : 
    1129            1 :          profile_column_name(p_delta_r) = 'delta_r'
    1130            1 :          profile_column_name(p_delta_L) = 'delta_L'
    1131            1 :          profile_column_name(p_delta_cell_vol) = 'delta_cell_vol'
    1132            1 :          profile_column_name(p_delta_entropy) = 'delta_entropy'
    1133            1 :          profile_column_name(p_delta_T) = 'delta_T'
    1134            1 :          profile_column_name(p_delta_rho) = 'delta_rho'
    1135            1 :          profile_column_name(p_delta_eps_nuc) = 'delta_eps_nuc'
    1136            1 :          profile_column_name(p_delta_mu) = 'delta_mu'
    1137            1 :          profile_column_name(p_log_D_conv) = 'log_D_conv'
    1138            1 :          profile_column_name(p_log_D_leftover) = 'log_D_leftover'
    1139            1 :          profile_column_name(p_log_D_semi) = 'log_D_semi'
    1140            1 :          profile_column_name(p_log_D_ovr) = 'log_D_ovr'
    1141            1 :          profile_column_name(p_log_D_anon) = 'log_D_anon'
    1142            1 :          profile_column_name(p_log_D_thrm) = 'log_D_thrm'
    1143            1 :          profile_column_name(p_log_D_rayleigh_taylor) = 'log_D_rayleigh_taylor'
    1144            1 :          profile_column_name(p_log_D_minimum) = 'log_D_minimum'
    1145            1 :          profile_column_name(p_log_D_mix_non_rotation) = 'log_D_mix_non_rotation'
    1146            1 :          profile_column_name(p_log_D_mix_rotation) = 'log_D_mix_rotation'
    1147            1 :          profile_column_name(p_log_D_omega) = 'log_D_omega'
    1148              : 
    1149            1 :          profile_column_name(p_log_lambda_RTI_div_Hrho) = 'log_lambda_RTI_div_Hrho'
    1150            1 :          profile_column_name(p_lambda_RTI) = 'lambda_RTI'
    1151            1 :          profile_column_name(p_dPdr_info) = 'dPdr_info'
    1152            1 :          profile_column_name(p_dRhodr_info) = 'dRhodr_info'
    1153              : 
    1154            1 :          profile_column_name(p_source_plus_alpha_RTI) = 'source_plus_alpha_RTI'
    1155            1 :          profile_column_name(p_source_minus_alpha_RTI) = 'source_minus_alpha_RTI'
    1156            1 :          profile_column_name(p_log_source_RTI) = 'log_source_RTI'
    1157            1 :          profile_column_name(p_log_source_plus_alpha_RTI) = 'log_source_plus_alpha_RTI'
    1158            1 :          profile_column_name(p_log_source_minus_alpha_RTI) = 'log_source_minus_alpha_RTI'
    1159              : 
    1160            1 :          profile_column_name(p_dudt_RTI) = 'dudt_RTI'
    1161            1 :          profile_column_name(p_dedt_RTI) = 'dedt_RTI'
    1162              : 
    1163            1 :          profile_column_name(p_eta_RTI) = 'eta_RTI'
    1164            1 :          profile_column_name(p_log_eta_RTI) = 'log_eta_RTI'
    1165            1 :          profile_column_name(p_boost_for_eta_RTI) = 'boost_for_eta_RTI'
    1166            1 :          profile_column_name(p_log_boost_for_eta_RTI) = 'log_boost_for_eta_RTI'
    1167              : 
    1168            1 :          profile_column_name(p_alpha_RTI) = 'alpha_RTI'
    1169            1 :          profile_column_name(p_log_alpha_RTI) = 'log_alpha_RTI'
    1170            1 :          profile_column_name(p_log_etamid_RTI) = 'log_etamid_RTI'
    1171            1 :          profile_column_name(p_log_sig_RTI) = 'log_sig_RTI'
    1172            1 :          profile_column_name(p_log_sigmid_RTI) = 'log_sigmid_RTI'
    1173              : 
    1174            1 :          profile_column_name(p_log_D_mix) = 'log_D_mix'
    1175            1 :          profile_column_name(p_log_sig_raw_mix) = 'log_sig_raw_mix'
    1176            1 :          profile_column_name(p_log_sig_mix) = 'log_sig_mix'
    1177              : 
    1178            1 :          profile_column_name(p_burn_avg_epsnuc) = 'burn_avg_epsnuc'
    1179            1 :          profile_column_name(p_log_burn_avg_epsnuc) = 'log_burn_avg_epsnuc'
    1180            1 :          profile_column_name(p_burn_num_iters) = 'burn_num_iters'
    1181              : 
    1182            1 :          profile_column_name(p_dt_times_conv_vel_div_mixing_length) = 'dt_times_conv_vel_div_mixing_length'
    1183            1 :          profile_column_name(p_log_dt_times_conv_vel_div_mixing_length) = 'log_dt_times_conv_vel_div_mixing_length'
    1184            1 :          profile_column_name(p_conv_vel) = 'conv_vel'
    1185            1 :          profile_column_name(p_log_conv_vel) = 'log_conv_vel'
    1186            1 :          profile_column_name(p_conv_vel_div_csound) = 'conv_vel_div_csound'
    1187            1 :          profile_column_name(p_conv_vel_div_L_vel) = 'conv_vel_div_L_vel'
    1188              : 
    1189            1 :          profile_column_name(p_mix_type) = 'mix_type'
    1190            1 :          profile_column_name(p_mixing_type) = 'mixing_type'
    1191            1 :          profile_column_name(p_log_mlt_D_mix) = 'log_mlt_D_mix'
    1192            1 :          profile_column_name(p_log_Cp_T_div_t_sound) = 'log_cp_T_div_t_sound'
    1193            1 :          profile_column_name(p_log_t_thermal) = 'log_t_thermal'
    1194            1 :          profile_column_name(p_log_t_sound) = 'log_t_sound'
    1195            1 :          profile_column_name(p_pressure_scale_height_cm) = 'pressure_scale_height_cm'
    1196            1 :          profile_column_name(p_pressure_scale_height) = 'pressure_scale_height'
    1197              : 
    1198            1 :          profile_column_name(p_gradT) = 'gradT'
    1199            1 :          profile_column_name(p_gradr) = 'gradr'
    1200              : 
    1201            1 :          profile_column_name(p_cno_div_z) = 'cno_div_z'
    1202              : 
    1203            1 :          profile_column_name(p_dE) = 'dE'
    1204            1 :          profile_column_name(p_dr) = 'dr'
    1205            1 :          profile_column_name(p_dv) = 'dv'
    1206            1 :          profile_column_name(p_dr_ratio) = 'dr_ratio'
    1207            1 :          profile_column_name(p_dt_dv_div_dr) = 'dt_dv_div_dr'
    1208              : 
    1209            1 :          profile_column_name(p_dlog_h1_dlogP) = 'dlog_h1_dlogP'
    1210            1 :          profile_column_name(p_dlog_he3_dlogP) = 'dlog_he3_dlogP'
    1211            1 :          profile_column_name(p_dlog_he4_dlogP) = 'dlog_he4_dlogP'
    1212            1 :          profile_column_name(p_dlog_c12_dlogP) = 'dlog_c12_dlogP'
    1213            1 :          profile_column_name(p_dlog_c13_dlogP) = 'dlog_c13_dlogP'
    1214            1 :          profile_column_name(p_dlog_n14_dlogP) = 'dlog_n14_dlogP'
    1215            1 :          profile_column_name(p_dlog_o16_dlogP) = 'dlog_o16_dlogP'
    1216            1 :          profile_column_name(p_dlog_ne20_dlogP) = 'dlog_ne20_dlogP'
    1217            1 :          profile_column_name(p_dlog_mg24_dlogP) = 'dlog_mg24_dlogP'
    1218            1 :          profile_column_name(p_dlog_si28_dlogP) = 'dlog_si28_dlogP'
    1219              : 
    1220            1 :          profile_column_name(p_dlog_pp_dlogP) = 'dlog_pp_dlogP'
    1221            1 :          profile_column_name(p_dlog_cno_dlogP) = 'dlog_cno_dlogP'
    1222            1 :          profile_column_name(p_dlog_3alf_dlogP) = 'dlog_3alf_dlogP'
    1223              : 
    1224            1 :          profile_column_name(p_dlog_burn_c_dlogP) = 'dlog_burn_c_dlogP'
    1225            1 :          profile_column_name(p_dlog_burn_n_dlogP) = 'dlog_burn_n_dlogP'
    1226            1 :          profile_column_name(p_dlog_burn_o_dlogP) = 'dlog_burn_o_dlogP'
    1227              : 
    1228            1 :          profile_column_name(p_dlog_burn_ne_dlogP) = 'dlog_burn_ne_dlogP'
    1229            1 :          profile_column_name(p_dlog_burn_na_dlogP) = 'dlog_burn_na_dlogP'
    1230            1 :          profile_column_name(p_dlog_burn_mg_dlogP) = 'dlog_burn_mg_dlogP'
    1231              : 
    1232            1 :          profile_column_name(p_dlog_cc_dlogP) = 'dlog_cc_dlogP'
    1233            1 :          profile_column_name(p_dlog_co_dlogP) = 'dlog_co_dlogP'
    1234            1 :          profile_column_name(p_dlog_oo_dlogP) = 'dlog_oo_dlogP'
    1235              : 
    1236            1 :          profile_column_name(p_dlog_burn_si_dlogP) = 'dlog_burn_si_dlogP'
    1237            1 :          profile_column_name(p_dlog_burn_s_dlogP) = 'dlog_burn_s_dlogP'
    1238            1 :          profile_column_name(p_dlog_burn_ar_dlogP) = 'dlog_burn_ar_dlogP'
    1239            1 :          profile_column_name(p_dlog_burn_ca_dlogP) = 'dlog_burn_ca_dlogP'
    1240            1 :          profile_column_name(p_dlog_burn_ti_dlogP) = 'dlog_burn_ti_dlogP'
    1241            1 :          profile_column_name(p_dlog_burn_cr_dlogP) = 'dlog_burn_cr_dlogP'
    1242            1 :          profile_column_name(p_dlog_burn_fe_dlogP) = 'dlog_burn_fe_dlogP'
    1243              : 
    1244            1 :          profile_column_name(p_dlog_pnhe4_dlogP) = 'dlog_pnhe4_dlogP'
    1245            1 :          profile_column_name(p_dlog_photo_dlogP) = 'dlog_photo_dlogP'
    1246            1 :          profile_column_name(p_dlog_other_dlogP) = 'dlog_other_dlogP'
    1247              : 
    1248            1 :          profile_column_name(p_total_energy_sign) = 'total_energy_sign'
    1249            1 :          profile_column_name(p_total_energy) = 'total_energy'
    1250              : 
    1251            1 :          profile_column_name(p_Ptrb) = 'Ptrb'
    1252            1 :          profile_column_name(p_log_Ptrb) = 'log_Ptrb'
    1253            1 :          profile_column_name(p_w) = 'w'
    1254            1 :          profile_column_name(p_log_w) = 'log_w'
    1255            1 :          profile_column_name(p_etrb) = 'etrb'
    1256            1 :          profile_column_name(p_log_etrb) = 'log_etrb'
    1257            1 :          profile_column_name(p_Pvsc) = 'Pvsc'
    1258            1 :          profile_column_name(p_Hp_face) = 'Hp_face'
    1259            1 :          profile_column_name(p_Y_face) = 'Y_face'
    1260            1 :          profile_column_name(p_PII_face) = 'PII_face'
    1261            1 :          profile_column_name(p_Chi) = 'Chi'
    1262            1 :          profile_column_name(p_COUPL) = 'COUPL'
    1263            1 :          profile_column_name(p_SOURCE) = 'SOURCE'
    1264            1 :          profile_column_name(p_DAMP) = 'DAMP'
    1265            1 :          profile_column_name(p_DAMPR) = 'DAMPR'
    1266            1 :          profile_column_name(p_Eq) = 'Eq'
    1267            1 :          profile_column_name(p_Uq) = 'Uq'
    1268            1 :          profile_column_name(p_Lr) = 'Lr'
    1269            1 :          profile_column_name(p_Lr_div_L) = 'Lr_div_L'
    1270            1 :          profile_column_name(p_Lc) = 'Lc'
    1271            1 :          profile_column_name(p_Lc_div_L) = 'Lc_div_L'
    1272            1 :          profile_column_name(p_Lt) = 'Lt'
    1273            1 :          profile_column_name(p_Lt_div_L) = 'Lt_div_L'
    1274              : 
    1275            1 :          profile_column_name(p_rsp_Et) = 'rsp_Et'
    1276            1 :          profile_column_name(p_rsp_logEt) = 'rsp_logEt'
    1277            1 :          profile_column_name(p_rsp_erad) = 'rsp_erad'
    1278            1 :          profile_column_name(p_rsp_log_erad) = 'rsp_log_erad'
    1279            1 :          profile_column_name(p_rsp_Pt) = 'rsp_Pt'
    1280            1 :          profile_column_name(p_rsp_Lr) = 'rsp_Lr'
    1281            1 :          profile_column_name(p_rsp_Lc) = 'rsp_Lc'
    1282            1 :          profile_column_name(p_rsp_Lt) = 'rsp_Lt'
    1283            1 :          profile_column_name(p_rsp_Eq) = 'rsp_Eq'
    1284            1 :          profile_column_name(p_rsp_Uq) = 'rsp_Uq'
    1285            1 :          profile_column_name(p_rsp_src) = 'rsp_src'
    1286            1 :          profile_column_name(p_rsp_sink) = 'rsp_sink'
    1287            1 :          profile_column_name(p_rsp_damp) = 'rsp_damp'
    1288            1 :          profile_column_name(p_rsp_src_snk) = 'rsp_src_snk'
    1289            1 :          profile_column_name(p_rsp_dampR) = 'rsp_dampR'
    1290            1 :          profile_column_name(p_rsp_Y_face) = 'rsp_Y_face'
    1291            1 :          profile_column_name(p_rsp_Hp_face) = 'rsp_Hp_face'
    1292            1 :          profile_column_name(p_rsp_Chi) = 'rsp_Chi'
    1293            1 :          profile_column_name(p_rsp_heat_exchange_timescale) = 'rsp_heat_exchange_timescale'
    1294            1 :          profile_column_name(p_rsp_log_dt_div_heat_exchange_timescale) = 'rsp_log_dt_div_heat_exchange_timescale'
    1295            1 :          profile_column_name(p_rsp_log_heat_exchange_timescale) = 'rsp_log_heat_exchange_timescale'
    1296            1 :          profile_column_name(p_rsp_Pvsc) = 'rsp_Pvsc'
    1297            1 :          profile_column_name(p_rsp_gradT) = 'rsp_gradT'
    1298            1 :          profile_column_name(p_rsp_Lr_div_L) = 'rsp_Lr_div_L'
    1299            1 :          profile_column_name(p_rsp_Lc_div_L) = 'rsp_Lc_div_L'
    1300            1 :          profile_column_name(p_rsp_Lt_div_L) = 'rsp_Lt_div_L'
    1301              : 
    1302            1 :          profile_column_name(p_d_u_div_rmid) = 'd_u_div_rmid'
    1303            1 :          profile_column_name(p_d_u_div_rmid_start) = 'd_u_div_rmid_start'
    1304              : 
    1305            1 :          profile_column_name(p_cell_specific_IE) = 'cell_specific_IE'
    1306            1 :          profile_column_name(p_cell_ie_div_star_ie) = 'cell_ie_div_star_ie'
    1307            1 :          profile_column_name(p_log_cell_specific_IE) = 'log_cell_specific_IE'
    1308            1 :          profile_column_name(p_log_cell_ie_div_star_ie) = 'log_cell_ie_div_star_ie'
    1309              : 
    1310            1 :          profile_column_name(p_cell_specific_PE) = 'cell_specific_PE'
    1311            1 :          profile_column_name(p_cell_specific_KE) = 'cell_specific_KE'
    1312            1 :          profile_column_name(p_cell_IE_div_IE_plus_KE) = 'cell_IE_div_IE_plus_KE'
    1313            1 :          profile_column_name(p_cell_KE_div_IE_plus_KE) = 'cell_KE_div_IE_plus_KE'
    1314              : 
    1315            1 :          profile_column_name(p_log_L_div_CpTMdot) = 'log_L_div_CpTMdot'
    1316            1 :          profile_column_name(p_log_mdot_cs) = 'log_mdot_cs'
    1317            1 :          profile_column_name(p_log_mdot_v) = 'log_mdot_v'
    1318            1 :          profile_column_name(p_cs_at_cell_bdy) = 'cs_at_cell_bdy'
    1319            1 :          profile_column_name(p_grad_density) = 'grad_density'
    1320            1 :          profile_column_name(p_grad_temperature) = 'grad_temperature'
    1321              : 
    1322            1 :          profile_column_name(p_gradL) = 'gradL'
    1323            1 :          profile_column_name(p_grada_sub_gradr) = 'grada_sub_gradr'
    1324            1 :          profile_column_name(p_gradL_sub_gradr) = 'gradL_sub_gradr'
    1325            1 :          profile_column_name(p_sch_stable) = 'sch_stable'
    1326            1 :          profile_column_name(p_ledoux_stable) = 'ledoux_stable'
    1327              : 
    1328            1 :          profile_column_name(p_dominant_isoA_for_thermohaline) = 'dominant_isoA_for_thermohaline'
    1329            1 :          profile_column_name(p_dominant_isoZ_for_thermohaline) = 'dominant_isoZ_for_thermohaline'
    1330            1 :          profile_column_name(p_gradL_composition_term) = 'gradL_composition_term'
    1331              : 
    1332            1 :          profile_column_name(p_log_brunt_B) = 'log_brunt_B'
    1333            1 :          profile_column_name(p_log_brunt_nonB) = 'log_brunt_nonB'
    1334            1 :          profile_column_name(p_brunt_B) = 'brunt_B'
    1335            1 :          profile_column_name(p_brunt_nonB) = 'brunt_nonB'
    1336              : 
    1337            1 :          profile_column_name(p_brunt_N2) = 'brunt_N2'
    1338            1 :          profile_column_name(p_brunt_N2_structure_term) = 'brunt_N2_structure_term'
    1339            1 :          profile_column_name(p_brunt_N2_composition_term) = 'brunt_N2_composition_term'
    1340            1 :          profile_column_name(p_log_brunt_N2_structure_term) = 'log_brunt_N2_structure_term'
    1341            1 :          profile_column_name(p_log_brunt_N2_composition_term) = 'log_brunt_N2_composition_term'
    1342              : 
    1343            1 :          profile_column_name(p_brunt_A_div_x2) = 'brunt_A_div_x2'
    1344            1 :          profile_column_name(p_brunt_A) = 'brunt_A'
    1345            1 :          profile_column_name(p_log_brunt_N2_dimensionless) = 'log_brunt_N2_dimensionless'
    1346            1 :          profile_column_name(p_brunt_N2_dimensionless) = 'brunt_N2_dimensionless'
    1347            1 :          profile_column_name(p_brunt_N_dimensionless) = 'brunt_N_dimensionless'
    1348            1 :          profile_column_name(p_brunt_N) = 'brunt_N'
    1349            1 :          profile_column_name(p_brunt_frequency) = 'brunt_frequency'
    1350            1 :          profile_column_name(p_brunt_nu) = 'brunt_nu'
    1351            1 :          profile_column_name(p_log_brunt_N) = 'log_brunt_N'
    1352            1 :          profile_column_name(p_log_brunt_N2) = 'log_brunt_N2'
    1353            1 :          profile_column_name(p_sign_brunt_N2) = 'sign_brunt_N2'
    1354            1 :          profile_column_name(p_lamb_S2) = 'lamb_S2'
    1355            1 :          profile_column_name(p_lamb_S) = 'lamb_S'
    1356            1 :          profile_column_name(p_lamb_Sl1) = 'lamb_Sl1'
    1357            1 :          profile_column_name(p_lamb_Sl2) = 'lamb_Sl2'
    1358            1 :          profile_column_name(p_lamb_Sl3) = 'lamb_Sl3'
    1359            1 :          profile_column_name(p_lamb_Sl10) = 'lamb_Sl10'
    1360            1 :          profile_column_name(p_brunt_N_div_r_integral) = 'brunt_N_div_r_integral'
    1361            1 :          profile_column_name(p_brunt_N2_sub_omega2) = 'brunt_N2_sub_omega2'
    1362            1 :          profile_column_name(p_sl2_sub_omega2) = 'sl2_sub_omega2'
    1363            1 :          profile_column_name(p_k_r_integral) = 'k_r_integral'
    1364              : 
    1365            1 :          profile_column_name(p_log_brunt_nu) = 'log_brunt_nu'
    1366            1 :          profile_column_name(p_log_lamb_Sl1) = 'log_lamb_Sl1'
    1367            1 :          profile_column_name(p_log_lamb_Sl2) = 'log_lamb_Sl2'
    1368            1 :          profile_column_name(p_log_lamb_Sl3) = 'log_lamb_Sl3'
    1369            1 :          profile_column_name(p_log_lamb_Sl10) = 'log_lamb_Sl10'
    1370              : 
    1371            1 :          profile_column_name(p_logR_kap) = 'logR_kap'
    1372            1 :          profile_column_name(p_logW) = 'logW'
    1373            1 :          profile_column_name(p_logQ) = 'logQ'
    1374            1 :          profile_column_name(p_logV) = 'logV'
    1375              : 
    1376            1 :          profile_column_name(p_dlnX_dr) = 'dlnX_dr'
    1377            1 :          profile_column_name(p_dlnY_dr) = 'dlnY_dr'
    1378            1 :          profile_column_name(p_dlnRho_dr) = 'dlnRho_dr'
    1379              : 
    1380            1 :          profile_column_name(p_log_zFe) = 'log_zFe'
    1381            1 :          profile_column_name(p_zFe) = 'zFe'
    1382            1 :          profile_column_name(p_u) = 'u'
    1383            1 :          profile_column_name(p_u_face) = 'u_face'
    1384            1 :          profile_column_name(p_dPdr_dRhodr_info) = 'dPdr_dRhodr_info'
    1385            1 :          profile_column_name(p_RTI_du_diffusion_kick) = 'RTI_du_diffusion_kick'
    1386            1 :          profile_column_name(p_log_du_kick_div_du) = 'log_du_kick_div_du'
    1387            1 :          profile_column_name(p_max_abs_xa_corr) = 'max_abs_xa_corr'
    1388              : 
    1389            1 :          profile_column_name(p_log_dt_div_tau_conv) = 'log_dt_div_tau_conv'
    1390            1 :          profile_column_name(p_dt_div_tau_conv) = 'dt_div_tau_conv'
    1391            1 :          profile_column_name(p_tau_conv) = 'tau_conv'
    1392            1 :          profile_column_name(p_tau_qhse) = 'tau_qhse'
    1393            1 :          profile_column_name(p_tau_epsnuc) = 'tau_epsnuc'
    1394            1 :          profile_column_name(p_tau_cool) = 'tau_cool'
    1395              : 
    1396            1 :          profile_column_name(p_Frad_div_cUrad) = 'Frad_div_cUrad'
    1397            1 :          profile_column_name(p_lum_rad_div_L_Edd_sub_fourPrad_div_PchiT) = 'lum_rad_div_L_Edd_sub_fourPrad_div_PchiT'
    1398              : 
    1399            1 :          profile_column_name(p_flux_limit_R) = 'flux_limit_R'
    1400            1 :          profile_column_name(p_flux_limit_lambda) = 'flux_limit_lambda'
    1401              : 
    1402            1 :          cnt = 0
    1403          580 :          do i=1,p_col_id_max
    1404          580 :             if (len_trim(profile_column_name(i)) == 0) then
    1405            0 :                write(*,*) 'missing name for profile column id', i
    1406            0 :                if (i > 1) write(*,*) 'following ' // trim(profile_column_name(max(1,i-1)))  ! bp: get rid of bogus compiler warning
    1407            0 :                write(*,'(A)')
    1408            0 :                cnt = cnt+1
    1409              :             end if
    1410              :          end do
    1411              : 
    1412            1 :          if (cnt > 0) then
    1413            0 :             ierr = -1
    1414            0 :             return
    1415              :          end if
    1416              : 
    1417            1 :          nullify(profile_column_names_dict)
    1418          580 :          do i=1,p_col_id_max
    1419          579 :             call integer_dict_define(profile_column_names_dict, StrLowCase(profile_column_name(i)), i, ierr)
    1420          580 :             if (ierr /= 0) then
    1421            0 :                write(*,*) 'FATAL ERROR: profile_column_names_init failed in integer_dict_define'
    1422            0 :                return
    1423              :             end if
    1424              :          end do
    1425              : 
    1426              :       end subroutine profile_column_names_init
    1427              : 
    1428              : 
    1429            1 :       subroutine profile_column_names_shutdown()
    1430              :         use utils_lib, only: integer_dict_free
    1431            1 :         if (ASSOCIATED(profile_column_names_dict)) call integer_dict_free(profile_column_names_dict)
    1432            1 :       end subroutine profile_column_names_shutdown
    1433              : 
    1434              : 
    1435           12 :       integer function do_get_profile_id(cname)
    1436              :          use utils_lib, only: integer_dict_lookup
    1437              :          character (len=*), intent(in)  :: cname
    1438              :          ! returns id for the profile column if there is a matching name
    1439              :          ! returns 0 otherwise.
    1440              :          integer :: ierr, value
    1441           12 :          call integer_dict_lookup(profile_column_names_dict, StrLowCase(cname), value, ierr)
    1442           12 :          if (ierr /= 0) value = 0
    1443           12 :          do_get_profile_id = value
    1444           12 :       end function do_get_profile_id
    1445              : 
    1446              :       end module star_profile_def
        

Generated by: LCOV version 2.0-1