def HB_write(self):
     assert self.mol, 'Mol needed  for HB plot x axis'
     nIndep = self.gen_data[self.feed][self.run]['numIndep']
     my_run = [i for i in self.HB[self.feed].keys() if i[:-1] in self.run][0]
     HB = self.HB[self.feed][my_run]
     file_description = 'Q       N_HB        dQ          dN_HB'
     if self.box == 'box3':
         self.box = 'box2'
         X = self.getX()
         self.box = 'box3'
     else:
         X = self.getX()
     for pair in HB.keys():
         if type(HB[pair]) == type(int(1)):
             continue
         elif HB[pair][self.box]['mean'] > 0.:
             file_name = 'HB_%s_v_%s_%s.dat'%(pair.replace('->','-').replace(' ',''), self.mol, self.xlabel[0])
             if '95conf' in X.keys():
                 err = X['95conf']
                 print(X)
             else:
                 err = calc95conf(X['stdev'],nIndep)
             writeAGR([X['mean']], [HB[pair][self.box]['mean']],
                      [err], [calc95conf(HB[pair][self.box]['stdev'], nIndep)],
                      [self.feed], file_name, file_description)
Exemple #2
0
 def dHigvX(self):
     U = self.U[self.feed][self.run]
     dH_store = self.dHmixt[self.feed][self.run]
     gen_data = self.gen_data[self.feed][self.run]
     file_name = 'dHig_vapor_to_%s.dat' % self.box
     X = self.getX()
     N = self.N[self.feed][self.run]
     P = self.P[self.feed][self.run]
     N1_tot = sum(N[i][self.box]['mean'] for i in N.keys())
     _rho_ = self.rho[self.feed][self.run]
     rho_total = getRhoTotal(_rho_)
     N1 = {
         'mean':
         N1_tot,
         'stdev':
         math.pow(sum(N[i][self.box]['stdev']**2 for i in N.keys()), 0.5)
     }  # mol
     vapor_box = 'box3'
     N2 = {'mean': sum(N[i]['box3']['mean'] for i in N.keys())}
     N2['stdev'] = math.pow(sum(N[i]['box3']['stdev']**2 for i in N.keys()),
                            0.5)
     nIndep = gen_data['numIndep']
     #       dH = ((U[self.box]['mean']/N1['mean'] - U[vapor_box]['mean']/N2['mean'])*8.314/1000 - 8.314/1000*self.T  -
     #               dH_store['box3-->box2']['mean'])
     H_box1 = U[self.box]['mean'] / N1['mean']
     H_box2 = P['box2']['mean'] * 1000. / rho_total['box2'] * N_av / R[
         '\AA**3*kPa/(mol*K)']
     H_box3 = U[vapor_box]['mean'] / N2['mean'] - P['box3'][
         'mean'] * 1000. / rho_total['box3'] * N_av / R['\AA**3*kPa/(mol*K)']
     dH = (H_box1 - H_box2 - H_box3) * R['kJ/(mol*K)']
     ddH = math.pow(
         (1 / N1['mean'])**2 * U['box1']['stdev']**2 +
         (-1 * U['box1']['mean'] / N1['mean']**2)**2 * N1['stdev']**2 +
         (1 / N2['mean'])**2 * U[vapor_box]['stdev']**2 +
         (-1 * U[vapor_box]['mean'] / N2['mean']**2)**2 * N2['stdev']**2 +
         dH_store['box3-->box2']['stdev']**2, 0.5) * 8.314 / 1000
     dH_mean, dH_stdev = dH, ddH
     file_description = 'dHig     %s    ddHig     %s' % (self.xlabel[0],
                                                         self.xlabel[1])
     if '95conf' not in X.keys():
         X['95conf'] = calc95conf(X['stdev'], nIndep)
     writeAGR([X['mean']], [dH_mean], [X['95conf']],
              [calc95conf(dH_stdev, nIndep)], [self.feed], file_name,
              file_description)
Exemple #3
0
    def dHvX(self):
        P = self.P[self.feed][self.run]
        U = self.U[self.feed][self.run]
        _rho_ = self.rho[self.feed][self.run]
        rho_total = getRhoTotal(_rho_)
        dH = self.dHmixt[self.feed][self.run]
        N = self.N[self.feed][self.run]
        N1_tot = sum(N[i][self.box]['mean'] for i in N.keys())
        N1 = {
            'mean':
            N1_tot,
            'stdev':
            math.pow(sum(N[i][self.box]['stdev']**2 for i in N.keys()), 0.5)
        }  # mol
        gen_data = self.gen_data[self.feed][self.run]
        file_description = 'Q(%s)     %s    dQ     %s' % (
            self.units, self.xlabel[0], self.xlabel[1])
        if self.boxes:
            boxFrom, boxTo = self.boxes


#       else:
#           boxFrom = self.box
#           boxTo = 'box1'
        file_name = 'dH_%s_mixture.dat' % boxTo
        assert 'box' in boxFrom, 'Wrong notation for box'
        transfer = boxFrom + '-->' + boxTo
        transfer2 = 'box2-->box1'
        X = self.getX()
        nIndep = gen_data['numIndep']
        H_zeo = (U['box1']['mean'] / N1_tot + 0.1 * 1000. / rho_total['box1'] *
                 N_av / R['\AA**3*kPa/(mol*K)']) * R['kJ/(mol*K)']
        dH_mean, dH_stdev = (dH[transfer]['mean'] + dH[transfer2]['mean'] -
                             H_zeo,
                             math.pow(
                                 dH[transfer]['stdev']**2 +
                                 4 * dH[transfer2]['stdev']**2, 0.5))
        if '95conf' not in X.keys():
            X['95conf'] = calc95conf(X['stdev'], nIndep)
        writeAGR([X['mean']], [dH_mean], [X['95conf']],
                 [calc95conf(dH_stdev, nIndep)], [self.feed], file_name,
                 file_description)
Exemple #4
0
        # (molec/nm**3)*(mol/molec)*(nm**3*kPa/(mol*K))*K = kPa
        p_mean = rho_mean / N_av * R['nm**3*kPa/(mol*K)'] * args['Temp']
        p_stdev = rho_stdev / N_av * R['nm**3*kPa/(mol*K)'] * args['Temp']

        henry_constant['mean'].append(conc['mean'] / p_mean)
        kH_stdev = conc['mean'] / p_mean * math.pow(
            math.pow(conc['stdev'] / conc['mean'], 2) +
            math.pow(p_stdev / p_mean, 2), 0.5)
        henry_constant['95conf'].append(calc95conf(kH_stdev, numIndep))
        pressure['mean'].append(p_mean)
        pressure['95conf'].append(calc95conf(p_stdev, numIndep))
        if args['verbosity'] > 0:
            print('liquid analysis for feed %s is with mol %s, box %s' %
                  (feed, c_mol, box))
        henry_constant['feed'].append(feed)

    # write out results
    for mol in mol_data.keys():
        file_name = 'kH-mol%s.dat' % (mol)
        file_name = file_name.replace('/', '_')
        x_data = mol_data[mol]['kH']
        y_data = mol_data[mol]['P']
        message = 'kH (g/(mL*kPa)      P (kPa)      d(kH)    d(P)'
        writeAGR(x_data['mean'],
                 y_data['mean'],
                 x_data['95conf'],
                 y_data['95conf'],
                 x_data['feed'],
                 file_name,
                 description=message)