Compare commits
11 Commits
d7f4709593
...
master
Author | SHA1 | Date | |
---|---|---|---|
9c6c60093a | |||
06e9bc2468 | |||
4fae3807fd | |||
639d1cdd74 | |||
8817ed4b4c | |||
056b2e8a14 | |||
4311b6f65e | |||
1b00a76a17 | |||
4ffd1c03c1 | |||
6e8598b897 | |||
b75e5995e0 |
@ -6,11 +6,12 @@ import pickle
|
||||
import yaml
|
||||
|
||||
|
||||
#import matplotlib.font_manager
|
||||
from matplotlib import rc
|
||||
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
|
||||
rc('text', usetex=True)
|
||||
|
||||
import matplotlib.font_manager
|
||||
|
||||
|
||||
def is_ipython():
|
||||
''' Check if script is run in IPython.
|
||||
@ -49,10 +50,14 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
if is_ipython():
|
||||
plt.ion()
|
||||
|
||||
|
||||
|
||||
resultsname = 'results_slices_15dB/'
|
||||
|
||||
idx_a = input_file.find('/')
|
||||
idx_b = input_file[idx_a+1::].find('/')
|
||||
name_file = input_file[idx_a+1:idx_b+idx_a+1]
|
||||
inputfile_path = 'results/' + name_file + '/input.yaml'
|
||||
inputfile_path = resultsname + name_file + '/input.yaml'
|
||||
|
||||
|
||||
with open(inputfile_path) as file:
|
||||
@ -76,11 +81,16 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
}
|
||||
|
||||
|
||||
|
||||
dim = dat['theta'].shape[-1]
|
||||
|
||||
meas_flag = False
|
||||
RC_flag = False
|
||||
if dim==7:
|
||||
RC_flag = True
|
||||
else:
|
||||
RC_flag = False
|
||||
line_split = 1.5
|
||||
|
||||
rec_values = {}
|
||||
current_val = []
|
||||
current_val_C = []
|
||||
ids_type = []
|
||||
@ -95,10 +105,10 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
ids.append(bnd_c['id'])
|
||||
ids_type.append('windkessel')
|
||||
current_val.append(bnd_set['parameters']['R_d'])
|
||||
labels.append('$R_' + str(bnd_c['id']))
|
||||
labels.append('$R_' + str(bnd_c['id']-3))
|
||||
if RC_flag:
|
||||
current_val_C.append(bnd_set['parameters']['C'])
|
||||
labels.append('$C_' + str(bnd_c['id']))
|
||||
labels.append('$C_' + str(bnd_c['id']-3))
|
||||
|
||||
|
||||
elif 'dirichlet' in bnd_c['type']:
|
||||
@ -109,11 +119,9 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
|
||||
|
||||
|
||||
|
||||
dim = dat['theta'].shape[-1]
|
||||
fig1, axes1 = plt.subplots(1,1,figsize=(12,6))
|
||||
fig1, axes1 = plt.subplots(1,1,figsize=(12,7))
|
||||
if RC_flag:
|
||||
fig2, axes2 = plt.subplots(1,1,figsize=(12,6))
|
||||
fig2, axes2 = plt.subplots(1,1,figsize=(12,7))
|
||||
|
||||
|
||||
t = dat['times']
|
||||
@ -144,50 +152,53 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
|
||||
|
||||
for i in range(len(ids)):
|
||||
|
||||
cur_key = ids[i]
|
||||
|
||||
true_level = np.log(true_values[ids[i]]/current_val[i])/np.log(2)
|
||||
rec_value = np.round(2**theta[-1, idx]*current_val[i],2)
|
||||
|
||||
|
||||
#curve = theta[:,idx] + line_split*idx - true_level
|
||||
#dash_curve = line_split*idx + t*0
|
||||
|
||||
curve = 2**theta[:, idx]*current_val[i]
|
||||
std_down = 2**(-np.sqrt(P[:, idx, idx]))*curve
|
||||
std_up = 2**np.sqrt(P[:, idx, idx])*curve
|
||||
dash_curve = true_values[ids[i]] + t*0
|
||||
|
||||
rec_values[cur_key] = rec_value
|
||||
|
||||
|
||||
|
||||
if ids_type[i] == 'dirichlet':
|
||||
pass
|
||||
#axes3.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$')
|
||||
#axes3.fill_between(t, curve - np.sqrt(P[:, idx, idx]), curve + np.sqrt(P[:, idx, idx]), alpha=0.3, color=col_)
|
||||
#legends_=next(legends)
|
||||
#axes3.plot(t, dash_curve , color=col_,ls='--')
|
||||
fig3, axes3 = plt.subplots(1,1,figsize=(12,5))
|
||||
axes3.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$', linewidth = 4)
|
||||
axes3.fill_between(t, std_down, std_up, alpha=0.3, color=col_)
|
||||
legends_=next(legends)
|
||||
axes3.plot(t, dash_curve , color=col_,ls='--' , linewidth = 3)
|
||||
axes3.set_ylabel(r'$U$',fontsize=36)
|
||||
axes3.legend(fontsize=36,loc='upper right')
|
||||
axes3.set_xlim([-0.01,0.81])
|
||||
axes3.set_xlabel(r'$t (s)$',fontsize=36)
|
||||
axes3.set_box_aspect(1/4)
|
||||
plt.xticks(fontsize=28)
|
||||
plt.yticks(fontsize=28)
|
||||
plt.savefig(resultsname + name_file + '/U.png')
|
||||
else:
|
||||
axes1.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$', linewidth = 2)
|
||||
|
||||
axes1.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$', linewidth = 3)
|
||||
axes1.fill_between(t, std_down, std_up, alpha=0.3, color=col_)
|
||||
axes1.plot(t, dash_curve , color=col_,ls='--')
|
||||
axes1.plot(t, dash_curve , color=col_,ls='--',linewidth = 3)
|
||||
legends_=next(legends)
|
||||
|
||||
if RC_flag:
|
||||
if i<len(current_val_C):
|
||||
rec_value_C = np.round(2**theta[-1, idx+1]*current_val_C[idc],6)
|
||||
|
||||
if RC_flag:
|
||||
if i<len(current_val_C):
|
||||
true_level_C = np.log(true_values_C[ids[i]]/current_val_C[i])/np.log(2)
|
||||
rec_value_C = np.round(2**theta[-1, idc]*current_val_C[idc],6)
|
||||
|
||||
curve_C = 2**theta[:, idx+1]*current_val_C[idc]
|
||||
dash_curve_C = true_values_C[ids[i]] + t*0
|
||||
std_C_down = 2**(-np.sqrt(P[:, idx+1, idx+1]))*curve_C
|
||||
std_C_up = 2**np.sqrt(P[:, idx+1, idx+1])*curve_C
|
||||
|
||||
axes2.plot(t, curve_C , '-', color=col_,label= legends_ + '= ' + str(rec_value_C) + '/' + str(true_values_C[cur_key]) + '$', linewidth = 2)
|
||||
axes2.fill_between(t, std_C_down, std_C_up, alpha=0.3, color=col_)
|
||||
axes2.plot(t, dash_curve_C , color=col_,ls='--')
|
||||
legends_=next(legends)
|
||||
idx +=1
|
||||
idc +=1
|
||||
curve_C = 2**theta[:, idx+1]*current_val_C[idc]
|
||||
dash_curve_C = true_values_C[ids[i]] + t*0
|
||||
std_C_down = 2**(-np.sqrt(P[:, idx+1, idx+1]))*curve_C
|
||||
std_C_up = 2**np.sqrt(P[:, idx+1, idx+1])*curve_C
|
||||
|
||||
axes2.plot(t, curve_C , '-', color=col_,label= legends_ + '= ' + str(rec_value_C) + '/' + str(true_values_C[cur_key]) + '$', linewidth = 3)
|
||||
axes2.fill_between(t, std_C_down, std_C_up, alpha=0.3, color=col_)
|
||||
axes2.plot(t, dash_curve_C , color=col_,ls='--',linewidth = 3)
|
||||
legends_=next(legends)
|
||||
idx +=1
|
||||
idc +=1
|
||||
|
||||
|
||||
if meas_flag:
|
||||
@ -197,21 +208,56 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
idx +=1
|
||||
|
||||
|
||||
axes1.set_ylabel(r'$R_d$',fontsize=22)
|
||||
axes1.legend(fontsize=18,loc='upper right')
|
||||
axes1.set_ylabel(r'$R_d$',fontsize=36)
|
||||
axes1.legend(fontsize=36,loc='upper right')
|
||||
axes1.set_xlim([-0.01,0.81])
|
||||
axes1.set_xlabel(r'$t (s)$',fontsize=22)
|
||||
plt.savefig('C.png')
|
||||
axes1.set_ylim([1700,55000])
|
||||
axes1.set_box_aspect(1/2)
|
||||
plt.xticks(fontsize=28)
|
||||
plt.yticks(fontsize=28)
|
||||
axes1.set_xlabel(r'$t (s)$',fontsize=36)
|
||||
plt.savefig('Rd.png')
|
||||
|
||||
|
||||
if RC_flag:
|
||||
|
||||
axes2.set_ylabel(r'$C$',fontsize=22)
|
||||
axes2.legend(fontsize=18,loc='upper right')
|
||||
axes2.set_ylabel(r'$C$',fontsize=36)
|
||||
axes2.legend(fontsize=36,loc='upper right')
|
||||
axes2.set_xlim([-0.01,0.81])
|
||||
axes2.set_xlabel(r'$t (s)$',fontsize=22)
|
||||
plt.xticks(fontsize=28)
|
||||
plt.yticks(fontsize=28)
|
||||
axes2.set_xlabel(r'$t (s)$',fontsize=36)
|
||||
fig2.savefig('C.png')
|
||||
|
||||
fig1.savefig('Rd.png')
|
||||
fig1.savefig(resultsname + name_file + '/Rd.png')
|
||||
|
||||
|
||||
print('Final value theta: \t {}'.format(theta[-1, :]))
|
||||
print('Deparameterized: 2^theta_end: \t {}'.format(2**theta[-1, :]))
|
||||
print('Real values: \t {}'.format(true_values))
|
||||
print('Recon. values: \t {}'.format(rec_values))
|
||||
|
||||
|
||||
# saving reconstructed values
|
||||
np.save(resultsname + name_file + '/recon_values.npy',rec_values)
|
||||
|
||||
print('----- paper ----')
|
||||
rec_values_new = {}
|
||||
epsilon = []
|
||||
|
||||
for rk in rec_values.keys():
|
||||
eps = 100*rec_values[rk]/true_values[rk]-100
|
||||
epsilon.append(eps)
|
||||
if rk == 2:
|
||||
rec_values_new[rk] = np.round(rec_values[rk],1)
|
||||
else:
|
||||
rec_values_new[rk] = np.round(rec_values[rk]/1000,2)
|
||||
|
||||
print('Recon. values: \t {}'.format(rec_values_new))
|
||||
print('epsilon =' , np.round(np.mean(epsilon),2))
|
||||
|
||||
|
||||
|
||||
if not is_ipython():
|
||||
plt.show()
|
||||
|
||||
|
@ -5,6 +5,14 @@ import argparse
|
||||
import pickle
|
||||
import yaml
|
||||
|
||||
|
||||
#import matplotlib.font_manager
|
||||
from matplotlib import rc
|
||||
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
|
||||
rc('text', usetex=True)
|
||||
|
||||
|
||||
|
||||
def is_ipython():
|
||||
''' Check if script is run in IPython.
|
||||
|
||||
@ -45,8 +53,7 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
idx_a = input_file.find('/')
|
||||
idx_b = input_file[idx_a+1::].find('/')
|
||||
name_file = input_file[idx_a+1:idx_b+idx_a+1]
|
||||
inputfile_path = 'results/' + name_file + '/input.yaml'
|
||||
|
||||
inputfile_path = 'results_slices_15dB/' + name_file + '/input.yaml'
|
||||
|
||||
with open(inputfile_path) as file:
|
||||
inputfile = yaml.full_load(file)
|
||||
@ -61,21 +68,10 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
2: 75
|
||||
}
|
||||
|
||||
true_values_C = {
|
||||
3: 0.0004,
|
||||
4: 0.0004,
|
||||
5: 0.0003,
|
||||
6: 0.0003,
|
||||
}
|
||||
|
||||
dim = dat['theta'].shape[-1]
|
||||
|
||||
|
||||
|
||||
meas_flag = False
|
||||
RC_mod = True
|
||||
line_split = 1.5
|
||||
current_val = []
|
||||
current_val_C = []
|
||||
ids_type = []
|
||||
labels = []
|
||||
ids = []
|
||||
@ -88,10 +84,7 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
ids.append(bnd_c['id'])
|
||||
ids_type.append('windkessel')
|
||||
current_val.append(bnd_set['parameters']['R_d'])
|
||||
labels.append('$R_' + str(bnd_c['id']))
|
||||
if RC_mod:
|
||||
current_val_C.append(bnd_set['parameters']['C'])
|
||||
labels.append('$C_' + str(bnd_c['id']))
|
||||
labels.append('$R_' + str(bnd_c['id']-3))
|
||||
|
||||
|
||||
elif 'dirichlet' in bnd_c['type']:
|
||||
@ -101,93 +94,89 @@ def plot_parameters(dat, input_file, deparameterize=False, ref=None):
|
||||
labels.append('$U')
|
||||
|
||||
|
||||
if 'windkessel' in ids_type:
|
||||
fig1, axes1 = plt.subplots(1,1,figsize=(12,7))
|
||||
if 'dirichlet' in ids_type:
|
||||
fig3, axes3 = plt.subplots(1,1,figsize=(12,7))
|
||||
|
||||
|
||||
|
||||
dim = dat['theta'].shape[-1]
|
||||
fig1, axes = plt.subplots(1,1,figsize=(8,6))
|
||||
|
||||
axes.set_ylabel(r'$\theta$',fontsize=18)
|
||||
|
||||
t = dat['times']
|
||||
theta = dat['theta']
|
||||
P = dat['P_theta']
|
||||
|
||||
col = cycle(['C0', 'C1', 'C2', 'C3','C4'])
|
||||
ls = cycle(['-', '-', '--', '--', ':', ':', '-.', '-.'])
|
||||
|
||||
color_list = ['tomato', 'springgreen' , '#2CBDFE']
|
||||
col = cycle(color_list)
|
||||
legends = cycle(labels)
|
||||
|
||||
if meas_flag:
|
||||
t_und = t[0::30]
|
||||
t_und = np.append( t_und , [t[-1]])
|
||||
meas_mark = t_und*0
|
||||
|
||||
col_ = next(col)
|
||||
ls_ = next(ls)
|
||||
legends_=next(legends)
|
||||
|
||||
if dim == 1:
|
||||
theta = theta.reshape((-1, 1))
|
||||
P = P.reshape((-1, 1, 1))
|
||||
|
||||
|
||||
|
||||
idx = 0
|
||||
idc = 0
|
||||
|
||||
for i in range(len(ids)):
|
||||
|
||||
cur_key = ids[i]
|
||||
|
||||
true_level = np.log(true_values[ids[i]]/current_val[i])/np.log(2)
|
||||
rec_value = np.round(2**theta[-1, idx]*current_val[i],2)
|
||||
|
||||
#curve = theta[:,i] + line_split*i
|
||||
#dash_curve = line_split*i + t*0 + true_level
|
||||
|
||||
curve = theta[:,idx] + line_split*idx - true_level
|
||||
dash_curve = line_split*idx + t*0
|
||||
|
||||
axes.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$')
|
||||
axes.fill_between(t, curve - np.sqrt(P[:, idx, idx]), curve + np.sqrt(P[:, idx, idx]), alpha=0.3, color=col_)
|
||||
legends_=next(legends)
|
||||
axes.plot(t, dash_curve , color=col_,ls='--')
|
||||
curve = 2**theta[:, idx]*current_val[i]
|
||||
std_down = 2**(-np.sqrt(P[:, idx, idx]))*curve
|
||||
std_up = 2**np.sqrt(P[:, idx, idx])*curve
|
||||
dash_curve = true_values[ids[i]] + t*0
|
||||
|
||||
|
||||
if RC_mod:
|
||||
|
||||
if i<len(current_val_C):
|
||||
true_level_C = np.log(true_values_C[ids[i]]/current_val_C[i])/np.log(2)
|
||||
rec_value_C = np.round(2**theta[-1, idc]*current_val_C[idc],6)
|
||||
curve_C = theta[:,idx+1] + line_split*(idx+1) - true_level_C
|
||||
dash_curve_C = line_split*(idx+1) + t*0
|
||||
#print(true_values_C[cur_key_C])
|
||||
axes.plot(t, curve_C , '-', color=col_,label= legends_ + '= ' + str(rec_value_C) + '/' + str(true_values_C[cur_key]) + '$')
|
||||
axes.fill_between(t, curve_C - np.sqrt(P[:, idx+1, idx+1]), curve_C + np.sqrt(P[:, idx+1, idx+1]), alpha=0.3, color=col_)
|
||||
axes.plot(t, dash_curve_C , color=col_,ls='--')
|
||||
legends_=next(legends)
|
||||
idx +=1
|
||||
idc +=1
|
||||
if ids_type[i] == 'dirichlet':
|
||||
#axes3.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$', linewidth = 5)
|
||||
axes3.plot(t, curve , '-', color=col_,label= legends_ + '$', linewidth = 5)
|
||||
axes3.fill_between(t, std_down, std_up, alpha=0.3, color=col_)
|
||||
legends_=next(legends)
|
||||
axes3.plot(t, dash_curve , color=col_,ls='--' , linewidth = 3)
|
||||
axes3.set_ylabel(r'$U$',fontsize=36)
|
||||
axes3.legend(fontsize=36,loc='upper right')
|
||||
axes3.set_xlim([0,0.45])
|
||||
axes3.set_ylim([8,180])
|
||||
axes3.set_xlabel(r'$t (s)$',fontsize=36)
|
||||
axes3.set_box_aspect(1/2)
|
||||
plt.xticks(fontsize=28)
|
||||
plt.yticks(fontsize=28)
|
||||
#plt.savefig('U_' + name_file + '.png')
|
||||
plt.close(fig3)
|
||||
else:
|
||||
#axes1.plot(t, curve , '-', color=col_,label= legends_ + '= ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$', linewidth = 4)
|
||||
axes1.plot(t, curve , '-', color=col_,label= legends_ + '$', linewidth = 4)
|
||||
axes1.fill_between(t, std_down, std_up, alpha=0.3, color=col_)
|
||||
axes1.plot(t, dash_curve , color=col_,ls='--',linewidth = 3)
|
||||
legends_=next(legends)
|
||||
|
||||
|
||||
if meas_flag:
|
||||
axes.plot(t_und, meas_mark + line_split*idx, marker = 'x', color='red')
|
||||
|
||||
col_ = next(col)
|
||||
idx +=1
|
||||
|
||||
axes.legend(fontsize=14,loc='lower right')
|
||||
axes.set_xlim([-0.01,0.81])
|
||||
axes.set_xlabel(r'time (s)',fontsize=18)
|
||||
# print('theta_peak: \t {}'.format(theta[round(len(theta)/2), :]))
|
||||
print('Final value theta: \t {}'.format(theta[-1, :]))
|
||||
print('Deparameterized: 2^theta_end: \t {}'.format(2**theta[-1, :]))
|
||||
print('Real values: \t {}'.format(true_values))
|
||||
#print('Recon values: \t {a}:{b} '.format(a=ids[:],b=np.round(2**theta[-1, :]*current_val,2)))
|
||||
|
||||
|
||||
|
||||
plt.savefig('windk_res')
|
||||
if not is_ipython():
|
||||
plt.show()
|
||||
axes1.set_ylabel(r'$R_d$',fontsize=30)
|
||||
axes1.legend(fontsize=36,loc='upper right')
|
||||
axes1.set_xlim([0,0.8])
|
||||
axes1.set_ylim([-1000,66000])
|
||||
axes1.set_box_aspect(1/2)
|
||||
plt.xticks(fontsize=28)
|
||||
plt.yticks(fontsize=28)
|
||||
axes1.set_xlabel(r'$t (s)$',fontsize=36)
|
||||
|
||||
path_paper = '/home/yeye/A_aliasing_kalman/latex/0_preprint/Figures/'
|
||||
path_paper = '/home/yeye/Desktop/'
|
||||
#fig1.savefig('Rd_'+ name_file +'.png')
|
||||
fig1.savefig(path_paper + 'Rd_'+ name_file +'.png')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def get_parser():
|
153
kalman/graphics/figureU.py
Normal file
@ -0,0 +1,153 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from itertools import cycle
|
||||
import argparse
|
||||
import pickle
|
||||
import yaml
|
||||
|
||||
|
||||
#import matplotlib.font_manager
|
||||
from matplotlib import rc
|
||||
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
|
||||
rc('text', usetex=True)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def plot_parameters():
|
||||
''' Plot the parameters in separate subplots with uncertainties.
|
||||
|
||||
Args:
|
||||
dat (dict): data dictionary
|
||||
deparameterize (bool): flag indicating if parameters should be
|
||||
deparameterized via 2**theta
|
||||
ref: reference value to be plotted with parameters
|
||||
'''
|
||||
|
||||
|
||||
|
||||
name_file = ['SNR12V120_Pf','SNR12V70_Pf','SNR12V30_Pf']
|
||||
#name_file = ['SNR12V120_Pf_MAG','SNR12V70_Pf_MAG','SNR12V30_Pf_MAG']
|
||||
#name_file = ['SNR12V120_Pb_MAG','SNR12V70_Pb_MAG','SNR12V30_Pb_MAG']
|
||||
|
||||
name_file = ['slice2.3_Pa']
|
||||
vencs = ['180','105','45']
|
||||
path0 = '/home/yeye/Desktop/kalman/results/'
|
||||
|
||||
|
||||
fig, axes = plt.subplots(1,1,figsize=(12,7))
|
||||
col = cycle(['orangered', 'dodgerblue', 'limegreen', 'C3','C4'])
|
||||
|
||||
true_values = {
|
||||
3: 4800,
|
||||
4: 7200,
|
||||
5: 11520,
|
||||
6: 11520,
|
||||
2: 75
|
||||
}
|
||||
|
||||
|
||||
|
||||
for nn,name in enumerate(name_file):
|
||||
|
||||
|
||||
|
||||
path1 = path0 + name + '/'
|
||||
inputfile_path = path1 + 'input.yaml'
|
||||
dat = np.load(path1 + 'theta_stats.npz')
|
||||
|
||||
|
||||
with open(inputfile_path) as file:
|
||||
inputfile = yaml.full_load(file)
|
||||
|
||||
col_ = next(col)
|
||||
|
||||
|
||||
dim = dat['theta'].shape[-1]
|
||||
|
||||
current_val = []
|
||||
ids_type = []
|
||||
labels = []
|
||||
ids = []
|
||||
|
||||
for bnd_c in inputfile['estimation']['boundary_conditions']:
|
||||
|
||||
if 'windkessel' in bnd_c['type']:
|
||||
for bnd_set in inputfile['boundary_conditions']:
|
||||
if bnd_c['id'] == bnd_set['id']:
|
||||
ids.append(bnd_c['id'])
|
||||
ids_type.append('windkessel')
|
||||
current_val.append(bnd_set['parameters']['R_d'])
|
||||
|
||||
|
||||
|
||||
elif 'dirichlet' in bnd_c['type']:
|
||||
current_val.append(inputfile['boundary_conditions'][0]['parameters']['U'])
|
||||
ids.append(bnd_c['id'])
|
||||
ids_type.append('dirichlet')
|
||||
labels.append('$U')
|
||||
|
||||
|
||||
|
||||
|
||||
t = dat['times']
|
||||
theta = dat['theta']
|
||||
P = dat['P_theta']
|
||||
|
||||
legends = cycle(labels)
|
||||
|
||||
legends_=next(legends)
|
||||
|
||||
if dim == 1:
|
||||
theta = theta.reshape((-1, 1))
|
||||
P = P.reshape((-1, 1, 1))
|
||||
|
||||
idx = 0
|
||||
|
||||
for i in range(len(ids)):
|
||||
|
||||
cur_key = ids[i]
|
||||
rec_value = np.round(2**theta[-1, idx]*current_val[i],2)
|
||||
curve = 2**theta[:, idx]*current_val[i]
|
||||
std_down = 2**(-np.sqrt(P[:, idx, idx]))*curve
|
||||
std_up = 2**np.sqrt(P[:, idx, idx])*curve
|
||||
dash_curve = true_values[ids[i]] + t*0
|
||||
|
||||
|
||||
if ids_type[i] == 'dirichlet':
|
||||
axes.plot(t, curve , '-', color=col_,label= '$(venc \ '+ vencs[nn] + ' \ cm/s) \ U = ' + str(rec_value) + '/' + str(true_values[cur_key]) + '$', linewidth = 5)
|
||||
#axes.plot(t, curve , '-', color=col_,label= legends_ + vencs[nn] + ' \ cm/s$', linewidth = 5)
|
||||
axes.fill_between(t, std_down, std_up, alpha=0.3, color=col_)
|
||||
legends_=next(legends)
|
||||
axes.plot(t, dash_curve , color='black',ls='--' , linewidth = 3)
|
||||
|
||||
|
||||
idx +=1
|
||||
|
||||
|
||||
|
||||
axes.set_ylabel(r'$U$',fontsize=36)
|
||||
axes.legend(fontsize=30,loc='upper right')
|
||||
axes.set_xlim([0,0.35])
|
||||
axes.set_ylim([10,160])
|
||||
axes.set_xlabel(r'$t (s)$',fontsize=36)
|
||||
axes.set_box_aspect(1/2)
|
||||
plt.xticks(fontsize=28)
|
||||
plt.yticks(fontsize=28)
|
||||
plt.savefig('U.png')
|
||||
plt.show()
|
||||
|
||||
|
||||
|
||||
#path_paper = '/home/yeye/A_aliasing_kalman/latex/0_preprint/Figures/'
|
||||
#fig1.savefig('Rd_'+ name_file +'.png')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
plot_parameters()
|
39
kalman/graphics/figure_func.py
Normal file
@ -0,0 +1,39 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from itertools import cycle
|
||||
import argparse
|
||||
import pickle
|
||||
import yaml
|
||||
|
||||
|
||||
from matplotlib import rc
|
||||
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
|
||||
rc('text', usetex=True)
|
||||
|
||||
|
||||
u = np.linspace(-2,2,100)
|
||||
utrue = 1
|
||||
venc1 = 0.9*utrue
|
||||
venc2 = 0.6*utrue
|
||||
|
||||
fig1, ax1 = plt.subplots(1,1,figsize=(8, 5))
|
||||
|
||||
J1 = 1 - np.cos((utrue-u)/venc1*np.pi)
|
||||
J2 = 1 - np.cos((utrue-u)/venc2*np.pi)
|
||||
|
||||
|
||||
lwidth = 2
|
||||
font_size = 28
|
||||
|
||||
ax1.plot(u, J1, color = 'orangered', label = '$venc = 0.9 u_{true}$', linestyle='-',linewidth=lwidth)
|
||||
ax1.plot(u, J2, color = 'dodgerblue', label = '$venc = 0.6 u_{true}$', linestyle='-',linewidth=lwidth)
|
||||
ax1.axvline(x=1,color = 'black',linewidth = lwidth , label = '$u_{true}$')
|
||||
|
||||
ax1.legend(fontsize=20, loc= 'upper right')
|
||||
ax1.tick_params(axis='both', which='major', labelsize=22)
|
||||
ax1.set_yticks([])
|
||||
ax1.set_xlabel('$u$',fontsize=font_size)
|
||||
ax1.set_ylabel('$J(u)$',fontsize=font_size)
|
||||
|
||||
plt.show()
|
||||
fig1.savefig('functionals.png', dpi=500, bbox_inches='tight')
|
169
kalman/graphics/figure_func2.py
Normal file
@ -0,0 +1,169 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from itertools import cycle
|
||||
import argparse
|
||||
import pickle
|
||||
import yaml
|
||||
|
||||
|
||||
from matplotlib import rc
|
||||
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
|
||||
rc('text', usetex=True)
|
||||
|
||||
font_size = 28
|
||||
|
||||
################ Flow Parameters
|
||||
Rd = 2.5
|
||||
Rt = 0.5
|
||||
GradP = 4
|
||||
mu = 0.5
|
||||
fac = 1
|
||||
nr = 50
|
||||
VENC = 0.6
|
||||
VENC2 = 0.4
|
||||
|
||||
gamma = 267.513e6 # rad/Tesla/sec Gyromagnetic ratio for H nuclei
|
||||
Bo = 1.5 # Tesla Magnetic Field Strenght
|
||||
TE = 5e-3 # Echo-time
|
||||
phi0 = gamma*Bo*TE # Reference phase
|
||||
phi02 = phi0%3.14
|
||||
r = np.linspace(-Rd, Rd, nr)
|
||||
dr = r[2]-r[1]
|
||||
vmax = 1
|
||||
v = vmax/Rt**2*( Rt**2 - r**2 )*(np.abs(r)<Rt); # Poiseuille Formula
|
||||
ai = v/vmax
|
||||
|
||||
|
||||
theta = np.linspace(-4,5,2000)
|
||||
vtest = np.linspace(-5,5,2000)
|
||||
jv = 0*theta
|
||||
JV = 0*theta
|
||||
JV2 = 0*theta
|
||||
|
||||
Mjv = np.zeros([len(theta),len(ai)])
|
||||
Mjv2 = np.zeros([len(theta),len(ai)])
|
||||
jv0 = 0*theta
|
||||
JV0 = 0*theta
|
||||
Mjv0 = np.zeros([len(theta),len(ai)])
|
||||
#################################### MAGNETIZACION FROM V
|
||||
phiv = phi02 + v*np.pi/VENC
|
||||
phiv2 = phi02 + v*np.pi/VENC2
|
||||
|
||||
modv = np.ones(phiv.shape)
|
||||
M1 = modv*np.cos(phi02) + 1j*modv*np.sin(phi02)
|
||||
M2 = modv*np.cos(phiv) + 1j*modv*np.sin(phiv)
|
||||
M2_2 = modv*np.cos(phiv2) + 1j*modv*np.sin(phiv2)
|
||||
|
||||
|
||||
################################### FFT to COMPLEX M
|
||||
S1 = np.fft.fft(M1)
|
||||
S2 = np.fft.fft(M2)
|
||||
S2_2 = np.fft.fft(M2_2)
|
||||
MR1 = np.fft.ifft(S1)
|
||||
MR2 = np.fft.ifft(S2)
|
||||
MR2_2 = np.fft.ifft(S2_2)
|
||||
|
||||
vrec1 = (np.angle(MR2)-phi02)*VENC/(np.pi)
|
||||
vrec2 = (np.angle(MR2_2)-phi02)*VENC2/(np.pi)
|
||||
|
||||
|
||||
|
||||
for k in range(len(ai)):
|
||||
# v func
|
||||
jv0 = 1-np.cos(np.pi*(vrec1[k]-vtest)/VENC)
|
||||
Mjv0[:,k] = jv0[:]
|
||||
JV0 += jv0
|
||||
|
||||
# theta func
|
||||
jv = 1-np.cos(np.pi*(vrec1[k]-theta*ai[k])/VENC)
|
||||
Mjv[:,k] = jv[:]
|
||||
JV += jv
|
||||
|
||||
jv2 = 1-np.cos(np.pi*(vrec2[k]-theta*ai[k])/VENC2)
|
||||
Mjv2[:,k] = jv2[:]
|
||||
JV2 += jv2
|
||||
|
||||
NJV1 = JV#*100/np.max(JV)
|
||||
NJV2 = JV2#*110/np.max(JV)
|
||||
MV = Mjv0
|
||||
V =NJV1
|
||||
V2 =NJV2
|
||||
|
||||
|
||||
|
||||
|
||||
fig = plt.figure(figsize=(12, 6), dpi=100)
|
||||
ax1 = plt.subplot(1,2,1)
|
||||
|
||||
ch1 = 20
|
||||
ch2 = 23
|
||||
color1 = 'xkcd:coral'
|
||||
color2 = 'xkcd:azure'
|
||||
color3 = 'darkviolet'
|
||||
lwidth = 2
|
||||
|
||||
|
||||
# Miniplot
|
||||
left, bottom, width, height = [0.18, 0.17, 0.1, 0.1]
|
||||
ax0 = fig.add_axes([left, bottom, width, height])
|
||||
ax0.plot(r,v,'b-')
|
||||
ax0.plot([r[ch1]],[v[ch1]],color=color1,marker='o')
|
||||
ax0.plot([r[ch2]],[v[ch2]],color=color2,marker='o')
|
||||
ax0.set_xlim((-1.5,1.5))
|
||||
ax0.set_xticks([])
|
||||
ax0.set_ylabel(r'$u$',fontsize=20)
|
||||
|
||||
|
||||
|
||||
# Figure 1
|
||||
#ax1.plot(vtest, MV[:,ch1],color='xkcd:coral',label='$v_1$')
|
||||
#ax1.plot(vtest, MV[:,ch2],color='xkcd:azure',label='$v_2$')
|
||||
ax1.plot(vtest, MV[:,ch1],color=color1,linewidth=lwidth)
|
||||
ax1.plot(vtest, MV[:,ch2],color=color2,linewidth=lwidth)
|
||||
|
||||
m1x = vtest[np.where( np.abs(MV[:,ch1] - np.min(MV[:,ch1]))<0.001 )]
|
||||
m1y = np.min(MV[:,ch1])
|
||||
m2x = vtest[np.where( np.abs(MV[:,ch2] - np.min(MV[:,ch2]))<0.001 )]
|
||||
m2y = np.min(MV[:,ch2])
|
||||
|
||||
#ax1.plot([m1x],[m1y],color='xkcd:coral',marker='o')
|
||||
#ax1.plot([m2x],[m2y],color='xkcd:azure',marker='o')
|
||||
ax1.axvline(x=v[ch1], color=color1, linestyle='--',label='$v_{1,true}$')
|
||||
ax1.axvline(x=v[ch2], color=color2, linestyle='--',label='$v_{2,true}$')
|
||||
ax1.set_ylabel('$individual \ functional$',fontsize=20)
|
||||
#ax1.legend(loc='upper right', bbox_to_anchor=(0.5, 1.05),ncol=2, fancybox=True, shadow=True,fontsize=15)
|
||||
ax1.set_yticks([])
|
||||
ax1.tick_params(axis='both', which='major', labelsize=22)
|
||||
#ax1.set_xticks([])
|
||||
#ax1.legend(fontsize=20, loc= 'upper right')
|
||||
ax1.set_xlim((-3.5,3.5))
|
||||
ax1.set_ylim((-1.1,2.9))
|
||||
ax1.set_xlabel('$u$',fontsize=font_size)
|
||||
ax1.tick_params(axis='both', which='major', labelsize=22)
|
||||
ax1.set_yticks([])
|
||||
ax1.text(-1,2.4,'$u_{true}$',fontsize=22, color = color1)
|
||||
ax1.text(1.1,2.4,'$u_{true}$',fontsize=22, color = color2)
|
||||
|
||||
|
||||
# Figure 2
|
||||
ax2 = plt.subplot(1,2,2)
|
||||
ax2.plot(theta,V,color=color3,linestyle = '-',linewidth=lwidth, label = '$venc=0.6u_{true}$')
|
||||
ax2.plot(theta,V2,color='darkorange',linestyle = '-',linewidth=lwidth, label = '$venc=0.4u_{true}$')
|
||||
|
||||
ax2.axvline(x=1, color='black', linestyle='--')
|
||||
ax2.set_xlabel(r'$\theta$',fontsize=font_size)
|
||||
ax2.set_ylabel(r'$total \ functional$',fontsize=20)
|
||||
plt.yticks([])
|
||||
ax2.legend(fontsize=17, loc= 'upper left',frameon=False)
|
||||
ax2.set_ylim((-3,20))
|
||||
ax2.text(1.2,17,r'$ \theta _{true}$',fontsize=22, color = 'black')
|
||||
ax2.tick_params(axis='both', which='major', labelsize=22)
|
||||
#ax2.set_xticks([])
|
||||
#plt.title(r'$\theta_{true}=1$' + '\n' +'$venc < v_{max}$',fontsize=15)
|
||||
plt.xlim((-3.5,3.5))
|
||||
|
||||
|
||||
|
||||
|
||||
plt.show()
|
||||
fig.savefig('functionals2.png', dpi=500, bbox_inches='tight')
|
@ -5,15 +5,15 @@ fluid:
|
||||
density: 1.2
|
||||
dynamic_viscosity: 0.035
|
||||
stokes: False
|
||||
implicit_windkessel: True
|
||||
state_velocity: 'update'
|
||||
|
||||
io:
|
||||
write_path: 'results/Rz_Pa_vnoise'
|
||||
write_path: 'results/aorta'
|
||||
restart:
|
||||
path: '' # './projects/nse_coa3d/results/test_restart2/'
|
||||
time: 0
|
||||
write_xdmf: True
|
||||
write_checkpoints: True
|
||||
write_checkpoints: True
|
||||
write_hdf5_timeseries: False
|
||||
write_velocity: 'update' # update or tentative
|
||||
|
||||
@ -26,10 +26,7 @@ boundary_conditions:
|
||||
# -U*sin(DOLFIN_PI*(t-1.6)/Th)*(t<= 1.6+Th )*(t>1.6) + (t<2.4)*(1.6+Th<t)*(U*DOLFIN_PI/Th*(t-1.6-Th)*exp(-(t-1.6-Th)*beta))' ]
|
||||
value: ['0','0','-U*sin(DOLFIN_PI*t/Th)*(t<=Th) + (Th<t)*(U*DOLFIN_PI/Th*(t-Th)*exp(-(t-Th)*beta))']
|
||||
parameters:
|
||||
#U: 75 #P0
|
||||
U: 150 #Pa
|
||||
#U: 100 #Pg
|
||||
#U: 40 #Pc
|
||||
U: 75 #REFERENCE
|
||||
Th: 0.36
|
||||
beta: 70
|
||||
t: 0
|
||||
@ -51,15 +48,10 @@ boundary_conditions:
|
||||
type: 'windkessel'
|
||||
parameters:
|
||||
R_p: 480
|
||||
#C: 0.0004 # P0
|
||||
C: 0.0005 # Pa
|
||||
#C: 0.0010 # Pb
|
||||
#C: 0.0001 # Pc
|
||||
#C: 0.0008 # Pg
|
||||
#R_d: 7200 #P0
|
||||
C: 0.0004 # REFERENCE
|
||||
#R_d: 7200 # REFERENCE
|
||||
R_d: 8760 #Pa
|
||||
#R_d: 17520 #Pb x2
|
||||
#R_d: 10000 #Pg
|
||||
#R_d: 4000 #Pc
|
||||
p0: 85
|
||||
conv: 1333.223874
|
||||
@ -68,16 +60,10 @@ boundary_conditions:
|
||||
type: 'windkessel'
|
||||
parameters:
|
||||
R_p: 520
|
||||
#C: 0.0003 # REFERENCE
|
||||
C: 0.0005 # Pa
|
||||
#C: 0.0010 # Pb
|
||||
#C: 0.0001 # Pc
|
||||
#C: 0.0008 # Pg
|
||||
C: 0.0003 # REFERENCE
|
||||
#R_d: 11520 # REFERENCE
|
||||
R_d: 8760 #Pa
|
||||
#R_d: 17520 #Pb x2
|
||||
#R_d: 26280 #Pc x3
|
||||
#R_d: 10000 #Pg
|
||||
#R_d: 4000 #Pc
|
||||
p0: 85
|
||||
conv: 1333.223874
|
||||
@ -86,16 +72,10 @@ boundary_conditions:
|
||||
type: 'windkessel'
|
||||
parameters:
|
||||
R_p: 520
|
||||
#C: 0.0003 # REFERENCE
|
||||
C: 0.0005 #Pa
|
||||
#C: 0.0010 #Pb
|
||||
#C: 0.0001 #Pc
|
||||
#C: 0.0008 #Pg
|
||||
C: 0.0003 # REFERENCE
|
||||
#R_d: 11520 # REFERENCE
|
||||
R_d: 8760 #Pa
|
||||
#R_d: 17520 #Pb x2
|
||||
#R_d: 26280 #Pc x3
|
||||
#R_d: 10000 #Pg
|
||||
#R_d: 4000 #Pc
|
||||
p0: 85
|
||||
conv: 1333.223874
|
||||
@ -129,6 +109,13 @@ timemarching:
|
||||
checkpoint_dt: 0.03 # <= 0: only last; else value + last
|
||||
report: 1 # 0: print nothing, 1: print time step and writeout, 2: 1 + flux
|
||||
|
||||
windkessel:
|
||||
implicit: True
|
||||
# low rank update formulation can run in parallel.
|
||||
# note that fgmres or similar has to be selected for the pressure solve, as
|
||||
# matrix is not explicitly formed.
|
||||
low_rank_update: False
|
||||
|
||||
# solver setup
|
||||
fem:
|
||||
velocity_space: p1 # p1 p1b/p1+ p2
|
||||
@ -145,7 +132,7 @@ fem:
|
||||
streamline_diffusion:
|
||||
enabled: False
|
||||
parameter: 'standard' # standard, shakib, codina, klr
|
||||
length_scale: 'metric' # average, max, metric
|
||||
length_scale: 'average' # average, max, metric
|
||||
parameter_element_constant: True
|
||||
Cinv: ~
|
||||
monolithic:
|
||||
@ -159,52 +146,52 @@ fem:
|
||||
|
||||
linear_solver:
|
||||
method: 'lu'
|
||||
#inputfile: 'input_files/fracstep_p-gmres_u-LU_WK-LRC.yaml'
|
||||
|
||||
estimation:
|
||||
boundary_conditions:
|
||||
#-
|
||||
# id: 3
|
||||
# type: 'windkessel'
|
||||
# mode: 'Rd'
|
||||
# initial_stddev: 1
|
||||
-
|
||||
id: 4
|
||||
type: 'windkessel'
|
||||
mode: 'Rd'
|
||||
initial_stddev: 1
|
||||
-
|
||||
id: 5
|
||||
type: 'windkessel'
|
||||
mode: 'Rd'
|
||||
initial_stddev: 1
|
||||
-
|
||||
id: 6
|
||||
type: 'windkessel'
|
||||
mode: 'Rd'
|
||||
initial_stddev: 1
|
||||
-
|
||||
id: 2
|
||||
type: 'dirichlet'
|
||||
parameters: 'U'
|
||||
initial_stddev: 1
|
||||
initial_stddev: 0.5
|
||||
#-
|
||||
# id: 5
|
||||
# type: 'windkessel'
|
||||
# mode: 'Rd'
|
||||
# initial_stddev: 0.5
|
||||
#-
|
||||
# id: 6
|
||||
# type: 'windkessel'
|
||||
# mode: 'Rd'
|
||||
# initial_stddev: 0.5
|
||||
#-
|
||||
# id: 2
|
||||
# type: 'dirichlet'
|
||||
# parameters: 'U'
|
||||
# initial_stddev: 0.5
|
||||
|
||||
|
||||
measurements:
|
||||
-
|
||||
mesh: '/home/yeye/NuMRI/kalman/meshes/coaortaH3_leo2.0.h5'
|
||||
#mesh: './meshes/coaortaH1.h5'
|
||||
fe_degree: 1
|
||||
#xdmf_file: 'measurements/aorta_zdir/Perturbation/Mg15V120/u_all.xdmf'
|
||||
#file_root: 'measurements/aorta_zdir/Perturbation/Mg15V120/u{i}.h5'
|
||||
xdmf_file: 'measurements/aorta_zdir_vnoise/u_all.xdmf'
|
||||
file_root: 'measurements/aorta_zdir_vnoise/u{i}.h5'
|
||||
mesh: '/home/yeye/NuMRI/kalman/meshes/slice_Hz2.3.h5'
|
||||
fe_degree: 0
|
||||
xdmf_file: 'measurements/slice/u_all.xdmf'
|
||||
file_root: 'measurements/slice/u{i}.h5'
|
||||
indices: 0 # indices of checkpoints to be processed. 0 == all
|
||||
velocity_direction: [0,0,1]
|
||||
noise_stddev: 45 # standard deviation of Gaussian noise
|
||||
velocity_direction: ~
|
||||
noise_stddev: 10
|
||||
VENC: 0
|
||||
module_meas_file_root: ''
|
||||
|
||||
|
||||
roukf:
|
||||
particles: 'simplex' # unique or simplex
|
||||
observation_operator: 'postprocessing' #state or postprocessing
|
||||
reparameterize: True
|
||||
ODV_functional:
|
||||
enable: False
|
||||
VENC: 244
|
||||
MAG_functional: False
|
62
kalman/input_files/fracstep_p-gmres.yaml
Normal file
@ -0,0 +1,62 @@
|
||||
config_name: test
|
||||
petsc_options:
|
||||
# - u_ten_ksp_view
|
||||
- u_ten_ksp_converged_reason
|
||||
- u_ten_ksp_monitor_true_residual
|
||||
- u_ten_ksp_type bcgs
|
||||
- u_ten_ksp_rtol 1.0e-6
|
||||
- u_ten_ksp_initial_guess_nonzero
|
||||
|
||||
- u_ten_pc_type jacobi
|
||||
|
||||
- d_ksp_type cg
|
||||
- d_ksp_rtol 1.0e-6
|
||||
|
||||
# - p_ksp_view
|
||||
- p_ksp_converged_reason
|
||||
- p_ksp_monitor_true_residual
|
||||
- p_ksp_type fgmres
|
||||
- p_ksp_rtol 1.0e-6
|
||||
- p_ksp_initial_guess_nonzero
|
||||
|
||||
#- p_pc_type gamg
|
||||
#- p_pc_gamg_type agg
|
||||
#- p_pc_gamg_threshold 0.03
|
||||
#- p_pc_gamg_square_graph 10 # no effect ??
|
||||
#- p_pc_gamg_sym_graph
|
||||
- p_mg_levels_ksp_type richardson
|
||||
- p_mg_levels_pc_type sor
|
||||
|
||||
- p_mass_ksp_type cg
|
||||
- p_mass_ksp_converged_reason
|
||||
- p_mass_ksp_monitor_true_residual
|
||||
- p_mass_ksp_rtol 1.0e-8
|
||||
- p_mass_ksp_initial_guess_nonzero
|
||||
- p_mass_pc_type jacobi
|
||||
|
||||
- u_upd_ksp_type cg
|
||||
- u_upd_ksp_rtol 1.0e-8
|
||||
- u_upd_ksp_initial_guess_nonzero
|
||||
- u_upd_pc_type jacobi
|
||||
|
||||
- p_pc_type hypre
|
||||
- p_pc_hypre_type boomeramg
|
||||
- p_pc_hypre_boomeramg_strong_threshold 0.75
|
||||
- p_pc_hypre_boomeramg_max_levels 25
|
||||
- p_pc_hypre_boomeramg_smooth_type Euclid
|
||||
- p_pc_hypre_boomeramg_eu_bj
|
||||
|
||||
# - p_pc_type hypre
|
||||
# - p_pc_hypre_type boomeramg
|
||||
# - p_pc_hypre_boomeramg_agg_nl 4
|
||||
# - p_pc_hypre_boomeramg_agg_num_paths 2
|
||||
# # Truncation factor for interpolation (note: increasing towrds 1
|
||||
# # appears to reduce memory useage
|
||||
# - p_pc_hypre_boomeramg_truncfactor 0.9
|
||||
# # Max elements per row for interpolation operator
|
||||
# - p_pc_hypre_boomeramg_P_max 5
|
||||
# # - p_pc_hypre_boomeramg_max_levels 10
|
||||
# # Strong threshold (BoomerAMG docs recommend 0.5-0.6 for 3D
|
||||
# # Poisson
|
||||
# - p_pc_hypre_boomeramg_strong_threshold 0.5
|
||||
|
82
kalman/input_files/fracstep_p-gmres_u-LU_WK-LRC.yaml
Normal file
@ -0,0 +1,82 @@
|
||||
config_name: test
|
||||
petsc_options:
|
||||
# - u_ten_ksp_view
|
||||
# - u_ten_ksp_converged_reason
|
||||
# - u_ten_ksp_monitor_true_residual
|
||||
- u_ten_ksp_type preonly
|
||||
# - u_ten_ksp_rtol 1.0e-6
|
||||
# - u_ten_ksp_initial_guess_nonzero
|
||||
|
||||
# - u_ten_pc_type jacobi
|
||||
|
||||
# - u_ten_pc_side right
|
||||
- u_ten_pc_type lu
|
||||
# - u_ten_pc_gamg_type agg
|
||||
# - u_ten_pc_gamg_threshold 0.03
|
||||
# - u_ten_pc_gamg_square_graph 10 # no effect ??
|
||||
# - u_ten_pc_gamg_sym_graph
|
||||
# - u_ten_mg_levels_ksp_type richardson
|
||||
# - u_ten_mg_levels_pc_type sor
|
||||
# # - u_ten_pc_gamg_coarse_eq_limit 50 # ignored !?!?!
|
||||
|
||||
|
||||
# - p_ksp_view
|
||||
- p_ksp_converged_reason
|
||||
- p_ksp_monitor_true_residual
|
||||
# - p_ksp_type gmres
|
||||
# - p_ksp_norm_type unpreconditioned
|
||||
- p_ksp_type fgmres
|
||||
- p_ksp_rtol 1.0e-8
|
||||
- p_ksp_initial_guess_nonzero
|
||||
- p_pc_type gamg
|
||||
- p_pc_gamg_type agg
|
||||
- p_pc_gamg_threshold 0.03
|
||||
- p_pc_gamg_square_graph 10 # no effect ??
|
||||
- p_pc_gamg_sym_graph
|
||||
- p_mg_levels_ksp_type richardson
|
||||
- p_mg_levels_pc_type sor
|
||||
|
||||
|
||||
- p_mass_ksp_type preonly
|
||||
# - p_mass_ksp_rtol 1.0e-8
|
||||
# - p_mass_ksp_initial_guess_nonzero
|
||||
- p_mass_pc_type lu
|
||||
|
||||
# - p_pc_type hypre
|
||||
# - p_pc_hypre_type boomeramg
|
||||
# - p_pc_hypre_boomeramg_strong_threshold 0.75
|
||||
# - p_pc_hypre_boomeramg_max_levels 25
|
||||
# - p_pc_hypre_boomeramg_smooth_type Euclid
|
||||
# - p_pc_hypre_boomeramg_eu_bj
|
||||
|
||||
# - p_ksp_type preonly
|
||||
# - p_pc_type lu
|
||||
# - p_pc_factor_mat_solver_package mumps
|
||||
# - p_mat_mumps_icntl_14 80
|
||||
|
||||
# - p_ksp_type cg
|
||||
# - p_ksp_converged_reason
|
||||
# - p_ksp_monitor_true_residual
|
||||
# - p_ksp_rtol 1.0e-8
|
||||
|
||||
# - p_pc_type hypre
|
||||
# - p_pc_hypre_type boomeramg
|
||||
# - p_pc_hypre_boomeramg_agg_nl 4
|
||||
# - p_pc_hypre_boomeramg_agg_num_paths 2
|
||||
# # Truncation factor for interpolation (note: increasing towrds 1
|
||||
# # appears to reduce memory useage
|
||||
# - p_pc_hypre_boomeramg_truncfactor 0.9
|
||||
# # Max elements per row for interpolation operator
|
||||
# - p_pc_hypre_boomeramg_P_max 5
|
||||
# # - p_pc_hypre_boomeramg_max_levels 10
|
||||
# # Strong threshold (BoomerAMG docs recommend 0.5-0.6 for 3D
|
||||
# # Poisson
|
||||
# - p_pc_hypre_boomeramg_strong_threshold 0.5
|
||||
|
||||
# - u_upd_ksp_converged_reason
|
||||
# - u_upd_ksp_monitor_true_residual
|
||||
# - u_upd_ksp_view
|
||||
- u_upd_ksp_type preonly
|
||||
# - u_upd_ksp_rtol 1.0e-8
|
||||
# - u_upd_ksp_initial_guess_nonzero
|
||||
- u_upd_pc_type lu
|
BIN
presentations/press_8ecm/images/4dflow.png
Normal file
After Width: | Height: | Size: 346 KiB |
BIN
presentations/press_8ecm/images/HRd_Pb_V30.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
presentations/press_8ecm/images/HRd_Pb_V70.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
presentations/press_8ecm/images/HRd_Pc_V30.png
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
presentations/press_8ecm/images/HRd_Pc_V70.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
presentations/press_8ecm/images/HU_Pb_V30.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
presentations/press_8ecm/images/HU_Pb_V70.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
presentations/press_8ecm/images/HU_Pc_V30.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
presentations/press_8ecm/images/HU_Pc_V70.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
presentations/press_8ecm/images/Rd_Pb.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
presentations/press_8ecm/images/Rd_Pb_V70.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
presentations/press_8ecm/images/Rd_Pc.png
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
presentations/press_8ecm/images/Rd_Pc_V70.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
presentations/press_8ecm/images/U_Pb.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
presentations/press_8ecm/images/U_Pb_V70.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
presentations/press_8ecm/images/U_Pc.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
presentations/press_8ecm/images/U_Pc_V70.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
presentations/press_8ecm/images/coartation.png
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
presentations/press_8ecm/images/full_aorta.png
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
presentations/press_8ecm/images/ref.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
presentations/press_8ecm/images/supra_venc.png
Normal file
After Width: | Height: | Size: 3.1 MiB |
BIN
presentations/press_8ecm/images/v120.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
presentations/press_8ecm/images/v30.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
presentations/press_8ecm/images/v70.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
presentations/press_8ecm/images/windk_model.png
Executable file
After Width: | Height: | Size: 303 KiB |
162
presentations/press_8ecm/press.aux
Normal file
@ -0,0 +1,162 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\providecommand\pbs@newkey[2]{}
|
||||
\providecommand\pbs@seq@push@cx[2]{}
|
||||
\providecommand\pbs@at@end@dvi@check{}
|
||||
\pbs@at@end@dvi@check
|
||||
\providecommand\mix@newkey[2]{}
|
||||
\pbs@newkey{pbs@last@page}{1}
|
||||
\babel@aux{english}{}
|
||||
\@writefile{nav}{\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {1}{1}}}
|
||||
\pbs@newkey{pbs@last@page}{2}
|
||||
\@writefile{nav}{\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {2}{2}}}
|
||||
\pbs@newkey{pbs@last@page}{3}
|
||||
\@writefile{toc}{\beamer@sectionintoc {1}{4D flow MRI}{3}{0}{1}}
|
||||
\@writefile{nav}{\headcommand {\beamer@sectionpages {1}{2}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@subsectionpages {1}{2}}}
|
||||
\@writefile{nav}{\headcommand {\sectionentry {1}{4D flow MRI}{3}{4D flow MRI}{0}}}
|
||||
\pbs@newkey{pbs@last@page}{4}
|
||||
\pbs@newkey{pbs@last@page}{5}
|
||||
\@writefile{nav}{\headcommand {\slideentry {1}{0}{1}{3/5}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {3}{5}}}
|
||||
\pbs@newkey{pbs@last@page}{6}
|
||||
\@writefile{toc}{\beamer@sectionintoc {2}{The mathematical model}{6}{0}{2}}
|
||||
\@writefile{nav}{\headcommand {\beamer@sectionpages {3}{5}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@subsectionpages {3}{5}}}
|
||||
\@writefile{nav}{\headcommand {\sectionentry {2}{The mathematical model}{6}{The mathematical model}{0}}}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{1}{6/6}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {6}{6}}}
|
||||
\pbs@newkey{pbs@last@page}{7}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{2}{7/7}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {7}{7}}}
|
||||
\pbs@newkey{pbs@last@page}{8}
|
||||
\pbs@newkey{pbs@last@page}{9}
|
||||
\pbs@newkey{pbs@last@page}{10}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{3}{8/10}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {8}{10}}}
|
||||
\pbs@newkey{pbs@last@page}{11}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{4}{11/11}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {11}{11}}}
|
||||
\pbs@newkey{pbs@last@page}{12}
|
||||
\pbs@newkey{pbs@last@page}{13}
|
||||
\pbs@newkey{pbs@last@page}{14}
|
||||
\pbs@newkey{pbs@last@page}{15}
|
||||
\pbs@newkey{pbs@last@page}{16}
|
||||
\pbs@newkey{pbs@last@page}{17}
|
||||
\pbs@newkey{pbs@last@page}{18}
|
||||
\pbs@newkey{pbs@last@page}{19}
|
||||
\pbs@newkey{pbs@last@page}{20}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{5}{12/20}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {12}{20}}}
|
||||
\pbs@newkey{pbs@last@page}{21}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{6}{21/21}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {21}{21}}}
|
||||
\pbs@newkey{pbs@last@page}{22}
|
||||
\@writefile{nav}{\headcommand {\slideentry {2}{0}{7}{22/22}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {22}{22}}}
|
||||
\pbs@newkey{pbs@last@page}{23}
|
||||
\@writefile{toc}{\beamer@sectionintoc {3}{The inverse problem}{23}{0}{3}}
|
||||
\@writefile{nav}{\headcommand {\beamer@sectionpages {6}{22}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@subsectionpages {6}{22}}}
|
||||
\@writefile{nav}{\headcommand {\sectionentry {3}{The inverse problem}{23}{The inverse problem}{0}}}
|
||||
\@writefile{nav}{\headcommand {\slideentry {3}{0}{1}{23/23}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {23}{23}}}
|
||||
\pbs@newkey{pbs@last@page}{24}
|
||||
\pbs@newkey{pbs@last@page}{25}
|
||||
\pbs@newkey{pbs@last@page}{26}
|
||||
\pbs@newkey{pbs@last@page}{27}
|
||||
\pbs@newkey{pbs@last@page}{28}
|
||||
\pbs@newkey{pbs@last@page}{29}
|
||||
\pbs@newkey{pbs@last@page}{30}
|
||||
\pbs@newkey{pbs@last@page}{31}
|
||||
\@writefile{nav}{\headcommand {\slideentry {3}{0}{2}{24/31}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {24}{31}}}
|
||||
\pbs@newkey{pbs@last@page}{32}
|
||||
\pbs@newkey{pbs@last@page}{33}
|
||||
\pbs@newkey{pbs@last@page}{34}
|
||||
\pbs@newkey{pbs@last@page}{35}
|
||||
\pbs@newkey{pbs@last@page}{36}
|
||||
\@writefile{nav}{\headcommand {\slideentry {3}{0}{3}{32/36}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {32}{36}}}
|
||||
\pbs@newkey{pbs@last@page}{37}
|
||||
\@writefile{toc}{\beamer@sectionintoc {4}{Numerical Experiments}{37}{0}{4}}
|
||||
\@writefile{nav}{\headcommand {\beamer@sectionpages {23}{36}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@subsectionpages {23}{36}}}
|
||||
\@writefile{nav}{\headcommand {\sectionentry {4}{Numerical Experiments}{37}{Numerical Experiments}{0}}}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{1}{37/37}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {37}{37}}}
|
||||
\pbs@newkey{pbs@last@page}{38}
|
||||
\pbs@newkey{pbs@last@page}{39}
|
||||
\pbs@newkey{pbs@last@page}{40}
|
||||
\pbs@newkey{pbs@last@page}{41}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{2}{38/41}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {38}{41}}}
|
||||
\pbs@newkey{pbs@last@page}{42}
|
||||
\pbs@newkey{pbs@last@page}{43}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{3}{42/43}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {42}{43}}}
|
||||
\pbs@newkey{pbs@last@page}{44}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{4}{44/44}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {44}{44}}}
|
||||
\pbs@newkey{pbs@last@page}{45}
|
||||
\pbs@newkey{pbs@last@page}{46}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{5}{45/46}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {45}{46}}}
|
||||
\pbs@newkey{pbs@last@page}{47}
|
||||
\pbs@newkey{pbs@last@page}{48}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{6}{47/48}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {47}{48}}}
|
||||
\pbs@newkey{pbs@last@page}{49}
|
||||
\pbs@newkey{pbs@last@page}{50}
|
||||
\pbs@newkey{pbs@last@page}{51}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{7}{49/51}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {49}{51}}}
|
||||
\pbs@newkey{pbs@last@page}{52}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{8}{52/52}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {52}{52}}}
|
||||
\pbs@newkey{pbs@last@page}{53}
|
||||
\pbs@newkey{pbs@last@page}{54}
|
||||
\pbs@newkey{pbs@last@page}{55}
|
||||
\@writefile{nav}{\headcommand {\slideentry {4}{0}{9}{53/55}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {53}{55}}}
|
||||
\pbs@newkey{pbs@last@page}{56}
|
||||
\@writefile{toc}{\beamer@sectionintoc {5}{Conclusions}{56}{0}{5}}
|
||||
\@writefile{nav}{\headcommand {\beamer@sectionpages {37}{55}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@subsectionpages {37}{55}}}
|
||||
\@writefile{nav}{\headcommand {\sectionentry {5}{Conclusions}{56}{Conclusions}{0}}}
|
||||
\@writefile{nav}{\headcommand {\slideentry {5}{0}{1}{56/56}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {56}{56}}}
|
||||
\pbs@newkey{pbs@last@page}{57}
|
||||
\pbs@newkey{pbs@last@page}{58}
|
||||
\pbs@newkey{pbs@last@page}{59}
|
||||
\pbs@newkey{pbs@last@page}{60}
|
||||
\pbs@newkey{pbs@last@page}{61}
|
||||
\pbs@newkey{pbs@last@page}{62}
|
||||
\@writefile{nav}{\headcommand {\slideentry {5}{0}{2}{57/62}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {57}{62}}}
|
||||
\pbs@newkey{pbs@last@page}{63}
|
||||
\@writefile{nav}{\headcommand {\slideentry {5}{0}{3}{63/63}{}{0}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@framepages {63}{63}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@partpages {1}{63}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@subsectionpages {56}{63}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@sectionpages {56}{63}}}
|
||||
\@writefile{nav}{\headcommand {\beamer@documentpages {63}}}
|
||||
\@writefile{nav}{\headcommand {\gdef \inserttotalframenumber {25}}}
|
0
presentations/press_8ecm/press.bbl
Normal file
48
presentations/press_8ecm/press.blg
Normal file
@ -0,0 +1,48 @@
|
||||
This is BibTeX, Version 0.99d (TeX Live 2017/Debian)
|
||||
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
|
||||
The top-level auxiliary file: press.aux
|
||||
I found no \citation commands---while reading file press.aux
|
||||
I found no \bibdata command---while reading file press.aux
|
||||
I found no \bibstyle command---while reading file press.aux
|
||||
You've used 0 entries,
|
||||
0 wiz_defined-function locations,
|
||||
83 strings with 484 characters,
|
||||
and the built_in function-call counts, 0 in all, are:
|
||||
= -- 0
|
||||
> -- 0
|
||||
< -- 0
|
||||
+ -- 0
|
||||
- -- 0
|
||||
* -- 0
|
||||
:= -- 0
|
||||
add.period$ -- 0
|
||||
call.type$ -- 0
|
||||
change.case$ -- 0
|
||||
chr.to.int$ -- 0
|
||||
cite$ -- 0
|
||||
duplicate$ -- 0
|
||||
empty$ -- 0
|
||||
format.name$ -- 0
|
||||
if$ -- 0
|
||||
int.to.chr$ -- 0
|
||||
int.to.str$ -- 0
|
||||
missing$ -- 0
|
||||
newline$ -- 0
|
||||
num.names$ -- 0
|
||||
pop$ -- 0
|
||||
preamble$ -- 0
|
||||
purify$ -- 0
|
||||
quote$ -- 0
|
||||
skip$ -- 0
|
||||
stack$ -- 0
|
||||
substring$ -- 0
|
||||
swap$ -- 0
|
||||
text.length$ -- 0
|
||||
text.prefix$ -- 0
|
||||
top$ -- 0
|
||||
type$ -- 0
|
||||
warning$ -- 0
|
||||
while$ -- 0
|
||||
width$ -- 0
|
||||
write$ -- 0
|
||||
(There were 3 error messages)
|
2310
presentations/press_8ecm/press.log
Normal file
70
presentations/press_8ecm/press.nav
Normal file
@ -0,0 +1,70 @@
|
||||
\headcommand {\slideentry {0}{0}{1}{1/1}{}{0}}
|
||||
\headcommand {\beamer@framepages {1}{1}}
|
||||
\headcommand {\slideentry {0}{0}{2}{2/2}{}{0}}
|
||||
\headcommand {\beamer@framepages {2}{2}}
|
||||
\headcommand {\beamer@sectionpages {1}{2}}
|
||||
\headcommand {\beamer@subsectionpages {1}{2}}
|
||||
\headcommand {\sectionentry {1}{4D flow MRI}{3}{4D flow MRI}{0}}
|
||||
\headcommand {\slideentry {1}{0}{1}{3/5}{}{0}}
|
||||
\headcommand {\beamer@framepages {3}{5}}
|
||||
\headcommand {\beamer@sectionpages {3}{5}}
|
||||
\headcommand {\beamer@subsectionpages {3}{5}}
|
||||
\headcommand {\sectionentry {2}{The mathematical model}{6}{The mathematical model}{0}}
|
||||
\headcommand {\slideentry {2}{0}{1}{6/6}{}{0}}
|
||||
\headcommand {\beamer@framepages {6}{6}}
|
||||
\headcommand {\slideentry {2}{0}{2}{7/7}{}{0}}
|
||||
\headcommand {\beamer@framepages {7}{7}}
|
||||
\headcommand {\slideentry {2}{0}{3}{8/10}{}{0}}
|
||||
\headcommand {\beamer@framepages {8}{10}}
|
||||
\headcommand {\slideentry {2}{0}{4}{11/11}{}{0}}
|
||||
\headcommand {\beamer@framepages {11}{11}}
|
||||
\headcommand {\slideentry {2}{0}{5}{12/20}{}{0}}
|
||||
\headcommand {\beamer@framepages {12}{20}}
|
||||
\headcommand {\slideentry {2}{0}{6}{21/21}{}{0}}
|
||||
\headcommand {\beamer@framepages {21}{21}}
|
||||
\headcommand {\slideentry {2}{0}{7}{22/22}{}{0}}
|
||||
\headcommand {\beamer@framepages {22}{22}}
|
||||
\headcommand {\beamer@sectionpages {6}{22}}
|
||||
\headcommand {\beamer@subsectionpages {6}{22}}
|
||||
\headcommand {\sectionentry {3}{The inverse problem}{23}{The inverse problem}{0}}
|
||||
\headcommand {\slideentry {3}{0}{1}{23/23}{}{0}}
|
||||
\headcommand {\beamer@framepages {23}{23}}
|
||||
\headcommand {\slideentry {3}{0}{2}{24/31}{}{0}}
|
||||
\headcommand {\beamer@framepages {24}{31}}
|
||||
\headcommand {\slideentry {3}{0}{3}{32/36}{}{0}}
|
||||
\headcommand {\beamer@framepages {32}{36}}
|
||||
\headcommand {\beamer@sectionpages {23}{36}}
|
||||
\headcommand {\beamer@subsectionpages {23}{36}}
|
||||
\headcommand {\sectionentry {4}{Numerical Experiments}{37}{Numerical Experiments}{0}}
|
||||
\headcommand {\slideentry {4}{0}{1}{37/37}{}{0}}
|
||||
\headcommand {\beamer@framepages {37}{37}}
|
||||
\headcommand {\slideentry {4}{0}{2}{38/41}{}{0}}
|
||||
\headcommand {\beamer@framepages {38}{41}}
|
||||
\headcommand {\slideentry {4}{0}{3}{42/43}{}{0}}
|
||||
\headcommand {\beamer@framepages {42}{43}}
|
||||
\headcommand {\slideentry {4}{0}{4}{44/44}{}{0}}
|
||||
\headcommand {\beamer@framepages {44}{44}}
|
||||
\headcommand {\slideentry {4}{0}{5}{45/46}{}{0}}
|
||||
\headcommand {\beamer@framepages {45}{46}}
|
||||
\headcommand {\slideentry {4}{0}{6}{47/48}{}{0}}
|
||||
\headcommand {\beamer@framepages {47}{48}}
|
||||
\headcommand {\slideentry {4}{0}{7}{49/51}{}{0}}
|
||||
\headcommand {\beamer@framepages {49}{51}}
|
||||
\headcommand {\slideentry {4}{0}{8}{52/52}{}{0}}
|
||||
\headcommand {\beamer@framepages {52}{52}}
|
||||
\headcommand {\slideentry {4}{0}{9}{53/55}{}{0}}
|
||||
\headcommand {\beamer@framepages {53}{55}}
|
||||
\headcommand {\beamer@sectionpages {37}{55}}
|
||||
\headcommand {\beamer@subsectionpages {37}{55}}
|
||||
\headcommand {\sectionentry {5}{Conclusions}{56}{Conclusions}{0}}
|
||||
\headcommand {\slideentry {5}{0}{1}{56/56}{}{0}}
|
||||
\headcommand {\beamer@framepages {56}{56}}
|
||||
\headcommand {\slideentry {5}{0}{2}{57/62}{}{0}}
|
||||
\headcommand {\beamer@framepages {57}{62}}
|
||||
\headcommand {\slideentry {5}{0}{3}{63/63}{}{0}}
|
||||
\headcommand {\beamer@framepages {63}{63}}
|
||||
\headcommand {\beamer@partpages {1}{63}}
|
||||
\headcommand {\beamer@subsectionpages {56}{63}}
|
||||
\headcommand {\beamer@sectionpages {56}{63}}
|
||||
\headcommand {\beamer@documentpages {63}}
|
||||
\headcommand {\gdef \inserttotalframenumber {25}}
|
5
presentations/press_8ecm/press.out
Normal file
@ -0,0 +1,5 @@
|
||||
\BOOKMARK [2][]{Outline0.1}{4D flow MRI}{}% 1
|
||||
\BOOKMARK [2][]{Outline0.2}{The mathematical model}{}% 2
|
||||
\BOOKMARK [2][]{Outline0.3}{The inverse problem}{}% 3
|
||||
\BOOKMARK [2][]{Outline0.4}{Numerical Experiments}{}% 4
|
||||
\BOOKMARK [2][]{Outline0.5}{Conclusions}{}% 5
|
BIN
presentations/press_8ecm/press.pdf
Normal file
0
presentations/press_8ecm/press.snm
Normal file
BIN
presentations/press_8ecm/press.synctex.gz
Normal file
658
presentations/press_8ecm/press.tex
Executable file
@ -0,0 +1,658 @@
|
||||
\documentclass[xcolor=dvipsnames,notheorem,mathserifs]{beamer}
|
||||
\usepackage{amsmath}
|
||||
%\documentclass{beamer}
|
||||
\usepackage[english]{babel}
|
||||
%\usepackage[latin1]{inputenc}
|
||||
\usepackage{multicol} % indice en 2 columnas
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
\usepackage{helvet}
|
||||
\usefonttheme{serif}
|
||||
%\usepackage{ccfonts} % Font family: Concrete Math
|
||||
\usepackage[T1]{fontenc}
|
||||
|
||||
%\usepackage{graphicx}
|
||||
%\usepackage{movie15}
|
||||
%\usepackage{media9}[2013/11/04]
|
||||
\usepackage{xcolor}
|
||||
|
||||
|
||||
\usepackage{graphicx}
|
||||
\usepackage{multimedia}
|
||||
\usepackage{media9}
|
||||
\usepackage{listings,xcolor,caption, mathtools, wrapfig}
|
||||
\usepackage{amsfonts}
|
||||
\usepackage{amssymb,graphicx,enumerate}
|
||||
\usepackage{subcaption}
|
||||
\usepackage{hyperref}
|
||||
|
||||
\usepackage[normalem]{ulem} % for strike out command \sout
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%\usetheme{default}
|
||||
%\usetheme{AnnArbor}
|
||||
%\usetheme{Antibes}
|
||||
%\usetheme{Bergen}
|
||||
%\usetheme{Berkeley}
|
||||
%\usetheme{Berlin}
|
||||
%\usetheme{Boadilla}
|
||||
%\usetheme{CambridgeUS}
|
||||
%\usetheme{Copenhagen}
|
||||
%\usetheme{Darmstadt}
|
||||
%\usetheme{Dresden}
|
||||
%\usetheme{Frankfurt}
|
||||
%\usetheme{Goettingen}
|
||||
%\usetheme{Hannover}
|
||||
%\usetheme{Ilmenau}
|
||||
%\usetheme{JuanLesPins}
|
||||
%\usetheme{Luebeck}
|
||||
%\usetheme{Madrid}
|
||||
%\usetheme{Malmoe}
|
||||
%\usetheme{Marburg}
|
||||
%\usetheme{Montpellier}
|
||||
%\usetheme{PaloAlto}
|
||||
%\usetheme{Pittsburgh}
|
||||
%\usetheme{Rochester}
|
||||
%\usetheme{Singapore}
|
||||
%\usetheme{Szeged}
|
||||
\usetheme{Warsaw}
|
||||
|
||||
%\usecolortheme{albatross}
|
||||
%\usecolortheme{beaver}
|
||||
%\usecolortheme{beetle}
|
||||
\usecolortheme{crane}
|
||||
%\usecolortheme{dolphin}
|
||||
%\usecolortheme{dove}
|
||||
%\usecolortheme{fly}
|
||||
%\usecolortheme{lily}
|
||||
%\usecolortheme{orchid}
|
||||
%\usecolortheme{rose}
|
||||
%\usecolortheme{seagull}
|
||||
%\usecolortheme{seahorse}
|
||||
%\usecolortheme{whale}
|
||||
%\usecolortheme{wolverine}
|
||||
|
||||
%\useoutertheme{infolines}
|
||||
%\useoutertheme{miniframes}
|
||||
%\useoutertheme{sidebar}
|
||||
\useoutertheme{smoothbars}
|
||||
%\useoutertheme{shadow}
|
||||
%\useoutertheme{smoothtree}
|
||||
%\useoutertheme{split}
|
||||
%\useoutertheme{tree}
|
||||
|
||||
|
||||
\usepackage{amssymb,mathrsfs,amsmath,latexsym,amsthm,amsfonts}
|
||||
\useinnertheme{rectangles}
|
||||
|
||||
|
||||
\setbeamertemplate{navigation symbols}{} % quitar simbolitos
|
||||
|
||||
|
||||
\setbeamerfont{page number in head/foot}{size=\large}
|
||||
%\setbeamertemplate{footline}[frame number] number in footer
|
||||
\setbeamertemplate{footline}{}
|
||||
|
||||
|
||||
|
||||
\title{Robust parameter estimation in fluid flow models from aliased velocity measurements}
|
||||
%\author[Jeremías Garay Labra]
|
||||
%{Jeremías Garay Labra}
|
||||
\institute[University of Groningen]
|
||||
{
|
||||
Bernoulli Institute\\
|
||||
Faculty of Sciences and Engineering\\
|
||||
University of Groningen\\[0.5cm]
|
||||
%\includegraphics[height=1.5cm]{Imagenes/escudoU2014.pdf}
|
||||
% \includegraphics[height=1cm]{Imagenes/fcfm.png} \\[0.5cm]
|
||||
Jeremías Garay Labra \emph{join with} Cristobal Bertoglio.}
|
||||
\date{\today}
|
||||
|
||||
|
||||
\begin{document}
|
||||
\frame{\titlepage}
|
||||
|
||||
|
||||
% \onslide<1->
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Index}
|
||||
\tableofcontents
|
||||
\end{frame}
|
||||
|
||||
|
||||
\section[4D flow MRI]{4D flow MRI}
|
||||
\begin{frame}
|
||||
\frametitle{4D flow MRI}
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth} % Left column and width
|
||||
\footnotesize
|
||||
|
||||
\begin{itemize}
|
||||
\item<2-> Velocities encoded into the magnetization phase
|
||||
\item<3-> Rich post-proccesing: derived parameters
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
|
||||
\column{.54\textwidth} % Right column and width
|
||||
\onslide<1->
|
||||
\begin{figure}[!hbtp]
|
||||
\begin{center}
|
||||
\includegraphics[height=0.9\textwidth]{images/4dflow.png}
|
||||
\caption{\footnotesize 4D flow MRI of a human thorax}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section{The mathematical model}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The mathematical model}
|
||||
\begin{center}
|
||||
The mathematical model
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The mathematical model}
|
||||
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth} % Left column and width
|
||||
\footnotesize
|
||||
|
||||
\column{.54\textwidth} % Right column and width
|
||||
\begin{figure}[!hbtp]
|
||||
\begin{center}
|
||||
\includegraphics[height=1.1\textwidth]{images/full_aorta.png}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The mathematical model}
|
||||
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth} % Left column and width
|
||||
\footnotesize
|
||||
\begin{itemize}
|
||||
\item<2-> Incompressible Navier-Stokes equations:
|
||||
\begin{equation}
|
||||
\begin{cases}
|
||||
\displaystyle \rho \frac{\partial \vec{u}}{\partial t} + \rho \big ( \vec{u} \cdot \nabla \big) \vec{u} - \mu \Delta \vec{u} + \nabla p = 0 \\[0.2cm]
|
||||
\nabla \cdot \vec{u} = 0 \quad \text{in} \quad \Omega \\[0.2cm]
|
||||
\vec{u} = \vec{u}_{inlet} \quad \text{on} \quad \Gamma_{in} \\[0.2cm]
|
||||
\vec{u} = 0 \quad \text{on} \quad \Gamma_{walls}
|
||||
\end{cases}
|
||||
\end{equation}
|
||||
\item<3-> \emph{Three-element} Windkessel coupling at every outlet:
|
||||
\begin{equation}
|
||||
\begin{cases}
|
||||
\displaystyle C_{d,l} \frac{d \pi_l}{dt} + \frac{\pi_l}{R_{d,l}} = Q_l \\[0.2cm]
|
||||
P_l = R_{p,l} \ Q_l + \pi_l
|
||||
\end{cases}
|
||||
\end{equation}
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\column{.54\textwidth} % Right column and width
|
||||
\onslide<1->
|
||||
\begin{figure}[!hbtp]
|
||||
\begin{center}
|
||||
\includegraphics[height=0.9\textwidth]{images/windk_model.png}
|
||||
\caption{\footnotesize Schematic of the model}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The mathematical model}
|
||||
\begin{columns}[c]
|
||||
\column{.5\textwidth} % Left column and width
|
||||
\footnotesize
|
||||
\begin{itemize}
|
||||
\item Incompressible Navier-Stokes equations:
|
||||
\begin{equation}
|
||||
\begin{cases}
|
||||
\displaystyle \rho \frac{\partial \vec{u}}{\partial t} + \rho \big ( \vec{u} \cdot \nabla \big) \vec{u} - \mu \Delta \vec{u} + \nabla p = 0 \\[0.2cm]
|
||||
\nabla \cdot \vec{u} = 0 \quad \text{in} \quad \Omega \\[0.2cm]
|
||||
\vec{u} = \vec{u}_{inlet} \quad \text{on} \quad \Gamma_{in} \\[0.2cm]
|
||||
\vec{u} = 0 \quad \text{on} \quad \Gamma_{walls}
|
||||
\end{cases}
|
||||
\end{equation}
|
||||
\emph{Three-element} Windkessel coupling at every outlet:
|
||||
\begin{equation}
|
||||
\begin{cases}
|
||||
\displaystyle C_{d,l} \frac{d \pi_l}{dt} + \frac{\pi_l}{R_{d,l}} = Q_l \\[0.2cm]
|
||||
P_l = R_{p,l} \ Q_l + \pi_l
|
||||
\end{cases}
|
||||
\end{equation}
|
||||
\end{itemize}
|
||||
|
||||
|
||||
\column{.54\textwidth} % Right column and width
|
||||
\begin{figure}[!hbtp]
|
||||
\begin{center}
|
||||
\includegraphics[height=0.9\textwidth]{images/ref.png}
|
||||
\caption{\footnotesize Reference solution at peak systole}
|
||||
\end{center}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
%\begin{frame}
|
||||
% \frametitle{The mathematical model}
|
||||
%
|
||||
% \begin{columns}[c]
|
||||
%\column{.5\textwidth} % Left column and width
|
||||
%\footnotesize
|
||||
%\begin{itemize}
|
||||
%\item<1-> $u_{inlet} = -U f(t) \hat{n}$, with $f(t)$ the weaveform.
|
||||
%\item<2-> Fractional step scheme.
|
||||
%\item<3-> Semi-implicit Windkessel model.
|
||||
%\item<4-> Stabilized $\mathbb{P}1/\mathbb{P}1$ finite elements.
|
||||
%\item<4-> Implemented in FEniCS.
|
||||
%\end{itemize}
|
||||
%
|
||||
%
|
||||
%\column{.54\textwidth} % Right column and width
|
||||
%\begin{figure}[!hbtp]
|
||||
% \begin{center}
|
||||
% \includegraphics[height=0.9\textwidth]{images/ref.png}
|
||||
% \caption{\footnotesize Reference solution at peak systole}
|
||||
% \end{center}
|
||||
% \end{figure}
|
||||
%\end{columns}
|
||||
%
|
||||
%\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The inverse problem}
|
||||
\begin{itemize}
|
||||
\item<1-> Upon this solution $\Longrightarrow$ build a set of measurements
|
||||
\item<2-> $M(\vec{x},t)= M_0(\vec{x}) exp(i\phi_0 + i \frac{\pi}{venc} u(\vec{x},t))$
|
||||
\item<3-> reconstructed velocity: $u \in \big ( -venc, + venc \big )$
|
||||
\item<4-> $VNR \sim 1/venc$
|
||||
\end{itemize}
|
||||
\centering
|
||||
\onslide<5-> \textbf{The measurements:}
|
||||
\begin{itemize}
|
||||
\item<6-> Gaussian noise into the magnetization
|
||||
\item<7-> Spatial and temporal interpolation
|
||||
\item<8-> Only using the dominant component of the velocity: $u_z$
|
||||
\item<9-> Different levels of aliasing varying the $venc$ parameter
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The inverse problem}
|
||||
\begin{itemize}
|
||||
\item Upon this solution $\Longrightarrow$ build a set of measurements
|
||||
\item $M(\vec{x},t)= M_0(\vec{x}) exp(i\phi_0 + i \frac{\pi}{venc} u(\vec{x},t))$
|
||||
\item reconstructed velocity: $u \in \big ( -venc, + venc \big )$
|
||||
\item $VNR \sim 1/venc$
|
||||
\end{itemize}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\textwidth]{images/supra_venc.png}
|
||||
\caption*{Aliased measurements with different $vencs = 120,70,30 \%$ of $u_{max}$}
|
||||
\hfill
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The inverse problem}
|
||||
\begin{itemize}
|
||||
\item Upon this solution $\Longrightarrow$ build a set of measurements
|
||||
\item $M(\vec{x},t)= M_0(\vec{x}) exp(i\phi_0 + i \frac{\pi}{venc} u(\vec{x},t))$
|
||||
\item reconstructed velocity: $u \in \big ( -venc, + venc \big )$
|
||||
\item $VNR \sim 1/venc$
|
||||
\end{itemize}
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.7\textwidth]{images/coartation.png}
|
||||
\caption*{ Aliased measurements with different $vencs = 120,70,30 \%$ of $u_{max}$}
|
||||
\hfill
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\section{The inverse problem}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The inverse problem}
|
||||
\begin{center}
|
||||
Parameter optimization
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The Kalman Filter}
|
||||
\begin{itemize}
|
||||
\item<1-> We use a Reduced Order Unscendent Kalman Filter (ROUKF) to reconstruct the parameter vector $\theta$:
|
||||
|
||||
\onslide<2->
|
||||
\begin{equation*}
|
||||
\hat{\theta} = arg \min_{\theta} J(\theta)
|
||||
\end{equation*}
|
||||
\begin{equation}
|
||||
J(\theta) = \displaystyle \frac{1}{2} || \theta - \theta_0 ||^2_{P_0^{-1}} + \sum_{k=1}^N \frac{1}{2} || Z_k - \mathbb{H} X_k(\theta) ||^2_{W^{-1}}
|
||||
\end{equation}
|
||||
\onslide<4-> Where:
|
||||
\begin{itemize}
|
||||
\item<4-> $Z$ the measurements and $X = (\vec{u} , \pi)$ the state variable
|
||||
\item<5-> $\mathbb{H}$ observation operator
|
||||
\item<6-> $\theta_0$ is the initial guess for the parameters
|
||||
\item<7-> $P_0$ is the associated covariance matrix
|
||||
\item<8-> $W$ is the associated covariance matrix to the meas. noise
|
||||
\end{itemize}
|
||||
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The Kalman Filter}
|
||||
The parameter vector:
|
||||
|
||||
\begin{itemize}
|
||||
\item<1-> Amplitude of the inlet velocity: $U$
|
||||
\item<2-> Only the higher resistence: $R_d$
|
||||
\end{itemize}
|
||||
|
||||
\onslide<4-> $$\theta = (U,\vec{R_d})$$ \\ with $\vec{R_d} = R_{d,l}$ for $l=1,..., \color{red} n_{l-1}$ \\[0.3cm]
|
||||
\onslide<5-> \color{red} Not all the resistences can be recovered at once $\Longrightarrow$ desc. aorta fixed.
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\section{Numerical Experiments}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Numerical Experiments}
|
||||
\begin{center}
|
||||
Numerical Experiments
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Numerical Experiments}
|
||||
\footnotesize
|
||||
\onslide<1-> $\theta_{ref} = (U,\vec{R_d})$ , $U=75$, $\vec{R_d} = (7200,11520,11520)$
|
||||
\begin{columns}
|
||||
\footnotesize
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<2-> \textbf{Test I:} $U_0 = 150$ $\vec{R_{d,0}}= (17520,17520,17520)$
|
||||
\onslide<3-> \includegraphics[width=1.2\textwidth]{images/U_Pb.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/Rd_Pb.png}
|
||||
\end{figure}
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<2-> \textbf{Test II:} $U_0 = 40$ $\vec{R_{d,0}}= (4000,4000,4000)$
|
||||
\onslide<4->
|
||||
\includegraphics[width=1.2\textwidth]{images/U_Pc.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/Rd_Pc.png}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Aliased data}
|
||||
\begin{center}
|
||||
\onslide<1-> What happend when $venc < u_{max}$ ?
|
||||
\begin{figure}
|
||||
\onslide<2-> \includegraphics[width=0.45\textwidth]{images/v120.png}
|
||||
\caption{Measurement set with $venc = 120 \% u_{max}$}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Aliased data}
|
||||
\begin{center}
|
||||
What happend when $venc < u_{max}$ ?
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.45\textwidth]{images/v70.png}
|
||||
\caption{Measurement set with $venc = 70 \% u_{max}$}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Easy example: with $venc = 70 \% u_{max}$}
|
||||
\footnotesize
|
||||
$\theta_{ref} = (U,\vec{R_d})$ , $U=75$, $\vec{R_d} = (7200,11520,11520)$
|
||||
\begin{columns}
|
||||
\footnotesize
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<1-> \textbf{Test I:} $U_0 = 150$ $\vec{R_{d,0}}= (17520,17520,17520)$
|
||||
\onslide<2->
|
||||
\includegraphics[width=1.2\textwidth]{images/U_Pb_V70.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/Rd_Pb_V70.png}
|
||||
\end{figure}
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<1-> \textbf{Test II:} $U_0 = 40$ $\vec{R_{d,0}}= (4000,4000,4000)$
|
||||
\onslide<2->
|
||||
\includegraphics[width=1.2\textwidth]{images/U_Pc_V70.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/Rd_Pc_V70.png}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{The Kalman Filter: A frequency defined functional}
|
||||
\begin{itemize}
|
||||
\item<1-> We proposed a change in the cost functional:
|
||||
\onslide<2->
|
||||
\begin{equation*}
|
||||
\hat{\theta} = arg \min_{\theta} J(\theta)
|
||||
\end{equation*}
|
||||
\begin{equation}
|
||||
J(\theta) = \displaystyle \frac{1}{2} || \theta - \theta_0 ||^2_{P_0^{-1}} + \color{red} \sum_{k=1}^N 1- cos \big ( \frac{\pi}{venc} \cdot ( Z_k - \mathbb{H} X_k ) \big )
|
||||
\end{equation}
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Easy example: with $venc = 70 \% u_{max}$}
|
||||
\footnotesize
|
||||
$\theta_{ref} = (U,\vec{R_d})$ , $U=75$, $\vec{R_d} = (7200,11520,11520)$
|
||||
\begin{columns}
|
||||
\footnotesize
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<1-> \textbf{Test I:} $U_0 = 150$ $\vec{R_{d,0}}= (17520,17520,17520)$
|
||||
\onslide<2->
|
||||
\includegraphics[width=1.2\textwidth]{images/HU_Pb_V70.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/HRd_Pb_V70.png}
|
||||
\end{figure}
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<1-> \textbf{Test II:} $U_0 = 40$ $\vec{R_{d,0}}= (4000,4000,4000)$
|
||||
\onslide<3->
|
||||
\includegraphics[width=1.2\textwidth]{images/HU_Pc_V70.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/HRd_Pc_V70.png}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Aliased data}
|
||||
\begin{center}
|
||||
Or even higher aliasing...
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.45\textwidth]{images/v30.png}
|
||||
\caption{Measurement set with $venc = 30 \% u_{max}$}
|
||||
\end{figure}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Easy example: with $venc = 30 \% u_{max}$}
|
||||
\footnotesize
|
||||
$\theta_{ref} = (U,\vec{R_d})$ , $U=75$, $\vec{R_d} = (7200,11520,11520)$
|
||||
\begin{columns}
|
||||
\footnotesize
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<1-> \textbf{Test I:} $U_0 = 150$ $\vec{R_{d,0}}= (17520,17520,17520)$
|
||||
\onslide<2->
|
||||
\includegraphics[width=1.2\textwidth]{images/HU_Pb_V30.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/HRd_Pb_V30.png}
|
||||
\end{figure}
|
||||
\column{.45\textwidth}
|
||||
\begin{figure}
|
||||
\onslide<1-> \textbf{Test II:} $U_0 = 40$ $\vec{R_{d,0}}= (4000,4000,4000)$
|
||||
\onslide<3->
|
||||
\includegraphics[width=1.2\textwidth]{images/HU_Pc_V30.png}
|
||||
\includegraphics[width=1.2\textwidth]{images/HRd_Pc_V30.png}
|
||||
\end{figure}
|
||||
\end{columns}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
\section{Conclusions}
|
||||
|
||||
\begin{frame}
|
||||
\begin{center}
|
||||
Conclusions
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Conclusions}
|
||||
\footnotesize
|
||||
\begin{itemize}
|
||||
\item<1-> 4D Flow measurements are promising for extracting data via inverse problems
|
||||
\item<2-> Noise and aliasing are the typical artifacts involved.
|
||||
\item<3-> Using a suitable Kalman filter, have shown to bypass aliasing defining the funcional in terms of the frequencies.
|
||||
\end{itemize}
|
||||
|
||||
\onslide<4-> Future Work
|
||||
|
||||
\begin{itemize}
|
||||
\item<5-> To include the capacitancies in the inverse problem (adding some pressure meas.)
|
||||
\item<6-> Real data!
|
||||
\end{itemize}
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\begin{center}
|
||||
Thank you for your time!
|
||||
\end{center}
|
||||
|
||||
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%\begin{frame}
|
||||
% \frametitle{Results}
|
||||
%\footnotesize
|
||||
%
|
||||
%\begin{figure}
|
||||
%\begin{subfigure}{.31\textwidth}
|
||||
% \centering
|
||||
% % \includegraphics[trim=100 80 100 150, clip, width=1.0\textwidth]{images/u_15.png}
|
||||
% \caption*{(a) $\vec{u}_{meas}$}
|
||||
%\end{subfigure}
|
||||
%\begin{subfigure}{.01\textwidth}
|
||||
% \hfill
|
||||
%\end{subfigure}
|
||||
%\begin{subfigure}{.31\textwidth}
|
||||
% \centering
|
||||
% %\includegraphics[trim=100 80 100 150, clip, width=1.0\textwidth]{images/w_15.png}
|
||||
% \caption*{(b) $\vec{w}$}
|
||||
%\end{subfigure}
|
||||
%\begin{subfigure}{.01\textwidth}
|
||||
% \hfill
|
||||
%\end{subfigure}
|
||||
%\begin{subfigure}{.31\textwidth}
|
||||
% \centering
|
||||
% %\includegraphics[trim=100 80 100 150, clip, width=1.0\textwidth]{images/uc_15.png}
|
||||
% \caption*{(c) $\vec{u}_{meas}+\vec{w}$}
|
||||
%\end{subfigure}
|
||||
%\caption{Measurements, corrector fields and corrected velocities for all the cases.}
|
||||
%\label{fig:phantom_resolution}
|
||||
%\end{figure}
|
||||
%
|
||||
%\end{frame}
|
6
presentations/press_8ecm/press.toc
Normal file
@ -0,0 +1,6 @@
|
||||
\babel@toc {english}{}
|
||||
\beamer@sectionintoc {1}{4D flow MRI}{3}{0}{1}
|
||||
\beamer@sectionintoc {2}{The mathematical model}{6}{0}{2}
|
||||
\beamer@sectionintoc {3}{The inverse problem}{23}{0}{3}
|
||||
\beamer@sectionintoc {4}{Numerical Experiments}{37}{0}{4}
|
||||
\beamer@sectionintoc {5}{Conclusions}{56}{0}{5}
|