Sistema completo de análisis paramétrico para estructuras de hormigón armado usando OpenSees. Arquitectura modular refactorizada que permite análisis estático, modal y dinámico con control granular de visualización.
- Geometría: Estructuras rectangulares con relación L/B variable
- Elementos: Columnas 40x40 cm, vigas 25x40 cm, losa de 10 cm
- Pisos: 2 pisos de 3 m cada uno
- Análisis: Estático, modal y dinámico
- Visualización: Control granular con opstool
- Post-procesamiento: Reportes automáticos y visualizaciones interactivas
# Opción 1: Desde PyPI (cuando esté publicado)
pip install opensees-parametric-analysis
# Opción 2: Desde código fuente
git clone https://github.com/GJoe2/opensees-parametric-analysis.git
cd opensees-parametric-analysis
pip install -r requirements.txt
# Opción 3: Instalación automática en Linux (detecta entorno)
curl -fsSL https://raw.githubusercontent.com/GJoe2/opensees-parametric-analysis/master/scripts/install.sh | bash
Requisitos:
- Python 3.12+ (requerido por openseespy y opstool)
- Linux Desktop: Dependencias básicas
sudo apt-get install -y libopenblas-dev liblapack-dev libblas-dev gfortran
- Linux Server: Dependencias básicas + gráficas para headless
sudo apt-get install -y libopenblas-dev liblapack-dev libblas-dev gfortran libglu1-mesa-dev xvfb
📋 Instalación completa: Ver requisitos del sistema
# Si instalaste desde PyPI
from opensees_parametric_analysis import ModelBuilder, AnalysisEngine
# Si usas código fuente
from src.model_builder import ModelBuilder
from src.analysis_engine import AnalysisEngine
# Crear y analizar modelo
builder = ModelBuilder()
model = builder.create_model(L_B_ratio=1.5, B=10, nx=4, ny=4)
engine = AnalysisEngine()
results = engine.analyze_model(model['file_path'])
print(f"Periodo fundamental: {results['modal_analysis']['fundamental_period']:.4f} s")
# Si instalaste desde PyPI
from opensees_parametric_analysis import ParametricRunner
# Si usas código fuente
from src.parametric_runner import ParametricRunner
# Configurar estudio
runner = ParametricRunner(builder, engine)
results = runner.run_full_study(
L_B_ratios=[1.5, 2.0],
B_values=[10.0, 15.0],
nx_values=[3, 4],
ny_values=[3, 4]
)
print(f"Modelos analizados: {len(results)}")
Para casos de uso específicos y ejemplos detallados, consulte la carpeta examples/
y la guía completa:
Ejemplo | Descripción | Nivel |
---|---|---|
01_analisis_individual_basico.py | Análisis de un modelo individual | Principiante |
02_control_visualizacion.py | Control granular de visualización | Intermedio |
03_tipos_analisis.py | Diferentes tipos de análisis | Intermedio |
04_estudio_parametrico.py | Estudios paramétricos completos | Avanzado |
05_exportacion_scripts.py | Exportación de scripts Python | Intermedio |
06_generacion_reportes.py | Generación de reportes | Avanzado |
src/
├── model_builder.py # Constructor de modelos (API unificada)
├── analysis_engine.py # Motor de análisis (refactorizado)
├── parametric_runner.py # Orquestador de estudios
├── python_exporter.py # Exportador de scripts
├── report_generator.py # Generador de reportes
└── utils/ # Utilidades modulares
├── analysis_types.py # Análisis específicos
├── visualization_helper.py # Helper de visualización
└── model_helpers.py # Métodos de conveniencia
Componente | Función | Entrada | Salida |
---|---|---|---|
ModelBuilder | Creación de modelos | Parámetros geométricos | JSON con modelo + configuración |
AnalysisEngine | Ejecución de análisis | JSON de modelo | Resultados + visualizaciones |
ParametricRunner | Estudios paramétricos | Rangos de parámetros | Resultados múltiples |
# Solo números (máxima velocidad)
model = builder.create_model(1.5, 10, 4, 4,
analysis_params={'visualization': {'enabled': False}}
)
# Solo deformada estática
model = builder.create_model(1.5, 10, 4, 4,
analysis_params={
'visualization': {
'enabled': True,
'static_deformed': True,
'modal_shapes': False
}
}
)
# Presentación completa
model = builder.create_model(1.5, 10, 4, 4,
analysis_params={
'visualization': {
'enabled': True,
'static_deformed': True,
'modal_shapes': True,
'max_modes': 6,
'deform_scale': 200
}
}
)
# Runner interactivo
python tests/run_all_tests.py
# Con pytest (recomendado)
pip install pytest
pytest tests/ -v
# Tests específicos
python tests/run_all_tests.py 1 # Solo ModelBuilder
Para información completa y detallada, consulte la documentación organizada en la carpeta docs/
:
- 📋 Índice General - Navegación completa
- 🔧 Instalación - Setup completo y dependencias
- 🚀 Guía de Uso - Ejemplos y API detallada
- 🏗️ Arquitectura - Diseño del sistema y componentes
- 🧪 Testing - Suite de tests y validación
- 🐛 Troubleshooting - Solución de problemas
- 📊 Parámetros del Modelo - Configuración y nomenclatura
- 🎛️ Control de Visualización - Configuración granular
- 🚀 Uso Avanzado - Estudios paramétricos
Tema | Documento | Descripción |
---|---|---|
Instalación | installation.md | Setup, dependencias, configuración |
Requisitos | system-requirements.md | Requisitos del sistema y troubleshooting |
Uso Básico | usage.md | API, ejemplos, casos de uso |
Arquitectura | architecture.md | Diseño, componentes, extensibilidad |
Parámetros | model-parameters.md | Configuración del modelo, nomenclatura |
Visualización | visualization.md | Control granular, optimización |
Testing | testing.md | Suite de tests, validación |
Problemas | troubleshooting.md | Debugging, soluciones comunes |
opensees-parametric-analysis/
├── src/ # Código fuente
├── docs/ # Documentación detallada
├── examples/ # Ejemplos de uso prácticos
├── notebooks/ # Jupyter notebooks
├── models/ # Modelos generados
├── results/ # Resultados de análisis
├── tests/ # Suite de tests
├── requirements.txt # Dependencias
└── README.md # Este archivo
- ✅ Código 50% más corto y legible
- ✅ Eliminación del 80% de condicionales complejas
- ✅ Separación clara de responsabilidades
- ✅ Gestión inteligente de recursos
- ✅ API unificada y consistente
- ✅ Control granular de visualización
- ✅ Suite de tests completa
Este proyecto está bajo licencia Apache 2.0. Ver archivo LICENSE para más detalles.
Para preguntas, soporte o contribuciones:
- Issues: GitHub Issues
- Documentación: docs/
💡 Tip: Para empezar rápidamente, revise el índice de documentación y seleccione la guía apropiada para su caso de uso.