3. Vapor + Liquid + Halite coexistence surface

Calculate VLH surface and properties, and compare result with [Driesner, 2007].

Python code
import os
import numpy as np
import time
import linecache
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import patches
import matplotlib.ticker as ticker
from matplotlib.patches import Patch
from matplotlib.ticker import MultipleLocator
from tabulate import tabulate
import copy
import warnings
warnings.filterwarnings("ignore", category=RuntimeWarning)
# 3d plot
import helpfunc
mpl.rcParams['font.family'] = 'Arial'  # default font family
mpl.rcParams['mathtext.fontset'] = 'cm'  # font for math
fmt_figs = []  # ['svg','pdf']
figpath = '.'
result_path='../../../gallery_H2ONaCl/pT'
def savefig(figname):
    for fmt_fig in fmt_figs:
        figname_full = '%s/%s.%s' % (figpath, figname, fmt_fig)
        plt.savefig(figname_full, bbox_inches='tight')
        print('figure saved: ', figname_full)
compare = lambda a,b : float(str('%.6e'%(a)))-float(str('%.6e'%(b)))
# Import package of xThermo
from xThermo import H2O
from xThermo import NaCl
from xThermo import H2ONaCl
sw_84 = H2ONaCl.cH2ONaCl("IAPS84")
sw_95 = H2ONaCl.cH2ONaCl("IAPWS95")

def plot_3d(sw,scale='linear'):
    fig=plt.figure(figsize=(14,14))
    ax = fig.add_subplot(111,projection='3d',facecolor='None')
    xcenter=1 # X<1% wt.% use log scale, if X>=1% wt.% NaCl, use linear scale
    axtrans=[]
    if(scale=='loglinear'):
        axtrans=helpfunc.set_axis_diagram_3D_loglinearx(ax,xcenter=xcenter,ratio_log_lin=(1,1),zlim=(sw.pmin()/1E5,600),xMajor_loc_log=1,xMajor_loc_linear=10,xMinor_loc_linear=2,zMajor_loc=100,zMinor_loc=20,yMajor_loc=200,xlim=(1E-10,100),xlabel='log$_{\mathregular{10}}$(Wt.% NaCl)')
    else:
        helpfunc.set_axis_diagram_3D(ax,zlim=(sw.pmin()/1E5,600),zMajor_loc=100,zMinor_loc=20)
    transform_X = lambda X : helpfunc.data2axis_loglin(axtrans,X) if(scale=='loglinear') else X
    # calculate boundary surface of VLH
    T = np.append(np.linspace(H2ONaCl.T_MIN_VLH, sw.Tmax_VLH()-10, 100), np.linspace(sw.Tmax_VLH()-10, sw.Tmax_VLH(), 50))
    P_vlh = np.array(sw.P_VLH(T))
    Xl_vlh, Xv_vlh = np.array(sw.X_VLH(T,P_vlh))
    # plot
    n_log,n_linear=20,40
    X = np.linspace(H2ONaCl.X_MIN, H2ONaCl.X_MAX, n_log+n_linear)
    TT,XX = np.meshgrid(T, X)
    PP = np.zeros_like(TT)
    for i in range(0,PP.shape[0]):
        PP[i,:]=P_vlh
    # 1. vapor -> liquid region
    for j in range(0,PP.shape[1]):
        XX[:,j] = np.append(10**np.linspace(np.log10(Xv_vlh[j]),np.log10(xcenter/100),n_log), np.linspace(xcenter/100,Xl_vlh[j],n_linear))
    ax.plot_wireframe(transform_X(XX*100),TT-273.15,PP/1E5, color='darkblue',lw=1,label='V+L+H: vapor->liquid')
    # ax.plot_surface(transform_X(XX*100),TT-273.15,PP/1E5,ec='gray',linewidth=0.1)
    # 2. liquid -> halite region
    for j in range(0,PP.shape[1]):
        XX[:,j] = np.linspace(Xl_vlh[j], 1,len(X))
    ax.plot_wireframe(transform_X(XX*100),TT-273.15,PP/1E5, color='orange',lw=1,label='V+L+H: liquid->halite')
    # ax.plot_surface(transform_X((XX*100)),TT-273.15,PP/1E5,ec='gray',linewidth=0.1)
    # ax.plot(X_haliteLiquidus*100, T-273.15, P/1E5,color='orange',label='V+L+H: liquid',lw=1,zorder=10)
    # VLH: halite
    ax.plot(transform_X(Xl_vlh*0+100), T-273.15, P_vlh/1E5, color='k',label='VLH: halite',lw=2)
    # VLH: liquid
    ax.plot(transform_X(Xl_vlh*100), T-273.15, P_vlh/1E5, color='g',label='VLH: liquid',lw=2)
    # VLH: vapor
    ax.plot(transform_X(Xv_vlh*100), T-273.15, P_vlh/1E5, color='r',label='VLH: vapor',lw=2,zorder=11)
    # project halite saturated vapor on X-T plane
    ax.plot(transform_X(Xv_vlh*100), T-273.15, T*0+sw.pmin()/1E5, color='r',label='Fig.11 of Driesner & Heinrich(2007)',ls=(0,(2,1)),lw=2)
    leg=ax.legend()
    # change legend handle of wireframe of phase boundaries to wireframe hatch
    for i in [0,1]:
        leg.legendHandles[i]=Patch(facecolor='white', edgecolor=leg.legendHandles[i]._color,linewidth=0.0,label=leg.texts[i]._text,hatch='++++')
    ax.legend(handles=leg.legendHandles, loc='upper left',ncol=7)
    # text
    helpfunc.text3d(ax,(transform_X(1E-8),800,sw.pmin()/1E5),"P$_{min}$=%.0f bar"%(sw.pmin()/1E5),size=0.07,angle=-90,ec='None',fc='k')
    savefig('PhaseBoundary_VLH_3D_%s'%(scale))

General 3D view

plot_3d(sw_84,scale='linear')
plot_3d(sw_84,scale='loglinear')
  • plot VLH
  • plot VLH

Benchmark comparison

Compare result of xThermo and [Driesner, 2007], and also compare result based on different EOS of water.

Python code
def contourf_phase(ax,TT,pp,phase,phase_name,ax_cb=None):
    cmap = plt.get_cmap("Dark2")
    # customize cmap
    colors=list(copy.deepcopy(cmap.colors))
    colors[0:8]=['lightblue','red','lightgreen','lightgray','violet','yellow','lightcyan','lightcyan']
    cmap.colors=tuple(colors)
    CS=ax.contourf(TT,pp,phase, cmap=cmap,vmin=phase.min()-0.5, vmax=phase.max()+0.5, levels=np.linspace(phase.min()-0.5,phase.max()+0.5,len(phase_name)+1))
    if(ax_cb is None): ax_cb = ax.inset_axes([0,1.03,1,0.05])
    cb=plt.colorbar(CS, cax=ax_cb, orientation='horizontal',ticklocation='top',ticks=np.arange(phase.min(),phase.max()+1))
    cb.ax.set_xticklabels(phase_name)
    return CS,ax_cb,cb
def plot_props_VLH(sw,water,mmc5='../Driesner2007a/1-s2.0-S0016703707002943-mmc5.txt',mmc3='../Driesner2007b/1-s2.0-S0016703707002955-mmc3.txt'):
    if(not os.path.exists(mmc5)):
        print('Please set correct mmc1 file path: %s'%(mmc5))
        exit()
    data=np.loadtxt(mmc5, skiprows=7)
    T0_5,P0_5,XV0_5,XL0_5=data[:,0]+273.15,data[:,1]*1E5,data[:,2],data[:,3]
    if(not os.path.exists(mmc3)):
        print('Please set correct mmc1 file path: %s'%(mmc3))
        exit()
    data=np.loadtxt(mmc3, skiprows=5)
    T0,P0,XV0,rhoV0,hV0,XL0,rhoL0,hL0=data[:,0]+273.15,data[:,1]*1E5,data[:,2],data[:,3],data[:,4],data[:,5],data[:,6],data[:,7]
    # calculate
    T = np.linspace(H2ONaCl.T_MIN_VLH, H2ONaCl.T_MAX_VLH, 500)
    P = np.array(sw.P_VLH(T))
    # X_haliteLiquidus=np.array(sw.X_HaliteLiquidus(T,P))
    XL_,XV_ = np.array(sw.X_VLH(T,P))
    rhoV_, rhoL_ = np.array(sw.Rho_phase(T, P, XV_, H2ONaCl.Vapor)), np.array(sw.Rho_phase(T, P, XL_, H2ONaCl.Liquid))
    hV_, hL_     = np.array(sw.H_phase(T, P, XV_, H2ONaCl.Vapor)), np.array(sw.H_phase(T, P, XL_, H2ONaCl.Liquid))

    # plot
    fig,axes = plt.subplots(1,6,figsize=(30,4),gridspec_kw={'wspace':0.1},sharey=False)
    # 1. liquid salinity
    ax=axes[0]
    line=helpfunc.plot_coloredline(ax,np.array(sw.Wt2Mol(XL_)), T-273.15, P/1E5,cmap='rainbow')
    ax_cb = ax.inset_axes([0.8,0.15,0.02,0.6])
    fig.colorbar(line,cax = ax_cb,label='Pressure (bar)')
    ax.plot(XL0_5, T0_5-273.15,color='gray',ls='dashed', marker='.',markersize=5,mec='w',mfc='k',markeredgewidth=0.3,label='Driesner & Heinrich(2007)')
    ax.xaxis.set_major_locator(MultipleLocator(0.2))
    ax.xaxis.set_minor_locator(MultipleLocator(0.04))
    ax.set_xlabel('Liquid composition X$_{\mathregular{NaCl}}$ (mole fraction)')
    # 2. vapor salinity
    ax=axes[1]
    helpfunc.plot_coloredline(ax,np.array(sw.Wt2Mol(XV_)), T-273.15, P/1E5,cmap='rainbow')
    ax.set_xscale('log')
    ax.plot(XV0_5, T0_5-273.15,color='gray',ls='dashed', marker='.',markersize=5,mec='w',mfc='k',markeredgewidth=0.3,label='Driesner & Heinrich(2007)')
    ax.set_xlabel('Vapor composition X$_{\mathregular{NaCl}}$ (mole fraction)')
    # 3. liquid density
    ax=axes[2]
    helpfunc.plot_coloredline(ax,rhoL_, T-273.15, P/1E5,cmap='rainbow')
    ax.plot(rhoL0, T0-273.15,color='gray',ls='dashed', marker='.',markersize=5,mec='w',mfc='k',markeredgewidth=0.3,label='Driesner(2007)')
    ax.xaxis.set_major_locator(MultipleLocator(100))
    ax.xaxis.set_minor_locator(MultipleLocator(20))
    ax.set_xlabel('Liquid density (kg/m$^{\mathregular{3}}$)')
    # 4. Vapor density
    ax=axes[3]
    helpfunc.plot_coloredline(ax,rhoV_, T-273.15, P/1E5,cmap='rainbow')
    ax.plot(rhoV0, T0-273.15,color='gray',ls='dashed', marker='.',markersize=5,mec='w',mfc='k',markeredgewidth=0.3,label='Driesner(2007)')
    ax.xaxis.set_major_locator(MultipleLocator(20))
    ax.xaxis.set_minor_locator(MultipleLocator(4))
    ax.set_xlabel('Vapor density (kg/m$^{\mathregular{3}}$)')
    # 5. liquid enthalpy
    ax=axes[4]
    helpfunc.plot_coloredline(ax,hL_/1E6, T-273.15, P/1E5,cmap='rainbow')
    ax.plot(hL_/1E6, T-273.15,'.')
    ax.plot(hL0/1E6, T0-273.15,color='gray',ls='dashed', marker='.',markersize=5,mec='w',mfc='k',markeredgewidth=0.3,label='Driesner(2007)')
    ax.xaxis.set_major_locator(MultipleLocator(0.5))
    ax.xaxis.set_minor_locator(MultipleLocator(0.1))
    ax.set_xlabel('Liquid enthalpy (MJ/kg)')
    # 6. vapor enthalpy
    ax=axes[5]
    helpfunc.plot_coloredline(ax,hV_/1E6, T-273.15, P/1E5,cmap='rainbow')
    ax.plot(hV0/1E6, T0-273.15,color='gray',ls='dashed', marker='.',markersize=5,mec='w',mfc='k',markeredgewidth=0.3,label='Driesner(2007)')
    ax.xaxis.set_major_locator(MultipleLocator(0.5))
    ax.xaxis.set_minor_locator(MultipleLocator(0.1))
    ax.set_xlabel('Vapor enthalpy (MJ/kg)')

    for ax in axes:
        ax.yaxis.set_major_locator(MultipleLocator(100))
        ax.yaxis.set_minor_locator(MultipleLocator(20))
        ax.grid(which='major',lw=0.04,color='k')
        ax.grid(which='minor',lw=0.04,color='gray')
        ax.axhline(H2ONaCl.T_MIN_VLH-273.15,label='T=%.2f $^{\circ}$C, p=1 bar'%(H2ONaCl.T_MIN_VLH-273.15),color='r',ls='dotted')
        ax.legend()
        # ax.set_ylim(300,T.max()-273.15 + 20)
    axes[0].set_ylabel('Temperature ($^{\circ}$C)')
    savefig('VLH_props_%s'%(sw.name_backend()))

    # let's checkout what happens in the (low T, low p) and (high T, low p) region for the liquid enthalpy
    q1,q2 = np.array(sw.q1q2_Tstar_H(P, XL_))
    q1_v,q2_v = np.array(sw.q1q2_Tstar_H(P, XV_))
    Tstar_H,Tstar_H_v = q1 + q2*(T-273.15) + 273.15, q1_v + q2_v*(T-273.15) + 273.15
    n1,n2 = np.array(sw.n1n2_Tstar_V(P, XL_))
    n1_v,n2_v = np.array(sw.n1n2_Tstar_V(P, XV_))
    Tstar_V,Tstar_V_v = n1 + n2*(T-273.15) + 273.15, n1_v + n2_v*(T-273.15) + 273.15
    T_water,p_water=np.linspace(np.array([T.min(),Tstar_H.min(),Tstar_H_v.min(),Tstar_V.min(),Tstar_V_v.min()]).min(),np.array([T.max(),Tstar_H.max(),Tstar_H_v.max(),Tstar_V.max(),Tstar_V_v.max()]).max()+100,1000), np.linspace(np.log10(P.min()),np.log10(P.max())+0.1,500)
    TT,pp=np.meshgrid(T_water,10**p_water)
    phase,rho,h = np.zeros_like(TT),np.zeros_like(TT),np.zeros_like(TT)
    for i in range(0,TT.shape[0]):
        for j in range(0,TT.shape[1]):
            props = water.UpdateState_TPX(TT[i][j], pp[i][j])
            phase[i][j]=props.phase
            rho[i][j]=props.Rho
            h[i][j]=props.H
    # get phase names
    phase_unique = np.sort(np.unique(phase))
    phase_name = ['']*len(phase_unique)
    for i,phase0 in enumerate(phase_unique):
        phase[phase==phase0]=i+phase_unique.max()+10
        phase_name[i]=water.phase_name(int(phase0))
    fig,axes=plt.subplots(1,3,figsize=(21,5),gridspec_kw={'wspace':0.05},sharey=True)
    axes[0].set_ylabel('Pressure (bar)')
    l_L,l_V=[],[]
    for ax,prop, cmap,label in zip(axes, [phase, rho, h/1E6],['Paired','YlGnBu_r','RdBu'],['Phase','Density (kg/m$^{\mathregular{3}}$)','Specific enthalpy (MJ/kg)']):
        CS=[]
        if(ax==axes[0]):
            CS,ax_cb,cb=contourf_phase(ax,TT-273.15,pp/1E5,prop,phase_name,ax.inset_axes([0,1.03,1,0.03]))
        else:
            CS=ax.contourf(TT-273.15,pp/1E5,prop,levels=50,cmap=cmap)
            ax_cb=ax.inset_axes([0,1.02,1,0.03])
            plt.colorbar(CS,cax=ax_cb,label=label,orientation='horizontal')
            ax_cb.xaxis.set_label_position('top')
            ax_cb.xaxis.set_ticks_position('top')
        l_L,=ax.plot(Tstar_H-273.15, P/1E5,lw=2,label='$T^*_h$: liquid')
        l_V,=ax.plot(Tstar_H_v-273.15, P/1E5,lw=2,label='$T^*_h$: vapor')
        ax.plot(Tstar_V-273.15, P/1E5,lw=2,ls='dashed',label='$T^*_V$: liquid')
        ax.plot(Tstar_V_v-273.15, P/1E5,lw=2,ls='dashed',label='$T^*_V$: vapor')
        ax.plot(T-273.15, P/1E5,lw=0.8,marker='.',markevery=20,mec='w',mew=0.5,ms=10,label='$T_{VLH}$')
        ax.set_yscale('log')
        ax.set_xscale('log')
        ax.set_xlabel('Temperature ($^{\circ}$C)')
    axes[0].legend(loc='center left') #,bbox_to_anchor=[1.01,0]
    # x0,y0=Tstar_H[int(len(Tstar_H)/4)]-273.15,P[int(len(Tstar_H)/4)]/1E5
    # axes[0].annotate("$T^{*}_h - p$ path of\nsaturated liquid phase\non VLH coexistence",
    #                     xy=(x0,y0),xytext=(x0-100,y0), ha='right',va='center',bbox={'fc':'None','ec':l_L.get_color()},fontsize=14,fontweight='bold',
    #                     arrowprops=dict(arrowstyle="->",connectionstyle="arc3"),)
    # x0,y0=Tstar_H_v[int(len(Tstar_H)/5)]-273.15,P[int(len(Tstar_H)/5)]/1E5
    # axes[0].annotate("$T^{*}_h - p$ path of\nsaturated vapor phase\non VLH coexistence",
    #                  xy=(x0,y0),xytext=(x0,y0/100), ha='center',va='center',bbox={'fc':'None','ec':l_V.get_color()},fontsize=14,fontweight='bold',
    #                  arrowprops=dict(arrowstyle="->",connectionstyle="arc3"),)
    savefig('Tstar_VLH_%s'%(sw.name_backend()))
def mscatter(ax,x,y, m=None, **kw):
    import matplotlib.markers as mmarkers
    if not ax: ax=plt.gca()
    sc = ax.scatter(x,y,**kw)
    if (m is not None) and (len(m)==len(x)):
        paths = []
        for marker in m:
            if isinstance(marker, mmarkers.MarkerStyle):
                marker_obj = marker
            else:
                marker_obj = mmarkers.MarkerStyle(marker)
            path = marker_obj.get_path().transformed(
                marker_obj.get_transform())
            paths.append(path)
        sc.set_paths(paths)
    return sc
def plot_err(ax,x,y,data,label='',cmap='rainbow',markers_VL=None,scale_data='log',vmin=1E-6,vmax=1):
    # plot difference between xThermo and Driesner(2007b)
    norm = None
    if(scale_data=='log'):
        norm = mpl.colors.LogNorm(vmin=vmin, vmax=vmax)
    else:
        norm = mpl.colors.CenteredNorm(vcenter=1)
        cmap = 'seismic'
    CS=mscatter(ax, x, y,c=data,m=markers_VL,cmap=cmap,norm=norm,zorder=3)
    ax_cb=ax.inset_axes([0,1.02,1,0.05])
    plt.colorbar(CS,cax=ax_cb,label=label,orientation='horizontal',extend='both')
    ax_cb.xaxis.set_label_position('top')
    ax_cb.xaxis.set_ticks_position('top')
    if(markers_VL is not None):
        ax.set_xlim(ax.get_xlim())
        ax.set_ylim(ax.get_ylim())
        ax.plot(-1,-1,markers_VL[0],label='Vapor')
        ax.plot(-1,-1,markers_VL[-1],label='Liquid')
        ax.legend(ncol=2)
def benchmark_VLH(sw,mmc3='../Driesner2007b/1-s2.0-S0016703707002955-mmc3.txt'):
    # compare
    if(not os.path.exists(mmc3)):
        print('Please set correct mmc1 file path: %s'%(mmc3))
        exit()
    data=np.loadtxt(mmc3, skiprows=5)
    T0,P0,XV0,rhoV0,hV0,XL0,rhoL0,hL0=data[:,0]+273.15,data[:,1]*1E5,data[:,2],data[:,3],data[:,4],data[:,5],data[:,6],data[:,7]
    ind=(T0>sw.Tmin_VLH())
    # only compare the result in valid range of pressure: >1bar
    T0,P0,XV0,rhoV0,hV0,XL0,rhoL0,hL0 = T0[ind],P0[ind],XV0[ind],rhoV0[ind],hV0[ind],XL0[ind],rhoL0[ind],hL0[ind]
    # 1. calculate halite liquidus
    P_=np.array(sw.P_VLH(T0))
    XL_,XV_ = np.array(sw.X_VLH(T0,P_))
    XL_mol_,XV_mol_ = np.array(sw.Wt2Mol(XL_)), np.array(sw.Wt2Mol(XV_))
    # 2. calculate saturated liquid density and vapor density
    rhoV_, rhoL_ = np.array(sw.Rho_phase(T0, P_, XV_, H2ONaCl.Vapor)), np.array(sw.Rho_phase(T0, P_, XL_, H2ONaCl.Liquid))
    hV_, hL_     = np.array(sw.H_phase(T0, P_, XV_, H2ONaCl.Vapor)), np.array(sw.H_phase(T0, P_, XL_, H2ONaCl.Liquid))
    # compare result dict
    Data0 = {'p':P0/1E5,'XV':XV0,'rhoV':rhoV0,'hV':hV0,'XL':XL0,'rhoL':rhoL0,'hL':hL0}
    Data_ = {'p':P_/1E5,'XV':XV_mol_,'rhoV':rhoV_,'hV':hV_,'XL':XL_mol_,'rhoL':rhoL_,'hL':hL_}
    Err,RErr={},{}
    for key in Data0.keys(): Err[key],RErr[key] = Data0[key]-Data_[key], np.abs(Data0[key]-Data_[key])/(Data0[key])*100.0
    # print to file
    fpout = open('%s/mmc3_%s.csv'%(result_path,sw.name_backend()),'w')
    fpout.write('T[C],P(Driesner)[bar],P(xThermo),P(diff)[bar],XV(Driesner)[mol],XV(xThermo)[mol],XV(diff)[mol],RhoV(Driesner)[kg/m3],RhoV(xThermo),RhoV(err),HV(Driesner)[J/kg],HV(xThermo),HV(err),XL(Driesner)[mol],XL(xThermo)[mol],XL(diff)[mol],RhoL(Driesner)[kg/m3],RhoL(xThermo),RhoL(err),HL(Driesner)[J/kg],HL(xThermo),HL(err)\n')
    for i in range(0,len(T0)):
        fpout.write('%.6e'%(T0[i]-273.15))
        for key in Data0.keys():
            fpout.write(',%.6e,%.6e,%.6e'%(Data0[key][i], Data_[key][i],compare(Data0[key][i],Data_[key][i])))
        fpout.write('\n')
    fpout.close()
    # plot difference
    offset_p = -100
    fig,axes=plt.subplots(1,4,figsize=(21,5),sharey=True,gridspec_kw={'wspace':0.1})
    plot_err(axes[0], T0, P0/1E5, RErr['p'],'Relative difference: Pressure (%)')
    markers=np.repeat(["o", "*"], len(T0))
    plot_err(axes[1], np.append(T0,T0), np.append(P0/1E5,P0/1E5+offset_p), np.append(RErr['XV'],RErr['XL']),'Relative difference: Composition (%)',markers_VL=markers)
    plot_err(axes[2], np.append(T0,T0), np.append(P0/1E5,P0/1E5+offset_p), np.append(RErr['rhoV'],RErr['rhoL']),'Relative difference: Density (%)',markers_VL=markers)
    plot_err(axes[3], np.append(T0,T0), np.append(P0/1E5,P0/1E5+offset_p), np.append(RErr['hV'],RErr['hL']),'Relative difference: Specific enthalpy (%)',markers_VL=markers)
    for ax in axes:
        ax.yaxis.set_major_locator(MultipleLocator(100))
        ax.yaxis.set_minor_locator(MultipleLocator(20))
        ax.xaxis.set_major_locator(MultipleLocator(100))
        ax.xaxis.set_minor_locator(MultipleLocator(20))
        ax.grid(which='major',lw=0.04,color='k')
        ax.grid(which='minor',lw=0.04,color='gray')
        ax.set_xlabel('Temperature ($^{\circ}$C)')
    axes[0].set_ylabel('Pressure (bar)')
    savefig('diff_VLH')
    # statistics of the difference
    table=[]
    for key,name in zip(list(Err.keys()),['Pressure (bar)','XV (mole fraction)','RhoV (kg/m3)','HV (J/kg)','XL (mole fraction)','RhoL (kg/m3)','HL (J/kg)']):
        RErr[key] = RErr[key][~(np.isnan(RErr[key]) | np.isinf(RErr[key]))]
        table.append([name,Err[key].min(),Err[key].max(),RErr[key].min(),RErr[key].max()])
    print(tabulate(table, headers=['Critical property', 'Err. Min', 'Err. Max','RE. Min(%)','RE. Max(%)'],numalign="right",floatfmt=".6f"))

Based on IAPS84 EOS

plot_props_VLH(sw_84,H2O.cIAPS84())
benchmark_VLH(sw_84)
  • plot VLH
  • plot VLH
  • plot VLH

Out:

Critical property      Err. Min      Err. Max    RE. Min(%)    RE. Max(%)
-------------------  ----------  ------------  ------------  ------------
Pressure (bar)        -0.000049      0.000047      0.000000      0.000046
XV (mole fraction)    -0.000000      0.000000      0.000001      0.000086
RhoV (kg/m3)          -0.000047      0.000051      0.000000      0.000044
HV (J/kg)             -0.476585      0.496180      0.000000      0.000017
XL (mole fraction)    -0.000000      0.000000      0.000000      0.000035
RhoL (kg/m3)          -2.586687      0.573672      0.000069      0.221916
HL (J/kg)             -0.397883  31484.746126      0.000000      2.880293

Based on IAPWS95 EOS

plot_props_VLH(sw_95,H2O.cIAPWS95_CoolProp()) benchmark_VLH(sw_95)

Warning

The \(T^*_h\) equation (22) in [Driesner, 2007] seems not valid for saturated liquid phase on VLH surface when in (low T, low p) and (high T, low p) regions, because the corrected \(T^*_h-p\) path cross the boiling curve of water (see above), therefore there are some value jupms on liquid enthalpy curve. However, [Driesner, 2007] gives some smooth values in low-p regions (see dashed lines with dots in above figures), how to get such values? Well, for the hydrothermal modeling, this issue is not that critical because the pressure always high (>=50bar).

Result table

Result data calculated by xThermo based on both water EOS of IAPS84 and IAPWS95.

Table 17 Comparison between result of [Driesner, 2007] and result calculated by xThermo.

T[C]

P(Driesner)[bar]

P(xThermo)

P(diff)[bar]

XV(Driesner)[mol]

XV(xThermo)[mol]

XV(diff)[mol]

RhoV(Driesner)[kg/m3]

RhoV(xThermo)

RhoV(err)

HV(Driesner)[J/kg]

HV(xThermo)

HV(err)

XL(Driesner)[mol]

XL(xThermo)[mol]

XL(diff)[mol]

RhoL(Driesner)[kg/m3]

RhoL(xThermo)

RhoL(err)

HL(Driesner)[J/kg]

HL(xThermo)

HL(err)

1.100000e+02

1.076843e+00

1.076843e+00

0.000000e+00

1.224200e-12

1.224200e-12

0.000000e+00

6.178428e-01

6.178428e-01

0.000000e+00

2.695338e+06

2.695338e+06

0.000000e+00

1.086770e-01

1.086770e-01

0.000000e+00

1.165615e+03

1.168202e+03

-2.587000e+00

3.887576e+05

3.887576e+05

0.000000e+00

1.200000e+02

1.480065e+00

1.480065e+00

0.000000e+00

3.877098e-12

3.877098e-12

0.000000e+00

8.303800e-01

8.303800e-01

0.000000e+00

2.711467e+06

2.711467e+06

0.000000e+00

1.101720e-01

1.101720e-01

0.000000e+00

1.161810e+03

1.163876e+03

-2.066000e+00

4.210115e+05

4.210115e+05

0.000000e+00

1.300000e+02

1.996592e+00

1.996592e+00

0.000000e+00

1.130252e-11

1.130252e-11

0.000000e+00

1.096609e+00

1.096609e+00

0.000000e+00

2.727177e+06

2.727177e+06

0.000000e+00

1.117528e-01

1.117528e-01

0.000000e+00

1.157922e+03

1.159551e+03

-1.629000e+00

4.531268e+05

4.531268e+05

0.000000e+00

1.400000e+02

2.649862e+00

2.649862e+00

0.000000e+00

3.059775e-11

3.059775e-11

0.000000e+00

1.426443e+00

1.426443e+00

0.000000e+00

2.742413e+06

2.742413e+06

0.000000e+00

1.134206e-01

1.134206e-01

0.000000e+00

1.153969e+03

1.155221e+03

-1.252000e+00

4.850981e+05

4.850981e+05

0.000000e+00

1.500000e+02

3.466540e+00

3.466540e+00

0.000000e+00

7.743987e-11

7.743987e-11

0.000000e+00

1.831081e+00

1.831081e+00

0.000000e+00

2.757117e+06

2.757117e+06

0.000000e+00

1.151778e-01

1.151778e-01

0.000000e+00

1.149964e+03

1.150889e+03

-9.250000e-01

5.169183e+05

5.169183e+05

0.000000e+00

1.600000e+02

4.476529e+00

4.476529e+00

0.000000e+00

1.842399e-10

1.842399e-10

0.000000e+00

2.323025e+00

2.323025e+00

0.000000e+00

2.771227e+06

2.771227e+06

0.000000e+00

1.170283e-01

1.170283e-01

0.000000e+00

1.145922e+03

1.146563e+03

-6.410000e-01

5.485789e+05

5.485789e+05

0.000000e+00

1.700000e+02

5.712858e+00

5.712858e+00

0.000000e+00

4.140402e-10

4.140402e-10

0.000000e+00

2.916075e+00

2.916075e+00

0.000000e+00

2.784682e+06

2.784682e+06

0.000000e+00

1.189769e-01

1.189769e-01

0.000000e+00

1.141856e+03

1.142257e+03

-4.010000e-01

5.800697e+05

5.800697e+05

0.000000e+00

1.800000e+02

7.211468e+00

7.211468e+00

0.000000e+00

8.828598e-10

8.828598e-10

0.000000e+00

3.625293e+00

3.625293e+00

0.000000e+00

2.797422e+06

2.797422e+06

0.000000e+00

1.210297e-01

1.210297e-01

0.000000e+00

1.137784e+03

1.137991e+03

-2.070000e-01

6.113793e+05

6.113793e+05

0.000000e+00

1.900000e+02

9.010874e+00

9.010874e+00

0.000000e+00

1.793958e-09

1.793958e-09

0.000000e+00

4.466951e+00

4.466951e+00

0.000000e+00

2.809388e+06

2.809388e+06

0.000000e+00

1.231938e-01

1.231938e-01

0.000000e+00

1.133724e+03

1.133793e+03

-6.900000e-02

6.424942e+05

6.424942e+05

0.000000e+00

2.000000e+02

1.115172e+01

1.115172e+01

0.000000e+00

3.488547e-09

3.488547e-09

0.000000e+00

5.458452e+00

5.458452e+00

0.000000e+00

2.820528e+06

2.820528e+06

0.000000e+00

1.254775e-01

1.254775e-01

0.000000e+00

1.129696e+03

1.129695e+03

1.000000e-03

6.733992e+05

6.733992e+05

0.000000e+00

2.100000e+02

1.367623e+01

1.367623e+01

0.000000e+00

6.519220e-09

6.519220e-09

0.000000e+00

6.618226e+00

6.618226e+00

0.000000e+00

2.830793e+06

2.830793e+06

0.000000e+00

1.278900e-01

1.278900e-01

0.000000e+00

1.125722e+03

1.125718e+03

4.000000e-03

7.040770e+05

7.040769e+05

1.000000e-01

2.200000e+02

1.662757e+01

1.662757e+01

0.000000e+00

1.175532e-08

1.175532e-08

0.000000e+00

7.965607e+00

7.965607e+00

0.000000e+00

2.840144e+06

2.840144e+06

0.000000e+00

1.304413e-01

1.304413e-01

0.000000e+00

1.121822e+03

1.121817e+03

5.000000e-03

7.345074e+05

7.345074e+05

0.000000e+00

2.300000e+02

2.004914e+01

2.004914e+01

0.000000e+00

2.053458e-08

2.053458e-08

0.000000e+00

9.520674e+00

9.520674e+00

0.000000e+00

2.848552e+06

2.848552e+06

0.000000e+00

1.331423e-01

1.331423e-01

0.000000e+00

1.118017e+03

1.118012e+03

5.000000e-03

7.646678e+05

7.646678e+05

0.000000e+00

2.400000e+02

2.398373e+01

2.398373e+01

0.000000e+00

3.488410e-08

3.488410e-08

0.000000e+00

1.130405e+01

1.130405e+01

0.000000e+00

2.855997e+06

2.855997e+06

0.000000e+00

1.360050e-01

1.360050e-01

0.000000e+00

1.114335e+03

1.114330e+03

5.000000e-03

7.945321e+05

7.945321e+05

0.000000e+00

2.500000e+02

2.847274e+01

2.847274e+01

0.000000e+00

5.784812e-08

5.784812e-08

0.000000e+00

1.333665e+01

1.333665e+01

0.000000e+00

2.862472e+06

2.862472e+06

0.000000e+00

1.390418e-01

1.390418e-01

0.000000e+00

1.110802e+03

1.110796e+03

6.000000e-03

8.240708e+05

8.240708e+05

0.000000e+00

2.600000e+02

3.355527e+01

3.355527e+01

0.000000e+00

9.398356e-08

9.398356e-08

0.000000e+00

1.563936e+01

1.563936e+01

0.000000e+00

2.867988e+06

2.867988e+06

0.000000e+00

1.422660e-01

1.422660e-01

0.000000e+00

1.107447e+03

1.107441e+03

6.000000e-03

8.532506e+05

8.532506e+05

0.000000e+00

2.700000e+02

3.926720e+01

3.926720e+01

0.000000e+00

1.501216e-07

1.501216e-07

0.000000e+00

1.823261e+01

1.823261e+01

0.000000e+00

2.872567e+06

2.872567e+06

0.000000e+00

1.456913e-01

1.456913e-01

0.000000e+00

1.104301e+03

1.104295e+03

6.000000e-03

8.820340e+05

8.820340e+05

0.000000e+00

2.800000e+02

4.564030e+01

4.564030e+01

0.000000e+00

2.365514e-07

2.365514e-07

0.000000e+00

2.113582e+01

2.113582e+01

0.000000e+00

2.876252e+06

2.876252e+06

0.000000e+00

1.493322e-01

1.493322e-01

0.000000e+00

1.101398e+03

1.101393e+03

5.000000e-03

9.103795e+05

9.103795e+05

0.000000e+00

2.900000e+02

5.270133e+01

5.270133e+01

0.000000e+00

3.688709e-07

3.688709e-07

0.000000e+00

2.436673e+01

2.436673e+01

0.000000e+00

2.879107e+06

2.879107e+06

0.000000e+00

1.532036e-01

1.532036e-01

0.000000e+00

1.098773e+03

1.098767e+03

6.000000e-03

9.382411e+05

9.382411e+05

0.000000e+00

3.000000e+02

6.047119e+01

6.047119e+01

0.000000e+00

5.708744e-07

5.708744e-07

0.000000e+00

2.794041e+01

2.794041e+01

0.000000e+00

2.881217e+06

2.881217e+06

0.000000e+00

1.573207e-01

1.573207e-01

0.000000e+00

1.096462e+03

1.096456e+03

6.000000e-03

9.655686e+05

9.655686e+05

0.000000e+00

3.100000e+02

6.896404e+01

6.896404e+01

0.000000e+00

8.790270e-07

8.790270e-07

0.000000e+00

3.186817e+01

3.186817e+01

0.000000e+00

2.882692e+06

2.882692e+06

0.000000e+00

1.616990e-01

1.616990e-01

0.000000e+00

1.094502e+03

1.094496e+03

6.000000e-03

9.923080e+05

9.923080e+05

0.000000e+00

3.200000e+02

7.818661e+01

7.818661e+01

0.000000e+00

1.349297e-06

1.349297e-06

0.000000e+00

3.615613e+01

3.615613e+01

0.000000e+00

2.883668e+06

2.883668e+06

0.000000e+00

1.663545e-01

1.663545e-01

0.000000e+00

1.092933e+03

1.092926e+03

7.000000e-03

1.018401e+06

1.018401e+06

0.000000e+00

3.300000e+02

8.813747e+01

8.813747e+01

0.000000e+00

2.067356e-06

2.067356e-06

0.000000e+00

4.080361e+01

4.080361e+01

0.000000e+00

2.884310e+06

2.884310e+06

0.000000e+00

1.713030e-01

1.713030e-01

0.000000e+00

1.091793e+03

1.091786e+03

7.000000e-03

1.043787e+06

1.043787e+06

0.000000e+00

3.400000e+02

9.880643e+01

9.880643e+01

0.000000e+00

3.163311e-06

3.163311e-06

0.000000e+00

4.580128e+01

4.580128e+01

0.000000e+00

2.884810e+06

2.884810e+06

0.000000e+00

1.765608e-01

1.765608e-01

0.000000e+00

1.091122e+03

1.091116e+03

6.000000e-03

1.068402e+06

1.068402e+06

0.000000e+00

3.500000e+02

1.101741e+02

1.101741e+02

0.000000e+00

4.831712e-06

4.831712e-06

0.000000e+00

5.112938e+01

5.112938e+01

0.000000e+00

2.885386e+06

2.885386e+06

0.000000e+00

1.821439e-01

1.821439e-01

0.000000e+00

1.090960e+03

1.090954e+03

6.000000e-03

1.092181e+06

1.092181e+06

0.000000e+00

3.600000e+02

1.222113e+02

1.222113e+02

0.000000e+00

7.353896e-06

7.353896e-06

0.000000e+00

5.675612e+01

5.675612e+01

0.000000e+00

2.886280e+06

2.886280e+06

0.000000e+00

1.880683e-01

1.880683e-01

0.000000e+00

1.091345e+03

1.091338e+03

7.000000e-03

1.115058e+06

1.115058e+06

0.000000e+00

3.700000e+02

1.348791e+02

1.348791e+02

0.000000e+00

1.108310e-05

1.108310e-05

0.000000e+00

6.263659e+01

6.263659e+01

0.000000e+00

2.887746e+06

2.887746e+06

0.000000e+00

1.943500e-01

1.943500e-01

0.000000e+00

1.092313e+03

1.092306e+03

7.000000e-03

1.136968e+06

1.136968e+06

0.000000e+00

3.800000e+02

1.481286e+02

1.481286e+02

0.000000e+00

1.592905e-05

1.592905e-05

0.000000e+00

6.871223e+01

6.871223e+01

0.000000e+00

2.890049e+06

2.890049e+06

0.000000e+00

2.010048e-01

2.010048e-01

0.000000e+00

1.093898e+03

1.093891e+03

7.000000e-03

1.157848e+06

1.157848e+06

0.000000e+00

3.900000e+02

1.619005e+02

1.619005e+02

0.000000e+00

2.309145e-05

2.309145e-05

0.000000e+00

7.491287e+01

7.491287e+01

0.000000e+00

2.893440e+06

2.893440e+06

0.000000e+00

2.080482e-01

2.080482e-01

0.000000e+00

1.096131e+03

1.096124e+03

7.000000e-03

1.177640e+06

1.177640e+06

0.000000e+00

4.000000e+02

1.761260e+02

1.761260e+02

0.000000e+00

3.323791e-05

3.323792e-05

-1.000000e-11

8.115787e+01

8.115787e+01

0.000000e+00

2.898153e+06

2.898153e+06

0.000000e+00

2.154955e-01

2.154955e-01

0.000000e+00

1.099039e+03

1.099031e+03

8.000000e-03

1.196287e+06

1.196287e+06

0.000000e+00

4.100000e+02

1.907265e+02

1.907265e+02

0.000000e+00

4.661210e-05

4.661210e-05

0.000000e+00

8.735924e+01

8.735924e+01

0.000000e+00

2.904397e+06

2.904397e+06

0.000000e+00

2.233616e-01

2.233616e-01

0.000000e+00

1.102643e+03

1.102635e+03

8.000000e-03

1.213743e+06

1.213743e+06

0.000000e+00

4.200000e+02

2.056139e+02

2.056139e+02

0.000000e+00

6.312192e-05

6.312192e-05

0.000000e+00

9.342567e+01

9.342567e+01

0.000000e+00

2.912344e+06

2.912344e+06

0.000000e+00

2.316612e-01

2.316612e-01

0.000000e+00

1.106959e+03

1.106951e+03

8.000000e-03

1.229966e+06

1.229966e+06

0.000000e+00

4.300000e+02

2.206918e+02

2.206918e+02

0.000000e+00

8.228289e-05

8.228290e-05

-1.000000e-11

9.926656e+01

9.926656e+01

0.000000e+00

2.922124e+06

2.922124e+06

0.000000e+00

2.404086e-01

2.404087e-01

-1.000000e-07

1.111998e+03

1.111989e+03

9.000000e-03

1.244923e+06

1.244923e+06

0.000000e+00

4.400000e+02

2.358556e+02

2.358556e+02

0.000000e+00

1.032952e-04

1.032952e-04

0.000000e+00

1.047961e+02

1.047961e+02

0.000000e+00

2.933827e+06

2.933827e+06

0.000000e+00

2.496179e-01

2.496179e-01

0.000000e+00

1.117763e+03

1.117754e+03

9.000000e-03

1.258590e+06

1.258590e+06

0.000000e+00

4.500000e+02

2.509935e+02

2.509935e+02

0.000000e+00

1.252098e-04

1.252098e-04

0.000000e+00

1.099370e+02

1.099370e+02

0.000000e+00

2.947500e+06

2.947500e+06

0.000000e+00

2.593027e-01

2.593027e-01

0.000000e+00

1.124252e+03

1.124243e+03

9.000000e-03

1.270951e+06

1.270951e+06

0.000000e+00

4.600000e+02

2.659875e+02

2.659875e+02

0.000000e+00

1.471108e-04

1.471109e-04

-1.000000e-10

1.146224e+02

1.146224e+02

0.000000e+00

2.963152e+06

2.963152e+06

0.000000e+00

2.694764e-01

2.694764e-01

0.000000e+00

1.131455e+03

1.131446e+03

9.000000e-03

1.281998e+06

1.281998e+06

0.000000e+00

4.700000e+02

2.807141e+02

2.807141e+02

0.000000e+00

1.682544e-04

1.682544e-04

0.000000e+00

1.187982e+02

1.187982e+02

0.000000e+00

2.980763e+06

2.980763e+06

0.000000e+00

2.801520e-01

2.801520e-01

0.000000e+00

1.139357e+03

1.139348e+03

9.000000e-03

1.291734e+06

1.291734e+06

0.000000e+00

4.800000e+02

2.950460e+02

2.950460e+02

0.000000e+00

1.881345e-04

1.881345e-04

0.000000e+00

1.224229e+02

1.224229e+02

0.000000e+00

3.000283e+06

3.000283e+06

0.000000e+00

2.913424e-01

2.913424e-01

0.000000e+00

1.147937e+03

1.147928e+03

9.000000e-03

1.300167e+06

1.300167e+06

0.000000e+00

4.900000e+02

3.088529e+02

3.088529e+02

0.000000e+00

2.064848e-04

2.064848e-04

0.000000e+00

1.254670e+02

1.254670e+02

0.000000e+00

3.021648e+06

3.021648e+06

0.000000e+00

3.030602e-01

3.030602e-01

0.000000e+00

1.157169e+03

1.157159e+03

1.000000e-02

1.307313e+06

1.307313e+06

0.000000e+00

5.000000e+02

3.220027e+02

3.220027e+02

0.000000e+00

2.232388e-04

2.232388e-04

0.000000e+00

1.279121e+02

1.279121e+02

0.000000e+00

3.044776e+06

3.044776e+06

0.000000e+00

3.153180e-01

3.153180e-01

0.000000e+00

1.167021e+03

1.167011e+03

1.000000e-02

1.313192e+06

1.313192e+06

0.000000e+00

5.100000e+02

3.343633e+02

3.343633e+02

0.000000e+00

2.386012e-04

2.386013e-04

-1.000000e-10

1.297493e+02

1.297493e+02

0.000000e+00

3.069581e+06

3.069581e+06

0.000000e+00

3.281281e-01

3.281281e-01

0.000000e+00

1.177459e+03

1.177448e+03

1.100000e-02

1.317830e+06

1.317830e+06

0.000000e+00

5.200000e+02

3.458035e+02

3.458035e+02

0.000000e+00

2.523677e-04

2.523679e-04

-2.000000e-10

1.309768e+02

1.309768e+02

0.000000e+00

3.095975e+06

3.095975e+06

0.000000e+00

3.415028e-01

3.415028e-01

0.000000e+00

1.188445e+03

1.188434e+03

1.100000e-02

1.321257e+06

1.321257e+06

0.000000e+00

5.300000e+02

3.561946e+02

3.561946e+02

0.000000e+00

2.640061e-04

2.640062e-04

-1.000000e-10

1.315988e+02

1.315988e+02

0.000000e+00

3.123871e+06

3.123871e+06

0.000000e+00

3.554545e-01

3.554545e-01

0.000000e+00

1.199939e+03

1.199928e+03

1.100000e-02

1.323505e+06

1.323505e+06

0.000000e+00

5.400000e+02

3.654117e+02

3.654117e+02

0.000000e+00

2.730387e-04

2.730389e-04

-2.000000e-10

1.316244e+02

1.316244e+02

0.000000e+00

3.153183e+06

3.153183e+06

0.000000e+00

3.699956e-01

3.699956e-01

0.000000e+00

1.211900e+03

1.211888e+03

1.200000e-02

1.324608e+06

1.324608e+06

0.000000e+00

5.500000e+02

3.733353e+02

3.733353e+02

0.000000e+00

2.790616e-04

2.790618e-04

-2.000000e-10

1.310675e+02

1.310674e+02

1.000000e-04

3.183828e+06

3.183828e+06

0.000000e+00

3.851384e-01

3.851384e-01

0.000000e+00

1.224284e+03

1.224272e+03

1.200000e-02

1.324602e+06

1.324602e+06

0.000000e+00

5.600000e+02

3.798522e+02

3.798522e+02

0.000000e+00

2.817623e-04

2.817625e-04

-2.000000e-10

1.299449e+02

1.299449e+02

0.000000e+00

3.215724e+06

3.215724e+06

0.000000e+00

4.008955e-01

4.008956e-01

-1.000000e-07

1.237051e+03

1.237038e+03

1.300000e-02

1.323522e+06

1.323522e+06

0.000000e+00

5.700000e+02

3.848571e+02

3.848571e+02

0.000000e+00

2.809375e-04

2.809377e-04

-2.000000e-10

1.282768e+02

1.282768e+02

0.000000e+00

3.248791e+06

3.248791e+06

0.000000e+00

4.172798e-01

4.172798e-01

0.000000e+00

1.250157e+03

1.250144e+03

1.300000e-02

1.321403e+06

1.321403e+06

0.000000e+00

5.800000e+02

3.882536e+02

3.882536e+02

0.000000e+00

2.765080e-04

2.765082e-04

-2.000000e-10

1.260856e+02

1.260856e+02

0.000000e+00

3.282951e+06

3.282951e+06

0.000000e+00

4.343040e-01

4.343040e-01

0.000000e+00

1.263561e+03

1.263548e+03

1.300000e-02

1.318281e+06

1.318281e+06

0.000000e+00

5.900000e+02

3.899551e+02

3.899551e+02

0.000000e+00

2.685299e-04

2.685301e-04

-2.000000e-10

1.233958e+02

1.233958e+02

0.000000e+00

3.318126e+06

3.318126e+06

0.000000e+00

4.519813e-01

4.519813e-01

0.000000e+00

1.277224e+03

1.277210e+03

1.400000e-02

1.314187e+06

1.314187e+06

0.000000e+00

6.000000e+02

3.898861e+02

3.898861e+02

0.000000e+00

2.572002e-04

2.572003e-04

-1.000000e-10

1.202335e+02

1.202335e+02

0.000000e+00

3.354241e+06

3.354241e+06

0.000000e+00

4.703249e-01

4.703249e-01

0.000000e+00

1.291108e+03

1.291093e+03

1.500000e-02

1.314038e+06

1.305679e+06

8.359000e+03

6.100000e+02

3.879827e+02

3.879827e+02

0.000000e+00

2.428548e-04

2.428550e-04

-2.000000e-10

1.166262e+02

1.166262e+02

0.000000e+00

3.391220e+06

3.391220e+06

0.000000e+00

4.893482e-01

4.893483e-01

-1.000000e-07

1.305176e+03

1.305162e+03

1.400000e-02

1.308676e+06

1.299684e+06

8.992000e+03

6.200000e+02

3.841930e+02

3.841930e+02

0.000000e+00

2.259578e-04

2.259580e-04

-2.000000e-10

1.126027e+02

1.126027e+02

0.000000e+00

3.428986e+06

3.428986e+06

0.000000e+00

5.090650e-01

5.090651e-01

-1.000000e-07

1.319398e+03

1.319382e+03

1.600000e-02

1.302491e+06

1.292843e+06

9.648000e+03

6.300000e+02

3.784779e+02

3.784779e+02

0.000000e+00

2.070803e-04

2.070805e-04

-2.000000e-10

1.081924e+02

1.081924e+02

0.000000e+00

3.467464e+06

3.467464e+06

0.000000e+00

5.294890e-01

5.294890e-01

0.000000e+00

1.333741e+03

1.333725e+03

1.600000e-02

1.295510e+06

1.285185e+06

1.032500e+04

6.400000e+02

3.708112e+02

3.708112e+02

0.000000e+00

1.868697e-04

1.868698e-04

-1.000000e-10

1.034255e+02

1.034255e+02

0.000000e+00

3.506576e+06

3.506576e+06

0.000000e+00

5.506338e-01

5.506339e-01

-1.000000e-07

1.348181e+03

1.348163e+03

1.800000e-02

1.287760e+06

1.276733e+06

1.102700e+04

6.500000e+02

3.611795e+02

3.611795e+02

0.000000e+00

1.660102e-04

1.660103e-04

-1.000000e-10

9.833198e+01

9.833198e+01

0.000000e+00

3.546246e+06

3.546246e+06

0.000000e+00

5.725135e-01

5.725135e-01

0.000000e+00

1.362692e+03

1.362673e+03

1.900000e-02

1.279267e+06

1.267510e+06

1.175700e+04

6.600000e+02

3.495818e+02

3.495818e+02

0.000000e+00

1.451794e-04

1.451795e-04

-1.000000e-10

9.294209e+01

9.294209e+01

0.000000e+00

3.586397e+06

3.586397e+06

0.000000e+00

5.951418e-01

5.951418e-01

0.000000e+00

1.377254e+03

1.377231e+03

2.300000e-02

1.270054e+06

1.257532e+06

1.252200e+04

6.700000e+02

3.360296e+02

3.360296e+02

0.000000e+00

1.250038e-04

1.250039e-04

-1.000000e-10

8.728546e+01

8.728546e+01

0.000000e+00

3.626950e+06

3.626950e+06

0.000000e+00

6.185324e-01

6.185324e-01

0.000000e+00

1.391846e+03

1.391819e+03

2.700000e-02

1.260144e+06

1.246814e+06

1.333000e+04

6.800000e+02

3.205456e+02

3.205456e+02

0.000000e+00

1.060195e-04

1.060196e-04

-1.000000e-10

8.139101e+01

8.139101e+01

0.000000e+00

3.667830e+06

3.667830e+06

0.000000e+00

6.426988e-01

6.426988e-01

0.000000e+00

1.406447e+03

1.406413e+03

3.400000e-02

1.249559e+06

1.235367e+06

1.419200e+04

6.900000e+02

3.031631e+02

3.031631e+02

0.000000e+00

8.864348e-05

8.864353e-05

-5.000000e-11

7.528658e+01

7.528658e+01

0.000000e+00

3.708960e+06

3.708960e+06

0.000000e+00

6.676543e-01

6.676543e-01

0.000000e+00

1.421033e+03

1.420990e+03

4.300000e-02

1.238317e+06

1.223198e+06

1.511900e+04

7.000000e+02

2.839251e+02

2.839251e+02

0.000000e+00

7.315776e-05

7.315780e-05

-4.000000e-11

6.899872e+01

6.899872e+01

0.000000e+00

3.750267e+06

3.750267e+06

0.000000e+00

6.934117e-01

6.934117e-01

0.000000e+00

1.435572e+03

1.435516e+03

5.600000e-02

1.226436e+06

1.210311e+06

1.612500e+04

7.100000e+02

2.628823e+02

2.628823e+02

0.000000e+00

5.970889e-05

5.970892e-05

-3.000000e-11

6.255233e+01

6.255233e+01

0.000000e+00

3.791677e+06

3.791677e+06

0.000000e+00

7.199835e-01

7.199835e-01

0.000000e+00

1.450017e+03

1.449943e+03

7.400000e-02

1.213934e+06

1.196708e+06

1.722600e+04

7.200000e+02

2.400921e+02

2.400921e+02

0.000000e+00

4.832134e-05

4.832136e-05

-2.000000e-11

5.597053e+01

5.597053e+01

0.000000e+00

3.833121e+06

3.833121e+06

0.000000e+00

7.473816e-01

7.473816e-01

0.000000e+00

1.464298e+03

1.464200e+03

9.800000e-02

1.200825e+06

1.182389e+06

1.843600e+04

7.300000e+02

2.156167e+02

2.156167e+02

0.000000e+00

3.892226e-05

3.892228e-05

-2.000000e-11

4.927440e+01

4.927440e+01

0.000000e+00

3.874532e+06

3.874532e+06

0.000000e+00

7.756174e-01

7.756175e-01

-1.000000e-07

1.478314e+03

1.478184e+03

1.300000e-01

1.187122e+06

1.167350e+06

1.977200e+04

7.400000e+02

1.895214e+02

1.895214e+02

0.000000e+00

3.137444e-05

3.137445e-05

-1.000000e-11

4.248285e+01

4.248285e+01

0.000000e+00

3.915849e+06

3.915849e+06

0.000000e+00

8.047018e-01

8.047018e-01

0.000000e+00

1.491915e+03

1.491744e+03

1.710000e-01

1.172840e+06

1.151587e+06

2.125300e+04

7.500000e+02

1.618724e+02

1.618724e+02

0.000000e+00

2.551608e-05

2.551609e-05

-1.000000e-11

3.561250e+01

3.561250e+01

0.000000e+00

3.957013e+06

3.957013e+06

0.000000e+00

8.346448e-01

8.346449e-01

-1.000000e-07

1.504902e+03

1.504678e+03

2.240000e-01

1.157990e+06

1.135093e+06

2.289700e+04

7.600000e+02

1.327350e+02

1.327350e+02

0.000000e+00

2.121360e-05

2.121361e-05

-1.000000e-11

2.867762e+01

2.867762e+01

0.000000e+00

3.997971e+06

3.997971e+06

0.000000e+00

8.654562e-01

8.654562e-01

0.000000e+00

1.517018e+03

1.516729e+03

2.890000e-01

1.142582e+06

1.117860e+06

2.472200e+04

7.700000e+02

1.021716e+02

1.021716e+02

0.000000e+00

1.846040e-05

1.846040e-05

0.000000e+00

2.169011e+01

2.169011e+01

0.000000e+00

4.038676e+06

4.038676e+06

0.000000e+00

8.971448e-01

8.971449e-01

-1.000000e-07

1.527976e+03

1.527608e+03

3.680000e-01

1.126627e+06

1.099878e+06

2.674900e+04

7.800000e+02

7.023945e+01

7.023945e+01

0.000000e+00

1.769436e-05

1.769436e-05

0.000000e+00

1.465964e+01

1.465964e+01

0.000000e+00

4.079085e+06

4.079085e+06

0.000000e+00

9.297195e-01

9.297195e-01

0.000000e+00

1.537505e+03

1.537042e+03

4.630000e-01

1.110133e+06

1.081136e+06

2.899700e+04

7.900000e+02

3.698947e+01

3.698947e+01

0.000000e+00

2.180569e-05

2.180569e-05

0.000000e+00

7.593799e+00

7.593799e+00

0.000000e+00

4.119149e+06

4.119149e+06

0.000000e+00

9.631885e-01

9.631885e-01

0.000000e+00

1.545472e+03

1.544898e+03

5.740000e-01

1.093109e+06

1.061624e+06

3.148500e+04

Tip

The help function for 3D plot can be downloaded at here: helpfunc.py

Total running time of the script: ( 1 minutes 12.265 seconds)

Gallery generated by Sphinx-Gallery