跳转到主要内容

球面上的Mimetic INTerpolation

项目描述

MINT - 球面上的Mimetic INTerpolation

Cirrus-CI # contributors latest release Commits since last release


概述

此项目包含将源网格到目标网格重置边缘中心场代码。网格存储为网格单元集合,每个单元有四个顶点(即单元格是四边形)。边缘场作为沿每个边向量的积分存储。顶点坐标存储在经纬度空间。

重置网格方法在Mimetic意义上满足Stokes定理,接近机器精度。特别是,由梯度得到的插值向场的环路积分为零。

先决条件

构建MINT Python模块

  • 支持C++11的C++编译器
  • Cython
  • NetCDF库
  • NumPy
  • VTK

我们建议使用conda安装上述软件包。

构建MINT C++库和工具

  • 支持C++11的C++编译器
  • Fortran编译器(例如,gfortran 6.4)
  • NetCDF库
  • Doxygen
  • VTK

如何构建MINT Python模块

《MINT》Python接口需要安装VTKnetCDFtbb库。这最简单的方法是在conda环境中完成。

conda env create --file requirements/mint.yml
conda activate mint-dev

在根目录下的MINT目录中,然后输入:

pip install --no-deps --editable .

检查是否可以导入mint模块

python -c "import mint"

要运行测试,输入:

pytest

如何构建MINT C++库

执行以下操作以从FortranCC++调用MINT

mkdir build
cd build
cmake ..
make -j 8

您可以使用以下方式指定编译器:

FC=mpif90 CXX=mpicxx cmake ..; make -j 8

通过输入以下内容,您可以检查构建是否成功:

make test

二进制工具

上述CMake构建将编译多个工具。要运行这些工具,请将MINT_SRC_DIR设置为您MINT源目录的位置(例如,export MINT_SRC_DIR=..)。

  1. 从经纬度网格计算到立方球体的插值权重
./tools/regrid_edges -s $MINT_SRC_DIR/data/latlon4x2.nc:latlon -S 0 \
                     -d $MINT_SRC_DIR/data/cs_4.nc:physics -D 1 \
                     -w weights.nc
  1. 通过加载先前生成的权重,将字段edge_integrated_velocity从经纬度重新网格化到立方球体
./tools/regrid_edges -s $MINT_SRC_DIR/data/latlon4x2.nc:latlon -S 0 \
                     -d $MINT_SRC_DIR/data/cs_4.nc:physics -D 1 \
                     -v edge_integrated_velocity -W weights.nc -o edge_integrated_velocity.vtk
  1. 一步计算权重和重新网格化
./tools/regrid_edges -s $MINT_SRC_DIR/data/latlon4x2.nc:latlon -S 0 \
                     -d $MINT_SRC_DIR/data/cs_4.nc:physics -D 1 \
                     -v edge_integrated_velocity -W -o edge_integrated_velocity.vtk
  1. 重新网格化具有高度的时间相关字段
./tools/regrid_edges -s $MINT_SRC_DIR/data/lonlatzt_8x4x3x2.nc:mesh2d -S 0 \
                    -d $MINT_SRC_DIR/data/c24_u_integrated.nc:physics -D 1 \
                    -v u@$MINT_SRC_DIR/data/lonlatzt_8x4x3x2.nc \
                    -O regridedges_xyzt.nc -o regridedges_xyzt.vtk

API文档

如果您想从CPythonFortran调用MINT,这将非常有用

https://pletzer.github.io/mint/html/

守恒误差

下面的图表显示了通过为每个单元计算闭合线积分得到的拟微分重新网格化误差。 alt Error of mimetic regridding

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪一个,请了解更多关于安装包的信息。

源分发

python-mint-1.15.4.tar.gz (86.9 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面