如何解决FiPy 使用 FiPy 模拟抽水
我正在尝试在我想模拟扩散和平流的域中使用 Fipy 模拟抽水。水从一个点提取,并在另一个点排出。但是,我在边界条件的定义方面遇到了问题。
其中 q 是流量(常数),h 是深度(常数),C 是浓度(瞬态),Lx 和 dx 是经度(常数)。
首先,我定义方程 (2D Navier-Stokes) 来计算速度场。特别是,我在表面施加压力 = 零,在吸入/排放区施加垂直速度(与泵的标称流量相关),在底部施加速度 = 零。
关于域中的“质量”传输,我引入了质量通量作为边界条件(但是,我遇到的一个问题是我无法引入水通量,因此我无法考虑稀释)。
>我有一些问题:
- 在定义固定通量边界条件时,系数 (q/Lx) 是否可以大于 1?我认为 FiPy 从边界旁边的单元格中获取“质量”,因此,如果大于 1,它会导致负浓度(在我的情况下这是不可能的)。
- 是否可以移动细胞以置换水量?
- 是否可以考虑单元格的“体积”以在顶部边界应用稀释?
这是我的代码:
coeff_in = (q / Lx_in)
coeff_out = (q / Lx_out)
eqC = (TransientTerm(var = C) == # Transient term
DiffusionTerm(coeff = D,var = C) # Diffusion term
- ConvectionTerm(coeff = Vf,var = C) # Convection term
+ (coeff_out * face_out * (C.faceValue)).divergence # Bottom Boundary Condition (fixed-flux); flow
+ (coeff_in * face_in * Cinput).divergence # Top Boundary Condition (fixed-flux); flow
)
但这会产生(显然!)顶部的质量集中和底部的提取。直观地说,如果所有网格中的浓度相同,则底部不应该改变(因为体积被提取然后质量被置换)并且顶部应该降低其浓度(因为引入了较低浓度的水并且是与最高浓度混合)。
解决方法
问:在定义固定通量边界条件时,系数 (q/Lx) 是否可以大于 1?我认为 FiPy 从边界旁边的细胞中获取“质量”,因此,如果大于 1,它会导致负浓度(在我的情况下这是不可能的)。
您需要调整时间步长以确保 CFL condition 保持小于 1(最好保持 CFL
问:是否可以移动细胞以置换水量?
我想您是在问是否可以使用拉格朗日(移动网格)方法?不,不容易。 FiPy 是欧拉代码。
问:是否可以考虑单元格的“体积”以在顶部边界应用稀释?
您不应该在放电处集中质量;这就是通量所表示的。我不太确定如何处理纯水的流入。这似乎相当于该边界处溶质的零通量。似乎您需要一个水浓度模型,即使您最终没有明确解决它。它可以像 一样简单。在这种情况下,底部流入的纯水通量应该等于 流出底部 的通量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。