Metadata-Version: 2.4
Name: psutm-simulator-kacruzv011
Version: 4.0.2
Summary: Una librería Python y aplicación Django para la simulación interactiva de ensayos mecánicos de materiales.
Author-email: Kevin Cruz <kacruzv@udistrital.edu.co>, Carlos Vasco <email-profesor@example.com>
License: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/kacruzv011/Software_materiales_kc
Project-URL: Documentation, https://kacruzv011.github.io/Software_materiales_kc/
Project-URL: Source Code, https://github.com/kacruzv011/Software_materiales_kc
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Django
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django>=4.0
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: PyMuPDF
Requires-Dist: matplotlib
Dynamic: license-file

# ⚙️ Pedagogical Simulator of a Universal Testing Machine

Un simulador web educativo, desarrollado en Django, para la caracterización mecánica de materiales mediante ensayos virtuales de tensión, compresión y torsión.

**Autores:** Kevin Cruz, [Nombre del Profesor]

## ⚖️ Licencia y Descargo de Responsabilidad

Este proyecto se distribuye bajo los términos de la **Licencia Pública General de GNU v3 (GPLv3)**. Para más detalles, consulta el archivo `LICENSE`.

### Disclaimer

1.  **Naturaleza de los Datos:** Este es un simulador con fines **estrictamente educativos**. Los datos de las curvas de ensayo son **sintéticos** y generados por modelos matemáticos. **NO deben ser utilizados para diseño de ingeniería en el mundo real.**

2.  **Fuente de las Propiedades:** Las propiedades de entrada para los modelos han sido extraídas de las fichas técnicas públicas de [MatWeb.com](https://www.matweb.com). Agradecemos a MatWeb por este invaluable recurso. Este proyecto no está afiliado ni respaldado por MatWeb 


# 🧪 Software de Simulación de Materiales

Este proyecto es un **software web desarrollado en Django** que permite realizar **simulaciones mecánicas de materiales** a partir de datos almacenados en una base de datos.  
El usuario puede **seleccionar un material y el tipo de simulación** que desea ejecutar; el sistema genera las **gráficas y resultados** con base en los datos registrados.

> 🚧 **Estado actual:** Versión inicial funcional (v0.1).  
> En esta versión se implementa la estructura base del proyecto Django, con una app principal (`core_lab`) encargada de gestionar materiales y simulaciones.  
> Próximamente se integrarán modelos físicos, módulos de cálculo numérico y generación de reportes automáticos.

---

## 🧰 Tecnologías utilizadas

| Herramienta | Descripción |
|--------------|-------------|
| **Python 3.10+** | Lenguaje base del proyecto. |
| **Django 5.x** | Framework principal para el backend y gestión web. |
| **SQLite3** | Base de datos por defecto (puede migrarse a PostgreSQL o MySQL). |
| **Matplotlib** | Generación de gráficas de resultados de simulación. |
| **Pandas / NumPy** | Procesamiento y análisis de datos de los materiales. |
| **HTML / CSS (Django templates)** | Renderizado de interfaz web básica. |
| **JupyterLab (opcional)** | Entorno auxiliar para pruebas de simulación. |

---

## 🏗️ Estructura del proyecto

Software_Materiales/
│── manage.py
│── db.sqlite3
│── README.md
│
├── core_lab/ # App principal
│ ├── migrations/ # Migraciones de la base de datos
│ ├── static/ # Archivos estáticos (CSS, JS, imágenes)
│ ├── templates/ # Vistas HTML renderizadas
│ │ └── core_lab/
│ │ ├── index.html # Página principal
│ │ ├── material_list.html
│ │ └── simulation_result.html
│ ├── admin.py # Configuración del panel administrativo
│ ├── apps.py # Registro de la app en Django
│ ├── models.py # Modelos de Material y Simulación
│ ├── views.py # Lógica de vistas
│ ├── urls.py # Enrutamiento interno de la app
│ └── tests.py # Pruebas unitarias
│
├── Software_Materiales/ # Configuración global del proyecto
│ ├── settings.py # Configuración principal
│ ├── urls.py # Enrutamiento global
│ ├── asgi.py / wsgi.py # Configuración para despliegue
│ └── init.py
│
└── venv/ (opcional) # Entorno virtual


---

## ⚙️ Modelos principales

### `Material`
Representa las propiedades básicas de cada material registrado.

python
class Material(models.Model):
    nombre = models.CharField(max_length=100)
    densidad = models.FloatField()
    elasticidad = models.FloatField()
    resistencia_traccion = models.FloatField()

    def __str__(self):
        return self.nombre
Simulacion

Asocia un material con un tipo de prueba mecánica (por ejemplo: tracción, compresión, dureza).


class Simulacion(models.Model):
    material = models.ForeignKey(Material, on_delete=models.CASCADE)
    tipo = models.CharField(max_length=100)
    fecha = models.DateTimeField(auto_now_add=True)
    resultado = models.JSONField(default=dict)

    
🧮 Flujo de funcionamiento

Inicio del servidor Django
Se ejecuta el servidor local y se accede a la interfaz web.

Selección del material y tipo de simulación
El usuario elige entre los materiales registrados y el tipo de prueba a realizar.

Ejecución de la simulación
(En esta versión inicial se generan datos base o simulados).
En versiones futuras, se conectará a módulos de cálculo físico o de elementos finitos.

Visualización de resultados
Se generan y muestran gráficas interactivas de tensión-deformación u otras curvas relevantes.

Almacenamiento y descarga de resultados
Los resultados se guardan en la base de datos y podrán exportarse a PDF o CSV.

🚀 Cómo ejecutar el proyecto
1️⃣ Clonar el repositorio

git clone https://github.com/tuusuario/Software_Materiales.git
cd Software_Materiales


2️⃣ Crear entorno virtual

python -m venv venv
source venv/bin/activate   # En Linux / macOS
venv\Scripts\activate      # En Windows


3️⃣ Instalar dependencias

pip install -r requirements.txt

4️⃣ Aplicar migraciones

python manage.py makemigrations
python manage.py migrate

5️⃣Ejecutar el servidor local

python manage.py runserver

Luego, abre tu navegador en:
👉 http://127.0.0.1:8000/

