gpt4 book ai didi

awk - 使用 AWK 将 MDF 转换为 VTK

转载 作者:行者123 更新时间:2023-12-03 16:49:07 25 4
gpt4 key购买 nike

我是初学者,很抱歉,如果之前已经涵盖了这一点,但我似乎无法准确找到解决问题所需的内容。
我正在尝试编写一个 AWK“脚本”,它可以将 MDF(网格定义文件)作为输入转换为(VALID)VTK 文件作为输出。

我有一个示例 MDF 文件,如下所示:

TITLE "1"
NMESHPOINTS 4
NNODES 4
NELEMENTS_TRIANG1 2

TIMESTEP 0.00001
NINTERNAL_TIMESTEPS 1000
NEXTERNAL_TIMESTEPS 100
DAMPING_FACTOR 0.01

MESHPOINT_COORDINATES
1 0.0 0.0 0.0
2 1.0 0.0 0.0
3 1.0 1.0 0.0
4 0.0 1.0 0.0


NODES_TRIANG1
1 1 2 3
2 1 3 4

我想从这个输入制作一个有效的 VTK 文件。
下面是输出的样子:
# vtk DataFile Version 1.0
2D Unstructured Grid
ASCII

DATASET UNSTRUCTURED_GRID
POINTS 4 float
0.0 0.0 0.0
1.0 0.0 0.0
1.0 1.0 0.0
0.0 1.0 0.0

CELLS 2 8
3 0 1 2
3 0 2 3

CELL_TYPES 2
5
5

我试图制作映射如何工作的图片,我希望它可以解释其中的一些。
为了让这个特定示例更容易一些,假设我们只想使用三角形。
mapping

遗憾的是,我也没有与 VTK 和 MDF 相同的文件,我尝试手动编写一个。
有没有办法用 AWK 做到这一点?
任何帮助都感激不尽!!

最佳答案

显示输入-> 输出映射的优秀图表!写这个非常容易:

$ cat tst.awk
$1 ~ /^[[:alpha:]]/ { f[$1] = $2 }

!NF { block = "" }

$1 == "MESHPOINT_COORDINATES" {
block = $1
print "# vtk DataFile Version 1.0"
print "2D Unstructured Grid"
print "ASCII"
print ""
print "DATASET UNSTRUCTURED_GRID"
printf "POINTS %d float\n", f["NMESHPOINTS"]
next
}

block == "MESHPOINT_COORDINATES" {
$1 = ""
sub(/^[[:space:]]+/,"")
print
}

$1 == "NODES_TRIANG1" {
block = $1
printf "\nCELLS %d %d\n", f["NELEMENTS_TRIANG1"], f["NELEMENTS_TRIANG1"] * 4
next
}

block == "NODES_TRIANG1" {
printf "%s", 3
for (i=2; i<=NF; i++) {
printf " %s", $i - 1
}
print ""
nlines++
}

END {
printf "\nCELL_TYPES %d\n", nlines
for (i=1; i<=nlines; i++) {
print 5
}
}

.
$ awk -f tst.awk file.mdf
# vtk DataFile Version 1.0
2D Unstructured Grid
ASCII

DATASET UNSTRUCTURED_GRID
POINTS 4 float
0.0 0.0 0.0
1.0 0.0 0.0
1.0 1.0 0.0
0.0 1.0 0.0

CELLS 2 8
3 0 1 2
3 0 2 3

CELL_TYPES 2
5
5

通常我们只回答发帖人首先尝试自己解决的问题,但您付出了足够的努力来创建示例并描述映射,恕我直言,您应该得到解决方案的帮助,因此 - 请参阅上文,尝试弄清楚它是如何工作的(添加“打印”,检查手册页等),然后如果您有任何具体问题,请发布一个新问题。

关于awk - 使用 AWK 将 MDF 转换为 VTK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61478483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com