首页 > 其他分享 >install roms in mac M1

install roms in mac M1

时间:2022-08-30 19:35:33浏览次数:80  
标签:roms ROMS HDF5 mac NETCDF M1 export INCDIR

官方教程,请查阅wikiROMS(https://www.myroms.org/wiki/ROMS_Mac)

查找安装roms所需要的支持软件及位置

  1. make, Xcode, Perl, svn
  2. gfortran
  3. mpi
  4. netcdf

安装支持软件

可直接在homebrew官网(https://formulae.brew.sh)搜索,用brew install的命令下载即可

查询位置

gfortran

which gfortran

电脑里如果已安装,则通过which查询路径即可,如果未安装,可直接通过brew进行安装,因为gfotran已经集成到gcc里,因此可参考一下代码

brew install gcc

我个人which到的gfortran在
img
但通过检索,可以发现在/opt/homebrew/Cellar/里有完整的一些含头文件、库文件的包,因此后面设置环境变量时用的是Cellar内的路径。建议有兴趣也可以自行检索。
imgimg

mpi

which mpirun

同理可查找mpi所在的路径
img
Cellar:
img

netcdf

which ncdump

img
Cellar:
img

下载roms

在官网注册roms的账号

下载

  1. 创建并进入roms安装的文件夹
    cd ~
    mkdir ROMS
    cd ROMS    #我选择安装在主目录下的ROMS目录里
    
  2. 下载roms包
    svn checkout --username joeroms https://www.myroms.org/svn/src/trunk #把joeroms改成自己的roms账号用户名,下载好后会发现有一个ROMS下有一个trunk的目录
    svn checkout --username joeroms https://www.myroms.org/svn/src/trunk mydir #也可指定文件夹,下载好后会发现ROMS下有一个mydir的目录
    

自定义构建脚本

ROMS源代码在trunk/ROMS/Bin目录中附带一个构建脚本。提供了用sh(build_roms.sh)和csh(build.sh)编写的示例。接下来,将选择用sh脚本作示范

Upwelling示例创建和配置

  1. 新建upwelling算例
  2. 复制所需要的文件
  3. 修改build_roms.sh
  4. 修改my_build_paths.sh
  5. 修改Linux-gfortran.mk(它好像不起作用,请忽略)

在trunk同级目录下创建Projects的新文件夹,并在下面创建upwelling的算例

 mkdir Projects

img

cd Projects
mkdir Upwelling
cd Upwelling

复制所需要的文件

cp ../../trunk/ROMS/External/roms_upwelling.in .
cp ../../trunk/ROMS/Include/upwelling.h .
cp ../../trunk/ROMS/Bin/build_roms.sh .

修改build_roms.sh

export   ROMS_APPLICATION=UPWELLING 
export        MY_ROOT_DIR=/Users/username/ROMS 
export     MY_PROJECT_DIR=${MY_ROOT_DIR}/Projects/Upwelling
# export  MY_CPP_FLAGS=             #要把这行注释掉
export            USE_MPI=on  
export         USE_MPIF90=on 
export          which_MPI=openmpi   #可选择mpi方案openmpi,mpich...
export               FORT=gfortran  #可选择ifort,gfortran...
export        USE_NETCDF4=on        #选择netcdf4或者netcdf3
export        USE_MY_LIBS=yes       #使用自己安装的库

修改情况如上所示

修改my_build_paths.sh

如果在build_roms.sh中选择USE_MY_LIBS=yes,则需要修改my_build_paths.sh以配置自己的环境变量。注意需要修改的有:mpi,netcdf4,hdf5。
因为我选择的是gfortran,openmpi,故找到gfortran栏,修改openmpi,netcdf4,hdf5:

elif [ "${which_MPI}" = "openmpi" ]; then
export        MPI_SOFT=/opt/homebrew/Cellar/open-mpi/4.1.4_1        #mpi
export          NETCDF=/opt/homebrew/Cellar/netcdf/4.8.1_3          #netcdf4
export            HDF5=/opt/homebrew/Cellar/hdf5/1.12.2_1          #hdf5

修改Linux-gfortran.mk

ifdef USE_NETCDF4
#        NF_CONFIG ?= nf-config
#    NETCDF_INCDIR ?= $(shell $(NF_CONFIG) --prefix)/include
#             LIBS += $(shell $(NF_CONFIG) --flibs)
#           INCDIR += $(NETCDF_INCDIR) $(INCDIR)
    NETCDF_INCDIR ?= /opt/homebrew/Cellar/netcdf/4.8.1_3/include
    NETCDF_LIBDIR ?= /opt/homebrew/Cellar/netcdf/4.8.1_3/lib
      NETCDF_LIBS ?= -lnetcdf
             LIBS += -L$(NETCDF_LIBDIR) $(NETCDF_LIBS)
           INCDIR += $(NETCDF_INCDIR) $(INCDIR)
else
    NETCDF_INCDIR ?= /opt/gfortransoft/serial/netcdf3/include
    NETCDF_LIBDIR ?= /opt/gfortransoft/serial/netcdf3/lib
      NETCDF_LIBS ?= -lnetcdf
             LIBS += -L$(NETCDF_LIBDIR) $(NETCDF_LIBS)
           INCDIR += $(NETCDF_INCDIR) $(INCDIR)
endif

ifdef USE_HDF5
      HDF5_INCDIR ?= /opt/homebrew/Cellar/hdf5/1.12.2_1/include
      HDF5_LIBDIR ?= /opt/homebrew/Cellar/hdf5/1.12.2_1/lib
#      HDF5_INCDIR ?= $(HDF5_INC)
#      HDF5_LIBDIR ?= $(HDF5_LIBDIR)
        HDF5_LIBS ?= -lhdf5_fortran -lhdf5hl_fortran -lhdf5 -lz
             LIBS += -L$(HDF5_LIBDIR) $(HDF5_LIBS)
           INCDIR += $(HDF5_INCDIR)
endif

Upwelling示例编译

cd ~/ROMS/Projects/Upwelling
./build.bash

编译成功后可以看到romsM的可执行文件

Upwelling示例运行

  1. 对oms_upwelling.in进行修改
    !    VARNAME = ROMS/External/varinfo.yaml
    VARNAME = /Users/dan_chen/ROMS/trunk/ROMS/External/varinfo.yaml
    NtileI == 2                               ! I-direction partition
    NtileJ == 2                               ! J-direction partition
    ! 如果需要多核并行,还需修改 NtileI 和 NtileJ:确保并行使用的核数 =NtileI × NtileJ
    
  2. 运行
    ./romsM  < roms_upwelling.in  #使用串行编译
    mpirun -n 1 ./romsM  roms_upwelling.in  #并行编译单核运行,相当于串行
    mpirun -n 4 ./romsM  roms_upwelling.in  # 并行编译4核运行
    mpirun -n 4 ./romsM  roms_upwelling.in > log.roms  # 保存运行信息到log.roms
    
  3. 运行成功可在log日志看到ROMS/TOMS: DONE...,此时upweilling目录下出现生成的nc文件
    img

参考

  1. https://www.myroms.org/wiki/ROMS_Mac
  2. https://www.myroms.org/forum/viewtopic.php?t=5713
  3. https://zhuanlan.zhihu.com/p/545513615

标签:roms,ROMS,HDF5,mac,NETCDF,M1,export,INCDIR
From: https://www.cnblogs.com/dan-chen/p/16640546.html

相关文章

  • Movavi Picverse for mac(AI智能修图)中文版
    MovaviPicverseformac是一款摄影师照片编辑器。旨在满足初学者和专业摄影师的需求。该应用程序为您提供了基于AI的工具,借助人工智能技术,即时优化图像中的颜色和对比度......
  • mac上找不到pip命令
     maczsh:commandnotfound:pip解决方法第一步先下载:curlhttps://bootstrap.pypa.io/pip/get-pip.py-oget-pip.py第二步安装sudopython3get-pip.py......
  • 苹果M1芯片安装xxx.app 显示已损坏,无法打开,你应该将它移到废纸篓/打不开 xxx
    转载自:https://www.bilibili.com/read/cv14204425 在我们安装一些Mac软件时系统会出现“xxx已损坏,打不开。您应将它移到废纸篓”或者“打不开xxx,因为它来自身份不明的......
  • m12
    rcnn=regionproposals(候选区域)+CNN1、用SelectiveSearch(选择性搜索)产生候选区域,是基于像素相似性进行的分割1️⃣用论文《EfficientGraph-BasedImageSegmentation》......
  • MAC brew 安装wireguard-tools
     ➜Desktopbrewinstall-swireguard-tools==>Downloadinghttps://ghcr.io/v2/homebrew/core/bash/manifests/5.1.16########################################......
  • Adobe Audition 2022(au 2022)mac/win
    AdobeAudition2022简称au,一款实用,相当受欢迎且功能强大的专业音频工具。能够进行实时预览和多轨音频的混缩合成,对于喜欢自己进行音频处理的朋友们来说,是非常好用的软件......
  • Android sqlcipher 对于加密的Sqlite库在Mac上进行解密的正确姿势
    前言:说实话我平常对于工作中的一些所经历的问题很少记录成文,基本上都是一些学习笔记,这里打算备忘一篇,由于领导的要求,最近也刚好在大重构,需要对AndroidApp中应用使用的db......
  • MediaHuman YouTube Downloader for Mac(视频下载软件)
    MediaHumanYouTubeDownloaderforMac是一款适用于mac视频下载软件。mediahumanyoutubemac支持多个视频同时下载,支持超高分辨率包括4K和8K,支持YouTube,Vimeo,DAIlymotion......
  • mac远程连接windows
    MicrosoftRemoteDesktopBeta10.7.5下载:https://www.macwk.com/soft/microsoft-remote-desktop-beta 远程传送文件的方法 远程:......
  • Mac系统下Datagrip打不开、点击没反应?
    有没有可能是因为你从网上下载了一些破解软件导致的?背景Mac系统下JB公司家的IDEA、Datagrip、PyCharm或Goland打不开点击没反应……分析大概率是之前安装过汉化插......