# Model parameter ## Explanation of parameters MoCSI can be controlled fully through setting parameters in the ini files present in the /ini_files/ folder of the code. There are two types of ini files: core ini files and module ini files. Only two of the ini files in that folder belong to the core, the `default.ini` and the `run.ini`. The `default.ini` must always be present, as it contains all the parameters that need to be set for the model to run with their default parameters. To change these default values, you should overwrite them with the `run.ini` as all values within that ini file can be used to overwrite the default values. It is advised to not change any value within the `default.ini` and only work with the `run.ini`. Each module ini files belongs to the corresponding module with which it shares a name. These ini files can only be used to change behavior *within* the correspondig module. Despite there being parameters which some modules share, each have to be set within their own ini file. ## List of available parameters The following is a list of all parameters for all ini files: ### Core ini file `default.ini` - Time Parameters: - `time_delta` - The time step length in seconds (s). - `time_max` - The total simulation time in seconds (s). - Inner iteration options: - `inner_iterations` - The maximum number of internal iterations ran to achieve convergence for non-linear models (if not achieved in the specified number, a warning will be passed to the user). - `epsilon_inner_iterations` - The allowed difference between to inner iteration steps to be considered converged in Kelvin (K). Once $T_{inner, i+1} - T_{inner, i} \leq \epsilon$, it will accept the time step. - Grid options: - `spatial_dimension` - Only `"1D"` currently implemented. If set to `"1D"` and `used_shape_file = true`, will look for a shape model to load under `shape_model_path`. - `cell_length` - The length of each Finite Element Method element when using a **uniform grid**. Is used during uniform grid creation together with `numerical_layers`. (Either this or `max_depth` needs to be present together with `numerical_layers`.) - `numerical_layers` - The number of temperature nodes **(not elements)** within each facet. - `max_depth` - The maximum depth of a facet domain in meters (m). Is used during uniform grid creation together with `numerical_layers`. (Either this or `cell_length` needs to be present together with `numerical_layers`). - `grid` - A path to a file containing the node depths to be used for the grid creation. Can be any form of non-uniform grid. - Initial temperature - `initial_temperature` - The initialization temperature of the model in Kelvin (K). - Ini folder path - `ini_folder_path` - The (relative) path where the model should look for the rest of the ini files. Usually it is best practice to have all at the same place, as it looks for the default ini file in `"../ini_files/"`. - Shape model - `use_shape_file` - Whether a shape file should be loaded or not. - `shape_model_option` - Currently, only "1D" is implemented. When `use_shape_file` is set to true, will run a 1D heat transfer equation simulation on each facet of the shape model. Higher dimensions will be supported in the future. - `shape_model_path` - A path to a file containing a VTK readable mesh file (VTK must be installed on your machine for it to work), being .ply/.vtp/.obj/.stl/.vtk/.g file formats. - Finite Element Method options - `cell_type` - The type of element to be used in the Finite Element Method. Currently only `"OneDimLinearElement"` implemented. - Boundary condition options - `top_boundary_condition_type` - The top domain boundary condition for each facet. Currently implemented: `"BCTopSurfaceEnergyBalance"`, `"BCSinusoidalTemperature"`, `"BCConstantHeatFlux"`. - `bottom_boundary_condition_type` - The bottom domain boundary condition for each facet. Currently implemented: `"BCTopSurfaceEnergyBalance"`, `"BCSinusoidalTemperature"`, `"BCConstantHeatFlux"`. - `boundary_temperture` - A helper field needed for when the boundary condition also needs to be iterated. Chose `"IterativeSurfaceTemperature"` in this case and `"Temperature"` else. - `top_boundary_heat_flux` - The amount of heat flux in Watt per square meter (W m$^{-2}$), for when `"BCConstantHeatFlux` is chosen as the top boundary condition. - `bottom_boundary_heat_flux` - The amount of heat flux in Watt per square meter (W m$^{-2}$), for when `"BCConstantHeatFlux` is chosen as the bottom boundary condition. - `top_temperature_amplitude` - The amplitude of the sinusoidal temperature wave in Kelvin (K), for when `"BCSinusoidalTemperature` is chosen as the top boundary condition. - `bottom_temperature_amplitude` - The amplitude of the sinusoidal temperature wave in Kelvin (K), for when `"BCSinusoidalTemperature` is chosen as the bottom boundary condition. - `top_period` - The period of the sinusoidal temperature wave in seconds (s), for when `"BCSinusoidalTemperature` is chosen as the top boundary condition. - `bottom_period` - The period of the sinusoidal temperature wave in seconds (s), for when `"BCSinusoidalTemperature` is chosen as the bottom boundary condition. - Snapshot options - `snapshot` - Path to the MoCSI snapshot file that should be loaded for this simulation - `_snaphsot_keep_sim` - Prohibits overwrite of the current `default.ini` and `run.ini` values when loading the snapshot. - `_snaphsot_keep_module` - Prohibits overwrite of all current module ini file values when loading the snapshot. - `snapshot_save_file` - Path to save MoCSI snapshot at simulation end. `run.ini` - All options from `default.ini` are allowed in this ini file. Values in this ini file **always** take priority over default values. ### Module ini files `Albedo.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `AlbedoConstantCustom.ini` - `user_supplied_albedo` - The custom bolometric Bond albedo value. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `Density` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `DensityConstantCustom` - `user_suplied_density` - The custom bulk density value in kilogram per cubic meters (kg m$^{-3}$). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `DensityConstantGundlach2013RegolithSolidAsteroidType` - `asteroid_type` - The spectral class of the target asteroid type. Currently implemented are `"S"`, `"M"`, `"C"` and `"Q"`. - `volume_filling_factor` - The volume filling factor of the regolith. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `Emissivity.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `EmissivityConstantCustom.ini` - `user_supplied_emissivity` - The custom emissivity value in the thermal infrared. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `FluxSmoothingTool.ini` - `upper_threshold` - The factor that determines when flux smoothing is triggered when the temperature of the current time step overshoots the temperature of the previous timestep times the upper threshold. - `lower_threshold` - The factor that determines when flux smoothing is triggered when the temperature of the current time step undershoots the temperature of the previous timestep times the lower threshold. - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `HeatCapacity.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `HeatCapacityConstantCustom.ini` - `user_supplied_heat_capacity` - The custom specific heat capacity value in Joule per kilogram and Kelvin (J kg$^{-1}$ K$^{-1}$). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeatCapacityConstantOpeil2010NonPorousRockSolidAsteroidType` - `asteroid_type` - The spectral class of the target asteroid type. Currently implemented are `"S"`, `"M"`, `"C"` and `"Q"`. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeatConductivity.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `HeatConductivityConstantCustom.ini` - `user_supplied_heat_conductivity` - The custom bulk heat conductivity value in Watt per meter and Kelvin (W m$^{-1}$ K$^{-1}$). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeatConductivityConstantMaxwell1873PorousRockSolid.ini` - `porosity` - The porosity (1 - volume filling factor) of the rock. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeatConductivityTwoLayers` - `transition_depth` - The depth of the layer transition in meter (m). - `use_upper_hc_on_node` - If true, the heat conductivity of the upper layer will be used, if the layer transition falls exactly on a node. Uses the lower layer one if false. - `submodules` - There have to be two submodules loaded for the module to function correctly. The first loaded module is used in the upper layer (surface to `transition_depth`) and the second loaded module is used in the lower layer (`transition_depth` to maximum depth) - `dependencies` - The modules dependencies, if there are any. `HeatConductivityVariableGundlach2013NonPorousRockSolidAsteroidType` - `asteroid_type` - The spectral class of the target asteroid type. Currently implemented are `"S"`, `"M"`, `"C"` and `"Q"`. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeatConductivityVariableGundlach2013RegolithSolid.ini` - `poissons_ration` - Poisson's ratio of the material. - `youngs_modulus` - The Young's modulus of the material. - `f1` - The $f_1$ fit parameter from Gundlach and Blum (2012). - `f2` - The $f_2$ fit parameter from Gundlach and Blum (2012). - `chi` - The angular and polydisperse particle adaption factor from Gundlach and Blum (2013). - `e1` - The $e1$ fit parameter from Gundlach and Blum (2012). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeatSource.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `HeatSourceConstantCustom.ini` - `user_supplied_heat_source` - The custom heat source or sink value in Watt per meter squared (W m$^{-2}$). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeliocentricDistance.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `HeliocentricDistanceConstant.ini` - `user_supplied_heliocentric_distance` - The custom heliocentric distance value in astromicals units (AU). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `HeliocentricDistanceVariableSpice.ini` - `spice_metakernel_path` - The path to the SPICE metakernel file. - `object_id` - The SPICE object ID of the target body. - `reference_frame_id` - The SPICE reference frame (usually `"J2000"`). - `start_time_utc` - The starting time for the simulation of the target body in UTC format (YYYY-MM-DDThh:mm:ss). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `OutputToolCsv.ini` - `file_path` - The path and name of the csv file that will be saved. - `save_fields` - The names of the field values to be saved, separated by commas. - `save_mode` - How the selected fields should be saved. Currently implemented: `"specific_time_steps"`, saves the fields on the time steps specified in `save_time_steps`. `"interval"` saves the fields on a specific interval specified by `interval`. `"interval_surface"` saves only the surface values of the fields on a specific interval specified by `interval`. - `interval` - The interval of time steps at which the field values should be saved, if the corresponding `save_mode` was selected. - `save_time_steps` - The time steps at which the field values should be saved, if the corresponding `save_mode` was selected. - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `RuntimeProgressTool.ini` - `iteration_interval` - Number of time steps between progress reports. - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `SolarFlux.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `SolarFluxConstantCustom.ini` - `user_supplied_solar_flux` - The custom incoming solar flux value in Watt per meter squared (W m$^{-2}$). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `SolarFluxVariableCustomSinusoidal` - `period` - The period of the day-night-cycle in seconds (s). - `declination` - The declination of the surface on a sphere in degrees (°). - `latitude` - The latitude of the surface on a sphere in degrees (°). - `slope_angle` - The slope angle of the surface against the normal of the sphere in degrees (°). - `azimuth_topo_grad` - Azimuth of the topographic gradient agains a specified prime meridian in degrees (°). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `SolarFluxVariablePotter2023Radiosity` - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `SolarVector.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any. `SolarVectorConstant.ini` - `polar_angle` - Angle between the solar vector and the z-axis in degrees (°). - `azimuth` - Angle in x-y axis measured from the x-axis in degrees (°). - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `SolarVectorSpice.ini` - `spice_metakernel_path` - The path to the SPICE metakernel file. - `object_id` - The SPICE object ID of the target body. - `reference_frame_id` - The SPICE reference frame (usually `"J2000"`). - `start_time_utc` - The starting time for the simulation of the target body in UTC format (YYYY-MM-DDThh:mm:ss). - `rotating_frame_id` - The SPICE frame ID of the body-fixed frame of the target body. - `submodules` - The submodules to be loaded beneath this module, if there are any. - `dependencies` - The modules dependencies, if there are any. `TemperatureSaverIterationsTool.ini` - `chain_insertion` - The Module Insertion Points in which this managing module should be loaded. Default available chains are `"InitChain"`,`"PreTimeStepChain"`, `"PostTimeStepChain"`, `"PostNonLinIterChain"` and `"OutputChain"`. If this managing module should not be loaded, use `"None"`. - `submodules` - The submodules to be loaded beneath this module. If there are none, use `"None"`. - `dependencies` - The modules dependencies, if there are any.