SimVascular_report_PostProcess/main.py

75 lines
2.4 KiB
Python

#!/usr/bin/env python
"""
Created on Thu Jul 16 15:08:27 2020
@author: Aloma Blanch
"""
# import numpy as np
# import matplotlib.pyplot as plt
# import matplotlib.ticker as mtick
from tkinter import Tk
# from tkinter.filedialog import askopenfilename, asksaveasfile, askdirectory
from tkinter.filedialog import askdirectory
# import pandas as pd
# import tkinter as tk
import os.path
# from scipy.signal import find_peaks_cwt
# from scipy import signal
# import statistics
# from fpdf import FPDF
from functions import error_plot, periodicity, pressure, flow, inlet_flow_waveform, rcr, cycle, barPlot
from generatePDF import generatePDF
# Selct dir
Tk().withdraw()
folder = askdirectory()
project_folder = os.path.dirname(folder)
project = os.path.basename(project_folder)
save_path = folder+'/'+project+'-report'
os.mkdir(save_path)
save_pdf = save_path + '/' + project + '-report.pdf'
# Read important parameters from - solver.inp file
mylines = [] # Declare an empty list named mylines.
with open (project_folder + '/solver.inp', 'rt') as myfile: # Open lorem.txt for reading text data.
for myline in myfile: # For each line, stored as myline,
mylines.append(myline) # add its contents to mylines.
# Number of Timesteps - idx 3
# Idea: remove the text to extract the number, the text part will be the same no matter the simulation
N_ts = int(mylines[3][20:-1])
# Time Step Size - idx 4
dt = float(mylines[4][16:-1])
# Residual criteria - idx 4
rc = float(mylines[26][18:-1])
# Imesteps between Restarts - idx 6
t_btw_rst = int(mylines[6][37:-1])
# Extracting Outlet Boundary Conditions from - rcrt.dat fle
Rc_C_Rd = rcr(project_folder)
# Extracting number of cycles and period of cardiac cycle
(T_cyc,n_cyc) = cycle(folder,dt,save_path)
T_cyc=0.477
# Cehcking convergency and periodicity
error_plot(folder,dt,rc,save_path)
txt1 = periodicity(project,folder,dt,T_cyc,n_cyc,save_path)
# Pressure - Outlets
(DBP,MBP,SBP,PP) = pressure(folder,N_ts,T_cyc,dt,n_cyc,save_path)
# Flow Rate - Outlets
(Q_avg) = flow(folder,N_ts,T_cyc,dt,n_cyc,save_path)
# Inlet Flow Rate + and t saved
txt2 = inlet_flow_waveform(project_folder,t_btw_rst,N_ts,dt,T_cyc,n_cyc,save_path)
# Extract bar plots CFD vs. aimed
barPlot(project_folder,DBP,MBP,SBP,PP,Q_avg,save_path)
# Create PDF report
generatePDF(save_path,project,DBP,MBP,SBP,PP,Q_avg,txt1,txt2,Rc_C_Rd,T_cyc,n_cyc,N_ts,dt)