求用fortran语言解释 伊辛模型 程序,最好在程序中注释出用蒙特卡洛方法的五个步骤在哪里

求用fortran语言解释 伊辛模型 程序,最好在程序中注释出用蒙特卡洛方法的五个步骤在哪里,第1张

// 我是按C/C++的注释格式写的,对此Fortran 90 程序直接改成!就可以了

program main1

 parameter(n=50)

 integer i,j

 common a(n,n)

 real t,m,z

// 设置输出文件

 open(1,file='out.dat')

// 初始化Ising格点,均赋值为1

 do 10 i=1,n

 do 20 j=1,n

     a(i,j)=1

  20  continue

  10  continue

  

  // 体系按温度改变(0.1~4.0)进行Monte Carlo模拟

      do 30 t=0.1,4.0,0.1

      // 体系的预热阶段,在此期间不采样

        do 40,i=1,5000

    call abc(t) // 调用metropolis算法子例程

  40  continue

     // 预热结束,可以对体系进行采样了

      m = 0.0

 do 50,k=1,1000

    call abc(t)

 if(mod(k,5).eq.0) then

    z=0.0

    do 60,i=1,n

    do 70,j=1,n

z=z+a(i,j)

  70     continue

  60     continue

         m=m+z/(n*n) // 计算体系的磁化强度M

  end if

  50   continue

       m=m/200

  write(1,200)t,m // 记录M随着T的变化曲线,向文件输出

  write(*,200)t,m // 向屏幕输出

  30   continue

  

  200  format(2x,f6.4,8x,f10.6)

       close(1)

  end

//实现Metropolis算法

  subroutine abc(t)

  parameter(n=50)

  common a(n,n)

  do 10,i=1,n

  do 20,j=1,n

// x1, x2, x3, x4 是当前格点(i,j)的四个近邻

  x1=a(i+1,j)

  x2=a(i,j+1)

  x3=a(i-1,j)

  x4=a(i,j-1)

  if(i.eq.1) x3=a(n,j)

  if(i.eq.n) x1=a(1,j)

  if(j.eq.1) x4=a(i,n)

  if(j.eq.n) x2=a(i,1)

// h表示体系尝试翻转前后的Hamiltonian(能量)变化

  h=2*a(i,j)*(x1+x2+x3+x4)

  w=exp(-h/t)

  b=rand()

//按Metropolis规则,判断是否接受当前格点的尝试翻转

  if(w.gt.b) a(i,j)=-a(i,j)

  20   continue

  10   continue

       end

 

 // 产生0~1均匀分布的随机数

  function rand()

  real rand

  integer seed,c1,c2,c3

  parameter(c1=29,c2=217,c3=1024)

  data seed/0/

  seed=mod(seed*c1+c2,c3)

  rand=real(seed)/c3

  end

DSP(digital singnal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,源源超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

DSP芯片,也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器具,其主机应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片一般具有如下主要特点:

(1)在一个指令周期内可完成一次乘法和一次加法;

(2)程序和数据空间分开,可以同时访问指令和数据;

(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;

(4)具有低开销或无开销循环及跳转的硬件支持;

(5)快速的中断处理和硬件I/O支持;

(6)具有在单周期内 *** 作的多个硬件地址产生器;

(7)可以并行执行多个 *** 作;

(8)支持流水线 *** 作,使取指、译码和执行等 *** 作可以重叠执行。

当然,与通用微处理器相比,DSP芯片的其他通用功能相对较弱些。

其中:alaising是全屏反锯齿的意思!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11221486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存