- 积分
- 2382
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-8-1
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
从http://bbs.06climate.com/forum.p ... &extra=page%3D1发现了WindowsLinuxSystem的好处,尝试着在我的新电脑+Win10——64bit+WSL(Ubuntu16.04)上安装WRF。
我每个版本的WRF都是安装3个,basic、preset、vortex分别编译,configure时均选择“33”——gfortran编译器+sm(共享内存并行),compile选择“-j 4 em_real”。
这回,basic成功编译,preset和vortex均报错,不能正常生成wrf.exe,可以生成real.exe, ndown.exe,tc.exe。后来仔细查找编译日志,找到最近的一处错误,如下:
time gfortran -o wrf.exe -fopenmp -O2 -ftree-vectorize -funroll-loops -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 wrf.o ../main/module_wrf_top.o libwrflib.a /app/modeling/WRFV3-3.9.1/WRFV3-preset/external/fftpack/fftpack5/libfftpack.a /app/modeling/WRFV3-3.9.1/WRFV3-preset/external/io_grib1/libio_grib1.a /app/modeling/WRFV3-3.9.1/WRFV3-preset/external/io_grib_share/libio_grib_share.a /app/modeling/WRFV3-3.9.1/WRFV3-preset/external/io_int/libwrfio_int.a -L/app/modeling/WRFV3-3.9.1/WRFV3-preset/external/esmf_time_f90 -lesmf_time /app/modeling/WRFV3-3.9.1/WRFV3-preset/external/RSL_LITE/librsl_lite.a /app/modeling/WRFV3-3.9.1/WRFV3-preset/frame/module_internal_header_util.o /app/modeling/WRFV3-3.9.1/WRFV3-preset/frame/pack_utils.o -L/app/modeling/WRFV3-3.9.1/WRFV3-preset/external/io_netcdf -lwrfio_nf -L/app/software/netcdf-3.6.3/lib -lnetcdf
Makefile:16: recipe for target 'em_wrf' failed
(1)进入WRFV3-preset/main目录,输入上面蓝色字体命令,得到如下结果:
libwrflib.a(mediation_nest_move.o):在函数‘med_nest_move_’中:
mediation_nest_move.f90:(.text+0xf12):对‘wrf_dm_move_nest_’未定义的引用
collect2: error: ld returned 1 exit status
(2)定位到WRFV3-preset/share/mediation_nest_move.F文件,其中第12行首次出现wrf_dm_move_nest,如下:
#if defined(DM_PARALLEL) && ! defined(STUBMPI)
USE module_dm, ONLY : wrf_dm_move_nest,nest_task_offsets,mpi_comm_to_kid,mpi_comm_to_mom, which_kid
#endif
(3)定位到WRFV3-preset/frame/module_dm.F文件,其中2203-2209行对上述函数做了定义,如下:
SUBROUTINE wrf_dm_move_nest ( parent, nest, dx, dy )
USE module_domain, ONLY : domain
IMPLICIT NONE
TYPE (domain), INTENT(INOUT) :: parent, nest
INTEGER, INTENT(IN) :: dx,dy
RETURN
END SUBROUTINE wrf_dm_move_nest
(4)再反过来分析第(2)步,既然是只有采用DM_PARALLEL的情况下才调用wrf_dm_move_nest函数,编译报错的原因就是对该函数没有定义。
(5)再回到最初configure,选择35——gfortran+SM+DM。(在此之前先执行“sudo apt install mpich mpich-doc”安装mpi并行环境)
最后运行./clean; ./compile -j 4 em_real 1>compile.log 2>compile.err
终于出现了久违的wrf.exe, real.exe, tc.exe, ndown.exe
按理说,这个错误并不符合逻辑。既然configure的时候选了33,就不应该调用dm相关的函数,至少WRFV3-3.8之前的版本我没有遇到这个问题,或许是3.9.1版本的bug,或许以后的版本WRF移动嵌套网格必须采用DM分布式并行??
希望能够大牛给予深刻解读~~
|
|