""" Module contains two sets of tests: One on MVEM itself, one on MVEM with gravity.
"""
import unittest
import numpy as np
import scipy.sparse as sps
import porepy as pp
class BasicsTest(unittest.TestCase):
def _matrix(self, g, perm, bc):
solver = pp.MVEM(keyword="flow")
data = pp.initialize_default_data(
g, {}, "flow", {"second_order_tensor": perm, "bc": bc}
)
solver.discretize(g, data)
return solver.assemble_matrix(g, data).todense()
# ------------------------------------------------------------------------------#
def test_dual_vem_1d_iso(self):
g = pp.CartGrid(3, 1)
g.compute_geometry()
kxx = np.ones(g.num_cells)
perm = pp.SecondOrderTensor(kxx)
bf = g.tags["domain_boundary_faces"].nonzero()[0]
bc = pp.BoundaryCondition(g, bf, bf.size * ["dir"])
M = self._matrix(g, perm, bc)
M_known = 1e-2 * np.array(
[
[25, -(8 + 1 / 3.0), 0, 0, 1e2, 0, 0],
[-(8 + 1 / 3.0), 50, -(8 + 1 / 3.0), 0, -1e2, 1e2, 0],
[0, -(8 + 1 / 3.0), 50, -(8 + 1 / 3.0), 0, -1e2, 1e2],
[0, 0, -(8 + 1 / 3.0), 25, 0, 0, -1e2],
[1e2, -1e2, 0, 0, 0, 0, 0],
[0, 1e2, -1e2, 0, 0, 0, 0],
[0, 0, 1e2, -1e2, 0, 0, 0],
]
)
rtol = 1e-15
atol = rtol
self.assertTrue(np.allclose(M, M.T, rtol, atol))
self.assertTrue(np.allclose(M, M_known, rtol, atol))
# ------------------------------------------------------------------------------#
def test_dual_vem_1d_ani(self):
g = pp.CartGrid(3, 1)
g.compute_geometry()
kxx = np.sin(g.cell_centers[0, :]) + 1
perm = pp.SecondOrderTensor(
kxx, kyy=np.ones(g.num_cells), kzz=np.ones(g.num_cells)
)
bf = g.tags["domain_boundary_faces"].nonzero()[0]
bc = pp.BoundaryCondition(g, bf, bf.size * ["dir"])
M = self._matrix(g, perm, bc)
M_known = 1e-2 * np.array(
[
[21.4427334468001192, -7.14757781560004, 0, 0, 1e2, 0, 0],
[
-7.14757781560004,
38.3411844655562319,
-5.6328170062520355,
0,
-1e2,
1e2,
0,
],
[
0,
-5.6328170062520355,
31.2648069176318977,
-4.788785299625264,
0,
-1e2,
1e2,
],
[0, 0, -4.7887852996252649, 14.3663558988757991, 0, 0, -1e2],
[1e2, -1e2, 0, 0, 0, 0, 0],
[0, 1e2, -1e2, 0, 0, 0, 0],
[0, 0, 1e2, -1e2, 0, 0, 0],
]
)
rtol = 1e-15
atol = rtol
self.assertTrue(np.allclose(M, M.T, rtol, atol))
self.assertTrue(np.allclose(M, M_known, rtol, atol))
# ------------------------------------------------------------------------------#
def test_dual_vem_2d_iso_cart(self):
g = pp.CartGrid([2, 1], [1, 1])
g.compute_geometry()
kxx = np.ones(g.num_cells)
perm = pp.SecondOrderTensor(kxx=kxx, kyy=kxx, kzz=kxx)
bf = g.tags["domain_boundary_faces"].nonzero()[0]
bc = pp.BoundaryCondition(g, bf, bf.size * ["dir"])
M = self._matrix(g, perm, bc)
# Matrix computed with an already validated code (MRST)
M_known = np.array(
[
[0.625, -0.375, 0, 0, 0, 0, 0, 1, 0],
[-0.375, 1.25, -0.375, 0, 0, 0, 0, -1, 1],
[0, -0.375, 0.625, 0, 0, 0, 0, 0, -1],
[0, 0, 0, 1, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 1, 0, 0, 0, 1],
[0, 0, 0, 0, 0, 1, 0, -1, 0],
[0, 0, 0, 0, 0, 0, 1, 0, -1],
[1, -1, 0, 1, 0, -1, 0, 0, 0],
[0, 1, -1, 0, 1, 0, -1, 0, 0],
]
)
rtol = 1e-15
atol = rtol
self.assertTrue(np.allclose(M, M.T, rtol, atol))
self.assertTrue(np.allclose(M, M_known, rtol, atol))
# ------------------------------------------------------------------------------#
def test_dual_vem_2d_ani_cart(self):
g = pp.CartGrid([2, 1], [1, 1])
g.compute_geometry()
kxx = np.square(g.cell_centers[1, :]) + 1
kyy = np.square(g.cell_centers[0, :]) + 1
kxy = -np.multiply(g.cell_centers[0, :], g.cell_centers[1, :])
perm = pp.SecondOrderTensor(kxx=kxx, kyy=kyy, kxy=kxy)
bf = g.tags["domain_boundary_faces"].nonzero()[0]
bc = pp.BoundaryCondition(g, bf, bf.size * ["dir"])
M = self._matrix(g, perm, bc)
# Matrix computed with an already validated code (MRST)
M_known = np.array(
[
[
0.625000000000000,
-0.422619047619048,
0,
0.023809523809524,
0,
0.023809523809524,
0,
1,
0,
],
[
-0.422619047619048,
1.267241379310345,
-0.426724137931035,
0.023809523809524,
0.051724137931034,
0.023809523809524,
0.051724137931034,
-1,
1,
],
[
0,
-0.426724137931035,
0.642241379310345,
0,
0.051724137931034,
0,
0.051724137931034,
0,
-1,
],
[
0.023809523809524,
0.023809523809524,
0,
1,
0,
-0.047619047619048,
0,
1,
0,
],
[
0,
0.051724137931034,
0.051724137931034,
0,
0.879310344827586,
0,
-0.189655172413793,
0,
1,
],
[
0.023809523809524,
0.023809523809524,
0,
-0.047619047619048,
0,
1,
0,
-1,
0,
],
[
0,
0.051724137931034,
0.051724137931034,
0,
-0.189655172413793,
0,
0.879310344827586,
0,
-1,
],
[1, -1, 0, 1, 0, -1, 0, 0, 0],
[0, 1, -1, 0, 1, 0, -1, 0, 0],
]
)
rtol = 1e-15
atol = rtol
self.assertTrue(np.allclose(M, M.T, rtol, atol))
self.assertTrue(np.allclose(M, M_known, rtol, atol))
# ------------------------------------------------------------------------------#
def test_dual_vem_2d_iso_simplex(self):
g = pp.StructuredTriangleGrid([1, 1], [1, 1])
g.compute_geometry()
kxx = np.ones(g.num_cells)
perm = pp.SecondOrderTensor(kxx=kxx, kyy=kxx)
bf = g.tags["domain_boundary_faces"].nonzero()[0]
bc = pp.BoundaryCondition(g, bf, bf.size * ["dir"])
M = self._matrix(g, perm, bc)
# Matrix computed with an already validated code (MRST)
faces = np.arange(5)
M_known = np.array
没有合适的资源?快使用搜索试试~ 我知道了~
用于断裂和可变形多孔介质的Python模拟工具___下载.zip
共379个文件
py:288个
vtu:26个
ipynb:16个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 103 浏览量
2023-04-16
20:13:35
上传
评论
收藏 5.22MB ZIP 举报
温馨提示
用于断裂和可变形多孔介质的Python模拟工具___下载.zip
资源推荐
资源详情
资源评论
收起资源包目录
用于断裂和可变形多孔介质的Python模拟工具___下载.zip (379个子文件)
setup.cfg 701B
.isort.cfg 149B
CODEOWNERS 176B
network.csv 3KB
Dockerfile 4KB
Dockerfile 2KB
intelpython.Dockerfile 1KB
Dockerfile 1KB
slightly_compressible.gif 1.3MB
water_phase_diagram_2.gif 59KB
.gitignore 1KB
MANIFEST.in 62B
mypy.ini 2KB
diagnostics.ipynb 811KB
incompressible_flow_model.ipynb 604KB
mandels_problem.ipynb 517KB
grid_structure.ipynb 213KB
models_v2.ipynb 198KB
flux_discretizations.ipynb 172KB
grid_structure_advanced.ipynb 111KB
stress_discretization.ipynb 65KB
equation_definition.ipynb 28KB
simulation_exporting.ipynb 24KB
contact_mechanics_with_AD.ipynb 18KB
meshing_of_fractures.ipynb 16KB
exporter.ipynb 15KB
automatic_differentiation.ipynb 9KB
introduction.ipynb 8KB
conventions.ipynb 5KB
previous_times.json 37B
LICENSE 34KB
Papers.md 10KB
LICENSE.md 8KB
Readme.md 4KB
Install.md 3KB
Readme.md 3KB
pull_request_template.md 1KB
README.md 528B
README.md 429B
README.md 201B
mixed_dimensional_grid.png 260KB
dfn_non_conforming.png 180KB
density.png 103KB
specific_heat_capacity_water.png 96KB
dfn_conforming.png 87KB
thermal_conductivity.png 86KB
thermal_expansion.png 70KB
subdomains_interfaces.png 33KB
grid.pvd 621B
previous_data.pvd 621B
previous_grid.pvd 392B
grid_000002.pvd 332B
grid_000001.pvd 332B
test_dual_vem.py 204KB
constitutive_laws.py 124KB
test_hybrid_vem.py 120KB
intersections.py 114KB
fracture_network_3d.py 110KB
exporter.py 104KB
mpsa.py 87KB
equation_system.py 84KB
test_assembler.py 74KB
mpfa.py 73KB
test_rt0.py 72KB
operators.py 71KB
assembler.py 70KB
fvutils.py 69KB
biot.py 67KB
test_mpfa_mpsa_convergence.py 63KB
test_polygon_intersection.py 63KB
fracture_network_2d.py 57KB
test_mpsa.py 56KB
test_mpsa.py 55KB
test_equation_system.py 52KB
mandel_biot.py 51KB
test_fracture_mesh_generation.py 48KB
test_coarsening.py 47KB
test_mortars.py 46KB
elliptic_interface_laws.py 44KB
test_merging_non_conforming_grids.py 44KB
split_grid.py 43KB
test_upwind_coupling.py 42KB
grid.py 41KB
propagate_fracture.py 40KB
mortar_grid.py 39KB
test_fracture_propagation.py 38KB
test_mpfa_mpsa_partial_update.py 37KB
test_darcy_mortar.py 37KB
test_fv_face_pressure_reconstruction.py 37KB
test_upwind.py 35KB
momentum_balance.py 35KB
test_mass_matrix.py 35KB
partition.py 34KB
interpolation_tables.py 34KB
grid_extrusion.py 33KB
md_grid.py 33KB
grid_operators.py 32KB
dual_elliptic.py 32KB
test_ad_array_forward_mode.py 31KB
time_step_control.py 31KB
共 379 条
- 1
- 2
- 3
- 4
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9154
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- module-0004.SyncTensorsGraph.7578.sm-8.0-gpu-after-optimizations
- python39.dll
- 【Matlab 六自由度机器人】Fixed Angles(固定角度) 和 Euler Angles(欧拉角) 之间的区别
- STLINK下载器调试过程中常见问题排查
- BMSP430工程PPT说明书.zip
- FlinkFlinkF
- 《计算机网络-自顶向下方法》答案
- 基于pyqt5框架开发的demo项目 全栈开发,短小精悍,入门学习,上手简单
- 国内IP地址大全 站长资源 访问IP设置 Order allow,deny 使用方法
- 【JavaScript实现点击鼠标出现爱心特效脚本】直接引入index.html文件可用!!!
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功