:py:mod:`pimf.initialmassfunction`
==================================

.. py:module:: pimf.initialmassfunction

.. autodoc2-docstring:: pimf.initialmassfunction
   :parser: myst
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`InitialMassFunction <pimf.initialmassfunction.InitialMassFunction>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction
          :parser: myst
          :summary:
   * - :py:obj:`PowerLawIMF <pimf.initialmassfunction.PowerLawIMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF
          :parser: myst
          :summary:
   * - :py:obj:`ChabrierIMF <pimf.initialmassfunction.ChabrierIMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF
          :parser: myst
          :summary:
   * - :py:obj:`BrokenPowerLawIMF <pimf.initialmassfunction.BrokenPowerLawIMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF
          :parser: myst
          :summary:
   * - :py:obj:`L3IMF <pimf.initialmassfunction.L3IMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF
          :parser: myst
          :summary:
   * - :py:obj:`LognormalIMF <pimf.initialmassfunction.LognormalIMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF
          :parser: myst
          :summary:
   * - :py:obj:`GeneralisedGammaIMF <pimf.initialmassfunction.GeneralisedGammaIMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF
          :parser: myst
          :summary:
   * - :py:obj:`ExponentialCutoffPowerLawIMF <pimf.initialmassfunction.ExponentialCutoffPowerLawIMF>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.ExponentialCutoffPowerLawIMF
          :parser: myst
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`popII_IMFs <pimf.initialmassfunction.popII_IMFs>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.popII_IMFs
          :parser: myst
          :summary:
   * - :py:obj:`popIII_IMFs <pimf.initialmassfunction.popIII_IMFs>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.popIII_IMFs
          :parser: myst
          :summary:
   * - :py:obj:`main <pimf.initialmassfunction.main>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.main
          :parser: myst
          :summary:

Data
~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`__all__ <pimf.initialmassfunction.__all__>`
     - .. autodoc2-docstring:: pimf.initialmassfunction.__all__
          :parser: myst
          :summary:

API
~~~

.. py:data:: __all__
   :canonical: pimf.initialmassfunction.__all__
   :value: ['InitialMassFunction', 'PowerLawIMF', 'ChabrierIMF', 'BrokenPowerLawIMF', 'L3IMF', 'LognormalIMF', ...

   .. autodoc2-docstring:: pimf.initialmassfunction.__all__
      :parser: myst

.. py:class:: InitialMassFunction
   :canonical: pimf.initialmassfunction.InitialMassFunction

   .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction
      :parser: myst

   .. py:method:: __call__()
      :canonical: pimf.initialmassfunction.InitialMassFunction.__call__
      :abstractmethod:

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.__call__
         :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.InitialMassFunction.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.__str__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.InitialMassFunction.integrate
      :abstractmethod:

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.InitialMassFunction.integrate_product
      :abstractmethod:

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.integrate_product
         :parser: myst

   .. py:method:: _check_Mmin_Mmax(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.InitialMassFunction._check_Mmin_Mmax

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction._check_Mmin_Mmax
         :parser: myst

   .. py:method:: set_normalisation(ξ0)
      :canonical: pimf.initialmassfunction.InitialMassFunction.set_normalisation

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.set_normalisation
         :parser: myst

   .. py:method:: normalise_by_number(Mmin, Mmax, value=1)
      :canonical: pimf.initialmassfunction.InitialMassFunction.normalise_by_number

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.normalise_by_number
         :parser: myst

   .. py:method:: normalise_by_mass(Mmin, Mmax, value=1)
      :canonical: pimf.initialmassfunction.InitialMassFunction.normalise_by_mass

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.normalise_by_mass
         :parser: myst

   .. py:method:: mean_mass(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.InitialMassFunction.mean_mass

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.mean_mass
         :parser: myst

   .. py:method:: integrate_linear_piecewise_interpolated_product(a, b, x, y, extrapolate_grid=False)
      :canonical: pimf.initialmassfunction.InitialMassFunction.integrate_linear_piecewise_interpolated_product

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.integrate_linear_piecewise_interpolated_product
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.InitialMassFunction.inverse_cdf
      :abstractmethod:

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction.inverse_cdf
         :parser: myst

   .. py:method:: _plot_helper(**kwargs)
      :canonical: pimf.initialmassfunction.InitialMassFunction._plot_helper

      .. autodoc2-docstring:: pimf.initialmassfunction.InitialMassFunction._plot_helper
         :parser: myst

.. py:class:: PowerLawIMF(alpha=-2.35, normalisation='number', normalisation_value=1, Mmin=0.1, Mmax=100)
   :canonical: pimf.initialmassfunction.PowerLawIMF

   Bases: :py:obj:`pimf.initialmassfunction.InitialMassFunction`

   .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF.__init__
      :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.PowerLawIMF.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF.__str__
         :parser: myst

   .. py:method:: __call__(M)
      :canonical: pimf.initialmassfunction.PowerLawIMF.__call__

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF.__call__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.PowerLawIMF.integrate

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.PowerLawIMF.integrate_product

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF.integrate_product
         :parser: myst

   .. py:method:: _integrate_general(Mmin, Mmax, n)
      :canonical: pimf.initialmassfunction.PowerLawIMF._integrate_general

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF._integrate_general
         :parser: myst

   .. py:method:: _integrate_log(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.PowerLawIMF._integrate_log

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF._integrate_log
         :parser: myst

   .. py:method:: _inverse_cdf_log(x)
      :canonical: pimf.initialmassfunction.PowerLawIMF._inverse_cdf_log

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF._inverse_cdf_log
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.PowerLawIMF.inverse_cdf

      .. autodoc2-docstring:: pimf.initialmassfunction.PowerLawIMF.inverse_cdf
         :parser: myst

.. py:class:: ChabrierIMF(mc=0.079, sigma=0.69, alpha=-2.3, normalisation='number', normalisation_value=1, Mmin=0.1, Mmax=100)
   :canonical: pimf.initialmassfunction.ChabrierIMF

   Bases: :py:obj:`pimf.initialmassfunction.InitialMassFunction`

   .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.__init__
      :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.ChabrierIMF.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.__str__
         :parser: myst

   .. py:method:: __call__(M)
      :canonical: pimf.initialmassfunction.ChabrierIMF.__call__

      .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.__call__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.ChabrierIMF.integrate

      .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.ChabrierIMF.integrate_product

      .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.integrate_product
         :parser: myst

   .. py:method:: calculate_continuity_constant()
      :canonical: pimf.initialmassfunction.ChabrierIMF.calculate_continuity_constant

      .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.calculate_continuity_constant
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.ChabrierIMF.inverse_cdf

      .. autodoc2-docstring:: pimf.initialmassfunction.ChabrierIMF.inverse_cdf
         :parser: myst

.. py:class:: BrokenPowerLawIMF(alpha1=-1.3, alpha2=-2.3, Mtransition=0.5, normalisation='number', normalisation_value=1, Mmin=0.1, Mmax=100)
   :canonical: pimf.initialmassfunction.BrokenPowerLawIMF

   Bases: :py:obj:`pimf.initialmassfunction.InitialMassFunction`

   .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF.__init__
      :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.BrokenPowerLawIMF.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF.__str__
         :parser: myst

   .. py:method:: __call__(M)
      :canonical: pimf.initialmassfunction.BrokenPowerLawIMF.__call__

      .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF.__call__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.BrokenPowerLawIMF.integrate

      .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.BrokenPowerLawIMF.integrate_product

      .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF.integrate_product
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.BrokenPowerLawIMF.inverse_cdf

      .. autodoc2-docstring:: pimf.initialmassfunction.BrokenPowerLawIMF.inverse_cdf
         :parser: myst

.. py:class:: L3IMF(alpha=2.3, beta=1.4, mu=0.2, normalisation='number', normalisation_value=1, Mmin=0.1, Mmax=100)
   :canonical: pimf.initialmassfunction.L3IMF

   Bases: :py:obj:`pimf.initialmassfunction.InitialMassFunction`

   .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF.__init__
      :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.L3IMF.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF.__str__
         :parser: myst

   .. py:method:: _create_B_closure(a, b)
      :canonical: pimf.initialmassfunction.L3IMF._create_B_closure

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF._create_B_closure
         :parser: myst

   .. py:method:: _G(M)
      :canonical: pimf.initialmassfunction.L3IMF._G

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF._G
         :parser: myst

   .. py:method:: __call__(M)
      :canonical: pimf.initialmassfunction.L3IMF.__call__

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF.__call__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.L3IMF.integrate

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.L3IMF.integrate_product

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF.integrate_product
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.L3IMF.inverse_cdf

      .. autodoc2-docstring:: pimf.initialmassfunction.L3IMF.inverse_cdf
         :parser: myst

.. py:class:: LognormalIMF(mc, sigma=1, normalisation='number', normalisation_value=1, Mmin=1, Mmax=500)
   :canonical: pimf.initialmassfunction.LognormalIMF

   Bases: :py:obj:`pimf.initialmassfunction.InitialMassFunction`

   .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF.__init__
      :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.LognormalIMF.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF.__str__
         :parser: myst

   .. py:method:: __call__(M)
      :canonical: pimf.initialmassfunction.LognormalIMF.__call__

      .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF.__call__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.LognormalIMF.integrate

      .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.LognormalIMF.integrate_product

      .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF.integrate_product
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.LognormalIMF.inverse_cdf

      .. autodoc2-docstring:: pimf.initialmassfunction.LognormalIMF.inverse_cdf
         :parser: myst

.. py:class:: GeneralisedGammaIMF(alpha=-2.3, beta=-1.6, mc=10, normalisation='number', normalisation_value=1, Mmin=0.1, Mmax=100)
   :canonical: pimf.initialmassfunction.GeneralisedGammaIMF

   Bases: :py:obj:`pimf.initialmassfunction.InitialMassFunction`

   .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.__init__
      :parser: myst

   .. py:method:: Γ_lower_incomplete(n_plus_1, u)
      :canonical: pimf.initialmassfunction.GeneralisedGammaIMF.Γ_lower_incomplete
      :staticmethod:

      .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.Γ_lower_incomplete
         :parser: myst

   .. py:method:: __str__()
      :canonical: pimf.initialmassfunction.GeneralisedGammaIMF.__str__

      .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.__str__
         :parser: myst

   .. py:method:: __call__(M)
      :canonical: pimf.initialmassfunction.GeneralisedGammaIMF.__call__

      .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.__call__
         :parser: myst

   .. py:method:: integrate(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.GeneralisedGammaIMF.integrate

      .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.integrate
         :parser: myst

   .. py:method:: integrate_product(Mmin, Mmax)
      :canonical: pimf.initialmassfunction.GeneralisedGammaIMF.integrate_product

      .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.integrate_product
         :parser: myst

   .. py:method:: inverse_cdf(x)
      :canonical: pimf.initialmassfunction.GeneralisedGammaIMF.inverse_cdf

      .. autodoc2-docstring:: pimf.initialmassfunction.GeneralisedGammaIMF.inverse_cdf
         :parser: myst

.. py:class:: ExponentialCutoffPowerLawIMF(*args, **kwargs)
   :canonical: pimf.initialmassfunction.ExponentialCutoffPowerLawIMF

   Bases: :py:obj:`pimf.initialmassfunction.GeneralisedGammaIMF`

   .. autodoc2-docstring:: pimf.initialmassfunction.ExponentialCutoffPowerLawIMF
      :parser: myst

   .. rubric:: Initialization

   .. autodoc2-docstring:: pimf.initialmassfunction.ExponentialCutoffPowerLawIMF.__init__
      :parser: myst

.. py:function:: popII_IMFs()
   :canonical: pimf.initialmassfunction.popII_IMFs

   .. autodoc2-docstring:: pimf.initialmassfunction.popII_IMFs
      :parser: myst

.. py:function:: popIII_IMFs()
   :canonical: pimf.initialmassfunction.popIII_IMFs

   .. autodoc2-docstring:: pimf.initialmassfunction.popIII_IMFs
      :parser: myst

.. py:function:: main()
   :canonical: pimf.initialmassfunction.main

   .. autodoc2-docstring:: pimf.initialmassfunction.main
      :parser: myst
