https://github.com/clima/thermodynamics.jl

A package containing a library of moist thermodynamic relations.

https://github.com/clima/thermodynamics.jl

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 10 committers (30.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary

Keywords from Contributors

climate data-assimilation fluid-dynamics land land-surface-model pde symbolic-computation ocean meteorology jacobian
Last synced: 10 months ago · JSON representation

Repository

A package containing a library of moist thermodynamic relations.

Basic Info
Statistics
  • Stars: 74
  • Watchers: 9
  • Forks: 5
  • Open Issues: 11
  • Releases: 61
Created over 6 years ago · Last pushed 10 months ago
Metadata Files
Readme Changelog License Notice

README.md

Thermodynamics.jl Logo

Thermodynamics.jl

A comprehensive Julia package for Earth system thermodynamics, providing consistent and accurate thermodynamic functions for moist air including all phases of water (vapor, liquid, and ice).

||| |-----------------------------:|:-------------------------------------------------| | Documentation | dev | | Docs Build | docs build | | GHA CI | gha ci | | Code Coverage | codecov | | Downloads | Downloads |

Quick Start

Installation

julia using Pkg Pkg.add("Thermodynamics") Pkg.add("ClimaParams")

Basic Usage

```julia import Thermodynamics as TD using ClimaParams

Create thermodynamic parameters

params = TD.Parameters.ThermodynamicsParameters(Float64)

Create a thermodynamic state

ρ = 1.0 eint = -7.e4 qtot = 0.01 ts = TD.PhaseEquilρeq(params, ρ, eint, q_tot)

Compute thermodynamic properties from state

T = TD.airtemperature(params, ts) p = TD.airpressure(params, ts) q = TD.PhasePartition(params, ts) ```

Key Features

🌟 Comprehensive Thermodynamics

  • Complete moist air thermodynamics including all water phases (vapor, liquid, ice)
  • Consistent formulation for use across all Earth system model components
  • Precipitation included in the atmospheric working fluid for full thermodynamic consistency
  • Calorically perfect gas approximation enabling closed-form expressions for saturation vapor pressure

High Performance

  • Type-stable implementations for optimal Julia performance
  • GPU-compatible implementations
  • Differentiable implementation compatible with Julia's automatic differentiation capabilities
  • Efficient saturation adjustment with Newton's method and analytical derivatives

🔧 Flexible Design

  • Multiple thermodynamic state constructors for different use cases
  • Direct function access for efficient single calculations
  • Equilibrium and non-equilibrium phase partitioning
  • Extensible parameter system for different planetary atmospheres

Core Design Principles

Working Fluid Definition

The working fluid includes moist air with precipitation, ensuring mass and energy conservation across all phases and thermodynamic consistency throughout the system.

Consistent Formulation

All thermodynamic quantities are derived from a single fundamental approximation of calorically perfect gases with constant specific heat capacities, providing accuracy within 1-3% for atmospheric conditions.

Thermodynamic State Abstraction

Optionally, given two (or more) independent intrinsic thermodynamic properties, we can establish a thermodynamic state from which any thermodynamic property can be computed.

Documentation

Integration with Climate Models

Thermodynamics.jl is used by several CliMA components:

Getting Help

For questions and issues, please check the documentation or open an issue on the GitHub repository.

Owner

  • Name: Climate Modeling Alliance
  • Login: CliMA
  • Kind: organization
  • Email: clima@caltech.edu

An alliance of scientists, engineers and applied mathematicians, dedicated to pioneering a new, data-informed approach to climate modeling

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 166
  • Total Committers: 10
  • Avg Commits per committer: 16.6
  • Development Distribution Score (DDS): 0.163
Past Year
  • Commits: 36
  • Committers: 6
  • Avg Commits per committer: 6.0
  • Development Distribution Score (DDS): 0.222
Top Committers
Name Email Commits
Charles Kawczynski k****s@g****m 139
Anna Jaruga a****a@c****u 8
yairchn y****n@c****u 4
CompatHelper Julia c****y@j****g 3
Zhaoyi Shen 1****1 3
ilopezgp i****p@g****m 3
nefrathenrici n****i@g****m 2
github-actions[bot] 4****] 2
odunbar o****r@c****u 1
Gregory Wagner w****g@g****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 44
  • Total pull requests: 235
  • Average time to close issues: over 1 year
  • Average time to close pull requests: 21 days
  • Total issue authors: 13
  • Total pull request authors: 20
  • Average comments per issue: 2.05
  • Average comments per pull request: 2.46
  • Merged pull requests: 182
  • Bot issues: 0
  • Bot pull requests: 10
Past Year
  • Issues: 11
  • Pull requests: 59
  • Average time to close issues: 5 days
  • Average time to close pull requests: 8 days
  • Issue authors: 8
  • Pull request authors: 15
  • Average comments per issue: 0.91
  • Average comments per pull request: 2.07
  • Merged pull requests: 40
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • charleskawczynski (22)
  • glwagner (4)
  • Sbozzolo (3)
  • trontrytel (3)
  • tapios (3)
  • jty53 (2)
  • sriharshakandala (1)
  • jbphyswx (1)
  • simone-silvestri (1)
  • szy21 (1)
  • simonbyrne (1)
  • aramirezreyes (1)
  • JuliaTagBot (1)
Pull Request Authors
  • charleskawczynski (116)
  • trontrytel (20)
  • Sbozzolo (14)
  • szy21 (12)
  • dennisYatunin (11)
  • glwagner (11)
  • github-actions[bot] (10)
  • nefrathenrici (9)
  • yairchn (6)
  • jty53 (4)
  • oalcabes (4)
  • juliasloan25 (3)
  • odunbar (3)
  • tapios (3)
  • navidcy (2)
Top Labels
Issue Labels
Performance :rocket: (3) SDI (3) tests (3) bug (3) enhancement (2) Launch Buildkite (2) Stability :surfer: (1) bugfix :bug: (1) breaking changes :boom: (1) API (1) Logging :ledger: (1) question (1) documentation (1)
Pull Request Labels
Launch Buildkite (104) Performance monitoring :mag::rocket: (19) documentation (8) Performance :rocket: (8) Dependencies :spider_web: (7) bugfix :bug: (5) Refactor :gear: (5) breaking changes :boom: (4) tests (4) Continuous integration :gear: (3) Workflow :gear::ocean: (2) Convergence (1) Type piracy :parrot: (1) Environments (1) enhancement (1) Release (1) Speculative (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 231 total
  • Total dependent packages: 11
  • Total dependent repositories: 0
  • Total versions: 60
juliahub.com: Thermodynamics

A package containing a library of moist thermodynamic relations.

  • Versions: 60
  • Dependent Packages: 11
  • Dependent Repositories: 0
  • Downloads: 231 Total
Rankings
Dependent packages count: 7.0%
Dependent repos count: 9.9%
Stargazers count: 14.3%
Average: 17.9%
Forks count: 40.4%
Last synced: 10 months ago

Dependencies

.github/workflows/CodeCov.yml actions
  • actions/checkout v2.2.0 composite
  • codecov/codecov-action v1.0.7 composite
  • julia-actions/setup-julia latest composite
.github/workflows/DocCleanUp.yml actions
  • actions/checkout v2 composite
.github/workflows/JuliaFormatter.yml actions
  • actions/checkout v2.2.0 composite
  • dorny/paths-filter v2.9.1 composite
  • julia-actions/setup-julia latest composite
  • styfle/cancel-workflow-action 0.4.0 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia latest composite
.github/workflows/invalidations.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite