Configuration File =========================================================== The `config.yaml` file provides the configuration parameters required to execute the Synthesis module. This file defines various settings for the module, such as the type of synthesis to be performed, input files, and output configurations. Here is a two sample configuration file to compute an EoS with the hyperbolic tangent method: .. code-block:: yaml global: synthesis_type: 'hyperbolic-tangent' verbose: 2 interpolation_method: y_variable: speed_of_sound_squared x_variable: baryon_density x_variable_midpoint: 0.18 Gamma: 0.05 number_of_points: 300 The following sections provide an overview of all the parameters available in the configuration file. Global Settings --------------- These parameters define the general settings and options for the module, and are under the **global** key: - **run_name**: *(string, default: "")* Sets a name for the module run. This name will be used to create a subdirectory under `/output/` where the output files will be stored. **Important**: When using Lepton in a workflow in the MUSES Calculation Engine (CE), do not setup a run_name. The CE uses static paths for the files, and setting a run_name will cause the CE to fail. - **synthesis_type**: *(string, default: `'attach'`)* Determines the type of synthesis to be performed. Options are: - `attach`: Attach EoS at a specified variable and value. - `maxwell`: Maxwell construction. - `gibbs`: Gibbs construction. - `hyperbolic-tangent`: Interpolated EoS using the hyperbolic tangent method. - **check_eos_stability**: *(boolean, default: `false`)* Enables a stability check for the nuclear equation of state, checking if pressure and chemical potential are not decreasing functions of baryon density, and if speed of sound is casual. The results are printed in the `info.yaml` file. - **verbose**: *(integer, default: `0`, range: 0 to 4)* Controls the verbosity level of the output: - `0`: No output - `1`: Minimal output - `2`: Standard output - `3`: Extended output - `4`: Debug output Input File Settings ------------------- Defines the input files required by the module. **Important**: In the CE, it is unnecessary to set up input files, as the CE uses static paths for the files, which are the default paths mentioned below. - **model1_BetaEq_files**: *(object)* Specifies the input files for the beta-equilibrated nuclear equation of state of the first model: - **eos_input_file**: *(string, default: `"eos_beta_model1.csv"`)* The beta-equilibrated nuclear EoS data file (CSV format). - **particle_properties_input_file**: *(string, default: `"particle_properties_beta_model1.csv"`)* The particle properties data file (CSV format). - **model2_BetaEq_files**: *(object)* Specifies the input files for the beta-equilibrated nuclear equation of state of the second model: - **eos_input_file**: *(string, default: `"eos_beta_model2.csv"`)* The beta-equilibrated nuclear EoS data file (CSV format). - **particle_properties_input_file**: *(string, default: `"particle_properties_beta_model2.csv"`)* The particle properties data file (CSV format). - **model1_Grid_files**: *(object)* Specifies the input files for the gridded nuclear equation of state of the first model. Only required for the Gibbs phase transition: - **eos_input_file**: *(string, default: `"eos_grid_model1.csv"`)* The gridded nuclear EoS data file (CSV format). - **particle_properties_input_file**: *(string, default: `"particle_properties_grid_model1.csv"`)* The particle properties data file (CSV format). - **model2_Grid_files**: *(object)* Specifies the input files for the gridded nuclear equation of state of the second model. Only required for the Gibbs phase transition: - **eos_input_file**: *(string, default: `"eos_grid_model2.csv"`)* The gridded nuclear EoS data file (CSV format). - **particle_properties_input_file**: *(string, default: `"particle_properties_grid_model2.csv"`)* The particle properties data file (CSV format). - **lepton_files**: *(object)* Specifies the input files for the lepton equation of state. Only required for the Gibbs phase transition: - **eos_input_file**: *(string, default: `"lepton_eos.csv"`)* The lepton EoS data file (CSV format). - **particle_properties_input_file**: *(string, default: `"particle_properties_lepton.csv"`)* The particle properties data file for leptons (CSV format). Output File Settings -------------------- Controls the output files generated by the module, and are under the **output** key: - **output_particle_properties**: *(boolean, default: `false`)* If set to `true`, the module outputs particle properties data. Requires the relevant input file specified by `particle_properties_input_file`. - **output_compOSE**: *(boolean, default: `false`)* If set to `true`, the module outputs the parameters for creating the compOSE file. Requires the `eos_input_files` to be specified. - **output_derivatives**: *(boolean, default: `false`)* If set to `true`, the module outputs the derivatives of the beta-equilibrated equation of state. - **output_hdf5**: *(boolean, default: `false`)* If set to `true`, the module outputs data in HDF5 format, in addition to CSV. Derivatives Settings -------------------- Parameters for controlling numerical derivatives, under the **derivatives** key: - **method** *(string, default: 'gsl')*: Specifies the method to calculate derivatives. Options: - `'gsl'`: Uses the GNU Scientific Library for derivative calculations. - `'finite_difference'`: Uses a finite difference approach with custom settings. - **finite_difference** *(object)*: Controls settings specific to the finite difference method. - **step_type** *(string, default: 'relative')*: Defines how the step size is determined: - `'relative'`: The step size is proportional to the value being differentiated. - `'absolute'`: The step size is fixed. - **step_size** *(number, default: 5.e-3, range: 0.0 to 1.0)*: Sets the magnitude of the step size for derivatives, interpreted based on `step_type`. - **precision** *(integer, default: 1, range: 1 to 3)*: Specifies the order of accuracy for the finite difference method: - 1: First order - 2: Second order - 3: Third order Interpolation Method Settings ----------------------------- Settings for the hyperbolic-interpolation method used during synthesis, under the **interpolation_method** key: - **number_of_points**: *(integer, default: `150`, minimum: 1)* Specifies the number of points calculated in the region obtained by the interpolation method. - **y_variable**: *(string, default: `"pressure"`)* The variable to interpolate to produce a new EoS. Options: `pressure`, `energy_density`, `speed_of_sound_squared`. - **x_variable**: *(string, default: `"baryon_density"`)* The variable with respect to which the `y_variable` will be interpolated. Options: `baryon_density`, `baryon_chemical_potential`. The `baryon_chemical_potential` option is only available for y_variable = `pressure`. - **use_thermodynamic_consistency**: *(boolean, default: `true`)* If set to `true`, the module uses thermodynamic consistency to calculate the interpolated EoS. If `false`, it interpolates all thermodynamic variables independently. - **x_variable_midpoint**: *(number, default: `0.0`)* Sets the midpoint of the interpolation region. - **Gamma**: *(number, default: `0.0`)* Specifies the width of the interpolation region. Attach Method Settings ---------------------- Parameters for the attachment method, under the **attach_method** key: - **attach_variable**: *(string, default: `"baryon_chemical_potential"`)* The variable used to attach the two EoS. Options include various thermodynamic variables like `temperature`, `baryon_density`, `energy_density`, etc. - **attach_value**: *(number, default: `1300.0`)* The value of the `attach_variable` used to attach the two EoS. compOSE Options --------------- Defines options for generating the compOSE file, under the **compOSE_options** key: - **baryon_density_spacing**: *(string, default: `linear`)* Specifies the type of spacing in baryon density. Options: `linear`, `logarithmic`. - **baryon_density_points**: *(integer, default: `301`)* Sets the number of points in baryon density. - **charge_fraction_spacing**: *(string, default: `linear`)* Specifies the type of spacing in charge fraction. Options: `linear`, `logarithmic`. - **charge_fraction_points**: *(integer, default: `60`)* Sets the number of points in the charge fraction. Solver Parameters ----------------- The **solver** section in the `config.yaml` file defines parameters for configuring the non-linear least squares solver options in [Ceres Solver](http://ceres-solver.org/). It specifies the optimization method, linear solver type, and various tolerances to control convergence behavior. - **parameter_tolerance** *(number, default: `1.e-10`, range: 0.0 to 1.0)* Sets the tolerance for parameter updates. Smaller values lead to stricter convergence criteria. - **function_tolerance** *(number, default: `1.e-10`, range: 0.0 to 1.0)* Sets the tolerance for changes in the cost function. Optimization stops when the relative change in the cost function between iterations is less than this value. - **gradient_tolerance** *(number, default: `1.e-12`, range: 0.0 to 1.0)* Sets the tolerance for the gradient norm. When the gradient norm falls below this value, the optimization terminates, assuming a local minimum has been reached. - **use_nonmonotonic_steps** *(boolean, default: `true`)* Enables the use of non-monotonic steps in the solver, allowing temporary increases in the cost function to escape local minima. - **max_num_iterations** *(integer, default: `1000`, minimum: `1`)* Sets the maximum number of iterations for the solver. Larger values allow more steps to refine the solution but may increase computation time. - **method** *(string, default: `'levenbergMarquardt'`)* Specifies the optimization method to solve the system of equations. Available options include: - `'levenbergMarquardt'`: Trust region strategy using Levenberg-Marquardt. - `'dogleg'`: Trust region strategy using Dogleg. - `'bfgs'`: Line search strategy using BFGS. - `'steepestDescent'`: Line search strategy using steepest descent. - `'lbfgs'`: Trust region strategy using L-BFGS. - `'nonlinearConjugateGradient'`: Line search strategy using nonlinear conjugate gradient. - **linear_solver** *(string, default: `'denseQR'`)* Specifies the linear solver type to be used with the selected optimization method. Options include: - `'denseQR'`: Dense QR decomposition. - `'sparseSchur'`: Sparse Schur complement (efficient for large-scale problems). - `'denseNormalCholesky'`: Dense normal Cholesky decomposition. - `'iterativeSchur'`: Iterative Schur complement solver. - **convergence_threshold** *(number, default: `1.e-7`, range: 0.0 to 1.0)* Defines a residual threshold for convergence. Solutions with residuals larger than this value are considered unusable. **Note**: Certain methods and linear solvers may not be compatible. Refer to the [Ceres documentation](http://ceres-solver.org/nnls_solving.html).