zoukankan      html  css  js  c++  java
  • FORTRAN_getarg

    我们运行程序时,一般都要求可执行文件rtm_i.e和参数文件parameter.par在同一个目录下,

    程序中是这样的:

    SUBROUTINE READPAR(.....................................)

    OPEN(33,FILE='parameter.par')

    ........

    这样就定死要求,'parameter.par'文件必须在可执行程序运行的目录下。

    发作业命令:

    #!/bin/sh

     MPI_BIN=/software/gpu_dev_tools/mpich2-1.4.1p1/bin
    time $MPI_BIN/mpirun -np 103 -machinefile hostlist ./rtm_i_v4.e >log_rtm&

    但,若移植到软件界面中,要求可执行程序与参数文件可以在不同的路径下,那么,在Fortran中,就用到getarg函数了。

    思路是:将参数文件包含至发作业的命令行中,然后,执行时,程序中读入参数文件,并去找。用getarg函数。

    【from:http://blog.sina.com.cn/s/blog_67f37e760101k2r7.html

    getarg是用来返回你输入的命令行参数的。
    call getarg(n,buffer)
    其中n是命令序号, buffer是相应的命令行参数。运行程序本身的命令是0号,跟在它后面的参数是1,2。。。号。

    例如:“发作业的命令time $MPI_BIN/mpirun -np 103 -machinefile hostlist ./rtm_i_v4.e  parameter.par >log_rtm&” ,其中,./rtm_i_v4.e对应0号命令,parameter.par 对应1号命令

    比如,你写这样一个小程序:
    character*80 buff
    call getarg(0,buff)
    write(*,*) buff
    call getarg(1, buff)
    write(*,*) buff
    call getarg(2, buff )
    write (*,*) buff
    end
    然后编译它,比如把这个可执行程序命名为mypro,然后键入命令如下
    Linux系统,键入
    ./mypro   ar1 ar2
    可以看到结果是
    ./mypro
    ar1
    ar2
    Windows下,则键入
    mypro ar1 ar2
    可看到结果是
    mypro
    ar1
    ar2
    可见,用命令行方式,程序执行命令本身是第0个参数,后面跟的第1,2。。个参量则可以用相应的getarg来获得。利用这个getarg,你可以在外部输入命令时控制程序中的一些东西。

    现在程序变成这样:

          CHARACTER*256 fn_par

    *===================================================================
          call getarg(1, fn_par)
          write(*,*) fn_par

    *===== INPUTING THE PARAMETERS FOR RUNNING THE CODE

    CALL READPAR(........................,fn_par,

    ........

    SUBROUTINE READPAR(.....................................,fn_par)

     CHARACTER*256 fn_par

     OPEN(33, FILE=fn_par)

      ........

    发作业命令变成这样:

    #!/bin/sh

    MPI_BIN=/software/gpu_dev_tools/mpich2-1.4.1p1/bin
    time $MPI_BIN/mpirun -np 103 -machinefile hostlist ./rtm_i_v4.e /autofs/is0002/chengxiang/guosj_v2/4liuxy_GPURTM/parameter_rtm_image.par >log_rtm&

  • 相关阅读:
    五步搞定Android开发环境部署!
    WebBrowser JS回调delphi的方法 (简单通用)
    Delphi根据方法名调用方法
    Delphi TstringList Stringlist的特殊用法
    delphi 获取webbrowser的cookies给Idhttp用
    HttpHelper类登录淘宝联盟并下载淘宝客订单xls
    我的常用笔记(GetAndroid,ADBDemo,GetSJ,GetTB)
    P1025 数的划分
    P1969 积木大赛
    P2038 无线网络发射器选址
  • 原文地址:https://www.cnblogs.com/guosj/p/4867403.html
Copyright © 2011-2022 走看看