Exemplo de simulação com Variação de seção transversal#

Arquivo de configuração

[1]:
from modules.simulation.config.model import SimulationConfigModel
import pathlib

cfg_path = pathlib.Path("./fixtures/stepped_domain_config.yaml")
cfg = SimulationConfigModel.from_file(cfg_path)

cfg
[1]:
SimulationConfigModel(sim_name='stepped_domain', domain=DomainModel(height=0.21, spatial_divisions=220, annular_domain=AnnularDomainModel(internal_radius=0.01, steps=[StepModel(position_z=0.05, radius=0.05), StepModel(position_z=0.1, radius=0.1), StepModel(position_z=0.15, radius=0.12), StepModel(position_z=0.21, radius=0.15)])), suspension=SuspensionModel(initial_conc=0.1391, max_conc=0.19), solid_phase=SolidPhaseModel(particle_diam=4.08e-05, particle_esphericity=0.8, density=2709.0), fluid_phase=FluidPhaseModel(density=891.4, power_law=PowerLawFluidModel(M=30.13, n=0.21)), simulation_parameters=SimulationParameters(timestep=1000.0, total_time=31536000.0), export=FrequencyConfig(frequency=100), report=FrequencyConfig(frequency=1000), HPHT=None, equation_parameters=EquationParameters(delta=0.622641, k0=47.601104, beta=0.04983, ref_conc=0.14, p_ref=63.640954))

Instantiate Results Handler

[2]:
from modules.simulation.sim_handler import SimulationHandler

output_path = pathlib.Path(f"./out/{cfg.sim_name}")
sim_handler = SimulationHandler(cfg=cfg, output_path=output_path)

Run simulation

[3]:
import time

start = time.time()

sim_handler.start_simulation()

end = time.time()

print("\nTempo total de simulação:" + str(end - start) + " [s]")
print("Status da simulação: " + sim_handler.sim_status)
[2024-08-13 13:45:55,903] [INFO] - simulation - Starting simulation... (sim_handler.py:87)
[2024-08-13 13:45:55,904] [INFO] - simulation - Current time 0 (sim_handler.py:88)
[2024-08-13 13:45:56,557] [INFO] - simulation - Simulation report: Current time 1000000.0 (sim_handler.py:73)
[2024-08-13 13:45:56,558] [INFO] - simulation - Mass conservation report: Deviation -1.05E-03% (sim_handler.py:61)
[2024-08-13 13:45:57,259] [INFO] - simulation - Simulation report: Current time 2000000.0 (sim_handler.py:73)
[2024-08-13 13:45:57,260] [INFO] - simulation - Mass conservation report: Deviation -2.11E-03% (sim_handler.py:61)
[2024-08-13 13:45:57,924] [INFO] - simulation - Simulation report: Current time 3000000.0 (sim_handler.py:73)
[2024-08-13 13:45:57,925] [INFO] - simulation - Mass conservation report: Deviation -3.16E-03% (sim_handler.py:61)
[2024-08-13 13:45:58,580] [INFO] - simulation - Simulation report: Current time 4000000.0 (sim_handler.py:73)
[2024-08-13 13:45:58,580] [INFO] - simulation - Mass conservation report: Deviation -4.21E-03% (sim_handler.py:61)
[2024-08-13 13:45:59,233] [INFO] - simulation - Simulation report: Current time 5000000.0 (sim_handler.py:73)
[2024-08-13 13:45:59,233] [INFO] - simulation - Mass conservation report: Deviation -5.25E-03% (sim_handler.py:61)
[2024-08-13 13:45:59,862] [INFO] - simulation - Simulation report: Current time 6000000.0 (sim_handler.py:73)
[2024-08-13 13:45:59,863] [INFO] - simulation - Mass conservation report: Deviation -6.27E-03% (sim_handler.py:61)
[2024-08-13 13:46:00,497] [INFO] - simulation - Simulation report: Current time 7000000.0 (sim_handler.py:73)
[2024-08-13 13:46:00,498] [INFO] - simulation - Mass conservation report: Deviation -7.26E-03% (sim_handler.py:61)
[2024-08-13 13:46:01,133] [INFO] - simulation - Simulation report: Current time 8000000.0 (sim_handler.py:73)
[2024-08-13 13:46:01,134] [INFO] - simulation - Mass conservation report: Deviation -8.22E-03% (sim_handler.py:61)
[2024-08-13 13:46:01,768] [INFO] - simulation - Simulation report: Current time 9000000.0 (sim_handler.py:73)
[2024-08-13 13:46:01,769] [INFO] - simulation - Mass conservation report: Deviation -9.14E-03% (sim_handler.py:61)
[2024-08-13 13:46:02,399] [INFO] - simulation - Simulation report: Current time 10000000.0 (sim_handler.py:73)
[2024-08-13 13:46:02,400] [INFO] - simulation - Mass conservation report: Deviation -1.00E-02% (sim_handler.py:61)
[2024-08-13 13:46:03,040] [INFO] - simulation - Simulation report: Current time 11000000.0 (sim_handler.py:73)
[2024-08-13 13:46:03,040] [INFO] - simulation - Mass conservation report: Deviation -1.08E-02% (sim_handler.py:61)
[2024-08-13 13:46:03,688] [INFO] - simulation - Simulation report: Current time 12000000.0 (sim_handler.py:73)
[2024-08-13 13:46:03,689] [INFO] - simulation - Mass conservation report: Deviation -1.15E-02% (sim_handler.py:61)
[2024-08-13 13:46:04,319] [INFO] - simulation - Simulation report: Current time 13000000.0 (sim_handler.py:73)
[2024-08-13 13:46:04,320] [INFO] - simulation - Mass conservation report: Deviation -1.22E-02% (sim_handler.py:61)
[2024-08-13 13:46:04,971] [INFO] - simulation - Simulation report: Current time 14000000.0 (sim_handler.py:73)
[2024-08-13 13:46:04,972] [INFO] - simulation - Mass conservation report: Deviation -1.28E-02% (sim_handler.py:61)
[2024-08-13 13:46:05,622] [INFO] - simulation - Simulation report: Current time 15000000.0 (sim_handler.py:73)
[2024-08-13 13:46:05,623] [INFO] - simulation - Mass conservation report: Deviation -1.33E-02% (sim_handler.py:61)
[2024-08-13 13:46:06,294] [INFO] - simulation - Simulation report: Current time 16000000.0 (sim_handler.py:73)
[2024-08-13 13:46:06,296] [INFO] - simulation - Mass conservation report: Deviation -1.38E-02% (sim_handler.py:61)
[2024-08-13 13:46:06,942] [INFO] - simulation - Simulation report: Current time 17000000.0 (sim_handler.py:73)
[2024-08-13 13:46:06,943] [INFO] - simulation - Mass conservation report: Deviation -1.42E-02% (sim_handler.py:61)
[2024-08-13 13:46:07,588] [INFO] - simulation - Simulation report: Current time 18000000.0 (sim_handler.py:73)
[2024-08-13 13:46:07,588] [INFO] - simulation - Mass conservation report: Deviation -1.45E-02% (sim_handler.py:61)
[2024-08-13 13:46:08,224] [INFO] - simulation - Simulation report: Current time 19000000.0 (sim_handler.py:73)
[2024-08-13 13:46:08,225] [INFO] - simulation - Mass conservation report: Deviation -1.48E-02% (sim_handler.py:61)
[2024-08-13 13:46:08,861] [INFO] - simulation - Simulation report: Current time 20000000.0 (sim_handler.py:73)
[2024-08-13 13:46:08,862] [INFO] - simulation - Mass conservation report: Deviation -1.50E-02% (sim_handler.py:61)
[2024-08-13 13:46:09,492] [INFO] - simulation - Simulation report: Current time 21000000.0 (sim_handler.py:73)
[2024-08-13 13:46:09,492] [INFO] - simulation - Mass conservation report: Deviation -1.51E-02% (sim_handler.py:61)
[2024-08-13 13:46:10,130] [INFO] - simulation - Simulation report: Current time 22000000.0 (sim_handler.py:73)
[2024-08-13 13:46:10,131] [INFO] - simulation - Mass conservation report: Deviation -1.52E-02% (sim_handler.py:61)
[2024-08-13 13:46:10,774] [INFO] - simulation - Simulation report: Current time 23000000.0 (sim_handler.py:73)
[2024-08-13 13:46:10,775] [INFO] - simulation - Mass conservation report: Deviation -1.52E-02% (sim_handler.py:61)
[2024-08-13 13:46:11,414] [INFO] - simulation - Simulation report: Current time 24000000.0 (sim_handler.py:73)
[2024-08-13 13:46:11,415] [INFO] - simulation - Mass conservation report: Deviation -1.52E-02% (sim_handler.py:61)
[2024-08-13 13:46:12,077] [INFO] - simulation - Simulation report: Current time 25000000.0 (sim_handler.py:73)
[2024-08-13 13:46:12,078] [INFO] - simulation - Mass conservation report: Deviation -1.51E-02% (sim_handler.py:61)
[2024-08-13 13:46:12,715] [INFO] - simulation - Simulation report: Current time 26000000.0 (sim_handler.py:73)
[2024-08-13 13:46:12,716] [INFO] - simulation - Mass conservation report: Deviation -1.50E-02% (sim_handler.py:61)
[2024-08-13 13:46:13,340] [INFO] - simulation - Simulation report: Current time 27000000.0 (sim_handler.py:73)
[2024-08-13 13:46:13,340] [INFO] - simulation - Mass conservation report: Deviation -1.48E-02% (sim_handler.py:61)
[2024-08-13 13:46:13,969] [INFO] - simulation - Simulation report: Current time 28000000.0 (sim_handler.py:73)
[2024-08-13 13:46:13,970] [INFO] - simulation - Mass conservation report: Deviation -1.47E-02% (sim_handler.py:61)
[2024-08-13 13:46:14,604] [INFO] - simulation - Simulation report: Current time 29000000.0 (sim_handler.py:73)
[2024-08-13 13:46:14,605] [INFO] - simulation - Mass conservation report: Deviation -1.44E-02% (sim_handler.py:61)
[2024-08-13 13:46:15,243] [INFO] - simulation - Simulation report: Current time 30000000.0 (sim_handler.py:73)
[2024-08-13 13:46:15,244] [INFO] - simulation - Mass conservation report: Deviation -1.42E-02% (sim_handler.py:61)
[2024-08-13 13:46:15,885] [INFO] - simulation - Simulation report: Current time 31000000.0 (sim_handler.py:73)
[2024-08-13 13:46:15,885] [INFO] - simulation - Mass conservation report: Deviation -1.39E-02% (sim_handler.py:61)

Tempo total de simulação:20.322774171829224 [s]
Status da simulação: finished

Export data

[4]:
sim_handler.export_sim_data()
sim_handler.export_domain_polydata(frequency_reduction=100)

Read simulation data#

[5]:
from modules.analysis.results_handler import ResultsHandler
import pathlib

output_path = pathlib.Path(f"./out/{cfg.sim_name}")
results_handler = ResultsHandler(simulation_path=output_path)

Plot concentration

[6]:
import matplotlib.pyplot as plt

target_positions = [0.005, 0.02, 0.03, 0.04, 0.06, 0.08, 0.12]

time, concentration_profiles = results_handler.filter_for_positions(variable_name="Concentration", position_values=target_positions)

for position_lbl, concentration_arr in concentration_profiles.items():
    plt.plot(time / (3600 * 24), concentration_arr, label=position_lbl)

plt.xlabel('Tempo [Dias]')
plt.xlim(0.400)
plt.ylabel('Concentração')
plt.ylim(0.135,0.2)
plt.grid()

plt.legend()
plt.show()
../../_images/software_simulation_stepped_domain_simulation_12_0.png

Plot permeability

[7]:
import matplotlib.pyplot as plt

target_positions = [0.005, 0.02, 0.03, 0.04, 0.06, 0.08, 0.12]

time, perm_profiles = results_handler.filter_for_positions(variable_name="Permeability", position_values=target_positions)

for position_lbl, perm_arr in perm_profiles.items():
    plt.plot(time / (3600 * 24), perm_arr, label=position_lbl)

plt.xlabel('Tempo [Dias]')
plt.xlim(0.400)
plt.ylabel('Permeabilidade [m²]')
plt.ylim(0,5e-8)
plt.grid()

plt.legend()
plt.show()
../../_images/software_simulation_stepped_domain_simulation_14_0.png

Plot pressure gradient

[8]:
import matplotlib.pyplot as plt

target_positions = [0.005, 0.02, 0.03, 0.04, 0.06, 0.08, 0.12]

time, pressure_grad_profiles = results_handler.filter_for_positions(variable_name="Pressure_Gradient", position_values=target_positions)

for position_lbl, pressure_grad in pressure_grad_profiles.items():
    plt.plot(time / (3600 * 24), pressure_grad, label=position_lbl)

plt.xlabel('Tempo [Dias]')
plt.xlim(0.400)
plt.ylabel('Gradiente de Pressão')
plt.grid()

plt.legend()
plt.show()
../../_images/software_simulation_stepped_domain_simulation_16_0.png