首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用科学论文建立公式

用科学论文建立公式
EN

Stack Overflow用户
提问于 2019-07-16 09:35:40
回答 1查看 60关注 0票数 0

我正在尝试从一篇科学论文建立一个数学formuala到R。

在给出的例子中,我使用了164微米的变量。这是从表3的第一个结果从我所附的文件。您将在这个表中看到计算出的当前速度(非常整洁!)。

总的观点是,我想提出两件事:侵蚀速度和沉积速度。我所附的文件使用了所给的公式。我正在尝试构建一个软件包,它可以通过这些公式运行数百个平均粒度(即变量)。在理想世界中,我的主要目标是使用给定的公式构建一个代码,它接受变量(平均晶粒大小)并输出可爱的数据.我认为这是可能的,但不幸的是,我的R技能还不够

链接到公式:https://imgur.com/a/DEN721v?

链接到原版科学论文:https://link.springer.com/article/10.1007/s00531-008-0312-5

有5个方程,所有这些方程相互补充。结果取决于我在开始时输入的一个变量。

我被赋予了四个已知的价值观:

  • p (水密度为m^3),
  • ps (晶粒密度为m^3)
  • g (重力加速度为m/s^2),
  • v (m^2/s的水的运动粘度)

一个变量(写为d)是沉积物样品的平均粒度。

  • d变量沉积物样品的平均粒度。

例如,如果我的平均晶粒尺寸为164μm,它将被输入为1.64e-4。

寻求帮助,因为我的结果肯定不接近他们应该是什么。

代码语言:javascript
复制
p <- 1027.4     #water density (m^3)
ps <- 2650      #grain density (m^3)
g <- 9.81       #acceleration due to gravity (m/s^2)
v <- 1.4313e-6  #kinematic viscosity of water  (m^2/s)
z100 <- 100     #level above seabed (cms)
d <- 1.64e-4    #variable (mean grain size in microns)

方程式1

代码语言:javascript
复制
D1 <- 9.81*(ps-p)
D2 <- (p*v)^2
D3 <- (D1/D2)
D4 <- D3^(1/3)
D5 <- D4*d

D <- D5          #Dimensionless grain size

D

方程2.3

代码语言:javascript
复制
1 - exp(-0.001374634317)

Tcr1 <- -0.020*D
Tcr2 <- 1 - exp(Tcr1)
Tcr3 <- 0.055*Tcr2
Tcr4 <- 0.30/1+(1.2*D)
Tcr5 <- Tcr4 + Tcr3
Tcr6 <- 9.81*(ps-p)
Tcr7 <- Tcr6*d
Tcr8 <- Tcr7*Tcr5

Tcr <- Tcr8 #threshold bed shear stress (N/m^2)
exp(Tcr1)

Tcr

Ucr1 <- Tcr/p
Ucr2 <- sqrt(Ucr1)

Ucr <- Ucr2     #critical shear velocity

方程式3

代码语言:javascript
复制
z0 <- d/12      #roughness length

z0

方程式4

代码语言:javascript
复制
Ue1 <- z100/z0
Ue2 <- Ucr/0.41
Ue3 <- log(Ue1)
Ue4 <- Ue2*Ue3

Ue <- Ue4  # critical current velocity erosional threshold from particle size distribution

Ue

方程5

代码语言:javascript
复制
Usetl1 <- 10.36^(2)
Usetl2 <- D^(3)
Usetl3 <- 1.049*Usetl2
Usetl4 <- Usetl1 + Usetl3
Usetl5 <- Usetl4^(1/2)
Usetl6 <- Usetl5 - 10.36
Usetl7 <- v/d
Usetl8 <- Usetl7*Usetl6

Usetl <- Usetl8

计算结果为cm/s,应在20-50 cm/s左右。

EN

回答 1

Stack Overflow用户

发布于 2019-07-16 11:00:59

好的,让我们从一开始就试一试。

代码语言:javascript
复制
p <- 1027.4     #water density (m^3)
ps <- 2650      #grain density (m^3)
g <- 9.81       #acceleration due to gravity (m/s^2)
v <- 1.4313e-6  #kinematic viscosity of water  (m^2/s)
z100 <- 100     #level above seabed (cms)
d <- 1.64e-4    #variable (mean grain size in microns)

如果平均晶粒尺寸应该是微米,则最后一个值是不正确的。它以米为单位。

代码语言:javascript
复制
D <- d * (g * (ps - p) / (p * v^2))^(1/3)

结果为3.22。公式中有一个错误:(p * v)^2而不是p * (v^2)

代码语言:javascript
复制
Tcr <- g * (ps - p) * d * (.3 / (1 + 1.2 * D) + .055 * (1 - exp(-.02 * D)) )

同样,您的公式中有一个错误:.3/1 + 1.2 * D而不是.3/(1 + 1.2 * D)。结果是.17。

代码语言:javascript
复制
Ucr <- sqrt(Tcr / p)

结果为.01。

代码语言:javascript
复制
z0 = d / 12

结果为1.37E-5。

代码语言:javascript
复制
Ue <- Ucr / .41 * log(z100 / z0)

结果为.50。不过,不知道我们为什么要计算它。我们应该把它和我们比较吗?

代码语言:javascript
复制
 Uset <- v / d * ( sqrt(10.36^2 + 1.049 * D^3) - 10.36)

结果为.01 (.0137014)。

这不是你说你应该得到的,但它与你得到的是不同的。另外,假设它不是厘米而是每秒米,那么它大约是每秒1厘米。

现在,让我们检查一下各单位。首先,当你指定单位时,你需要更加小心。水和谷物密度不是m^3,而是kg * m^-3

首先,p是无声的(分子和分母都存在):

代码语言:javascript
复制
m * (m * s^-2 / (m^4 * s^-2))^(1/3) = 
m * (1/m^3)^(1/3) = m / m = 1

好吧,没有单位。

接下来,Tcr:公式的右半部分是无单位的(仅取决于D)。否则,

代码语言:javascript
复制
m * s^-2 * kg * m^-3 * m = (m * kg * s^-2) * m^-2 = N / m^2.

好的,也好。

好的,我们现在的公式。同样,方程右侧的右半部分是无单位的。其余的是

代码语言:javascript
复制
m^2 * s / m = m / s

至少单位要退房。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57054252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档