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)
更新于 阅读次数