Exemplo n.º 1
0
    def get_nu_1st_2nd(self):
        import pandas as pd
        filename = './fom/nus_mom.csv'
        fom = pd.read_csv(filename).to_numpy()

        # For now, grep proj and rom relerr at the same time
        if self.info['init'] == 'zero':
            self.info['J0'] = mypostpro.find_nearest(self.outputs['t'][0, :],
                                                     501)
        elif self.info['init'] == 'ic':
            self.info['J0'] = 0
        files_dict = self.cdict('nu')
        nbs = []
        ms = []
        sds = []
        merr = []
        verr = []
        sderr = []
        for nb, fnames in files_dict.items():
            for fname in fnames:
                nuss = mypostpro.read_nuss(fname)
                nuss[:, 2] = nuss[:, 2] / 40
                avgidx1 = mypostpro.find_nearest(nuss[:, 1],
                                                 int(self.info['J0']))
                rom_mean = mypostpro.cmean(nuss[avgidx1:-1, :], 2)
                rom_var = mypostpro.cvar(nuss[avgidx1:-1, :], rom_mean, 2)
                rom_sd = mypostpro.csd(nuss[avgidx1:-1, :], rom_mean, 2)
                [mean_err, var_err,
                 sd_err] = mypostpro.cnuss_err(fom[0][0], fom[0][1], fom[0][1],
                                               rom_mean, rom_var, rom_sd)
            merr.append(mean_err)
            verr.append(var_err)
            sderr.append(sd_err)
            nbs.append(int(nb))
            ms.append(rom_mean)
            sds.append(rom_sd)
        self.nbs, self.nus_ms, self.nus_sds, self.mnuserr, self.stdnuserr = [
            list(tuple)
            for tuple in zip(*sorted(zip(nbs, ms, sds, merr, sderr)))
        ]
        return
Exemplo n.º 2
0
    def compute_momentum(self):
        if self.info['init'] == 'zero':
            self.info['J0'] = mypostpro.find_nearest(self.outputs['t'][0, :],
                                                     501)
            self.coef_mean(self.info['J0'])
            self.coef_variance(self.info['J0'])
        elif self.info['init'] == 'ic':
            self.info['J0'] = 0
            print(self.info['J0'])
            self.outputs['t'] += int(self.info['T0']) - 1
            self.coef_mean(self.info['J0'])
            self.coef_variance(self.info['J0'])

        return
Exemplo n.º 3
0
    fs.append(filenames.pop())

files_dict = setup.create_dict(fs, '^.*_([0-9]*)nb_.*$')
dict_final = sorted(files_dict.items(), key=operator.itemgetter(0))

color_ctr = 0

i = 0
tpath = './nu/'

fig, ax = plt.subplots(1, tight_layout=True)
# get the FOM data
filename = '../../../../fom_nuss/nuss_fom_'+str(int(anchor))
data = mypostpro.read_nuss(filename)
data[:, 2] = data[:, 2]/40
idx1 = mypostpro.find_nearest(data[:, 0], 0)
idx2 = mypostpro.find_nearest(data[:, 0], 1000)
avgidx1 = mypostpro.find_nearest(data[:, 0], 501)
nuss_fom = data[avgidx1:idx2, :]
fom_mean = mypostpro.cmean(nuss_fom[:idx2], 2)
fom_var = mypostpro.cvar(nuss_fom[:idx2], fom_mean, 2)
fom_sd = mypostpro.csd(nuss_fom[:idx2], fom_mean, 2)
print('FOM data at deg '+str(int(anchor-90)), fom_mean, fom_var, fom_sd)
ax.plot(nuss_fom[:, 0], nuss_fom[:, 2], 'k-', mfc="None", label=r'FOM')

for nb, fnames in dict_final:
    for fname in fnames:

        forleg = fname.split('_')
        deg = int(forleg[-2])
Exemplo n.º 4
0
                                '^.*_(.*)rom_.*_' + str(int(anchor - 90)))
color_ctr = 0
tpath = root + '/'

for element in filenames:
    z = re.match(r"^.*_(\d+)nb_.*", element)
    if z.groups()[0] == N:
        fname = element

# Create ROM class with field specified
rom = ROM(fname, field)
rom.get_coef()
K = rom.info['K']
nb = rom.info['nb']
if rom.info['init'] == 'zero':
    T0 = mypostpro.find_nearest(rom.outputs['t'][0, :], 501)
elif rom.info['init'] == 'ic':
    T0 = 0
    rom.outputs['t'] += 500
rom.coef_mean(T0)
rom.coef_variance(T0)
print(rom.outputs['Ta'])
print(rom.outputs['Tv'])

# Create snapshot class
snap = Snapshot(ops_path, field)
fomu = snap.coef(rom.info['K'])
snap.outputs['t'] = np.linspace(500, 1000, rom.info['K'])
umax, umin = snap.extrema()
ul_bounds = [umax, umin]
uas = snap.mean()
Exemplo n.º 5
0
        romu.append(info[2])
        t_grid.append(info[1])

K_match = re.match(r"^.*(\d\d\d)s_.*", fname)
nb_match = re.match(r"^.*_(\d+)nb_.*", fname)
K = int(K_match.groups()[0])
nb = int(nb_match.groups()[0])
T = int(len(romu) / nb)

t_grid = np.reshape(np.array(t_grid).astype(np.float64), (nb, T), order='F')

sp1 = fname.split('_')
print(sp1)
for element in sp1:
    if re.match(r"zero", element):
        T0 = mypostpro.find_nearest(t_grid[0, :], 501)
    elif re.match(r"ic", element):
        T0 = 0
        t_grid += 500

print(f'Information K: {K}, N: {nb}, T:{T}, T0: {T0}')
romu = np.reshape(np.array(romu).astype(np.float64), (nb, T), order='F')

fomu = np.loadtxt(ops_path + 'uk')
fomu = np.reshape(np.array(fomu).astype(np.float64), (int(len(fomu) / K), K),
                  order='F')

umax = np.loadtxt(ops_path + 'umax')
umin = np.loadtxt(ops_path + 'umin')
ul_bounds = [umax, umin]
Exemplo n.º 6
0
        m_his.append(m)
        sd_his.append(sd)

    merr_all = np.array(merr_his)
    m_all = np.array(m_his)
    sderr_all = np.array(sderr_his)
    sd_all = np.array(sd_his)

    fom_m_list = []
    fom_sd_list = []

    for i, test in enumerate(P_test):
        filename = '../../../fom_nuss/nuss_fom_'+str(test)
        data = mypostpro.read_nuss(filename)
        data[:, 2] = data[:, 2]/40
        idx1 = mypostpro.find_nearest(data[:, 0], 0)
        idx2 = mypostpro.find_nearest(data[:, 0], 1000)
        nuss_fom = data[idx1:idx2, :]
        avgidx1 = mypostpro.find_nearest(data[:, 0], 501)
        fom_mean = mypostpro.cmean(nuss_fom[avgidx1:idx2], 2)
        fom_var = mypostpro.cvar(nuss_fom[avgidx1:idx2], fom_mean, 2)
        fom_sd = mypostpro.csd(nuss_fom[avgidx1:idx2], fom_mean, 2)

        fom_m_list.append(fom_mean)
        fom_sd_list.append(fom_sd)

    fig1, ax1 = plt.subplots(1, tight_layout=True)
    fig2, ax2 = plt.subplots(1, tight_layout=True)
    fig3, ax3 = plt.subplots(1, tight_layout=True)
    fig4, ax4 = plt.subplots(1, tight_layout=True)