From 188a6ae6c81406e920982af7a99d84012d38349e Mon Sep 17 00:00:00 2001 From: tobin-ford <145622852+tobin-ford@users.noreply.github.com> Date: Fri, 9 Feb 2024 09:47:58 -0800 Subject: [PATCH] Readthedocs pr (#61) * New Sphinx Environment * User Guide - Package Overview * Modules API * API reference * Monte Carlo User Guide * include external link aliases --------- Co-authored-by: tobin-ford Co-authored-by: martin-springer --- .readthedocs.yaml | 2 +- docs/{sphinx => }/Makefile | 0 docs/{sphinx => }/make.bat | 6 +- ...g.collection.calculate_jsc_from_tau_cp.rst | 6 + ....collection.calculate_jsc_from_tau_iqe.rst | 6 + ...vdeg.collection.collection_probability.rst | 6 + .../pvdeg.collection.generation_current.rst | 6 + docs/source/_autosummary/pvdeg.collection.rst | 77 +++++ .../pvdeg.degradation.IwaArrhenius.rst | 6 + .../pvdeg.degradation.IwaVantHoff.rst | 6 + .../pvdeg.degradation.arrhenius_deg.rst | 6 + .../pvdeg.degradation.degradation.rst | 6 + .../source/_autosummary/pvdeg.degradation.rst | 85 +++++ .../pvdeg.degradation.vantHoff_deg.rst | 6 + .../pvdeg.design.edge_seal_ingress_rate.rst | 6 + .../pvdeg.design.edge_seal_width.rst | 6 + docs/source/_autosummary/pvdeg.design.rst | 61 ++++ docs/source/_autosummary/pvdeg.fatigue.rst | 53 +++ .../pvdeg.fatigue.solder_fatigue.rst | 6 + .../_autosummary/pvdeg.humidity.Ce_numba.rst | 6 + .../pvdeg.humidity.back_encap.rst | 6 + .../_autosummary/pvdeg.humidity.backsheet.rst | 6 + .../pvdeg.humidity.backsheet_from_encap.rst | 6 + .../_autosummary/pvdeg.humidity.dew_yield.rst | 6 + .../pvdeg.humidity.front_encap.rst | 6 + .../_autosummary/pvdeg.humidity.module.rst | 6 + .../_autosummary/pvdeg.humidity.psat.rst | 6 + docs/source/_autosummary/pvdeg.humidity.rst | 125 +++++++ .../pvdeg.humidity.run_module.rst | 6 + .../pvdeg.humidity.surface_outside.rst | 6 + .../pvdeg.letid.calc_device_params.rst | 6 + .../_autosummary/pvdeg.letid.calc_dn.rst | 6 + .../pvdeg.letid.calc_energy_loss.rst | 6 + .../pvdeg.letid.calc_injection_outdoors.rst | 6 + .../pvdeg.letid.calc_letid_lab.rst | 6 + .../pvdeg.letid.calc_letid_outdoors.rst | 6 + .../_autosummary/pvdeg.letid.calc_ndd.rst | 6 + ...vdeg.letid.calc_pmp_loss_from_tau_loss.rst | 6 + .../pvdeg.letid.calc_regeneration_time.rst | 6 + .../pvdeg.letid.calc_voc_from_tau.rst | 6 + .../pvdeg.letid.carrier_factor.rst | 6 + .../pvdeg.letid.carrier_factor_wafer.rst | 6 + .../pvdeg.letid.convert_i_to_v.rst | 6 + .../_autosummary/pvdeg.letid.ff_green.rst | 6 + .../_autosummary/pvdeg.letid.j0_gray.rst | 6 + docs/source/_autosummary/pvdeg.letid.k_ij.rst | 6 + docs/source/_autosummary/pvdeg.letid.rst | 181 ++++++++++ .../_autosummary/pvdeg.letid.tau_now.rst | 6 + .../pvdeg.spectral.poa_irradiance.rst | 6 + docs/source/_autosummary/pvdeg.spectral.rst | 61 ++++ .../pvdeg.spectral.solar_position.rst | 6 + .../pvdeg.standards.calc_standoff.rst | 6 + .../_autosummary/pvdeg.standards.eff_gap.rst | 6 + docs/source/_autosummary/pvdeg.standards.rst | 69 ++++ .../pvdeg.standards.run_calc_standoff.rst | 6 + .../_autosummary/pvdeg.temperature.cell.rst | 6 + .../_autosummary/pvdeg.temperature.module.rst | 6 + .../source/_autosummary/pvdeg.temperature.rst | 61 ++++ .../pvdeg.utilities.convert_tmy.rst | 6 + .../pvdeg.utilities.get_kinetics.rst | 6 + .../pvdeg.utilities.gid_downsampling.rst | 6 + .../pvdeg.utilities.quantile_df.rst | 6 + docs/source/_autosummary/pvdeg.utilities.rst | 93 ++++++ .../pvdeg.utilities.ts_gid_df.rst | 6 + .../pvdeg.utilities.write_gids.rst | 6 + .../source/_autosummary/pvdeg.weather.get.rst | 6 + .../_autosummary/pvdeg.weather.get_NSRDB.rst | 6 + .../pvdeg.weather.get_NSRDB_fnames.rst | 6 + .../_autosummary/pvdeg.weather.read.rst | 6 + .../_autosummary/pvdeg.weather.read_h5.rst | 6 + docs/source/_autosummary/pvdeg.weather.rst | 85 +++++ docs/source/_templates/module.rst | 80 +++++ docs/{sphinx => }/source/api.rst | 18 +- docs/source/conf.py | 316 ++++++++++++++++++ docs/{sphinx => }/source/index.rst | 41 +-- docs/source/sg_execution_times.rst | 37 ++ docs/source/tutorials/index.rst | 52 +++ .../user_guide/Monte-Carlo-Details/Slide1.PNG | Bin 0 -> 34497 bytes .../user_guide/Monte-Carlo-Details/Slide2.PNG | Bin 0 -> 58012 bytes .../user_guide/Monte-Carlo-Details/Slide3.PNG | Bin 0 -> 51810 bytes docs/source/user_guide/NSRDB_API_Key.rst | 8 + docs/source/user_guide/contributing.rst | 275 +++++++++++++++ docs/source/user_guide/index.rst | 17 + .../user_guide}/installation.rst | 2 +- docs/source/user_guide/montecarlo.rst | 66 ++++ .../user_guide}/package_overview.rst | 2 +- docs/source/user_guide/pv-variables-terms.rst | 115 +++++++ docs/source/whatsnew/index.rst | 10 + .../whatsnew/releases}/v0.1.0.rst | 2 +- docs/sphinx/source/.api.rst.un~ | Bin 8666 -> 0 bytes docs/sphinx/source/.contributing.rst.un~ | Bin 8420 -> 0 bytes docs/sphinx/source/.index.rst.un~ | Bin 13030 -> 0 bytes docs/sphinx/source/.installation.rst.un~ | Bin 9772 -> 0 bytes docs/sphinx/source/.package_overview.rst.un~ | Bin 11818 -> 0 bytes docs/sphinx/source/.whatsnew.rst.un~ | Bin 1036 -> 0 bytes .../source/_autosummary/pvdeg.collection.rst | 19 -- .../source/_autosummary/pvdeg.degradation.rst | 20 -- .../source/_autosummary/pvdeg.design.rst | 17 - .../source/_autosummary/pvdeg.fatigue.rst | 16 - .../source/_autosummary/pvdeg.humidity.rst | 24 -- .../source/_autosummary/pvdeg.letid.rst | 32 -- .../source/_autosummary/pvdeg.spectral.rst | 17 - .../source/_autosummary/pvdeg.standards.rst | 17 - .../source/_autosummary/pvdeg.temperature.rst | 17 - .../source/_autosummary/pvdeg.utilities.rst | 22 -- .../source/_autosummary/pvdeg.weather.rst | 23 -- docs/sphinx/source/_static/.gitignore | 0 docs/sphinx/source/_static/no_scrollbars.css | 11 - docs/sphinx/source/api.rst~ | 17 - docs/sphinx/source/conf.py | 75 ----- docs/sphinx/source/conf_old.py | 247 -------------- docs/sphinx/source/images/PVD_logo.png | Bin 3965 -> 0 bytes docs/sphinx/source/index.rst~ | 42 --- docs/sphinx/source/installation.rst~ | 20 -- docs/sphinx/source/package_overview.rst~ | 6 - docs/sphinx/source/whatsnew.rst | 9 - docs/sphinx/source/whatsnew.rst~ | 9 - docs/sphinx/source/whatsnew/.v0.1.0.rst.un~ | Bin 1009 -> 0 bytes docs/sphinx/source/whatsnew/.v1.0.rst.swp | Bin 12288 -> 0 bytes docs/sphinx/source/whatsnew/.v1.0.rst.un~ | Bin 10113 -> 0 bytes docs/sphinx/source/whatsnew/v0.1.0.rst~ | 18 - docs/sphinx/source/whatsnew/v1.0.rst~ | 18 - pyproject.toml | 4 + 123 files changed, 2312 insertions(+), 730 deletions(-) rename docs/{sphinx => }/Makefile (100%) rename docs/{sphinx => }/make.bat (95%) create mode 100644 docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_cp.rst create mode 100644 docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_iqe.rst create mode 100644 docs/source/_autosummary/pvdeg.collection.collection_probability.rst create mode 100644 docs/source/_autosummary/pvdeg.collection.generation_current.rst create mode 100644 docs/source/_autosummary/pvdeg.collection.rst create mode 100644 docs/source/_autosummary/pvdeg.degradation.IwaArrhenius.rst create mode 100644 docs/source/_autosummary/pvdeg.degradation.IwaVantHoff.rst create mode 100644 docs/source/_autosummary/pvdeg.degradation.arrhenius_deg.rst create mode 100644 docs/source/_autosummary/pvdeg.degradation.degradation.rst create mode 100644 docs/source/_autosummary/pvdeg.degradation.rst create mode 100644 docs/source/_autosummary/pvdeg.degradation.vantHoff_deg.rst create mode 100644 docs/source/_autosummary/pvdeg.design.edge_seal_ingress_rate.rst create mode 100644 docs/source/_autosummary/pvdeg.design.edge_seal_width.rst create mode 100644 docs/source/_autosummary/pvdeg.design.rst create mode 100644 docs/source/_autosummary/pvdeg.fatigue.rst create mode 100644 docs/source/_autosummary/pvdeg.fatigue.solder_fatigue.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.Ce_numba.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.back_encap.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.backsheet.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.backsheet_from_encap.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.dew_yield.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.front_encap.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.module.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.psat.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.run_module.rst create mode 100644 docs/source/_autosummary/pvdeg.humidity.surface_outside.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_device_params.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_dn.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_energy_loss.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_injection_outdoors.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_letid_lab.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_letid_outdoors.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_ndd.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_pmp_loss_from_tau_loss.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_regeneration_time.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.calc_voc_from_tau.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.carrier_factor.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.carrier_factor_wafer.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.convert_i_to_v.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.ff_green.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.j0_gray.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.k_ij.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.rst create mode 100644 docs/source/_autosummary/pvdeg.letid.tau_now.rst create mode 100644 docs/source/_autosummary/pvdeg.spectral.poa_irradiance.rst create mode 100644 docs/source/_autosummary/pvdeg.spectral.rst create mode 100644 docs/source/_autosummary/pvdeg.spectral.solar_position.rst create mode 100644 docs/source/_autosummary/pvdeg.standards.calc_standoff.rst create mode 100644 docs/source/_autosummary/pvdeg.standards.eff_gap.rst create mode 100644 docs/source/_autosummary/pvdeg.standards.rst create mode 100644 docs/source/_autosummary/pvdeg.standards.run_calc_standoff.rst create mode 100644 docs/source/_autosummary/pvdeg.temperature.cell.rst create mode 100644 docs/source/_autosummary/pvdeg.temperature.module.rst create mode 100644 docs/source/_autosummary/pvdeg.temperature.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.convert_tmy.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.get_kinetics.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.gid_downsampling.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.quantile_df.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.ts_gid_df.rst create mode 100644 docs/source/_autosummary/pvdeg.utilities.write_gids.rst create mode 100644 docs/source/_autosummary/pvdeg.weather.get.rst create mode 100644 docs/source/_autosummary/pvdeg.weather.get_NSRDB.rst create mode 100644 docs/source/_autosummary/pvdeg.weather.get_NSRDB_fnames.rst create mode 100644 docs/source/_autosummary/pvdeg.weather.read.rst create mode 100644 docs/source/_autosummary/pvdeg.weather.read_h5.rst create mode 100644 docs/source/_autosummary/pvdeg.weather.rst create mode 100644 docs/source/_templates/module.rst rename docs/{sphinx => }/source/api.rst (70%) create mode 100644 docs/source/conf.py rename docs/{sphinx => }/source/index.rst (78%) create mode 100644 docs/source/sg_execution_times.rst create mode 100644 docs/source/tutorials/index.rst create mode 100644 docs/source/user_guide/Monte-Carlo-Details/Slide1.PNG create mode 100644 docs/source/user_guide/Monte-Carlo-Details/Slide2.PNG create mode 100644 docs/source/user_guide/Monte-Carlo-Details/Slide3.PNG create mode 100644 docs/source/user_guide/NSRDB_API_Key.rst create mode 100644 docs/source/user_guide/contributing.rst create mode 100644 docs/source/user_guide/index.rst rename docs/{sphinx/source => source/user_guide}/installation.rst (88%) create mode 100644 docs/source/user_guide/montecarlo.rst rename docs/{sphinx/source => source/user_guide}/package_overview.rst (99%) create mode 100644 docs/source/user_guide/pv-variables-terms.rst create mode 100644 docs/source/whatsnew/index.rst rename docs/{sphinx/source/whatsnew => source/whatsnew/releases}/v0.1.0.rst (97%) delete mode 100644 docs/sphinx/source/.api.rst.un~ delete mode 100644 docs/sphinx/source/.contributing.rst.un~ delete mode 100644 docs/sphinx/source/.index.rst.un~ delete mode 100644 docs/sphinx/source/.installation.rst.un~ delete mode 100644 docs/sphinx/source/.package_overview.rst.un~ delete mode 100644 docs/sphinx/source/.whatsnew.rst.un~ delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.collection.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.degradation.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.design.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.fatigue.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.humidity.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.letid.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.spectral.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.standards.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.temperature.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.utilities.rst delete mode 100644 docs/sphinx/source/_autosummary/pvdeg.weather.rst delete mode 100644 docs/sphinx/source/_static/.gitignore delete mode 100644 docs/sphinx/source/_static/no_scrollbars.css delete mode 100644 docs/sphinx/source/api.rst~ delete mode 100644 docs/sphinx/source/conf.py delete mode 100644 docs/sphinx/source/conf_old.py delete mode 100644 docs/sphinx/source/images/PVD_logo.png delete mode 100644 docs/sphinx/source/index.rst~ delete mode 100644 docs/sphinx/source/installation.rst~ delete mode 100644 docs/sphinx/source/package_overview.rst~ delete mode 100644 docs/sphinx/source/whatsnew.rst delete mode 100644 docs/sphinx/source/whatsnew.rst~ delete mode 100644 docs/sphinx/source/whatsnew/.v0.1.0.rst.un~ delete mode 100644 docs/sphinx/source/whatsnew/.v1.0.rst.swp delete mode 100644 docs/sphinx/source/whatsnew/.v1.0.rst.un~ delete mode 100644 docs/sphinx/source/whatsnew/v0.1.0.rst~ delete mode 100644 docs/sphinx/source/whatsnew/v1.0.rst~ diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 30c928ae..4a29a4b8 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -17,7 +17,7 @@ build: # Build documentation in the docs/ directory with Sphinx sphinx: - configuration: docs/sphinx/source/conf.py + configuration: docs/source/conf.py # If using Sphinx, optionally build your docs in additional formats such as PDF # formats: diff --git a/docs/sphinx/Makefile b/docs/Makefile similarity index 100% rename from docs/sphinx/Makefile rename to docs/Makefile diff --git a/docs/sphinx/make.bat b/docs/make.bat similarity index 95% rename from docs/sphinx/make.bat rename to docs/make.bat index 9534b018..dc1312ab 100644 --- a/docs/sphinx/make.bat +++ b/docs/make.bat @@ -10,8 +10,6 @@ if "%SPHINXBUILD%" == "" ( set SOURCEDIR=source set BUILDDIR=build -if "%1" == "" goto help - %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. @@ -21,10 +19,12 @@ if errorlevel 9009 ( echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ + echo.https://www.sphinx-doc.org/ exit /b 1 ) +if "%1" == "" goto help + %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% goto end diff --git a/docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_cp.rst b/docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_cp.rst new file mode 100644 index 00000000..91aafdc1 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_cp.rst @@ -0,0 +1,6 @@ +pvdeg.collection.calculate\_jsc\_from\_tau\_cp +============================================== + +.. currentmodule:: pvdeg.collection + +.. autofunction:: calculate_jsc_from_tau_cp \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_iqe.rst b/docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_iqe.rst new file mode 100644 index 00000000..d2fd7f26 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.collection.calculate_jsc_from_tau_iqe.rst @@ -0,0 +1,6 @@ +pvdeg.collection.calculate\_jsc\_from\_tau\_iqe +=============================================== + +.. currentmodule:: pvdeg.collection + +.. autofunction:: calculate_jsc_from_tau_iqe \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.collection.collection_probability.rst b/docs/source/_autosummary/pvdeg.collection.collection_probability.rst new file mode 100644 index 00000000..bc07d94f --- /dev/null +++ b/docs/source/_autosummary/pvdeg.collection.collection_probability.rst @@ -0,0 +1,6 @@ +pvdeg.collection.collection\_probability +======================================== + +.. currentmodule:: pvdeg.collection + +.. autofunction:: collection_probability \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.collection.generation_current.rst b/docs/source/_autosummary/pvdeg.collection.generation_current.rst new file mode 100644 index 00000000..1921ccda --- /dev/null +++ b/docs/source/_autosummary/pvdeg.collection.generation_current.rst @@ -0,0 +1,6 @@ +pvdeg.collection.generation\_current +==================================== + +.. currentmodule:: pvdeg.collection + +.. autofunction:: generation_current \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.collection.rst b/docs/source/_autosummary/pvdeg.collection.rst new file mode 100644 index 00000000..2ddbb7ea --- /dev/null +++ b/docs/source/_autosummary/pvdeg.collection.rst @@ -0,0 +1,77 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.collection +================ + +.. automodule:: pvdeg.collection + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.collection.calculate_jsc_from_tau_cp + pvdeg.collection.calculate_jsc_from_tau_iqe + pvdeg.collection.collection_probability + pvdeg.collection.generation_current + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: calculate_jsc_from_tau_cp + + .. _sphx_glr_backref_pvdeg.collection.calculate_jsc_from_tau_cp: + + .. minigallery:: pvdeg.collection.calculate_jsc_from_tau_cp + :add-heading: + + .. autofunction:: calculate_jsc_from_tau_iqe + + .. _sphx_glr_backref_pvdeg.collection.calculate_jsc_from_tau_iqe: + + .. minigallery:: pvdeg.collection.calculate_jsc_from_tau_iqe + :add-heading: + + .. autofunction:: collection_probability + + .. _sphx_glr_backref_pvdeg.collection.collection_probability: + + .. minigallery:: pvdeg.collection.collection_probability + :add-heading: + + .. autofunction:: generation_current + + .. _sphx_glr_backref_pvdeg.collection.generation_current: + + .. minigallery:: pvdeg.collection.generation_current + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.degradation.IwaArrhenius.rst b/docs/source/_autosummary/pvdeg.degradation.IwaArrhenius.rst new file mode 100644 index 00000000..b32bf896 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.degradation.IwaArrhenius.rst @@ -0,0 +1,6 @@ +pvdeg.degradation.IwaArrhenius +============================== + +.. currentmodule:: pvdeg.degradation + +.. autofunction:: IwaArrhenius \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.degradation.IwaVantHoff.rst b/docs/source/_autosummary/pvdeg.degradation.IwaVantHoff.rst new file mode 100644 index 00000000..9dc20d41 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.degradation.IwaVantHoff.rst @@ -0,0 +1,6 @@ +pvdeg.degradation.IwaVantHoff +============================= + +.. currentmodule:: pvdeg.degradation + +.. autofunction:: IwaVantHoff \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.degradation.arrhenius_deg.rst b/docs/source/_autosummary/pvdeg.degradation.arrhenius_deg.rst new file mode 100644 index 00000000..913ed304 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.degradation.arrhenius_deg.rst @@ -0,0 +1,6 @@ +pvdeg.degradation.arrhenius\_deg +================================ + +.. currentmodule:: pvdeg.degradation + +.. autofunction:: arrhenius_deg \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.degradation.degradation.rst b/docs/source/_autosummary/pvdeg.degradation.degradation.rst new file mode 100644 index 00000000..722e6aa2 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.degradation.degradation.rst @@ -0,0 +1,6 @@ +pvdeg.degradation.degradation +============================= + +.. currentmodule:: pvdeg.degradation + +.. autofunction:: degradation \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.degradation.rst b/docs/source/_autosummary/pvdeg.degradation.rst new file mode 100644 index 00000000..52645e74 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.degradation.rst @@ -0,0 +1,85 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.degradation +================= + +.. automodule:: pvdeg.degradation + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.degradation.IwaArrhenius + pvdeg.degradation.IwaVantHoff + pvdeg.degradation.arrhenius_deg + pvdeg.degradation.degradation + pvdeg.degradation.vantHoff_deg + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: IwaArrhenius + + .. _sphx_glr_backref_pvdeg.degradation.IwaArrhenius: + + .. minigallery:: pvdeg.degradation.IwaArrhenius + :add-heading: + + .. autofunction:: IwaVantHoff + + .. _sphx_glr_backref_pvdeg.degradation.IwaVantHoff: + + .. minigallery:: pvdeg.degradation.IwaVantHoff + :add-heading: + + .. autofunction:: arrhenius_deg + + .. _sphx_glr_backref_pvdeg.degradation.arrhenius_deg: + + .. minigallery:: pvdeg.degradation.arrhenius_deg + :add-heading: + + .. autofunction:: degradation + + .. _sphx_glr_backref_pvdeg.degradation.degradation: + + .. minigallery:: pvdeg.degradation.degradation + :add-heading: + + .. autofunction:: vantHoff_deg + + .. _sphx_glr_backref_pvdeg.degradation.vantHoff_deg: + + .. minigallery:: pvdeg.degradation.vantHoff_deg + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.degradation.vantHoff_deg.rst b/docs/source/_autosummary/pvdeg.degradation.vantHoff_deg.rst new file mode 100644 index 00000000..244030ec --- /dev/null +++ b/docs/source/_autosummary/pvdeg.degradation.vantHoff_deg.rst @@ -0,0 +1,6 @@ +pvdeg.degradation.vantHoff\_deg +=============================== + +.. currentmodule:: pvdeg.degradation + +.. autofunction:: vantHoff_deg \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.design.edge_seal_ingress_rate.rst b/docs/source/_autosummary/pvdeg.design.edge_seal_ingress_rate.rst new file mode 100644 index 00000000..234bbc4a --- /dev/null +++ b/docs/source/_autosummary/pvdeg.design.edge_seal_ingress_rate.rst @@ -0,0 +1,6 @@ +pvdeg.design.edge\_seal\_ingress\_rate +====================================== + +.. currentmodule:: pvdeg.design + +.. autofunction:: edge_seal_ingress_rate \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.design.edge_seal_width.rst b/docs/source/_autosummary/pvdeg.design.edge_seal_width.rst new file mode 100644 index 00000000..94b6009b --- /dev/null +++ b/docs/source/_autosummary/pvdeg.design.edge_seal_width.rst @@ -0,0 +1,6 @@ +pvdeg.design.edge\_seal\_width +============================== + +.. currentmodule:: pvdeg.design + +.. autofunction:: edge_seal_width \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.design.rst b/docs/source/_autosummary/pvdeg.design.rst new file mode 100644 index 00000000..c6086280 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.design.rst @@ -0,0 +1,61 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.design +============ + +.. automodule:: pvdeg.design + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.design.edge_seal_ingress_rate + pvdeg.design.edge_seal_width + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: edge_seal_ingress_rate + + .. _sphx_glr_backref_pvdeg.design.edge_seal_ingress_rate: + + .. minigallery:: pvdeg.design.edge_seal_ingress_rate + :add-heading: + + .. autofunction:: edge_seal_width + + .. _sphx_glr_backref_pvdeg.design.edge_seal_width: + + .. minigallery:: pvdeg.design.edge_seal_width + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.fatigue.rst b/docs/source/_autosummary/pvdeg.fatigue.rst new file mode 100644 index 00000000..7db6f56e --- /dev/null +++ b/docs/source/_autosummary/pvdeg.fatigue.rst @@ -0,0 +1,53 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.fatigue +============= + +.. automodule:: pvdeg.fatigue + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.fatigue.solder_fatigue + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: solder_fatigue + + .. _sphx_glr_backref_pvdeg.fatigue.solder_fatigue: + + .. minigallery:: pvdeg.fatigue.solder_fatigue + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.fatigue.solder_fatigue.rst b/docs/source/_autosummary/pvdeg.fatigue.solder_fatigue.rst new file mode 100644 index 00000000..5335db2e --- /dev/null +++ b/docs/source/_autosummary/pvdeg.fatigue.solder_fatigue.rst @@ -0,0 +1,6 @@ +pvdeg.fatigue.solder\_fatigue +============================= + +.. currentmodule:: pvdeg.fatigue + +.. autofunction:: solder_fatigue \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.Ce_numba.rst b/docs/source/_autosummary/pvdeg.humidity.Ce_numba.rst new file mode 100644 index 00000000..a2036402 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.Ce_numba.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.Ce\_numba +======================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: Ce_numba \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.back_encap.rst b/docs/source/_autosummary/pvdeg.humidity.back_encap.rst new file mode 100644 index 00000000..7874eec6 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.back_encap.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.back\_encap +========================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: back_encap \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.backsheet.rst b/docs/source/_autosummary/pvdeg.humidity.backsheet.rst new file mode 100644 index 00000000..23ced680 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.backsheet.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.backsheet +======================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: backsheet \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.backsheet_from_encap.rst b/docs/source/_autosummary/pvdeg.humidity.backsheet_from_encap.rst new file mode 100644 index 00000000..6b14a750 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.backsheet_from_encap.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.backsheet\_from\_encap +===================================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: backsheet_from_encap \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.dew_yield.rst b/docs/source/_autosummary/pvdeg.humidity.dew_yield.rst new file mode 100644 index 00000000..9247153d --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.dew_yield.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.dew\_yield +========================= + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: dew_yield \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.front_encap.rst b/docs/source/_autosummary/pvdeg.humidity.front_encap.rst new file mode 100644 index 00000000..009155d4 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.front_encap.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.front\_encap +=========================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: front_encap \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.module.rst b/docs/source/_autosummary/pvdeg.humidity.module.rst new file mode 100644 index 00000000..549ecdbc --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.module.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.module +===================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: module \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.psat.rst b/docs/source/_autosummary/pvdeg.humidity.psat.rst new file mode 100644 index 00000000..bab88b16 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.psat.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.psat +=================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: psat \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.rst b/docs/source/_autosummary/pvdeg.humidity.rst new file mode 100644 index 00000000..5f4df11b --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.rst @@ -0,0 +1,125 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.humidity +============== + +.. automodule:: pvdeg.humidity + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.humidity.Ce_numba + pvdeg.humidity.back_encap + pvdeg.humidity.backsheet + pvdeg.humidity.backsheet_from_encap + pvdeg.humidity.dew_yield + pvdeg.humidity.front_encap + pvdeg.humidity.module + pvdeg.humidity.psat + pvdeg.humidity.run_module + pvdeg.humidity.surface_outside + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: Ce_numba + + .. _sphx_glr_backref_pvdeg.humidity.Ce_numba: + + .. minigallery:: pvdeg.humidity.Ce_numba + :add-heading: + + .. autofunction:: back_encap + + .. _sphx_glr_backref_pvdeg.humidity.back_encap: + + .. minigallery:: pvdeg.humidity.back_encap + :add-heading: + + .. autofunction:: backsheet + + .. _sphx_glr_backref_pvdeg.humidity.backsheet: + + .. minigallery:: pvdeg.humidity.backsheet + :add-heading: + + .. autofunction:: backsheet_from_encap + + .. _sphx_glr_backref_pvdeg.humidity.backsheet_from_encap: + + .. minigallery:: pvdeg.humidity.backsheet_from_encap + :add-heading: + + .. autofunction:: dew_yield + + .. _sphx_glr_backref_pvdeg.humidity.dew_yield: + + .. minigallery:: pvdeg.humidity.dew_yield + :add-heading: + + .. autofunction:: front_encap + + .. _sphx_glr_backref_pvdeg.humidity.front_encap: + + .. minigallery:: pvdeg.humidity.front_encap + :add-heading: + + .. autofunction:: module + + .. _sphx_glr_backref_pvdeg.humidity.module: + + .. minigallery:: pvdeg.humidity.module + :add-heading: + + .. autofunction:: psat + + .. _sphx_glr_backref_pvdeg.humidity.psat: + + .. minigallery:: pvdeg.humidity.psat + :add-heading: + + .. autofunction:: run_module + + .. _sphx_glr_backref_pvdeg.humidity.run_module: + + .. minigallery:: pvdeg.humidity.run_module + :add-heading: + + .. autofunction:: surface_outside + + .. _sphx_glr_backref_pvdeg.humidity.surface_outside: + + .. minigallery:: pvdeg.humidity.surface_outside + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.run_module.rst b/docs/source/_autosummary/pvdeg.humidity.run_module.rst new file mode 100644 index 00000000..e59f1dad --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.run_module.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.run\_module +========================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: run_module \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.humidity.surface_outside.rst b/docs/source/_autosummary/pvdeg.humidity.surface_outside.rst new file mode 100644 index 00000000..62e9488b --- /dev/null +++ b/docs/source/_autosummary/pvdeg.humidity.surface_outside.rst @@ -0,0 +1,6 @@ +pvdeg.humidity.surface\_outside +=============================== + +.. currentmodule:: pvdeg.humidity + +.. autofunction:: surface_outside \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_device_params.rst b/docs/source/_autosummary/pvdeg.letid.calc_device_params.rst new file mode 100644 index 00000000..a414ceb5 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_device_params.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_device\_params +================================ + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_device_params \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_dn.rst b/docs/source/_autosummary/pvdeg.letid.calc_dn.rst new file mode 100644 index 00000000..2c44c9e7 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_dn.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_dn +==================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_dn \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_energy_loss.rst b/docs/source/_autosummary/pvdeg.letid.calc_energy_loss.rst new file mode 100644 index 00000000..af7e0454 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_energy_loss.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_energy\_loss +============================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_energy_loss \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_injection_outdoors.rst b/docs/source/_autosummary/pvdeg.letid.calc_injection_outdoors.rst new file mode 100644 index 00000000..362ddd6a --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_injection_outdoors.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_injection\_outdoors +===================================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_injection_outdoors \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_letid_lab.rst b/docs/source/_autosummary/pvdeg.letid.calc_letid_lab.rst new file mode 100644 index 00000000..435b5b03 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_letid_lab.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_letid\_lab +============================ + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_letid_lab \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_letid_outdoors.rst b/docs/source/_autosummary/pvdeg.letid.calc_letid_outdoors.rst new file mode 100644 index 00000000..e4c74f9c --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_letid_outdoors.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_letid\_outdoors +================================= + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_letid_outdoors \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_ndd.rst b/docs/source/_autosummary/pvdeg.letid.calc_ndd.rst new file mode 100644 index 00000000..d95cdfa3 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_ndd.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_ndd +===================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_ndd \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_pmp_loss_from_tau_loss.rst b/docs/source/_autosummary/pvdeg.letid.calc_pmp_loss_from_tau_loss.rst new file mode 100644 index 00000000..7180d697 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_pmp_loss_from_tau_loss.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_pmp\_loss\_from\_tau\_loss +============================================ + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_pmp_loss_from_tau_loss \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_regeneration_time.rst b/docs/source/_autosummary/pvdeg.letid.calc_regeneration_time.rst new file mode 100644 index 00000000..22586b12 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_regeneration_time.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_regeneration\_time +==================================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_regeneration_time \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.calc_voc_from_tau.rst b/docs/source/_autosummary/pvdeg.letid.calc_voc_from_tau.rst new file mode 100644 index 00000000..3895f7d9 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.calc_voc_from_tau.rst @@ -0,0 +1,6 @@ +pvdeg.letid.calc\_voc\_from\_tau +================================ + +.. currentmodule:: pvdeg.letid + +.. autofunction:: calc_voc_from_tau \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.carrier_factor.rst b/docs/source/_autosummary/pvdeg.letid.carrier_factor.rst new file mode 100644 index 00000000..3611a52e --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.carrier_factor.rst @@ -0,0 +1,6 @@ +pvdeg.letid.carrier\_factor +=========================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: carrier_factor \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.carrier_factor_wafer.rst b/docs/source/_autosummary/pvdeg.letid.carrier_factor_wafer.rst new file mode 100644 index 00000000..6873a1fd --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.carrier_factor_wafer.rst @@ -0,0 +1,6 @@ +pvdeg.letid.carrier\_factor\_wafer +================================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: carrier_factor_wafer \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.convert_i_to_v.rst b/docs/source/_autosummary/pvdeg.letid.convert_i_to_v.rst new file mode 100644 index 00000000..b5c6ddfe --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.convert_i_to_v.rst @@ -0,0 +1,6 @@ +pvdeg.letid.convert\_i\_to\_v +============================= + +.. currentmodule:: pvdeg.letid + +.. autofunction:: convert_i_to_v \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.ff_green.rst b/docs/source/_autosummary/pvdeg.letid.ff_green.rst new file mode 100644 index 00000000..7612e2d5 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.ff_green.rst @@ -0,0 +1,6 @@ +pvdeg.letid.ff\_green +===================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: ff_green \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.j0_gray.rst b/docs/source/_autosummary/pvdeg.letid.j0_gray.rst new file mode 100644 index 00000000..5004bb43 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.j0_gray.rst @@ -0,0 +1,6 @@ +pvdeg.letid.j0\_gray +==================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: j0_gray \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.k_ij.rst b/docs/source/_autosummary/pvdeg.letid.k_ij.rst new file mode 100644 index 00000000..963abb36 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.k_ij.rst @@ -0,0 +1,6 @@ +pvdeg.letid.k\_ij +================= + +.. currentmodule:: pvdeg.letid + +.. autofunction:: k_ij \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.rst b/docs/source/_autosummary/pvdeg.letid.rst new file mode 100644 index 00000000..3dec79c3 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.rst @@ -0,0 +1,181 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.letid +=========== + +.. automodule:: pvdeg.letid + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.letid.calc_device_params + pvdeg.letid.calc_dn + pvdeg.letid.calc_energy_loss + pvdeg.letid.calc_injection_outdoors + pvdeg.letid.calc_letid_lab + pvdeg.letid.calc_letid_outdoors + pvdeg.letid.calc_ndd + pvdeg.letid.calc_pmp_loss_from_tau_loss + pvdeg.letid.calc_regeneration_time + pvdeg.letid.calc_voc_from_tau + pvdeg.letid.carrier_factor + pvdeg.letid.carrier_factor_wafer + pvdeg.letid.convert_i_to_v + pvdeg.letid.ff_green + pvdeg.letid.j0_gray + pvdeg.letid.k_ij + pvdeg.letid.tau_now + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: calc_device_params + + .. _sphx_glr_backref_pvdeg.letid.calc_device_params: + + .. minigallery:: pvdeg.letid.calc_device_params + :add-heading: + + .. autofunction:: calc_dn + + .. _sphx_glr_backref_pvdeg.letid.calc_dn: + + .. minigallery:: pvdeg.letid.calc_dn + :add-heading: + + .. autofunction:: calc_energy_loss + + .. _sphx_glr_backref_pvdeg.letid.calc_energy_loss: + + .. minigallery:: pvdeg.letid.calc_energy_loss + :add-heading: + + .. autofunction:: calc_injection_outdoors + + .. _sphx_glr_backref_pvdeg.letid.calc_injection_outdoors: + + .. minigallery:: pvdeg.letid.calc_injection_outdoors + :add-heading: + + .. autofunction:: calc_letid_lab + + .. _sphx_glr_backref_pvdeg.letid.calc_letid_lab: + + .. minigallery:: pvdeg.letid.calc_letid_lab + :add-heading: + + .. autofunction:: calc_letid_outdoors + + .. _sphx_glr_backref_pvdeg.letid.calc_letid_outdoors: + + .. minigallery:: pvdeg.letid.calc_letid_outdoors + :add-heading: + + .. autofunction:: calc_ndd + + .. _sphx_glr_backref_pvdeg.letid.calc_ndd: + + .. minigallery:: pvdeg.letid.calc_ndd + :add-heading: + + .. autofunction:: calc_pmp_loss_from_tau_loss + + .. _sphx_glr_backref_pvdeg.letid.calc_pmp_loss_from_tau_loss: + + .. minigallery:: pvdeg.letid.calc_pmp_loss_from_tau_loss + :add-heading: + + .. autofunction:: calc_regeneration_time + + .. _sphx_glr_backref_pvdeg.letid.calc_regeneration_time: + + .. minigallery:: pvdeg.letid.calc_regeneration_time + :add-heading: + + .. autofunction:: calc_voc_from_tau + + .. _sphx_glr_backref_pvdeg.letid.calc_voc_from_tau: + + .. minigallery:: pvdeg.letid.calc_voc_from_tau + :add-heading: + + .. autofunction:: carrier_factor + + .. _sphx_glr_backref_pvdeg.letid.carrier_factor: + + .. minigallery:: pvdeg.letid.carrier_factor + :add-heading: + + .. autofunction:: carrier_factor_wafer + + .. _sphx_glr_backref_pvdeg.letid.carrier_factor_wafer: + + .. minigallery:: pvdeg.letid.carrier_factor_wafer + :add-heading: + + .. autofunction:: convert_i_to_v + + .. _sphx_glr_backref_pvdeg.letid.convert_i_to_v: + + .. minigallery:: pvdeg.letid.convert_i_to_v + :add-heading: + + .. autofunction:: ff_green + + .. _sphx_glr_backref_pvdeg.letid.ff_green: + + .. minigallery:: pvdeg.letid.ff_green + :add-heading: + + .. autofunction:: j0_gray + + .. _sphx_glr_backref_pvdeg.letid.j0_gray: + + .. minigallery:: pvdeg.letid.j0_gray + :add-heading: + + .. autofunction:: k_ij + + .. _sphx_glr_backref_pvdeg.letid.k_ij: + + .. minigallery:: pvdeg.letid.k_ij + :add-heading: + + .. autofunction:: tau_now + + .. _sphx_glr_backref_pvdeg.letid.tau_now: + + .. minigallery:: pvdeg.letid.tau_now + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.letid.tau_now.rst b/docs/source/_autosummary/pvdeg.letid.tau_now.rst new file mode 100644 index 00000000..0dd71765 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.letid.tau_now.rst @@ -0,0 +1,6 @@ +pvdeg.letid.tau\_now +==================== + +.. currentmodule:: pvdeg.letid + +.. autofunction:: tau_now \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.spectral.poa_irradiance.rst b/docs/source/_autosummary/pvdeg.spectral.poa_irradiance.rst new file mode 100644 index 00000000..3db2d1b7 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.spectral.poa_irradiance.rst @@ -0,0 +1,6 @@ +pvdeg.spectral.poa\_irradiance +============================== + +.. currentmodule:: pvdeg.spectral + +.. autofunction:: poa_irradiance \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.spectral.rst b/docs/source/_autosummary/pvdeg.spectral.rst new file mode 100644 index 00000000..53c1a3d1 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.spectral.rst @@ -0,0 +1,61 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.spectral +============== + +.. automodule:: pvdeg.spectral + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.spectral.poa_irradiance + pvdeg.spectral.solar_position + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: poa_irradiance + + .. _sphx_glr_backref_pvdeg.spectral.poa_irradiance: + + .. minigallery:: pvdeg.spectral.poa_irradiance + :add-heading: + + .. autofunction:: solar_position + + .. _sphx_glr_backref_pvdeg.spectral.solar_position: + + .. minigallery:: pvdeg.spectral.solar_position + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.spectral.solar_position.rst b/docs/source/_autosummary/pvdeg.spectral.solar_position.rst new file mode 100644 index 00000000..6b753811 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.spectral.solar_position.rst @@ -0,0 +1,6 @@ +pvdeg.spectral.solar\_position +============================== + +.. currentmodule:: pvdeg.spectral + +.. autofunction:: solar_position \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.standards.calc_standoff.rst b/docs/source/_autosummary/pvdeg.standards.calc_standoff.rst new file mode 100644 index 00000000..864916a5 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.standards.calc_standoff.rst @@ -0,0 +1,6 @@ +pvdeg.standards.calc\_standoff +============================== + +.. currentmodule:: pvdeg.standards + +.. autofunction:: calc_standoff \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.standards.eff_gap.rst b/docs/source/_autosummary/pvdeg.standards.eff_gap.rst new file mode 100644 index 00000000..1ccf7882 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.standards.eff_gap.rst @@ -0,0 +1,6 @@ +pvdeg.standards.eff\_gap +======================== + +.. currentmodule:: pvdeg.standards + +.. autofunction:: eff_gap \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.standards.rst b/docs/source/_autosummary/pvdeg.standards.rst new file mode 100644 index 00000000..cc597976 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.standards.rst @@ -0,0 +1,69 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.standards +=============== + +.. automodule:: pvdeg.standards + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.standards.calc_standoff + pvdeg.standards.eff_gap + pvdeg.standards.run_calc_standoff + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: calc_standoff + + .. _sphx_glr_backref_pvdeg.standards.calc_standoff: + + .. minigallery:: pvdeg.standards.calc_standoff + :add-heading: + + .. autofunction:: eff_gap + + .. _sphx_glr_backref_pvdeg.standards.eff_gap: + + .. minigallery:: pvdeg.standards.eff_gap + :add-heading: + + .. autofunction:: run_calc_standoff + + .. _sphx_glr_backref_pvdeg.standards.run_calc_standoff: + + .. minigallery:: pvdeg.standards.run_calc_standoff + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.standards.run_calc_standoff.rst b/docs/source/_autosummary/pvdeg.standards.run_calc_standoff.rst new file mode 100644 index 00000000..e0285692 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.standards.run_calc_standoff.rst @@ -0,0 +1,6 @@ +pvdeg.standards.run\_calc\_standoff +=================================== + +.. currentmodule:: pvdeg.standards + +.. autofunction:: run_calc_standoff \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.temperature.cell.rst b/docs/source/_autosummary/pvdeg.temperature.cell.rst new file mode 100644 index 00000000..e836aeb3 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.temperature.cell.rst @@ -0,0 +1,6 @@ +pvdeg.temperature.cell +====================== + +.. currentmodule:: pvdeg.temperature + +.. autofunction:: cell \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.temperature.module.rst b/docs/source/_autosummary/pvdeg.temperature.module.rst new file mode 100644 index 00000000..e420a2b0 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.temperature.module.rst @@ -0,0 +1,6 @@ +pvdeg.temperature.module +======================== + +.. currentmodule:: pvdeg.temperature + +.. autofunction:: module \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.temperature.rst b/docs/source/_autosummary/pvdeg.temperature.rst new file mode 100644 index 00000000..e6812c6d --- /dev/null +++ b/docs/source/_autosummary/pvdeg.temperature.rst @@ -0,0 +1,61 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.temperature +================= + +.. automodule:: pvdeg.temperature + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.temperature.cell + pvdeg.temperature.module + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: cell + + .. _sphx_glr_backref_pvdeg.temperature.cell: + + .. minigallery:: pvdeg.temperature.cell + :add-heading: + + .. autofunction:: module + + .. _sphx_glr_backref_pvdeg.temperature.module: + + .. minigallery:: pvdeg.temperature.module + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.convert_tmy.rst b/docs/source/_autosummary/pvdeg.utilities.convert_tmy.rst new file mode 100644 index 00000000..3663ccaa --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.convert_tmy.rst @@ -0,0 +1,6 @@ +pvdeg.utilities.convert\_tmy +============================ + +.. currentmodule:: pvdeg.utilities + +.. autofunction:: convert_tmy \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.get_kinetics.rst b/docs/source/_autosummary/pvdeg.utilities.get_kinetics.rst new file mode 100644 index 00000000..55f4a1e3 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.get_kinetics.rst @@ -0,0 +1,6 @@ +pvdeg.utilities.get\_kinetics +============================= + +.. currentmodule:: pvdeg.utilities + +.. autofunction:: get_kinetics \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.gid_downsampling.rst b/docs/source/_autosummary/pvdeg.utilities.gid_downsampling.rst new file mode 100644 index 00000000..49182e69 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.gid_downsampling.rst @@ -0,0 +1,6 @@ +pvdeg.utilities.gid\_downsampling +================================= + +.. currentmodule:: pvdeg.utilities + +.. autofunction:: gid_downsampling \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.quantile_df.rst b/docs/source/_autosummary/pvdeg.utilities.quantile_df.rst new file mode 100644 index 00000000..22aa2015 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.quantile_df.rst @@ -0,0 +1,6 @@ +pvdeg.utilities.quantile\_df +============================ + +.. currentmodule:: pvdeg.utilities + +.. autofunction:: quantile_df \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.rst b/docs/source/_autosummary/pvdeg.utilities.rst new file mode 100644 index 00000000..16bd6fd9 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.rst @@ -0,0 +1,93 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.utilities +=============== + +.. automodule:: pvdeg.utilities + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.utilities.convert_tmy + pvdeg.utilities.get_kinetics + pvdeg.utilities.gid_downsampling + pvdeg.utilities.quantile_df + pvdeg.utilities.ts_gid_df + pvdeg.utilities.write_gids + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: convert_tmy + + .. _sphx_glr_backref_pvdeg.utilities.convert_tmy: + + .. minigallery:: pvdeg.utilities.convert_tmy + :add-heading: + + .. autofunction:: get_kinetics + + .. _sphx_glr_backref_pvdeg.utilities.get_kinetics: + + .. minigallery:: pvdeg.utilities.get_kinetics + :add-heading: + + .. autofunction:: gid_downsampling + + .. _sphx_glr_backref_pvdeg.utilities.gid_downsampling: + + .. minigallery:: pvdeg.utilities.gid_downsampling + :add-heading: + + .. autofunction:: quantile_df + + .. _sphx_glr_backref_pvdeg.utilities.quantile_df: + + .. minigallery:: pvdeg.utilities.quantile_df + :add-heading: + + .. autofunction:: ts_gid_df + + .. _sphx_glr_backref_pvdeg.utilities.ts_gid_df: + + .. minigallery:: pvdeg.utilities.ts_gid_df + :add-heading: + + .. autofunction:: write_gids + + .. _sphx_glr_backref_pvdeg.utilities.write_gids: + + .. minigallery:: pvdeg.utilities.write_gids + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.ts_gid_df.rst b/docs/source/_autosummary/pvdeg.utilities.ts_gid_df.rst new file mode 100644 index 00000000..47ab8014 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.ts_gid_df.rst @@ -0,0 +1,6 @@ +pvdeg.utilities.ts\_gid\_df +=========================== + +.. currentmodule:: pvdeg.utilities + +.. autofunction:: ts_gid_df \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.utilities.write_gids.rst b/docs/source/_autosummary/pvdeg.utilities.write_gids.rst new file mode 100644 index 00000000..b64353ad --- /dev/null +++ b/docs/source/_autosummary/pvdeg.utilities.write_gids.rst @@ -0,0 +1,6 @@ +pvdeg.utilities.write\_gids +=========================== + +.. currentmodule:: pvdeg.utilities + +.. autofunction:: write_gids \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.weather.get.rst b/docs/source/_autosummary/pvdeg.weather.get.rst new file mode 100644 index 00000000..675b3761 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.weather.get.rst @@ -0,0 +1,6 @@ +pvdeg.weather.get +================= + +.. currentmodule:: pvdeg.weather + +.. autofunction:: get \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.weather.get_NSRDB.rst b/docs/source/_autosummary/pvdeg.weather.get_NSRDB.rst new file mode 100644 index 00000000..8152bef5 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.weather.get_NSRDB.rst @@ -0,0 +1,6 @@ +pvdeg.weather.get\_NSRDB +======================== + +.. currentmodule:: pvdeg.weather + +.. autofunction:: get_NSRDB \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.weather.get_NSRDB_fnames.rst b/docs/source/_autosummary/pvdeg.weather.get_NSRDB_fnames.rst new file mode 100644 index 00000000..03a1434b --- /dev/null +++ b/docs/source/_autosummary/pvdeg.weather.get_NSRDB_fnames.rst @@ -0,0 +1,6 @@ +pvdeg.weather.get\_NSRDB\_fnames +================================ + +.. currentmodule:: pvdeg.weather + +.. autofunction:: get_NSRDB_fnames \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.weather.read.rst b/docs/source/_autosummary/pvdeg.weather.read.rst new file mode 100644 index 00000000..e260e850 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.weather.read.rst @@ -0,0 +1,6 @@ +pvdeg.weather.read +================== + +.. currentmodule:: pvdeg.weather + +.. autofunction:: read \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.weather.read_h5.rst b/docs/source/_autosummary/pvdeg.weather.read_h5.rst new file mode 100644 index 00000000..6eb72150 --- /dev/null +++ b/docs/source/_autosummary/pvdeg.weather.read_h5.rst @@ -0,0 +1,6 @@ +pvdeg.weather.read\_h5 +====================== + +.. currentmodule:: pvdeg.weather + +.. autofunction:: read_h5 \ No newline at end of file diff --git a/docs/source/_autosummary/pvdeg.weather.rst b/docs/source/_autosummary/pvdeg.weather.rst new file mode 100644 index 00000000..a97538ac --- /dev/null +++ b/docs/source/_autosummary/pvdeg.weather.rst @@ -0,0 +1,85 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +pvdeg.weather +============= + +.. automodule:: pvdeg.weather + + .. this is crazy + + + + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + + pvdeg.weather.get + pvdeg.weather.get_NSRDB + pvdeg.weather.get_NSRDB_fnames + pvdeg.weather.read + pvdeg.weather.read_h5 + + + + + .. this is crazy + + + + +.. + Functions + --------- + + + + .. autofunction:: get + + .. _sphx_glr_backref_pvdeg.weather.get: + + .. minigallery:: pvdeg.weather.get + :add-heading: + + .. autofunction:: get_NSRDB + + .. _sphx_glr_backref_pvdeg.weather.get_NSRDB: + + .. minigallery:: pvdeg.weather.get_NSRDB + :add-heading: + + .. autofunction:: get_NSRDB_fnames + + .. _sphx_glr_backref_pvdeg.weather.get_NSRDB_fnames: + + .. minigallery:: pvdeg.weather.get_NSRDB_fnames + :add-heading: + + .. autofunction:: read + + .. _sphx_glr_backref_pvdeg.weather.read: + + .. minigallery:: pvdeg.weather.read + :add-heading: + + .. autofunction:: read_h5 + + .. _sphx_glr_backref_pvdeg.weather.read_h5: + + .. minigallery:: pvdeg.weather.read_h5 + :add-heading: + + + + + + + + + + \ No newline at end of file diff --git a/docs/source/_templates/module.rst b/docs/source/_templates/module.rst new file mode 100644 index 00000000..70354a68 --- /dev/null +++ b/docs/source/_templates/module.rst @@ -0,0 +1,80 @@ +.. Please when editing this file make sure to keep it matching the + docs in ../configuration.rst:reference_to_examples + +{{ fullname }} +{{ underline }} + +.. automodule:: {{ fullname }} + + .. this is crazy + + {% block function_overview %} + {% if functions %} + + Function Overview + ----------------- + + .. autosummary:: + :toctree: + :nosignatures: + + {% for item in functions %} + {{ fullname }}.{{ item }} + {%- endfor %} + + {% endif %} + {% endblock %} + + .. this is crazy + + {% block functions %} + {% if functions %} + +.. + Functions + --------- + + {% for item in functions %} + + .. autofunction:: {{ item }} + + .. _sphx_glr_backref_{{fullname}}.{{item}}: + + .. minigallery:: {{fullname}}.{{item}} + :add-heading: + + {%- endfor %} + {% endif %} + {% endblock %} + + {% block classes %} + {% if classes %} + + Classes + ------- + + {% for item in classes %} + .. autoclass:: {{ item }} + :members: + + .. _sphx_glr_backref_{{fullname}}.{{item}}: + + .. minigallery:: {{fullname}}.{{item}} + :add-heading: + + {%- endfor %} + {% endif %} + {% endblock %} + + {% block exceptions %} + {% if exceptions %} + + Exceptions + ---------- + + .. autosummary:: + {% for item in exceptions %} + {{ item }} + {%- endfor %} + {% endif %} + {% endblock %} \ No newline at end of file diff --git a/docs/sphinx/source/api.rst b/docs/source/api.rst similarity index 70% rename from docs/sphinx/source/api.rst rename to docs/source/api.rst index 08cbab85..c37f9e6d 100644 --- a/docs/sphinx/source/api.rst +++ b/docs/source/api.rst @@ -1,23 +1,27 @@ -.. currentmodule:: pvdeg - API === Modules, methods, classes and attributes are explained here. + +.. currentmodule:: pvdeg + .. automodule:: pvdeg - :members: + :no-members: + :no-inherited-members: + +:py:mod:`pvdeg` .. autosummary:: - :toctree: _autosummary - :recursive: + :toctree: _autosummary/ + :template: module.rst collection - humidity degradation + design fatigue + humidity letid spectral - design standards temperature utilities diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 00000000..910a1848 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,316 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +import os +import sys +import warnings + +sys.path.insert(0, os.path.abspath("../../")) + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = "pvdeg" +copyright = "2023, NREL" +author = "Alliance For Sustainable Energy LLC" + +import pvdeg + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +######################################################################################## +### INSTALL pydoc with conda NOT PIP and run in same conda environment when building ### +######################################################################################## + +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.mathjax", + "sphinx.ext.viewcode", + "sphinx.ext.intersphinx", + "sphinx.ext.extlinks", + "sphinx.ext.napoleon", + "sphinx.ext.autosummary", + "IPython.sphinxext.ipython_directive", + "IPython.sphinxext.ipython_console_highlighting", + # 'sphinx_gallery.gen_gallery', + "sphinx_gallery.load_style", # thumbnail gallery for .ipynb + "nbsphinx", # convert .ipynb to html, install pandoc using CONDA not pip + "sphinx_toggleprompt", +] + +# sphinx_gallery_conf = { +# 'examples_dirs': '../examples', # path to your example scripts +# 'gallery_dirs': 'auto_examples', # path to where to save gallery generated output +# } + +# Add or update these if necessary +autodoc_default_options = { + "member-order": "bysource", + "show-inheritance": True, + "undoc-members": True, + "exclude-members": "__weakref__", +} + +# supress warnings in gallery output +# https://sphinx-gallery.github.io/stable/configuration.html +warnings.filterwarnings( + "ignore", + category=UserWarning, + message="Matplotlib is currently using agg, which is a" + " non-GUI backend, so cannot show the figure.", +) + +napoleon_use_rtype = False # group rtype on same line together with return + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# The suffix of source filenames. +source_suffix = ".rst" + +# The master toctree document. +master_doc = "index" + +# The short X.Y version. +version = "%s" % (pvdeg.__version__) +# The full version, including alpha/beta/rc tags. +release = version + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ["**.ipynb_checkpoints", "_build", "Thumbs.db", ".DS_Store"] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = "sphinx" + +# List of external link aliases. Allows use of :pull:`123` to autolink that PR +extlinks = { + "issue": ("https://github.com/NREL/PVDegradationTools/issues/%s", "issue %s"), + "pull": ("https://github.com/NREL/PVDegradationTools/pull/%s", "pull %s"), + "ghuser": ("https://github.com/%s", "ghuser %s"), +} + +## Generate autodoc stubs with summaries from code +autosummary_generate = True + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = "pydata_sphinx_theme" + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# https://pydata-sphinx-theme.rtfd.io/en/latest/user_guide/configuring.html + +html_theme_options = { + "navigation_depth": 4, + "titles_only": False, + "extra_nav_links": { + "User Guide": "user_guide/index", + "Tutorials": "tutorials/index", + "API reference": "api", + "What's New": "whatsnew/index", + }, + "github_url": "https://github.com/NREL/PVDegradationTools", + # "favicons": [ + # {"rel": "icon", "sizes": "16x16", "href": "favicon-16x16.png"}, ### CHECK THIS IMAGE ### + # {"rel": "icon", "sizes": "32x32", "href": "favicon-32x32.png"}, ### CHECK THIS IMAGE ### + # ], + ### DO WE HAVE ANY OF THESE ### + # "icon_links": [ + # { + # "name": "StackOverflow", + # "url": "https://stackoverflow.com/questions/tagged/pvlib", + # "icon": "fab fa-stack-overflow", + # }, + # { + # "name": "Google Group", + # "url": "https://groups.google.com/g/pvlib-python", + # "icon": "fab fa-google", + # }, + # { + # "name": "PyPI", + # "url": "https://pypi.org/project/pvlib/", + # "icon": "fab fa-python", + # }, + # ], + # "use_edit_page_button": True, # THIS WAS PROBLEMATIC FOR SOME REASON + "show_toc_level": 1, + "footer_items": ["copyright", "sphinx-version", "sidebar-ethical-ads"], + "left_sidebar_end": [], +} + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +html_logo = "../../pvdeg_tutorials/pvdeg_logo.png" # logo should work at this path + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +html_static_path = ["_static"] + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +html_show_copyright = True + +# Output file base name for HTML help builder. +htmlhelp_basename = "pvdeg_pythondoc" + + +# custom CSS workarounds +def setup(app): + # A workaround for the responsive tables always having annoying scrollbars. + app.add_css_file("no_scrollbars.css") + # Override footnote callout CSS to be normal text instead of superscript + # In-line links to references as numbers in brackets. + app.add_css_file("reference_format.css") + # Add a warning banner at the top of the page if viewing the "latest" docs + app.add_js_file("version-alert.js") + + +# -- Options for LaTeX output --------------------------------------------- + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False + +# Example configuration for intersphinx: refer to the Python standard library. +# intersphinx_mapping = { +# 'python': ('https://docs.python.org/3/', None), +# 'numpy': ('https://numpy.org/doc/stable/', None), +# 'scipy': ('https://docs.scipy.org/doc/scipy/reference/', None), +# 'pandas': ('https://pandas.pydata.org/pandas-docs/stable', None), +# 'matplotlib': ('https://matplotlib.org/stable', None), +# } + +ipython_warning_is_error = False + +# suppress "WARNING: Footnote [1] is not referenced." messages +# https://github.com/pvlib/pvlib-python/issues/837 +suppress_warnings = ["ref.footnote"] + + +# supress warnings in gallery output +# https://sphinx-gallery.github.io/stable/configuration.html +warnings.filterwarnings( + "ignore", + category=UserWarning, + message="Matplotlib is currently using agg, which is a" + " non-GUI backend, so cannot show the figure.", +) + +# %% helper functions for intelligent "View on Github" linking +# based on +# https://gist.github.com/flying-sheep/b65875c0ce965fbdd1d9e5d0b9851ef1 + + +def get_obj_module(qualname): + """ + Get a module/class/attribute and its original module by qualname. + Useful for looking up the original location when a function is imported + into an __init__.py + + Examples + -------- + >>> func, mod = get_obj_module("pvlib.iotools.read_midc") + >>> mod.__name__ + 'pvlib.iotools.midc' + """ + modname = qualname + classname = None + attrname = None + while modname not in sys.modules: + attrname = classname + modname, classname = modname.rsplit(".", 1) + + # retrieve object and find original module name + if classname: + cls = getattr(sys.modules[modname], classname) + modname = cls.__module__ + obj = getattr(cls, attrname) if attrname else cls + else: + obj = None + + return obj, sys.modules[modname] + + +# def get_linenos(obj): +# """Get an object’s line numbers in its source code file""" +# try: +# lines, start = inspect.getsourcelines(obj) +# except TypeError: # obj is an attribute or None +# return None, None +# except OSError: # obj listing cannot be found +# # This happens for methods that are not explicitly defined +# # such as the __init__ method for a dataclass +# return None, None +# else: +# return start, start + len(lines) - 1 + + +# def make_github_url(file_name): +# """ +# Generate the appropriate GH link for a given docs page. This function +# is intended for use in sphinx template files. + +# The target URL is built differently based on the type of page. The pydata +# sphinx theme has a built-in `file_name` variable that looks like +# "/docs/sphinx/source/api.rst" or "generated/pvlib.atmosphere.alt2pres.rst" +# """ + +# URL_BASE = "https://github.com/pvlib/pvlib-python/blob/main/" + +# # is it a gallery page? +# if any(d in file_name for d in sphinx_gallery_conf['gallery_dirs']): +# if file_name.split("/")[-1] == "index": +# example_file = "README.rst" +# else: +# example_file = file_name.split("/")[-1].replace('.rst', '.py') +# target_url = URL_BASE + "docs/examples/" + example_file + +# # is it an API autogen page? +# elif "generated" in file_name: +# # pagename looks like "generated/pvlib.atmosphere.alt2pres.rst" +# qualname = file_name.split("/")[-1].replace('.rst', '') +# obj, module = get_obj_module(qualname) +# path = module.__name__.replace(".", "/") + ".py" +# target_url = URL_BASE + path +# # add line numbers if possible: +# start, end = get_linenos(obj) +# if start and end: +# target_url += f'#L{start}-L{end}' + +# # Just a normal source RST page +# else: +# target_url = URL_BASE + "docs/sphinx/source/" + file_name + +# return target_url + + +# variables to pass into the HTML templating engine; these are accessible from +# _templates/breadcrumbs.html +# html_context = { +# 'make_github_url': make_github_url, +# 'edit_page_url_template': '{{ make_github_url(file_name) }}', +# } diff --git a/docs/sphinx/source/index.rst b/docs/source/index.rst similarity index 78% rename from docs/sphinx/source/index.rst rename to docs/source/index.rst index a60489b6..080c10e6 100644 --- a/docs/sphinx/source/index.rst +++ b/docs/source/index.rst @@ -1,5 +1,12 @@ -.. image:: ../../../pvdeg_tutorials/pvdeg_logo.png - :width: 200 +.. pvdeg documentation master file, created by + sphinx-quickstart on Thu Jan 18 15:25:51 2024. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +.. image:: ../../pvdeg_tutorials/pvdeg_logo.png + :width: 500 + + Welcome to pvdeg! ============================================================== @@ -21,9 +28,7 @@ other degradation profiles are in the works. The source code for pvdeg is hosted on `github `_. -Tutorials to learn how to use and experiment with the various functionalities -are available for running interactively through Google Collab at -`PVDeg JupyterBook`. +See :ref:`tutorials` to learn how to use and experiment with various functionalities Please see the :ref:`installation` page for installation help. @@ -51,23 +56,19 @@ Please also cite the DOI corresponding to the specific version that you used. DOIs are listed at Zenodo.org -Contents -======== - .. toctree:: - :maxdepth: 3 - :caption: Contents: + :hidden: + :titlesonly: - package_overview - whatsnew - installation + user_guide/index + tutorials/index api + whatsnew/index +.. + Indices and tables + ================== - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` + * :ref:`genindex` + * :ref:`modindex` + * :ref:`search` diff --git a/docs/source/sg_execution_times.rst b/docs/source/sg_execution_times.rst new file mode 100644 index 00000000..d589d7f3 --- /dev/null +++ b/docs/source/sg_execution_times.rst @@ -0,0 +1,37 @@ + +:orphan: + +.. _sphx_glr_sg_execution_times: + + +Computation times +================= +**00:00.180** total execution time for 1 file **from all galleries**: + +.. container:: + + .. raw:: html + + + + + + + + .. list-table:: + :header-rows: 1 + :class: table table-striped sg-datatable + + * - Example + - Time + - Mem (MB) + * - :ref:`sphx_glr_auto_examples_plot_fit_to_matrix.py` (``..\examples\plot_fit_to_matrix.py``) + - 00:00.180 + - 0.0 diff --git a/docs/source/tutorials/index.rst b/docs/source/tutorials/index.rst new file mode 100644 index 00000000..ec01477b --- /dev/null +++ b/docs/source/tutorials/index.rst @@ -0,0 +1,52 @@ +.. _tutorials: + +========== +Tutorials +========== + +Gallery Coming Soon +In the mean time check the jupyter-book for interactive trainings +*Nbgallery element* + +Jupyter Book +------------ + +For in depth Tutorials you can run online, see our `jupyter-book +`_ +Clicking on the rocket-icon on the top allows you to launch the journals on `Google Colaboratory +`_ +for interactive mode. +Just uncomment the first line `pip install ...` to install the environment on each journal if you follow this mode. + +Binder +------ + +To run these tutorials in Binder, you can click here: + +.. image:: https://mybinder.org/badge_logo.svg + :target: https://mybinder.org/v2/gh/NREL/PVDegradationTools/main + :alt: Binder + +It takes a minute to load the environment. + +Locally +------- + +You can also run the tutorial locally in a virtual environment, i.e., `venv` or +`miniconda +`_. + +1. Create and activate a new environment, e.g., on Mac/Linux terminal with `venv`: + ``python -m venv pvdeg . pvdeg/bin/activate`` + or with `conda`: + ``conda create -n pvdeg conda activate pvdeg`` + +1. Install `pvdeg` into the new environment with `pip`: + ``python -m pip install pvdeg`` + +1. Start a Jupyter session: + ``jupyter notebook`` + +1. Use the file explorer in Jupyter lab to browse to `tutorials` + and start the first Tutorial. + diff --git a/docs/source/user_guide/Monte-Carlo-Details/Slide1.PNG b/docs/source/user_guide/Monte-Carlo-Details/Slide1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..2ae9938f49789fecb09b33d69ade23df9ea67025 GIT binary patch literal 34497 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. +* Make `GitHub issues `_ + and contribute to the conversations about how to resolve them. +* Read issues and pull requests that other people created and + contribute to the conversation about how to resolve them. +* Improve the documentation and the unit tests. +* Improve the IPython/Jupyter Notebook tutorials or write new ones that + demonstrate how to use Pvdeg in your area of expertise. +* Tell your friends and colleagues about pvdeg +* Add your project to our + `Projects and publications that use pvdeg wiki + `_. + + +How to contribute new code +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The basics +---------- + +Contributors to pvdeg use GitHub's pull requests to add/modify +its source code. The GitHub pull request process can be intimidating for +new users, but you'll find that it becomes straightforward once you use +it a few times. Please let us know if you get stuck at any point in the +process. Here's an outline of the process: + +#. Create a GitHub issue and get initial feedback from users and + maintainers. If the issue is a bug report, please include the + code needed to reproduce the problem. +#. Obtain the latest version of pvdeg: Fork the pvdeg + project to your GitHub account, ``git clone`` your fork to your computer. +#. Make some or all of your changes/additions and ``git commit`` them to + your local repository. +#. Share your changes with us via a pull request: ``git push`` your + local changes to your GitHub fork, then go to GitHub make a pull + request. + +The Pandas project maintains an excellent `contributing page +`_ that goes +into detail on each of these steps. Also see GitHub's `Set Up Git +`_ and `Using Pull +Requests `_. + +We strongly recommend using virtual environments for development. +Virtual environments make it trivial to switch between different +versions of software. This `astropy guide +`_ is a good reference for virtual environments. If +this is your first pull request, don't worry about using a virtual +environment. + +You must include documentation and unit tests for any new or improved +code. We can provide help and advice on this after you start the pull +request. See the Testing section below. + + +.. _pull-request-scope: + +Pull request scope +------------------ + +This section can be summed up as "less is more". + +A pull request can quickly become unmanageable if too many lines are +added or changed. "Too many" is hard to define, but as a rule of thumb, +we encourage contributions that contain less than 50 lines of primary code. +50 lines of primary code will typically need at least 250 lines +of documentation and testing. This is about the limit of what the +maintainers can review on a regular basis. + +A pull request can also quickly become unmanageable if it proposes +changes to the API in order to implement another feature. Consider +clearly and concisely documenting all proposed API changes before +implementing any code. + +Questions about related issues frequently come up in the process of +addressing implementing code for a pull request. Please try to avoid +expanding the scope of your pull request (this also applies to +reviewers!). We'd rather see small, well-documented additions to the +project's technical debt than see a pull request languish because its +scope expanded beyond what the reviewer community is capable of +processing. + +Of course, sometimes it is necessary to make a large pull request. We +only ask that you take a few minutes to consider how to break it into +smaller chunks before proceeding. + +When should I submit a pull request? +------------------------------------ + +The short answer: anytime. + +The long answer: it depends. If in doubt, go ahead and submit. You do +not need to make all of your changes before creating a pull request. +Your pull requests will automatically be updated when you commit new +changes and push them to GitHub. + +There are pros and cons to submitting incomplete pull-requests. On the +plus side, it gives everybody an easy way to comment on the code and can +make the process more efficient. On the minus side, it's easy for an +incomplete pull request to grow into a multi-month saga that leaves +everyone unhappy. If you submit an incomplete pull request, please be +very clear about what you would like feedback on and what we should +ignore. Alternatives to incomplete pull requests include creating a +`gist `_ or experimental branch and linking to +it in the corresponding issue. + +The best way to ensure that a pull request will be reviewed and merged in +a timely manner is to: + +#. Start by creating an issue. The issue should be well-defined and + actionable. +#. Ask the maintainers to tag the issue with the appropriate milestone. +#. Tag pvdeg community members or ``@pvdeg/maintainer`` when the pull + request is ready for review. (see :ref:`pull-request-reviews`) + + +.. _pull-request-reviews: + +Pull request reviews +-------------------- + +The pvdeg community and maintainers will review your pull request in a +timely fashion. Please "ping" ``@pvdeg/maintainer`` if it seems that +your pull request has been forgotten at any point in the pull request +process. + +Keep in mind that the PV modeling community is diverse and each pvdeg +community member brings a different perspective when reviewing code. +Some reviewers bring years of expertise in the sub-field that your code +contributes to and will focus on the details of the algorithm. Other +reviewers will be more focused on integrating your code with the rest of +pvdeg, ensuring that it is feasible to maintain, that it meets the +:ref:`code style ` guidelines, and that it is +:ref:`comprehensively tested `. Limiting the scope of the pull +request makes it much more likely that all of these reviews can be +conducted and any issues can be resolved in a timely fashion. + +Sometimes it's hard for reviewers to be immediately available, so the +right amount of patience is to be expected. That said, interested +reviewers should do their best to not wait until the last minute to put +in their two cents. + + +.. _code-style: + +Code style +~~~~~~~~~~ + +pvdeg generally follows the `PEP 8 -- Style Guide for Python Code +`_. Maximum line length for code +is 79 characters. + +Code must be compatible with Python 3.5 and above. + +*ALIGN WITH PROJECT VARIABLE NAMES* +pvdeg uses a mix of full and abbreviated variable names. See +:ref:`variables_style_rules`. We could be better about consistency. +Prefer full names for new contributions. This is especially important +for the API. Abbreviations can be used within a function to improve the +readability of formulae. + +Set your editor to strip extra whitespace from line endings. This +prevents the git commit history from becoming cluttered with whitespace +changes. + +Please see :ref:`API` for information specific to documentation +style. + +Remove any ``logging`` calls and ``print`` statements that you added +during development. ``warning`` is ok. + +We typically use GitHub's +"`squash and merge `_" +feature to merge your pull request into pvdeg. GitHub will condense the +commit history of your branch into a single commit when merging into +pvdeg/main (the commit history on your branch remains +unchanged). Therefore, you are free to make commits that are as big or +small as you'd like while developing your pull request. + + +.. _documentation: + +Documentation +~~~~~~~~~~~~~ + +Documentation must be written in +`numpydoc format `_ format which is rendered +using the `Sphinx Napoleon extension +`_. + +The numpydoc format includes a specification for the allowable input +types. Python's `duck typing `_ +allows for multiple input types to work for many parameters. pvdeg uses +the following generic descriptors as short-hand to indicate which +specific types may be used: + +* dict-like : dict, OrderedDict, pd.Series +* numeric : scalar, np.array, pd.Series. Typically int or float dtype. +* array-like : np.array, pd.Series. Typically int or float dtype. + +Parameters that specify a specific type require that specific input type. + +Read the Docs will automatically build the documentation for each pull +request. Please confirm the documentation renders correctly by following +the ``continuous-documentation/read-the-docs`` link within the checks +status box at the bottom of the pull request. + +.. _testing: + +Testing +~~~~~~~ + +Developers **must** include comprehensive tests for any additions or +modifications to pvdeg. New unit test code should be placed in the corresponding test module in the pvdeg/test directory. +If you create a new testing file, remember to include it in ``__init__.py``. + +A pull request will automatically run the tests for you on Linux platform and python versions 2.7 and 3.6. However, it is typically more efficient to run and debug the tests in your own local +environment. + +pvdeg's unit tests can easily be run by executing ``pytest`` on the +pvdeg directory: + +``pytest pvdeg`` + +or, for a single module: + +``pytest pvdeg/test/spectral.py`` + +or, for a single test: + +``pytest pvdeg/test/spectral.py::test_poa_irradiance`` + +We suggest using pytest's ``--pdb`` flag to debug test failures rather +than using ``print`` or ``logging`` calls. For example: + +``pytest pvdeg/test/spectral.py --pdb`` + +will drop you into the +`pdb debugger `_ at the +location of a test failure. As described in :ref:`code-style`, pvdeg +code does not use ``print`` or ``logging`` calls, and this also applies +to the test suite (with rare exceptions). + +This documentation +~~~~~~~~~~~~~~~~~~ + +If this documentation is unclear, help us improve it! Consider looking +at the `pandas +documentation `_ for inspiration. \ No newline at end of file diff --git a/docs/source/user_guide/index.rst b/docs/source/user_guide/index.rst new file mode 100644 index 00000000..3f89f770 --- /dev/null +++ b/docs/source/user_guide/index.rst @@ -0,0 +1,17 @@ +========== +User Guide +========== + + +.. toctree:: + :maxdepth: 2 + + installation + package_overview + NSRDB_API_Key + montecarlo + pv-variables-terms + contributing + + + diff --git a/docs/sphinx/source/installation.rst b/docs/source/user_guide/installation.rst similarity index 88% rename from docs/sphinx/source/installation.rst rename to docs/source/user_guide/installation.rst index d630816d..dcb90740 100644 --- a/docs/sphinx/source/installation.rst +++ b/docs/source/user_guide/installation.rst @@ -17,4 +17,4 @@ For developer installation, download the repository, navigate to the folder loca pip install -e . -Compatible with Python 3.5 and above. +Compatible with Python 3.9 and above. diff --git a/docs/source/user_guide/montecarlo.rst b/docs/source/user_guide/montecarlo.rst new file mode 100644 index 00000000..cb116f68 --- /dev/null +++ b/docs/source/user_guide/montecarlo.rst @@ -0,0 +1,66 @@ +.. _montecarlo: + +Monte Carlo +=========== + +Monte Carlo simulations are a mathematical technique used to predict possible outcomes on an uncertain event. Pvdeg uses pv modeling constants as variables to preform Monte Carlo simulations. These parameters include but are not limited to R_0 Frequency factor, prefactor, + +*Add non-exhaustive list of possible monte carlo variables* + +See the PVdeg Monte Carlo tutorials for specific case details +*here (insert later)* + +General Steps +------------- + +Defining Correlations +^^^^^^^^^^^^^^^^^^^^^ +If your variables are correlated form a list of correlations using pvdeg.montecarlo.Corr() objects. +``my_correlations = [pvdeg.montecarlo.corr('', '', ), ...]`` + +Defining Mean and Standard Deviation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Each variable passed to a Corr object in string form must have its own dictionary entry containing its mean and standard deviation in the following form. +``` +my_dict = { + : {'mean' : , 'stdev' : } +} +``` +*why are there extra backticks this is upsetting* + +Generating Correlated Samples +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +``pvdeg.montecarlo.generateCorrelatedSamples()`` can be used to create correlated samples for our monte carlo simulation. The image below shows how to provide its arguments in detail. *Note: seed is an optional argument.* + +.. image:: Monte-Carlo-Details/Slide1.PNG + :alt: pvdeg.montecarlo.generateCorrelatedSamples() image missing + +Generating Uncorrelated Samples +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +To create uncorrelated samples the ``corr`` parameter of ``pvdeg.montecarlo.generateCorrelatedSamples()`` provided with an empty list, while still providing the other arguments. like the following. + +``` + pvdeg.montecarlo.generateCorrelatedSamples( + corr = [], + ... + ... + ) +``` + +3rd Party Samples/Data +^^^^^^^^^^^^^^^^^^^^^^ +If you have another prefered way of creating samples to use in a Monte Carlo simulation you can bypass the previous steps. The samples DataFrame must have appropriate column names that match the target function's arguments. + +Running A Monte Carlo Simulation +-------------------------------- +Use ``pvdeg.montecarlo.simulate()`` to run a Monte Carlo simulation on a target function. See the image below for more detail. + +.. image:: Monte-Carlo-Details/Slide2.PNG + :alt: pvdeg.montecarlo.simulate() image missing + +Selecting Static and Dynamic Variables +-------------------------------------- +See the image below which shows how to split your Monte Carlo inputs into the appropriate function arguments. + +.. image:: Monte-Carlo-Details/Slide3.PNG + :alt: missing image \ No newline at end of file diff --git a/docs/sphinx/source/package_overview.rst b/docs/source/user_guide/package_overview.rst similarity index 99% rename from docs/sphinx/source/package_overview.rst rename to docs/source/user_guide/package_overview.rst index 825c71d0..47c331e2 100644 --- a/docs/sphinx/source/package_overview.rst +++ b/docs/source/user_guide/package_overview.rst @@ -36,4 +36,4 @@ produced via simulation (for example: results from `bifacial_radiance * Ideal Installation Distance -For an in depth look at each class and function, please refer to API +For an in depth look at each class and function, please refer to API \ No newline at end of file diff --git a/docs/source/user_guide/pv-variables-terms.rst b/docs/source/user_guide/pv-variables-terms.rst new file mode 100644 index 00000000..66f33e53 --- /dev/null +++ b/docs/source/user_guide/pv-variables-terms.rst @@ -0,0 +1,115 @@ +.. _pv-variables-terms: + +PV Variables and Terms +====================== + +pvdeg aims to use the following variables and parameters in its codebase and documentation whenever possible. Please use these conventions when contributing. + + +Stressor Parameters +------------------- +.. list-table:: + :widths: 20 50 15 + :header-rows: 1 + + * - Input Variable + - Description + - Units + * - T_k + - temperature + - [K] + * - T + - temperature + - [C] + * - G + - Irradiance + - [W/m^2] + * - G_UV + - UV Irradiance + - [W/m^2`] + * - G_340 + - UV Irradiance + - W/m^2/nm + * - G_pyr + - W/m^2 + - UV Irradiance + * - G_550 + - UV Irradiance + - Photons*m^-2*s^-1 + * - TOW + - Time of Wetness + - [h/{year}] + * - RH + - Relative Humidity + - [%] + * - FF_0 + - Initial Fill Factor + - [%] + * - L + - Lambda (Wavelength) + - [mm] + * - Q + - Quantum Yield + - + * - BPT_K + - Black Pannel Temperature + - [K] + + + +Modeling Constants +------------------ +.. list-table:: + :widths: 20 80 + :header-rows: 1 + + * - Variable + - Definition + * - R_0 + - Frequency factor, prefactor, + * - R_D + - Rate of degradation + * - E_a + - Activation Energy + * - t_fail + - embrittlement time + * - A + - prefactor + * - FF + - Fill Factor + * - B + - Beta + * - E + - Epsilon + * - v_ab + - LeTID prefactor, attempt frequency from state A to B + * - v_bc + - LeTID prefactor, attempt frequency from state A to B + * - v_ba + - LeTID prefactor, attempt frequency from state A to B + * - v_cb + - LeTID prefactor, attempt frequency from state A to B + * - E_(a, ab) + - LeTID Activation energy from state A to B + * - E_(a, bc) + - LeTID Activation energy from state B to C + * - E_(a, ba) + - LeTID Activation energy from state B to A + * - E_(a, cb) + - LeTID Activation energy from state C to B + * - x_ab + - LeTID Excess Carrier Density Exponent + * - x_bc + - LeTID Excess Carrier Density Exponent + * - x_ba + - LeTID Excess Carrier Density Exponent + * - A_T + - Temperature prefactor + * - A_UV + - UV prefactor + * - A_RH + - RH prefactor + * - LE + - Life Expectation + * - da + - E of lambda diff --git a/docs/source/whatsnew/index.rst b/docs/source/whatsnew/index.rst new file mode 100644 index 00000000..abc92d44 --- /dev/null +++ b/docs/source/whatsnew/index.rst @@ -0,0 +1,10 @@ +.. _whatsnew: + +What's New +========== + + +.. include:: releases/v0.1.0.rst + + + diff --git a/docs/sphinx/source/whatsnew/v0.1.0.rst b/docs/source/whatsnew/releases/v0.1.0.rst similarity index 97% rename from docs/sphinx/source/whatsnew/v0.1.0.rst rename to docs/source/whatsnew/releases/v0.1.0.rst index 12762be2..32ac0c5a 100644 --- a/docs/sphinx/source/whatsnew/v0.1.0.rst +++ b/docs/source/whatsnew/releases/v0.1.0.rst @@ -25,4 +25,4 @@ Contributors * Matthew Brown (:ghuser:`mcbrown042`) * Martin Springer (:ghuser:`martin-springer`) * Mike Kempe (:ghuser:`MDKempe`) -* Joe Karas (:ghuser:`jfkaras`) +* Joe Karas (:ghuser:`jfkaras`) \ No newline at end of file diff --git a/docs/sphinx/source/.api.rst.un~ b/docs/sphinx/source/.api.rst.un~ deleted file mode 100644 index 0d9f8e47ecfd18fab48452b951abad90f7df6c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8666 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 diff --git a/docs/sphinx/source/.package_overview.rst.un~ b/docs/sphinx/source/.package_overview.rst.un~ deleted file mode 100644 index afc957ce27e52e893da800b684ebdb85420ffc40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11818 zcmeHN&5ImG6rUuU#OOxNhaVtnUBm=-XV&Pd42qb|E{chVd?*;)rKYELw@pvi*xj?6 z6+A?Uf`}6R1L8#lFM7#IND#z$5<$;`pah9G@e&XE`&HNLbT)CbnaP4+Kc=R-tE*o1 zykEUn@4cFr!p`X<@jm-&ZT*?AE=_Jacl4+CzuEZ1-t8Zp`gZvIC+E~}r$4{=-I)u! ze?D8Q)i$H-=*4Z5sKCZ)mh^%wv~eBHn^4yIat~?}YbmwquRnf!h&_gCGvD(mXnkI} zZ$8=}_kV*NJ87uun=FCpFNdFSaMWsl-V5G@VhH6n6hbjPVdE?bTfHod=f+Ps$gY40 zePqlqu4@%!l)_pPAbY9|8MS32N&(r^CGwC7MDku7Lm2O5Lj@V7u$BbKCd!a;E(HSuU_ zdr4qaYG<=Wofx$kX7fs`C=5)T8nyS(zR^eP9$UduegK)@g2LUk!j?i9gb2||&!CVh z?iWy;gn{iVWo+3-a&=8c*Nlb{#rWD*Z;XKD0+ zPSdH#E>7r(?U_wRR5vmjivYY%CPufhXxeJlM(E{OgqJ-jtf^QXO~bi(G>CM)(|&c= ze3o_7W}`8O71e9i1KVl5cyMxm1{}(0so*!OF757)K#dWzCM)3=ApK#>-voc70ve~av_9!}V8MAPQmku6i0Txdj zkzX-e1+4BI=5mrK`Y0QYeX>2Td1FGAzVat=aH+UFXbU-ANCa@HeMc4Sd{PIfIvP;v5_*B)T=@B!!nuzhoHGtspewX&gPryv9U3)fy9XZhY&j# z7*-l6V(GJ94Q3yeF)JHGYM?khgv6yVVp4{W>Cb4Mn{opt3Y>k5N1nt zHI>*7A0}qR_30V}%yEYOP}y14O>9fI!U$b?Yjl9{IY|&9wGG0TP8ge}xHo?^UXP#Ai5r9QtqGrR$s9i@6xghLin?!BZ)|uYTS5M6A zy)eOBYZurTOucpI+PfV^h-*`V#%eu^RQjz~vmXB_uSdcmM3lEYFN?tAMQrYn9;k^O z+b*)LvLBSf07SgRB=Gt^&x`)ByPiJ#*Qu58`rY9rd6b~Ym-w`rIUblO&!f?#=q^k| z7y6zVbXRB>T2@1?jQ}5BJYx@mKX!4 z;m#!F4>;rs)6hlo#90bV{+bCg*oFli^}vToKE0sB2-DNxxw$7M;lry&F#)+oI4!G7 zh{h%8Qtw_^T%Ozfb+sf#5dGGLB+F98_1!28q-$7`UzC?*84Bkhy6vOPMtl(hwVf$gi>`B9=buvc${RW#G;@;MV795sII1un@Q#jIBAGCn+))*;L6e2;rs>r74?p zAyu?-XK;kS0=!XHLrFplnmAp7k-xklAhn)`Fr&E#m}k!EbBYJ3W|2yllQS~83uQ+> zm&3Vui%L_yRQjz}gYBEkv1J@C*zV~YSSl-YIL9X;*cCg|8nMSe9W<^)qbJL_zwi5%Eo!{ zig%eahGw z3lX+P{F@c&;{V8T&VO;ONjbXXS2*M&I9SIqDBStXL`yhhkBx?u^8;A5XnTn1BWsW0 z$uZOP9FT8cA^X1H@fh`oxXi+1Sb3opDPCF~`F|T((;^kRQ&}O3WB@882_C$bbW7O^ zz2&UXhTIV>c6N0B_XAUI5$gh<7AWr_Xm@CmO|_3u8iNwI1t&?=yuKEKCmn)Amrpp^ zQ3hV?|D_%|`Vd0gqv+xl3!u_H5lx@ z*uVmjjlTevMkoYvK~gY782$qRSOltYl%jSB#BI$~0!IfU!&eEQ;T%BB1;n7(21Nyd t7&mPMMsq5&w|nl?UP1pw(ZN1*@! diff --git a/docs/sphinx/source/_autosummary/pvdeg.collection.rst b/docs/sphinx/source/_autosummary/pvdeg.collection.rst deleted file mode 100644 index 3a5b14ed..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.collection.rst +++ /dev/null @@ -1,19 +0,0 @@ -pvdeg.collection -================ - -.. automodule:: pvdeg.collection - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - calculate_jsc_from_tau_cp - calculate_jsc_from_tau_iqe - collection_probability - generation_current diff --git a/docs/sphinx/source/_autosummary/pvdeg.degradation.rst b/docs/sphinx/source/_autosummary/pvdeg.degradation.rst deleted file mode 100644 index 666c9dd2..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.degradation.rst +++ /dev/null @@ -1,20 +0,0 @@ -pvdeg.degradation -================= - -.. automodule:: pvdeg.degradation - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - IwaArrhenius - IwaVantHoff - arrhenius_deg - degradation - vantHoff_deg diff --git a/docs/sphinx/source/_autosummary/pvdeg.design.rst b/docs/sphinx/source/_autosummary/pvdeg.design.rst deleted file mode 100644 index 64fda5e4..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.design.rst +++ /dev/null @@ -1,17 +0,0 @@ -pvdeg.design -============ - -.. automodule:: pvdeg.design - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - edge_seal_ingress_rate - edge_seal_width diff --git a/docs/sphinx/source/_autosummary/pvdeg.fatigue.rst b/docs/sphinx/source/_autosummary/pvdeg.fatigue.rst deleted file mode 100644 index 4cb1990c..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.fatigue.rst +++ /dev/null @@ -1,16 +0,0 @@ -pvdeg.fatigue -============= - -.. automodule:: pvdeg.fatigue - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - solder_fatigue diff --git a/docs/sphinx/source/_autosummary/pvdeg.humidity.rst b/docs/sphinx/source/_autosummary/pvdeg.humidity.rst deleted file mode 100644 index 05eb754e..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.humidity.rst +++ /dev/null @@ -1,24 +0,0 @@ -pvdeg.humidity -============== - -.. automodule:: pvdeg.humidity - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - Ce_numba - back_encap - backsheet - backsheet_from_encap - dew_yield - front_encap - module - psat - surface_outside diff --git a/docs/sphinx/source/_autosummary/pvdeg.letid.rst b/docs/sphinx/source/_autosummary/pvdeg.letid.rst deleted file mode 100644 index 2f2bb011..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.letid.rst +++ /dev/null @@ -1,32 +0,0 @@ -pvdeg.letid -=========== - -.. automodule:: pvdeg.letid - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - calc_device_params - calc_dn - calc_energy_loss - calc_injection_outdoors - calc_letid_lab - calc_letid_outdoors - calc_ndd - calc_pmp_loss_from_tau_loss - calc_regeneration_time - calc_voc_from_tau - carrier_factor - carrier_factor_wafer - convert_i_to_v - ff_green - j0_gray - k_ij - tau_now diff --git a/docs/sphinx/source/_autosummary/pvdeg.spectral.rst b/docs/sphinx/source/_autosummary/pvdeg.spectral.rst deleted file mode 100644 index 894b79fe..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.spectral.rst +++ /dev/null @@ -1,17 +0,0 @@ -pvdeg.spectral -============== - -.. automodule:: pvdeg.spectral - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - poa_irradiance - solar_position diff --git a/docs/sphinx/source/_autosummary/pvdeg.standards.rst b/docs/sphinx/source/_autosummary/pvdeg.standards.rst deleted file mode 100644 index c0a847aa..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.standards.rst +++ /dev/null @@ -1,17 +0,0 @@ -pvdeg.standards -=============== - -.. automodule:: pvdeg.standards - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - eff_gap - standoff diff --git a/docs/sphinx/source/_autosummary/pvdeg.temperature.rst b/docs/sphinx/source/_autosummary/pvdeg.temperature.rst deleted file mode 100644 index 39e4cc37..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.temperature.rst +++ /dev/null @@ -1,17 +0,0 @@ -pvdeg.temperature -================= - -.. automodule:: pvdeg.temperature - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - cell - module diff --git a/docs/sphinx/source/_autosummary/pvdeg.utilities.rst b/docs/sphinx/source/_autosummary/pvdeg.utilities.rst deleted file mode 100644 index 62b0f458..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.utilities.rst +++ /dev/null @@ -1,22 +0,0 @@ -pvdeg.utilities -=============== - -.. automodule:: pvdeg.utilities - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - convert_tmy - get_kinetics - gid_downsampling - meta_as_dict - quantile_df - ts_gid_df - write_gids diff --git a/docs/sphinx/source/_autosummary/pvdeg.weather.rst b/docs/sphinx/source/_autosummary/pvdeg.weather.rst deleted file mode 100644 index 3b5fd9cd..00000000 --- a/docs/sphinx/source/_autosummary/pvdeg.weather.rst +++ /dev/null @@ -1,23 +0,0 @@ -pvdeg.weather -============= - -.. automodule:: pvdeg.weather - - - - - - - - .. rubric:: Functions - - .. autosummary:: - - get - get_NSRDB - get_NSRDB_fnames - ini_h5_geospatial - is_leap_year - read - read_h5 - repeat_annual_time_series diff --git a/docs/sphinx/source/_static/.gitignore b/docs/sphinx/source/_static/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/sphinx/source/_static/no_scrollbars.css b/docs/sphinx/source/_static/no_scrollbars.css deleted file mode 100644 index 5177a66a..00000000 --- a/docs/sphinx/source/_static/no_scrollbars.css +++ /dev/null @@ -1,11 +0,0 @@ -/* override table width restrictions */ -/* as described in https://github.com/snide/sphinx_rtd_theme/issues/117 */ -.wy-table-responsive table td, .wy-table-responsive table th { - /* !important prevents the common CSS stylesheets from - overriding this as on RTD they are loaded after this stylesheet */ - white-space: normal !important; -} - -.wy-table-responsive { - overflow: visible !important; -} diff --git a/docs/sphinx/source/api.rst~ b/docs/sphinx/source/api.rst~ deleted file mode 100644 index 8f76ff26..00000000 --- a/docs/sphinx/source/api.rst~ +++ /dev/null @@ -1,17 +0,0 @@ -.. _api: - -API -=== -Modules, methods, classes and attributes are explained here. - -.. automodule:: Relative_Humidity_for_Solar_Modules - -.. automodule:: Relative_Humidity_for_Solar_Modules.main - -RH Functions -------------------- -.. autofunction:: RHfront - -Soldering Degradation Functions -------------------------------- -Some other function here diff --git a/docs/sphinx/source/conf.py b/docs/sphinx/source/conf.py deleted file mode 100644 index eb11988a..00000000 --- a/docs/sphinx/source/conf.py +++ /dev/null @@ -1,75 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys - -sys.path.insert(0, os.path.abspath("../../..")) - -import pvdeg - - -# -- Project information ----------------------------------------------------- - -project = "pvdeg" -copyright = "2023, NREL" -author = "Alliance for Sustainable Energy, LLC" - -version = pvdeg.__version__ - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - "sphinx.ext.napoleon", - "sphinx.ext.extlinks", - "sphinx.ext.intersphinx", - "sphinx.ext.mathjax", -] - -## Include Python objects as they appear in source files -## Default: alphabetically ('alphabetical') -autodoc_member_order = "bysource" -## Default flags used by autodoc directives -autodoc_default_options = { - "members": True, - "show-inheritance": False, -} - -## Generate autodoc stubs with summaries from code -autosummary_generate = True - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = "sphinx_rtd_theme" #'alabaster' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] diff --git a/docs/sphinx/source/conf_old.py b/docs/sphinx/source/conf_old.py deleted file mode 100644 index 8d365f44..00000000 --- a/docs/sphinx/source/conf_old.py +++ /dev/null @@ -1,247 +0,0 @@ -# -*- coding: utf-8 -*- -# -# PVDegradationTools (pvdeg) documentation build configuration file, Jan 2023 -# -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# http://www.sphinx-doc.org/en/master/config - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -import sys -import os - -""" -# Mock modules so RTD works -try: - from mock import Mock as MagicMock -except ImportError: - from unittest.mock import MagicMock - -class Mock(MagicMock): - @classmethod - def __getattr__(cls, name): - return Mock() - -MOCK_MODULES = [] -sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES) -""" -import pandas as pd - -pd.show_versions() - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath("../sphinxext")) -# sys.path.insert(0, os.path.abspath('../../../')) -sys.path.insert(0, os.path.abspath("../../pvdeg")) - - -# -- General configuration --------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.mathjax", - "sphinx.ext.viewcode", - "sphinx.ext.intersphinx", - "sphinx.ext.autodoc", - "sphinx.ext.extlinks", - "sphinx.ext.napoleon", - "sphinx.ext.autosummary", - # 'IPython.sphinxext.ipython_directive', - # 'IPython.sphinxext.ipython_console_highlighting', - "sphinx.ext.doctest", - #'autoapi.extension', - "sphinx.ext.todo", -] - - -# Document Python Code -# autodoc_mock_imports = ['bs4', 'requests'] -# autoapi_type = 'python' -# autoapi_dirs = '../../../pvdeg' - -napoleon_use_rtype = False # group rtype on same line together with return - -# Add any paths that contain templates here, relative to this directory. -templates_path = ["_templates"] - -# The suffix of source filenames. -source_suffix = ".rst" - -# The encoding of source files. -# source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = "index" - -# General information about the project. -project = "PV Degradation Tools" -copyright = "2023, NREL" -author = "Mike Kempe" -release = "0.1.0" -version = "0.1.0" - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# The short X.Y version. -# The full version, including alpha/beta/rc tags. - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ["whatsnew/*", "**.ipynb_checkpoints"] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = "sphinx" - -autosummary_generate = True -autoclass_content = "both" - - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# on_rtd is whether we are on readthedocs.org - -on_rtd = os.environ.get("READTHEDOCS", None) == "True" - -if not on_rtd: # only import and set the theme if we're building docs locally - import sphinx_rtd_theme - - html_theme = "sphinx_rtd_theme" - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] -else: - html_theme = "default" - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ["_static"] - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -html_show_copyright = True - -# Output file base name for HTML help builder. -htmlhelp_basename = "pvdegdoc" - - -# A workaround for the responsive tables always having annoying scrollbars. -def setup(app): - app.add_css_file("no_scrollbars.css") - - -""" -# -- Options for LaTeX output --------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - ('index', 'pvdeg.tex', u'pvdeg\\_Python Documentation', - u'NREL, github contributors', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True -""" -# extlinks alias #TODO: check if those are working -# extlinks = {'issue': ('https://github.com/NREL/pvdeg/issues/%s', 'GH %s'), -# 'pull': ('https://github.com/NREL/pvdeg/pull/%s', 'GH %s'), -# 'wiki': ('https://github.com/NREL/pvdeg/wiki/%s', 'wiki %s'), -# 'doi': ('http://dx.doi.org/%s', 'DOI: %s'), -# 'ghuser': ('https://github.com/%s', '@%s')} -""" -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'pvdeg', u'pvdeg Documentation', - [u'NREL, github contributors'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'pvdeg', u'pvdeg Documentation', - u'NREL, github contributors', 'pvdeg', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' - -# If true, do not generate a @detailmenu in the "Top" node's menu. -#texinfo_no_detailmenu = False - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = { - 'python': ('https://docs.python.org/3.7/', None), - 'pandas': ('https://pandas.pydata.org/pandas-docs/stable/', None), - 'numpy': ('https://docs.scipy.org/doc/numpy/', None), -} - -nbsphinx_allow_errors = True - -ipython_warning_is_error = False -""" diff --git a/docs/sphinx/source/images/PVD_logo.png b/docs/sphinx/source/images/PVD_logo.png deleted file mode 100644 index 910f73f5f23b3dff61e5f72a2c28ec3ef27b3336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3965 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 X1TA?qF00000NkvXXu0mjfU%_yV diff --git a/docs/sphinx/source/index.rst~ b/docs/sphinx/source/index.rst~ deleted file mode 100644 index 5a6c4ead..00000000 --- a/docs/sphinx/source/index.rst~ +++ /dev/null @@ -1,42 +0,0 @@ - - -Welcome to Relative_Humidity_for_Solar_Modules! -============================================================== - -This tool will help calculate degradation in PV modules. - -The source code for CE-MFC is hosted on `github -`_. - -Please see the :ref:`installation` page for installation help. - -Citing CF-MFC -============== - -If you use this calculator in a published work, please cite: - - Holsapple, Derek, "Relative Humidity for Solar Modules", Github 2020 - -Please also cite the DOI corresponding to the specific version that you used. DOIs will be listed at Zenodo.org - - -Contents -======== - -.. toctree:: - :maxdepth: 3 - :caption: Contents: - - package_overview - whatsnew - installation - api - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/docs/sphinx/source/installation.rst~ b/docs/sphinx/source/installation.rst~ deleted file mode 100644 index 9c697533..00000000 --- a/docs/sphinx/source/installation.rst~ +++ /dev/null @@ -1,20 +0,0 @@ -.. _installation: - -Installation -============ - -Relative_Humidity_for_Solar_Modules releases may be installed using the pip and conda tools. - -Install with: - -.. code:: - - pip install Relative_Humidity_for_Solar_Modules - -For developer installation, download the repository, navigate to the folder location and install as: - -.. code:: - - pip install -e . - -Compatible with Python 3.5 and above. diff --git a/docs/sphinx/source/package_overview.rst~ b/docs/sphinx/source/package_overview.rst~ deleted file mode 100644 index 775b5751..00000000 --- a/docs/sphinx/source/package_overview.rst~ +++ /dev/null @@ -1,6 +0,0 @@ -.. _package_overview: - -Package Overview -================ - -under construction. diff --git a/docs/sphinx/source/whatsnew.rst b/docs/sphinx/source/whatsnew.rst deleted file mode 100644 index aacaa42a..00000000 --- a/docs/sphinx/source/whatsnew.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _whatsnew: - -************ -What's New -************ - -These are new features and improvements of note in each release. - -.. include:: whatsnew/v0.1.0.rst diff --git a/docs/sphinx/source/whatsnew.rst~ b/docs/sphinx/source/whatsnew.rst~ deleted file mode 100644 index aa3a81cb..00000000 --- a/docs/sphinx/source/whatsnew.rst~ +++ /dev/null @@ -1,9 +0,0 @@ -.. _whatsnew: - -************ -What's New -************ - -These are new features and improvements of note in each release. - -.. include:: whatsnew/v1.0.rst diff --git a/docs/sphinx/source/whatsnew/.v0.1.0.rst.un~ b/docs/sphinx/source/whatsnew/.v0.1.0.rst.un~ deleted file mode 100644 index b04c266250e6f1cb84df005224fd8c5c19808e52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1009 zcmWH`%$*;a=aT=FfvKp0A$jHe^=yx4m>5i-cYl&rqV-s1Z^AAn1_lNp zAQrX727nSQKr8^nj6e)h3<4k;h8g0%6@Fm>$ucvz?ByO z-hrop6IX6L1su3=LW0>Xse(i~Ar3GjeQU2hnz4V!-ESBTcJINBAZ8es7`vZ+c~VWk zt}^EMjB8%K{XY7g$DO;K-mT46>w2`+KQno|9qu`qyYQrN*tJP9k;c35j`BOjFzgMw za-4I)y|U(!wc3TkCYYb4${dBx7I`AWY0AAbavGL#5CysOXEvk_B0vNd2rRQ!Gmfra zxeTi-dkgC{B?3f%2oM1xKm>>Y5g-CY;C~?CvnBQoFM1BOf?E0^94LqY5g-CYfCvx) zB0vO)01+SpM1Tkofq#Sm7mU5Xz}U5Ayb%8Xuf73%y2#i^)CbgC)Em?>YKDqY=TYx4 z|266r>Luz0>N)Bd^#E1X`;2udhyW2F0z`la5CI}U1c(3;AOb|-4-#nnoq)d5B{v*8 zl`kCD+T*l9KX?1Ur7ACmxO1@18qk%wJcJ!|Z}TkEav?9BuL(?iwh(OF8lS6S;ce~^ zOanSXNC5+Mi=!1>%KUVxUwgq}?j5hK;&szfYMWJda(Ie9al^F(ZUo39KEYEsnAj34 zdJDelqN@Fo)uJvv;mQQr3^JP)ntRNfDxborFiB-acOYb4UJ7jWP;NS(7l|)&OgyRK zs=~@7x)Ac`vu(^Tq0G2GP+$5Y3mCht(7FzGG*Ss326Cw-cQSyU%3#+x&$R|=_)tr+ w0o=h<;sTE4DU$#gyZNhNWfa7)*4%;+qUzC%n$bFAK>+)6_xyeoM^T%72b~x0v;Y7A diff --git a/docs/sphinx/source/whatsnew/.v1.0.rst.un~ b/docs/sphinx/source/whatsnew/.v1.0.rst.un~ deleted file mode 100644 index 0df2bc0147c0cc32bf9991d9c90768b72d5ad85e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10113 zcmeI2zi%8x6vr=)^8>=q1d|Z)M^KzScRP1C&i>Nu z?%6>Cl!gXT@DBij27yF{X=u~YP*BiO0R=*$0f`FUcW!4h1`}Df51M__+|JF<-S^pf z^WNMos^EjG;cWCnW#G%!Cj%Ege*D(wgL_}x^Zm>3t-N{cm0u2hd*GR=A3yu`i?`md zR4Ru#z43z5NlHb`SZka0Ir-oEvn^c&j!uO?Dn>}czW&4L)Tc!!yXpw6`*kRFCcBQ^Sc)~bR%pulMSMfl&=cCUl zUxiX=x)kz5#ZgcH#8uP1$4Mg!gyKh1ErFe&+bXO&ah=XW3RJ>oy~!#Ig?}Sa3HLs7 zd2!wr>nKZk5)_k}PyKU3r_J1~jJ0fvl%I8Yc9=$zm}lnw!N3h7FY_fyuPrfuDA!Wb zjMXV0WpZ|e-0Hx}405sp3uIsW(&|{PZ1-AdGS}*6R_9$~b@uc&2X`XV*=!l^Fm}5D zsC`azKtwyUy_DO9qnW;B>+79A47h>Y;INkN=L8I!Y!~^811R`#Rsa#bjFjN4Ci-=) zuYdTn0XNtKcb_wnS!X#WU^(E_0U2EE6DTV&K@0tq`uf)^2GhPCrX$W|z;t4aW|h89 zFGbp8zhY#%-N_QErCLz|Dhe$r75_4RQIod6(t*-&ta} zdzh2!-~fy3{9rI(dX!VSD?$l75f_b{cQKv66Q(EG!I4^Cr;CxFh&blZ{x6UTI&ZuRE)n&o5CE^eRmIErmHe?(i60=xCL&&4AbC4BF(wS}rLZ zXuLVaZp?YR)pNEq3q}b$`M}$=wKwU&?O@1Gi1VYZ1w-gz48Qv#x|=(wx^*Cq6GIaQ zm-d1+(O2Q0U{AXC0%Tz)fCQL^y0z+Q8mUd;C!_)f3 z?(AmlzzSy@R=^SL;3AYx7nIOfVRjqh*ne4f6PvPg*BtH=9C37rKUS=0.3.1,<0.4", "sphinx>=7.2.6,<8", "sphinx_rtd_theme>=2.0.0,<3", + "sphinx-gallery", + "nbsphinx", + "sphinx_toggleprompt", + "pydata_sphinx_theme", ] test = [ "pytest",