下降曲线库

petbox-dca的Python项目详细描述


Documentation StatusCoverage Status

生产数据的实证分析需要实施数个多年的下降曲线模型和多个SPE出版物。此外,综合分析需要在多个诊断图及其各自的绘图功能之间进行图形分析。虽然每个模型的q(t)(rate)函数可能很简单,但是N(t)(累计体积)可能不是。例如,双曲线模型有三种不同的形式(双曲型、调和型、指数型),这就很复杂,因为可能有多个分段,每一个分段在速率导数中都必须是连续的。或者,在幂律指数模型的情况下,必须对N(t)函数进行数值计算。在

这个库为每个实现的下降曲线模型定义了一个接口。每个模型都有参数值的验证检查,并提供简单易用的方法来计算time数组,以获得所需的函数输出。在

此外,我们还定义了一个接口,将GOR/CGR屈服函数附加到任何初级阶段模型。然后,我们可以像初级相位一样容易地获得次级相位的输出。在

尽可能实现分析函数。如果不可能,则使用scipy.integrate.fixed_quad执行数值计算。考虑到大多数需要数值计算的感兴趣函数都是单调的,这通常很有效。在

Primary PhaseTransient Hyperbolic, Modified Hyperbolic, Power-Law Exponential, Stretched Exponential, Duong
Secondary PhasePower-Law Yield
Water PhasePower-Law Yield

以下函数公开供使用

^{tb2}$

入门

使用pip安装库:

pip install petbox-dca

为了方便起见,还提供了一个默认的时间数组,该数组包含5个对数周期内的等间距值。在

^{pr2}$

我们还可以附加二次相和水相模型,并同样容易地评估速率。在

>>>mh.add_secondary(dca.PLYield(c=1200.0,m0=0.0,m=0.6,t0=180.0,min=None,max=20_000.0))>>>mh.secondary.rate(t)array([1184.086,1179.346,1173.231,...,0.000])>>>mh.add_water(dca.PLYield(c=2.0,m0=0.0,m=0.1,t0=90.0,min=None,max=10.0))>>>mh.water.rate(t)array([1.950,1.935,1.917,...,0.000])

一旦实例化,附加辅助阶段的相同功能和过程适用于任何模型。在

>>>thm=dca.THM(qi=1000.0,Di=0.8,bi=2.0,bf=0.8,telf=30.0,bterm=0.03,tterm=10.0)>>>thm.rate(t)array([968.681,959.741,948.451,...,0.000])>>>thm.add_secondary(dca.PLYield(c=1200.0,m0=0.0,m=0.6,t0=180.0,min=None,max=20_000.0))>>>thm.secondary.rate(t)array([1162.417,1151.690,1138.141,...,0.000])>>>ple=dca.PLE(qi=1000.0,Di=0.1,Dinf=0.00001,n=0.5)>>>ple.rate(t)array([904.828,892.092,877.768,...,0.000])>>>ple.add_secondary(dca.PLYield(c=1200.0,m0=0.0,m=0.6,t0=180.0,min=None,max=20_000.0))>>>ple.secondary.rate(t)array([1085.794,1070.510,1053.322,...,0.000])

应用上述方法,我们可以根据一个数据集轻松地评估每个模型。在

>>>importmatplotlib.pyplotasplt>>>fig=plt.figure()>>>ax1=fig.add_subplot(121)>>>ax2=fig.add_subplot(122)>>>ax1.plot(t_data,rate_data,'o')>>>ax2.plot(t_data,cum_data,'o')>>>ax1.plot(t,thm.rate(t))>>>ax2.plot(t,thm.cum(t)*cum_data[-1]/thm.cum(t_data[-1]))# normalization>>>ax1.plot(t,ple.rate(t))>>>ax2.plot(t,ple.cum(t)*cum_data[-1]/ple.cum(t_data[-1]))# normalization>>>...>>>plt.show()
model comparison

请参阅API documentation以获得完整的列表、详细的使用示例和模型比较。在

发展

petbox-dca由davids.Fulford(@dsfulf)维护。如有任何问题或建议,请在此回购中发布问题或拉单请求!在

版本历史记录

1.0.6

  • 新功能
    • 添加了WaterPhase
    • 添加了WaterPhase.wor方法
    • 添加了PrimaryPhase.add_water方法
  • 其他更改
    • yield模型可以同时继承SecondaryPhaseWaterPhase,并在附加到PrimaryPhase时删除各自的方法。在

1.0.5

  • 新功能
    • Bourdet算法
  • 其他更改
    • 更新docstrings
    • 将bourdet数据导数添加到详细的使用示例中

1.0.4

  • 修复文档中的打字错误

1.0.3

  • 添加文档
  • 通用数值积分
  • 各种重构

0.0.1-1.0.2

  • 内部释放

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从用户输入中找到最大值和最小值?(while循环)   java数据库资源异常   java hibernate查询速度太慢,是否忽略了延迟加载条件?   不带花括号的java IfElse控制流   nextInt()中十进制数输入的java检查   java根据REST中的资源类型发送不同的响应主体   JAVAutil。扫描器Java系统。争论中   对于单个条目,java XSLT到数组的转换失败   java将txt文档预处理为以字符串为键、整数ArrayList为值的hashmap   java获取泛型数组类类型的简单方法?   雅加达ee使用Fast Purge Open API通过java代码清除akamai中的缓存URL   java在OpenNLP中使用parseLine解析后,如何获得没有空格的名词短语作为输入句子?   设置与my GUI的自动交互之间的延迟(Java Swing)