Learn to run OMARE(i)
step 1 - 解压源代码后,在目录里创建 build
文件夹
step 2 - 修改文件中的路径
a. CMakeLists.txt
set(JASMIN_VERSION 新路径)
debug 行运行时注释掉,调试时开启
b. input/GYRE/namelist_cfg (之后可以在build中改)
nn_GYRE resolution
step 3 - 进入 build
文件夹,执行 ~/jasmin4/bin/cmake ../
step 4 - 执行 make
( make -j 50
多线程)
step 5 - ./main2d ../input/nemo-2d.input
运行不完 / 测试时可 ctrl+c
中止
step 6 - ctrl+r
teravap
查看数据 ( /usr/local/teravap/teravap2_2_0.linux- x86_64/bin/teravap
)
数据在 ./build/javis../dumps.javis
中,打开后 Add - Mesh , Draw。更换数据需要重启。
修改完 h 文件后执行 step 4
虚拟机 mpi 运行
mpirun -n 4 ./main2d ../input/nemo-2d.input |
运行步数在 nemo-2d.input
里改, namelist
里无效。
使用 gdb 调试时 Fortran 的代码行是混乱的,用 watch 下断点。
gdb 调试方法参考 这篇博客。
调试例子
b NemoSpaceMeanCenter :: coarsen | |
b postprocessCoarsenOperator | |
set args ../input/nemo-2d.input | |
r |
对于 shared_ptr
p fdata | |
$3 = {<boost::shared_ptr<JASMIN::pdat::CellData<2, double> >> = {px = 0x9a95ed0, pn = { | |
pi_ = 0x9a96460}}, <No data fields>} |
使用如下命令查看。
p ((JASMIN::pdat::CellData<2,double>*)fdata)->getDepth() | |
p *(((JASMIN::pdat::CellData<2,double>*)fdata)->getPointer(0)+40) | |
p *(((JASMIN::pdat::CellData<2,double>*)coarse.getPatchData(manager->sshn_id))->getPointer(0)+400) |