{"id":15049066,"url":"https://github.com/blazej-bucha/charm","last_synced_at":"2025-04-10T01:41:54.116Z","repository":{"id":160970629,"uuid":"492705340","full_name":"blazej-bucha/charm","owner":"blazej-bucha","description":"C/Python library to work with spherical harmonics up to almost arbitrarily high degrees","archived":false,"fork":false,"pushed_at":"2025-04-07T07:26:51.000Z","size":24695,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T08:27:30.426Z","etag":null,"topics":["c-language","geodesy","geoscience","gravity-field","python","spherical-harmonics","topography"],"latest_commit_sha":null,"homepage":"https://www.charmlib.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blazej-bucha.png","metadata":{"files":{"readme":"README.rst","changelog":"NEWS","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-16T06:10:27.000Z","updated_at":"2025-02-12T09:37:38.000Z","dependencies_parsed_at":"2023-07-23T15:15:53.270Z","dependency_job_id":"a2b73bbc-9309-4dde-832e-e946573b685a","html_url":"https://github.com/blazej-bucha/charm","commit_stats":{"total_commits":257,"total_committers":1,"mean_commits":257.0,"dds":0.0,"last_synced_commit":"8b4e1d2f0a2ec6677b919e6f7d404788cfb9e9bb"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blazej-bucha%2Fcharm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blazej-bucha%2Fcharm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blazej-bucha%2Fcharm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blazej-bucha%2Fcharm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blazej-bucha","download_url":"https://codeload.github.com/blazej-bucha/charm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247622027,"owners_count":20968558,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-language","geodesy","geoscience","gravity-field","python","spherical-harmonics","topography"],"created_at":"2024-09-24T21:17:52.886Z","updated_at":"2025-04-10T01:41:49.099Z","avatar_url":"https://github.com/blazej-bucha.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"============\nIntroduction\n============\n\nCHarm is a C library to work with spherical harmonics up to almost arbitrarily \nhigh degrees.  The library is accompanied by a Python wrapper called PyHarm.\n\n\nFeatures\n========\n\n* Supports real-valued fully-normalized surface and solid spherical harmonics\n  (the geodetic norm).\n\n* Performs FFT-based surface spherical harmonic analysis and solid spherical\n  harmonic synthesis with minimized memory requirements.\n\n* Stable up to high degrees and orders (tens of thousands and beyond).\n\n* Available in single, double and quadruple precision.\n\n* Supports point and mean data values (both analysis and synthesis).\n\n* Supports synthesis at grids and at scattered points/cells.  Grid-wise \n  computations are done by FFT whenever possible.  If FFT cannot be applied, \n  the less efficient Chebyshev recurrences are used along the latitude \n  parallels instead.\n\n* Computes the full first- and second-order gradients at evaluation points \n  (e.g., the gravitational vector and the gravitational tensor).\n\n* Supports the Gauss--Legendre and Driscoll--Healy quadratures.\n\n* Integrates solid spherical harmonic expansions (e.g., of the gravitational\n  potential) on band-limited irregular surfaces (e.g., on the Earth's\n  surface). [#f1]_\n\n* Computes Fourier coefficients of fully-normalized associated Legendre\n  functions of the first kind up to ultra-high harmonic degrees.\n\n* Supports `OpenMP \u003chttps://www.openmp.org/\u003e`_ parallelization for\n  shared-memory architectures.\n\n* Supports AVX, AVX2, AVX-512 and NEON SIMD CPU instructions to improve the \n  performance.\n\n* Performs discrete FFT by `FFTW \u003chttp://www.fftw.org/\u003e`_.\n\n* Ships with a Python wrapper to enable high-level programming while retaining \n  the efficiency of the C language.  The wrapper, called PyHarm, wraps CHarm \n  using `ctypes \u003chttps://docs.python.org/3/library/ctypes.html\u003e`_ and is fully \n  integrated with `numpy \u003chttps://numpy.org/\u003e`_.\n\n.. [#f1] This routine is unique to CHarm.\n\n\nInstallation\n============\n\n* **PyHarm (Python wrapper)**: On Linux (x86_64), macOS (x86_64, ARM64) and \n  Windows (x86_64), install PyHarm using ``pip``:\n\n  .. code-block:: bash\n\n     pip install pyharm\n\n  This will install PyHarm together will all the dependencies.  These include \n  a pre-compiled CHarm library, which is internally called by PyHarm, some \n  other C libraries (FFTW and GOMP) and the Python package NumPy.\n\n* **CHarm (C library)**: If you are interested in the C API, you have to build \n  CHarm from source.  This step is not required if you plan to use the Python \n  interface only.\n\nFurther installation details at \n`https://www.charmlib.org/build/html/install.html \n\u003chttps://www.charmlib.org/build/html/install.html\u003e`_.\n\n\n.. _download:\n\nSource code\n===========\n\nGitHub: `https://github.com/blazej-bucha/charm \n\u003chttps://github.com/blazej-bucha/charm\u003e`_\n\n* Releases are pushed to ``master`` and the development happens in\n  ``develop``.\n\n* Tarball and zip files of releases: \n  `https://github.com/blazej-bucha/charm/releases \n  \u003chttps://github.com/blazej-bucha/charm/releases\u003e`_\n\n\nDocumentation\n=============\n\nThe documentation of the latest version from the ``master`` branch is available \nat `https://www.charmlib.org \u003chttps://www.charmlib.org\u003e`_.\n\nA pre-compiled HTML documentation is also available in ``docs/build/html``.  \nAlternatively, it can be built by executing ``make html`` after the \n``configure`` call (requires ``doxygen`` and Python modules ``sphinx``, \n``sphinx_book_theme`` and ``breathe``).  Other formats of the documentation, \nfor instance, a PDF file, can be built with ``cd docs \u0026\u0026 make latexpdf``, etc.  \nTo list all available formats, execute ``cd docs \u0026\u0026 make help``.\n\n\n.. _contact:\n\n\nContact\n=======\n\nShould you have any comments, questions, bug report or criticism, please feel\nfree to contact the author, Blažej Bucha, at blazej.bucha@stuba.sk.  Further\nproducts developed by the author can be found at `https://www.blazejbucha.com\n\u003chttps://www.blazejbucha.com\u003e`_.\n\n\nPronunciation\n=============\n\nWe prefer to pronounce CHarm and PyHarm like the words ``see harm`` and ``pie \nharm``.  But it is indeed quite charming to pronounce CHarm like the word \n``charm``, especially when the library works like a charm.\n\n\nOther spherical-harmonic-based libraries\n========================================\n\nMany other libraries for working with spherical harmonics are available, each\nhaving its pros and cons.  Explore!  A few examples are:\n\n* `SHTOOLS \u003chttps://github.com/SHTOOLS\u003e`_: Fortran95 library with Python API,\n\n* `SHTns \u003chttps://bitbucket.org/nschaeff/shtns\u003e`_: a C library for spherical\n  harmonic transforms,\n\n* `ISPACK \u003chttps://www.gfd-dennou.org/arch/ispack/\u003e`_: a Fortran library for\n  spherical harmonic transforms,\n\n* `Libsharp \u003chttps://github.com/Libsharp/libsharp\u003e`_: a C99 library for\n  spherical harmonic transforms,\n\n* `healpy \u003chttps://healpy.readthedocs.io/en/latest/index.html\u003e`_: a Python\n  package to handle pixelated data on the sphere building on the `HEALPix\n  \u003chttps://healpix.jpl.nasa.gov/\u003e`_ C++ library,\n\n* `HARMONIC_SYNTH\n  \u003chttps://earth-info.nga.mil/index.php?dir=wgs84\u0026action=wgs84\u003e`_: a Fortran\n  code for spherical harmonic synthesis written by the EGM2008 development\n  team.\n\n* `SPHEREPACK\n  \u003chttps://github.com/NCAR/NCAR-Classic-Libraries-for-Geophysics\u003e`_: a Fortran\n  library of spherical harmonic transforms,\n\n* `SHAVEL \u003chttps://doi.org/10.1016/j.cpc.2018.06.015\u003e`_: a program for the\n  spherical harmonic analysis of a horizontal vector field sampled in an\n  equiangular grid on a sphere\n\n* `ICGEM \u003chttp://icgem.gfz-potsdam.de/home\u003e`_: Online calculation service for\n  working with Earth and celestial gravitational models,\n\n* `FaVeST \u003chttps://github.com/mingli-ai/FaVeST\u003e`_: Fast Vector Spherical\n  Harmonic Transforms in MATLAB.\n\n* `SHBundle\n  \u003chttps://www.gis.uni-stuttgart.de/en/research/downloads/shbundle/\u003e`_:\n  Spherical harmonic analysis and synthesis in MATLAB up to high degrees and\n  orders,\n\n* `Spherical Harmonics Manipulator\n  \u003chttps://sourceforge.net/projects/hmanipulator/\u003e`_: Spherical harmonic\n  synthesis in sparse points and grids (no longer maintained),\n\n* `GrafLab \u003chttps://github.com/blazej-bucha/graflab\u003e`_ and `isGrafLab \n  \u003chttps://github.com/blazej-bucha/isgraflab\u003e`_: MATLAB-based software packages \n  for spherical harmonic synthesis of gravity field functionals up to high \n  degrees and orders (tens of thousands and well beyond).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblazej-bucha%2Fcharm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblazej-bucha%2Fcharm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblazej-bucha%2Fcharm/lists"}