如何在电脑上安装ModEM软件
- 所写教程是在win10 Ubuntu子系统下安装(Ubuntu系统安装操作一样)
-
- 1. 在win10上安装ubuntu子系统
- 2. 在Ubuntu子系统上安装必要更新和所需基本配置
- 3. 在ubuntu子系统上安装图形界面(非必须,可自行决定是否安装)
- 4. 在ubuntu子系统下安装lapack和blas(后面编译ModEM时需要)
- 5. 在ubuntu下安装好intel fortran的编译器:
- 6. 最后进行ModEM的编译安装
所写教程是在win10 Ubuntu子系统下安装(Ubuntu系统安装操作一样)
1. 在win10上安装ubuntu子系统
可以参考以下链接:
安装win10 Ubuntu子系统链接
2. 在Ubuntu子系统上安装必要更新和所需基本配置
在子系统终端输入如下命令:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install alsa
sudo apt-get install xorg openbox
如图所示:
3. 在ubuntu子系统上安装图形界面(非必须,可自行决定是否安装)
同样在终端输入如下操作:
sudo apt-get install xfce4
sudo apt-get install xrdp
安装完成后,输入如下命令:
sudo sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini
sudo echo xfce4-session >~/.xsession
sudo service xrdp restart
都完成后,就可以在win10上远程登录子系统的图形界面了。操作如下:
- 首先在win10电脑搜索远程桌面连接:
- 然后在用户名中输入
localhost:3390
- 然后输入子系统的用户名和你设置的密码即可登录
- 登录后是这样:
4. 在ubuntu子系统下安装lapack和blas(后面编译ModEM时需要)
不用从源码安装,那样编译又慢而且操作很复杂容易出错,在ubuntu上一条命令就可以解决安装问题:
sudo apt-get install liblapack-dev libblas-dev
安装完后用下面fortan程序进行验证是否安装好了lapack和blas
program main
implicit none
INTEGER :: N, LDA, LDB
INTEGER :: NRHS
INTEGER :: INFO
INTEGER :: IPIV(4)
REAL(8) :: A(4,4), B(4,1)
N=4;LDA=4;LDB=4
NRHS=1
A=reshape((/1.80,2.88,2.05,-0.89,& 5.25,-2.95,-0.95,-3.80,& 1.58,-2.69,-2.90,-1.04,& -1.11,-0.66,-0.59,0.80/),(/4,4/))
B=reshape((/9.52,24.35,0.77,-6.22/),(/4,1/))
call DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
write(*,*) "Solution:"
write(*,'(f8.3)') B
write(*,*) "INFO=", INFO
end program
编译和运行:
gfortran test1.f90 -o test1 -llapack -lblas
./test1
正确的运行结果如下:
5. 在ubuntu下安装好intel fortran的编译器:
前面准备工作做好了,其实安装很简单,推荐在图形界面下安装,因为这样可以选择模块进行安装,不然就只能全部进行安装了,占用空间比较大。
- 把intel fortran安装包进行解压,解压后输入如下命令进行图形界面安装:
sudo ./install_GUI.sh
- 然后就会出现如下安装界面,全部下一步即可,提供的下载包有永久使用的license:
- 安装完成后需要设置下环境路径:
sudo vim /etc/profile # 用vim打开进行编辑
在文件最后加好如下路径设置:
#intel 2019
export INTEL=/opt/intel # the install directory of intel
export PATH=$INTEL/bin:$PATH
export LD_LIBRARY_PATH=$INTEL/lib/intel64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$INTEL/mkl/lib/intel64:$LD_LIBRARY_PATH
export LIBRARY_PATH=$INTEL/lib/intel64:LIBRARY_PATH
source /opt/intel/bin/ifortvars.sh intel64
source /opt/intel/bin/iccvars.sh intel64
source /opt/intel/bin/compilervars.sh intel64
- 添加好后,关闭ubuntu子系统,然后再打开,使得环境变量生效,然后测试一个例子,看看是否
ifort
命令可以用了。
program first
print *, 'Hello World!'
print *, sin(123.4)
end program first
编译和运行:
ifort first.f90 –o first
./first
运行出如上结果就表示ifort安装成功。
6. 最后进行ModEM的编译安装
- 进入提供的f90文件夹修改下
Makefile
里面f90文件夹所在的路径:
其他的不用修改,我已经修改好了。
- 修改好后输入以下命令就可以编译:
make -j12 # 你自己电脑多少线程就输入多少数字,我电脑12个线程,就写-j12,这样编译快很多
这样编译好后会生成一个可执行文件Mod3DMT
, 然后把该文件加入系统路径,就可以在任意位置运行该可执行程序了。
- 添加任意位置执行的环境变量,命令如下:
我的生成的可执行文件Mod3DMT
在上图所示的路径,添加到系统环境变量即可。
sudo vim /etc/profile # 用vim打开
export Modem=/home/think/fortran
export PATH=$PATH:$Modem/modem
添加完后如下图所示:
- 进行测试检验,在终端任意位置输入如下命令,出现这些提示符就表示安装好了:
Mod3DMT
正确信息:
Copyright (c) 2004-2014 Oregon State University
AUTHORS Gary Egbert, Anna Kelbert & Naser Meqbel
College of Earth, Ocean and Atmospheric Sciences
Output information to files, and progress report to screen (default).
Usage: Mod3DMT -[job] [args]
[READ_WRITE]
-R rFile_Model rFile_Data [wFile_Model wFile_Data]
Reads your input files and checks them for validity;
optionally also writes them out
[FORWARD]
-F rFile_Model rFile_Data wFile_Data [wFile_EMsoln rFile_fwdCtrl]
Calculates the predicted data and saves the EM solution
[INVERSE]
-I NLCG rFile_Model rFile_Data [lambda eps]
Here, lambda = the initial damping parameter for inversion
eps = misfit tolerance for the forward solver
OR
-I NLCG rFile_Model rFile_Data [rFile_invCtrl rFile_fwdCtrl]
Optionally, may also supply
the model covariance configuration file [rFile_Cov]
the starting model parameter perturbation [rFile_dModel]
Runs an inverse search to yield an inverse model at every iteration
[COMPUTE_J]
-J rFile_Model rFile_Data wFile_Sens [rFile_fwdCtrl]
Calculates and saves the full J(acobian)
[MULT_BY_J]
-M rFile_Model rFile_dModel rFile_Data wFile_Data [rFile_fwdCtrl]
Multiplies a model by J to create a data vector
[MULT_BY_J_T]
-T rFile_Model rFile_Data wFile_dModel [rFile_fwdCtrl]
Multiplies a data vector by J^T to create a model
[MULT_BY_J_T_multi_Tx]
-x rFile_Model rFile_Data wFile_dModel [rFile_fwdCtrl]
Multiplies a data vector by J^T to output models for each transmitter
[APPLY_COV]
-C FWD rFile_Model wFile_Model [rFile_Cov rFile_Prior]
Applies the model covariance to produce a smooth model output
Optionally, also specify the prior model to compute resistivities
from model perturbation: m = C_m^{ 1/2} \\tilde{ m} + m_0
[TEST_ADJ]
-A J rFile_Model rFile_dModel rFile_Data [wFile_Model wFile_Data]
Tests the equality d^T J m = m^T J^T d for any model and data.
Optionally, outputs J m and J^T d.
[TEST_SENS]
-S rFile_Model rFile_dModel rFile_Data wFile_Data [wFile_Sens]
Multiplies by the full Jacobian, row by row, to get d = J m.
Compare to the output of [MULT_BY_J] to test [COMPUTE_J]
Optional final argument -v [debug|full|regular|compact|result|none]
indicates the desired level of output to screen and to files.
- 教程到这里就结束了,大家可以运行自己的模型文件,后面写一个使用
mtpy
生成模型输入文件的教程。