<jupyter_start><jupyter_text>Ejercicios de agua subterránea<jupyter_code>import numpy as np

import pandas as pd

from matplotlib import pyplot as plt
%matplotlib inline
plt.style.use('dark_background')
#plt.style.use('seaborn-whitegrid')<jupyter_output><empty_output><jupyter_text>Ejercicio 3 - Propiedades de los suelosSe proporcionan los pesos en campo y tras secado para cuatro muestras cilíndricas de suelo de 10 cm de longitud y 5 cm de diámetro. Asumiento que $\rho_{m}=2650\,kg/m³$, calcular el __contenido en agua__, la __saturación__, la __densidad del suelo__ y la __porosidad__ de cada muestra.El archivo *Ejercicio3_masas.csv* contiene los datos de las muestras de suelo.    |    | m (g) | ms (g) ||----|-------|--------|| A2 | 302.5 | 264.8  || B2 | 376.3 | 308.0  || C2 | 422.6 | 388.6  || D2 | 468.3 | 441.7  |<jupyter_code>rho_m = 2.65 # g/cm³
rho_w = 1    # g/cm³
D = 5        # cm
L = 10       # cm<jupyter_output><empty_output><jupyter_text>Muestra A2<jupyter_code>m = 302.5    # g
ms = 264.8   # g
Vt = np.pi / 4 * D**2 * L # volumen total
Vw = (m - ms) / rho_w   # volumen de agua
rho_b = ms / Vt         # densidad del suelo
phi = 1 - rho_b / rho_m # porosidad
theta = Vw / Vt         # contenido de humedad del suelo
Se = theta / phi        # grado de saturación<jupyter_output><empty_output><jupyter_text>Todas las muestras<jupyter_code>def prop_suelo(m, ms, rho_m, D, L):
    """Se calculan las propiedades del suelo
    
    Entradas:
    ---------
    m:       float. Masa de la muestra de suelo (g)
    ms:      float. Masa seca de la muestra (g)
    rho_m:   float. Densidad del mineral (g/cm³)
    D:       float. Diámetro del cilindro de la muestra (cm)
    L:       float. Longitud del cilindro de la muestra (cm)
    
    Salidas:
    --------
    rho_b:   float. Densidad bruta (g/cm³)
    phi:     float. Porosidad (-)
    theta:   float. Humedad del suelo (-)
    Se:      float. Grado de saturación (-)"""
    
    rho_w = 1    # g/cm³
    
    # Calcular volúmenes necesarios
    Vt = np.pi / 4 * D**2 * L # volumen total
    Vw = (m - ms) / rho_w   # volumen de agua
    
    # Calcular propiedades del suelo
    rho_b = ms / Vt         # densidad del suelo
    phi = 1 - rho_b / rho_m # porosidad
    theta = Vw / Vt         # contenido de humedad del suelo
    Se = theta / phi        # grado de saturación
    
    return rho_b, phi, theta, Se
# cargar datos
soils = pd.read_csv('../data/Ejercicio3_masas.csv', index_col=0)
soils.columns = ['m', 'ms']
soils
# dataframe con las propiedades
props = pd.DataFrame(index=soils.index, columns=['rho_b', 'phi', 'theta', 'Se'])
props
# calcular propiedades
for soil in soils.index:
    m, ms = soils.loc[soil, 'm'], soils.loc[soil, 'ms']
    props.loc[soil,:] = prop_suelo(m, ms, rho_m, D, L)
props
# guardar resultados
props.to_csv('../output/Ej3_propiedades del suelo.csv', float_format='%.3f')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12603021978021978, 'fraction_numerical': 0.024725274725274724, 'mean_word_length': 2.692015209125475, 'pattern_counts': {'":': 0, '<': 17, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '132131', 'license': 'MIT', 'n_tokens_mistral': 1220, 'n_tokens_neox': 1161, 'n_words': 326, 'path': 'M1890-Hidrologia/AguaSubterranea/docs/Ej3_AguaSubterranea.ipynb', 'repo_name': 'NorAhmed1/Clases', 'size': '2912'}