Skip to main content

Librería de acciones climáticas

Project description

❄️ Sunfer Clima

Librería Python para el cálculo de acciones climáticas en estructuras según distintas normativas.

sunfer_clima está diseñada como el módulo climático del ecosistema Sunfer, orientado a aplicaciones de:

  • 🏗️ cálculo estructural
  • ☀️ estructuras fotovoltaicas
  • 🌬️ viento
  • ❄️ nieve
  • 🇪🇺 Eurocódigo (España, Portugal, Italia)
  • 🇪🇸 CTE
  • 🇮🇹 NTC2018

La arquitectura está preparada para integrarse con motores FEM, generadores de combinaciones EN 1990 y módulos de dimensionamiento.


✨ Características

✅ Acciones de nieve implementadas

Actualmente incluye:

🇪🇸 España

  • NieveCTE
  • VientoCTE
  • NieveEurocodeES
  • VientoEurocodeES

🇵🇹 Portugal

  • NieveEurocodePT
  • VientoEurocodePT

🇮🇹 Italia

  • NieveNTC2018
  • VientoNTC2018
  • NieveEurocodeIT
  • VientoEurocodeIT

Con soporte para:

  • zonas climáticas
  • altitud
  • interpolación por tablas normativas
  • periodos de retorno
  • coeficientes probabilísticos
  • densidad de nieve y aire
  • carga accidental
  • tablas de resultados en pandas
  • etc

🌬️ Base para acciones de viento

La librería incluye clases base para viento según Eurocódigo, preparadas para especializaciones por país (Anejos Nacionales).


🔄 Conversor de unidades integrado

Incluye utilidades para conversión entre:

Velocidad

  • m/s
  • km/h
  • mph

Presión

  • Pa
  • kPa
  • kgf/cm2
  • ton/cm2

También permite conversión física entre:

  • velocidad → presión dinámica
  • presión → velocidad equivalente

📦 Instalación

pip install sunfer-clima

🚀 Uso rápido

Ejemplo 1 — nieve CTE

from sunfer_clima.acciones.nieve.cte import NieveCTE

nieve = NieveCTE(zona_nieve=3, altitud=450)
nieve.calcular()

print(nieve.obtener("SKN"))
print(nieve.obtener("SAD"))
print(nieve.tabla())

Ejemplo 2 — Eurocódigo España

from sunfer_clima.acciones.nieve.es import NieveEurocodeES

nieve = NieveEurocodeES(3, 750)
nieve.calcular()

print(nieve.tabla())

Ejemplo 3 — Eurocódigo Portugal

from sunfer_clima.acciones.pt.nieve import NieveEurocodePT

nieve = NieveEurocodePT("Z2", 850)
nieve.calcular()

print(nieve.obtener("SKN"))

Ejemplo 4 — conversión de unidades

from sunfer_clima.utilidades.conversor import convertir

v = convertir(36, "km/h", "m/s")
q = convertir(10, "m/s", "Pa")

🧠 Filosofía de diseño

La librería está construida sobre una clase abstracta base:

AccionClimatica

que garantiza una API homogénea:

calcular()
tabla()
normativa()
obtener()
parametros()
ver_parametros()

Esto permite que cualquier acción climática futura comparta la misma interfaz.

Ejemplo:

accion.calcular()
valor = accion.obtener("SKN")

Ideal para integrarse con:

  • generadores de combinaciones
  • motores FEM
  • GUIs
  • APIs REST
  • informes automáticos

🧪 Testing

La librería dispone de tests automáticos completos con pytest.

Cobertura actual:

  • ✅ clases abstractas
  • ✅ setters y validaciones
  • ✅ interpolación de tablas
  • ✅ ramas de error
  • ✅ periodos de retorno
  • ✅ conversor físico de unidades
  • ✅ DataFrames de resultados
  • ✅ métodos auxiliares
  • ✅ normativa

Ejecutar tests:

pytest -v

Con cobertura:

pytest --cov=sunfer_clima --cov-report=html

🏗️ Roadmap

Próximas funcionalidades previstas:

  • 🌍 mapas GIS de acciones climáticas
  • 🇪🇺 más anejos nacionales

🌍 Ecosistema Sunfer

sunfer_clima forma parte del ecosistema:

  • sunfer-clima
  • sunfer-loads
  • sunfer-combinaciones
  • sunfer-fem
  • sunfer-core

orientado a construir un framework open-source de cálculo estructural profesional.


🆕 Cambios recientes

[0.2.3]

Fixed

  • Devuelve error personalizado para SunferKey si la altitud excede los límites normativos

[0.2.2]

Fixed

  • Ahora si se establece una altitud negativa, por defecto se determina altitud = 0, para contemplar situaciones de depresión`

[0.2.1]

✨ Añadido

  • 🇮🇹 Implementación completa de:
    • Eurocódigo Italia
    • NTC2018
  • Cobertura del 100% en módulo it.py

🔧 Cambiado

  • Mejora en nomenclatura de normativa
  • Refactor de helpers privados para mayor mantenibilidad

🐛 Corregido

  • Acceso erróneo a clave VB0_TABLA
  • Tests desactualizados en normativa española

[0.1.1]

  • Correcciones menores
  • Ajustes en estabilidad

[0.1.0]

  • Primera versión pública

📝 Historial completo

Ver CHANGELOG.md


📄 Licencia

MIT License


👨‍💻 Autor

Rafa Crespo

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sunfer_clima-0.2.3.tar.gz (67.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sunfer_clima-0.2.3-py3-none-any.whl (85.0 kB view details)

Uploaded Python 3

File details

Details for the file sunfer_clima-0.2.3.tar.gz.

File metadata

  • Download URL: sunfer_clima-0.2.3.tar.gz
  • Upload date:
  • Size: 67.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for sunfer_clima-0.2.3.tar.gz
Algorithm Hash digest
SHA256 c80f5717cdc6b47d5c66fb345d6a281c660519e0a714d71e42f401dff45d8943
MD5 bcc612ce91b171a56efc85a5fe3568c3
BLAKE2b-256 7dc3e5a745fca675c10ec760b2cadc2023e7063d22e0ce357c3917e56069e8f9

See more details on using hashes here.

File details

Details for the file sunfer_clima-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: sunfer_clima-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 85.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for sunfer_clima-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 8da075ff3eae8dbe04240685d65881c2ad2115b969b2abd96f2debcaa02069a9
MD5 96ffe76301fb2dcdd23b99386db6d1c3
BLAKE2b-256 f8a4e34e8bd04fb3e9e68de1caa46c94b95c48deb6a56273dd86dd6a9adf2b1a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page