下降曲线库

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第三方库


热门话题
json错误“不是JSONObject”:以字符串形式返回此格式的API。如何使用Java从中读取和创建对象?   java GridGain无法绑定到Linux上的任何端口   java在Mac上使用Netbeans,Netbeans找不到。txt文件   使用条件的java查询   甲骨文java。lang.ClassCastException错误   测试JBehave和Java varargs如何将参数传递给varargs方法?   JavaFX,NASA世界风:如何将JavaFX组添加到NASA世界风模型中   java如何将onClick函数传递给Intent   java从文件中读取序列化对象?   java获取资产文件夹的完整路径   java为什么Spring找不到资源文件?   java如何更改启动活动?   在问题类中使用datechooser时,如何用java中的系统当前日期验证用户输入日期   java如何使用Hibernate Envers(@Audited)而不使用Hibernate生成任何表   当从java加速计中检索到更准确的数据时?   如何在java中提取特定的json数据