Fortran
wjfqvi
这个作者很懒,什么都没留下…
展开
-
Linux系统安装minuit包
Linux系统安装minuit包Linux系统安装Fortran版本的minuit包需要先安装makefile首先下载minuit.tar.gz文件# Extract the minuit tar ball$ tar -zxvf minuit.tar.gz# A new directory build_minuit/ should be made. Go there.cd buil...原创 2018-11-30 13:58:08 · 777 阅读 · 1 评论 -
Fortran openmp section并行计算
使用 !$OMP SECTIONS 来分配不同到线程执行不同的任务代码如下:program main use omp_lib implicit none integer :: ii,jj,kk !$OMP PARALLEL !$OMP SECTIONS !$OMP SECTION do ii=1,10 wr...原创 2019-01-10 01:08:13 · 1363 阅读 · 0 评论 -
Fortran DO循环使用openmp并行
使用do循环输出整数1-10,use omp_lib 可以使用函数OMP_get_thread_num()查看线程号,从0开始使用 !$OMP DO 可以将do循环拆分到不同线程program main use omp_lib implicit none integer :: ii write(*,*) "parallel" !$OMP ...原创 2019-01-10 00:57:26 · 7177 阅读 · 0 评论 -
Fortran openmp并行 Hello World
代码如下:program main implicit none write(*,*) 'sequential:' write(*,*) 'hello!' write(*,*) 'parallel:' !$omp parallel write(*,*) 'hello, world!' !$omp end parallel write(*,*) 'sequ...原创 2019-01-10 00:08:42 · 2660 阅读 · 0 评论 -
Fortran三种计时方法
方法1:call date_and_time(charecter_date(len=8),charecter_time(len=10))方法2:call cpu_time(real_time)注意,如果是多线程运行,得到的结果是所以线程时间的和方法3:call system_clock(int_time)单位是毫秒代码:program main implicit non...原创 2019-01-11 11:27:11 · 15072 阅读 · 4 评论 -
Fortran面向对象练习,timer类
module mod_timerinteger,parameter :: DBL = 4 !selected_real_kind(p=14)type,public :: timer private real(DBL) :: saved_timecontains procedure,public :: start_timer => start_timer_sub pr...原创 2018-12-11 11:11:12 · 805 阅读 · 0 评论 -
sublime 编写的 makefile 运行遇到 makefile missing separator 错误
sublime有时候会自动把Tab转换为空格,sublime打开makefile文件后,先设置Tab size = 4,再取消 indent using space,再把空格的地方改为Tab,即可如图所示,命令前面要是Tab,不能是空格1 : 1.o gfortran -o 1 obj/*.o...原创 2018-12-27 15:04:23 · 471 阅读 · 0 评论 -
sublime3 配置 Fortran语法高亮
下载解压后复制文件夹,打开sublime => Preference => Browse packages 粘贴进去。重启sublime,在 View => syntax => Fortran 选择 Fortran - modern原创 2018-12-16 15:16:22 · 3701 阅读 · 1 评论 -
Fortran 和 c++ 的 插入排序 insertion sort 代码
插入排序法,代码如下:subroutine insertionsort(a) implicit none integer :: a(:) integer :: temp integer :: n , ii,jj n=size(a) do ii=2,n do jj=ii,2,-1 if(a(jj) < a(jj-1)) t...原创 2018-12-07 12:49:19 · 506 阅读 · 0 评论 -
CentOS 下安装gfortran
ubuntu终端输入gfortran,如果没有安装,会有提示安装的命令:sudo apt-get install gfortranCentOS没有提示,CentOS用如下命令安装:sudo yum install gcc-gfortran原创 2018-12-03 21:40:59 · 17709 阅读 · 0 评论 -
Fortran不定大小的数组被subroutine调用是否可以?
写一段代码,从实验数据文件中,选取elab在limit1和limit2之间的实验数据存到type为struct_expt_data的数组中,然后再找出不同的elab值,存到elist数组中。实验数据格式如下,其中第二列为elab:DSG 2.72 130.000 0.19556E+03 0.72360E+01 HR(69)DSG 2.72 150.000 0...原创 2018-12-05 18:04:48 · 1431 阅读 · 0 评论 -
Fortran的subroutine可变数组作为形参
Fortran的subroutine可变数组作为形参需要显示接口,例如可以把subroutine放到module里面产生接口,下面的做法是正确的:module array_over2containssubroutine over2(abc) real,intent(inout) :: abc(:) abc = abc/2.end subroutine over2end module ...原创 2018-12-03 15:06:32 · 4235 阅读 · 0 评论 -
Fortran的两种显式接口:模块化和interface
写一个subroutine,如果形参给定数组元素个数,可以正常编译运行subroutine abc(a) implicit none integer :: a(3) a(1)=1 a(2)=2 end subroutineprogram main implicit none integer :: a(3)=(/5,5,5/) ...原创 2018-12-05 14:51:16 · 7557 阅读 · 0 评论 -
Fortran链表提取不重复的顺序数组
从散射实验数据中提取elab这一项,按顺序排列输出不重复的数据格式为:obsname-elab--acm------obsx------------error--------------refDSG 2.72 130.000 0.19556E+03 0.72360E+01 HR(69)DSG 2.72 150.000 0.17777E+03 0.23...原创 2018-12-03 11:16:58 · 698 阅读 · 0 评论 -
Minuit实例,Fortran-callable 模式
program main implicit none integer,parameter :: NER=kind(0.0d0) real(NER) :: aa,bb,cc,dd integer :: NPAR=2,IFLAG real(NER) :: XVAL(2)=0,GRAD(2)=0 real(NER) :: FVAL integer :: errflag,ivarb...原创 2018-11-30 15:16:45 · 694 阅读 · 1 评论 -
Sublime3 设置 Fortran 代码高亮
ubuntu自带的gedit支持Fortran高亮,但是gedit毕竟不好用,改用sublime,sublime原生不支持Fortran代码,需要自己配置。首先下载文件 https://github.com/textmate/fortran.tmbundle打开sublime => Preferences => Browse Packages把下载好的文件解压缩后放进去。重启s...原创 2018-11-30 14:28:46 · 2243 阅读 · 0 评论 -
libblas 和 liblapack 的安装
NNSCAT项目编译中用到的两个包的安装一个是libblas,一个是liblapackubuntu系统的安装方法sudo apt-get install libblas-dev liblapack-dev安装完这个,还有minuit,就可以使用make命令编译nnscat了...原创 2018-11-30 14:02:31 · 8347 阅读 · 0 评论 -
MINUIT 在 local minimum 面前束手无策
设计一个0-1之间的有很多局域最小值的快速震荡函数FVAL = cos(100*3.1415926535*xval(1))/(1+scale*(xval(1)-0.55)**2)scale是一个放大参数,scale越大,最小值与其它极值点差异越大代码:program main implicit none integer,parameter :: NER=kind(0.0d0) i...原创 2019-04-09 22:39:28 · 577 阅读 · 0 评论