openFoam代码读懂笔记

1. sed口令

sed -i "/method/s/manual/simple/g" decomposeParDict

是不是指:将文件decomposeParDict内method那一行的manual换成simple

sed -i 就是直接对文本文件进行操作的

sed -i 's/原字符串/新字符串/' /home/1.txt
sed -i 's/原字符串/新字符串/g' /home/1.txt

这两条命令的区别就是,看示例吧

这是1.txt的内容

#cat 1.txt

d

ddd

#ff

再看执行这两条命令的区别吧

只换了每一行的第一个d

sed -i 's/d/7523/' /home/1.txt
执行结果
7523
7523dd
#ff

全换了 

sed -i 's/d/7523/g' /home/1.txt
执行结果
7523
752375237523
#ff
更多sed
https://blog.csdn.net/qq_33468857/article/details/84324609
需要学习更多正则化表达
https://www.runoob.com/regexp/regexp-rule.html
https://www.freesion.com/article/3158625799/

2. mpirun口令 ls -1口令 wc -l口令 grep口令 xargs口令 awk口令

mpirun -np $(ls -1 | grep processor | wc -l) ./$EXE -parallel

 意思是不是:参数-parallel并行计算./$EXE程序(可执行程序,如icoFoam),进程数(核心数量)为(ls -1 | grep processor | wc -l)

ls -1将文件全列出来,然后grep processor查找含有processor的文件按行列出来,然后wc -l数行数

mpirun --hostfile <machines> -np <nProcs> <foamExec> <otherArgs> -parallel > log &

 >log& 输出日志文件log

ls -1 -d processor* | grep -v ini | xargs rm

意思是不是:将当前文件夹下前缀为processor的文件按一个文件一行地列出来,然后找出不含ini的文件,然后全部删掉

-d指当前文件夹,processor*指processor为前缀的文件名,xargs rm删掉

mpirun

基本格式

mpirun [mpirun-options…] [options…]

 其中 [mpirun-options…], 主要选项如下:

-np    要加载的进程个数。

-p4pg   按照pgfile文件中的要求加载用户进程。pgfile文件描述用户在那些结点上加载什么样的用户进程。

ls

ls 则一行空格全列出来

ls -1 list one file per line,也就是只列出文件名

ls -l是Linuxunix命令,意思指以长格式的形式查看当前目录下所有可见文件的详细属性。

 举例:

ls -1

apache-maven-2.2.1-bin.tar.gz
apache-tomcat-6.0.30
apache-tomcat-6.0.30.zip
jdk-6u5-linux-x64.bin
jetty-6.1.14-fgw-aps.zip
jetty-distribution-7.3.0.v20110203.zip
moni2.tar.gz
ouput.log
status.sh

ls -l

total 149780
-rw-r--r-- 1 root root  2840961 Aug  7  2009 apache-maven-2.2.1-bin.tar.gz
drwxr-xr-- 2 root root     4096 Jul  5 10:45 apache-tomcat-6.0.30
-rw-r--r-- 1 root root  6908320 Jun 30 17:51 apache-tomcat-6.0.30.zip
-rwxr-xr-- 1 root root 63724381 Jun 30 17:51 jdk-6u5-linux-x64.bin
-rw-r--r-- 1 root root 24942637 Jul 11 16:59 jetty-6.1.14-fgw-aps.zip
-rw-r--r-- 1 root root  5910895 Apr  3  2011 jetty-distribution-7.3.0.v20110203.zip
-rw-r--r-- 1 root root 48835553 Jun 30 17:51 moni2.tar.gz
-rw-r--r-- 1 root root      211 Nov 14 16:35 ouput.log
-rw-r--r-- 1 root root      164 Oct 18 15:19 status.sh

wc

Linux wc命令用于计算字数。

利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

语法:

wc [-clw][--help][--version][文件...]

参数

  • -c或--bytes或--chars 只显示Bytes数。
  • -l或--lines 显示行数。
  • -w或--words 只显示字数。
  • --help 在线帮助。
  • --version 显示版本信息.

ls|wc -l与ls -l|wc -l的区别就是ls-l|wc -l多了显示total的一行。

ls|wc -l的结果是文件个数,ls -l|wc -l的结果是文件个数+1,也就是它计算的是行数

grep processor 查看逻辑CPU

grep -v 命令排除输出

cat test.log | grep "login"|grep -v "deviceType"

上面的命令的意思是:找出test.log中包含login信息的,且没有deviceType这个字段的。

xargs口令

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数

用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题。xargs将产生的长串文件列表拆散成多个子串,然后对每个子串调用rm

linux中,&和&&,|和||

在linux中,&和&&,|和||介绍如下:

&  表示任务在后台执行,如要在后台运行redis-server,则有  redis-server &

&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'    

| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l

|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"

\ 表示下一行继续

$1在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)

其他变量说明:

Linux——$1、$#、$@、$0、$1、$2_u012114090的博客-CSDN博客

并行计算mpi总结

并行计算:MPI总结_JacksonKim的博客-CSDN博客_mpi

awk口令

Linux awk 命令 | 菜鸟教程 (runoob.com)

awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号

例子:log.txt

2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo
# 每行按空格或TAB分割,输出文本中的1、4项
 $ awk '{print $1,$4}' log.txt
 ---------------------------------------------
 2 a
 3 like
 This's
 10 orange,apple,mongo
 # 格式化输出
 $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
 ---------------------------------------------
 2        a
 3        like
 This's
 10       orange,apple,mongo

3. decomposePar工具

decomposePar -force -cellDist

It decomposes a case to be run in parallel. The syntax of the command is the following

 decomposePar <root> <case> [-cellDist] [-fields] [-filterPatches] [-copyUniform]

It requires a dictionary named decomposeParDict is present in the system subdirectory of the case. 分解求解域,decomposePar程序相关的字典文件:decomposeParDict

OpenFOAM采用的并行计算方法是区域分解法

decomposeParDict文件中四种分解方法(simple, hierarchical, scotch, manual)都需要指定一些参数Coeffs,method来指定用哪种方法。

decomposePar会在算例文件的目录下为每一个核产生一个子文件夹,processorN(N为0, 1, ...)

DecomposePar - OpenFOAMWiki

4. reconstructPar工具

将分割后的场和网格重新合并,简单地以命令行来运行它即可

reconstructPar <root> <case> [-constant] [-latestTime] [-time time]

也可以单独对分割后的求解域的一部分进行后处理,即将各处理器文件夹看作一个独立的算例

paraFoam -case processor1

ReconstructPar - OpenFOAMWiki

5. 编译

g++编译:

g++ rewrite.cpp -o rewrite

意思是不是:用g++将rewrite.cpp编译成文件名为rewrite的文件

-o:指定生成可执行文件的名称。使用方法为:g++ -o afile file.cpp file.h ... (可执行文件不可与待编译或链接文件同名,否则会生成相应可执行文件且覆盖原编译或链接文件),如果不使用-o选项,则会生成默认可执行文件a.out。

-c:只编译不链接,只生成目标文件。

-g:添加gdb调试选项。

C/C++完整编译过程详解

【转载】C/C++完整编译过程详解 - ericling - 博客园

gcc/g++常用编译选项:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值