.. _physics-metaTreeProcessingTime: Merger Tree Processing Times ============================ Class providing estimates of the computational processing time required for merger trees---predictions of how long (in wall-clock time) it will take to evolve a merger tree of a given root halo mass, and of the remaining time for a partially-processed tree. These estimates are used by the work-sharing scheduler to balance computational load across MPI processes: trees expected to take longer can be started earlier or assigned to dedicated workers. The null implementation returns a negative value indicating that no estimate is available. **Default implementation:** ``metaTreeProcessingTimeNull`` Methods ------- ``time`` → ``double precision`` Return an estimate of the time needed to process a tree of the given mass. * ``double precision, intent(in ) :: massTree`` ``timeRemaining`` → ``double precision`` Return an estimate of the remaining time needed to process a given tree. * ``type(mergerTree), intent(inout) :: tree`` * ``double precision, intent(in ) :: timeFinal`` .. _physics-metaTreeProcessingTimeFile: ``metaTreeProcessingTimeFile`` ------------------------------ A merger tree processing time class which estimates processing times using a polynomial relation read from file. Specifically, the time taken to process a tree is estimate to be .. math:: \log_{10} [ \tau_\mathrm{tree}(M)] = \sum_{i=0}^2 C_i (\log_{10} M)^i, where :math:`M` is the root mass of the tree and the coefficients :math:`C_i` are read from a file, the name of which is specified via the ``[fileName]`` parameter. This file should be an XML document with the structure: .. code-block:: none -0.73 -0.20 0.03 where the array of coefficients give the values :math:`C_0`, :math:`C_1` and :math:`C_2`. **Methods** * ``readFile`` — Read the named power spectrum file. **Parameters** * ``[forceZeroMetallicity]`` (default ``.false.``) — Force the use of zero metallicity (or lowest metallicity available) for all stellar populations. * ``[fileName]`` — The path to the HDF5 file containing the tabulated stellar population spectra, with datasets for ages (Gyr), metallicities (log Solar), wavelengths (\AA), and spectra (:math:`L_\odot\,\mathrm{Hz}^{-1}`); see the ``scripts/ssps`` folder for conversion scripts. * ``[fileName]`` — The name of the file which contains fit coefficients for the time per tree fitting function. * ``[fileName]`` (default ``inputPath(pathTypeDataStatic)//'stellarAstrophysics/stellarPropertiesCompilationStandard.xml'``) — The name of the XML file from which to read stellar properties (ejected masses, yields, etc.). * ``[fileName]`` (default ``inputPath(pathTypeDataStatic)//'stellarAstrophysics/Stellar_Tracks_Padova.hdf5'``) — The name of the HDF5 file from which to read stellar tracks. * ``[fileName]`` — The name of the file from which to read intergalactic medium state data. * ``[fileName]`` — The name of the file from which to read intergalactic background light properties. * ``[fileName]`` — The name of a file from which to read tabulated spectra of accretion disks. * ``[fileName]`` — The name of the file from which to read a tabulated transfer function. .. _physics-metaTreeProcessingTimeNull: ``metaTreeProcessingTimeNull`` ------------------------------ A merger tree processing time class provides no estimates. **(Default implementation)** **Parameters** * ``[dimensionless]`` (default ``.true.``) — If true the null profile is considered to be dimensionless. .. _physics-metaTreeProcessingTimeTotalEvolveTime: ``metaTreeProcessingTimeTotalEvolveTime`` ----------------------------------------- A merger tree processing time estimator that estimates the remaining computation time based on the total time spent evolving nodes in the tree, using a power-law scaling with cosmic time. The time scaling exponent is set by ``[exponentTime]`` and the minimum interval between progress updates by ``[updateInterval]``. **Parameters** * ``[exponentTime]`` (default ``0.5d0``) — The exponent of cosmic time used in estimating the work associated with evolving a node. * ``[updateInterval]`` (default ``10.0d0``) — The minimum interval (in seconds) between updates of the estimated time remaining.