newmaxima.f90

来自「蒙特卡罗的一个程序分析 与大家分享 共同研究」· F90 代码 · 共 64 行

F90
64
字号

subroutine NewMaxima( Nsp, MaxSp, nmtype, DXYZ, DROT, NATT, NSUC )

implicit none

integer, intent(in)									:: Nsp
integer, intent(in)									:: Maxsp
integer, intent(in)									:: nmtype

real, dimension(MaxSp), intent(inout)				:: DXYZ
real, dimension(MaxSp), intent(inout)				:: DROT

integer, dimension(nmtype, MaxSp), intent(inout)	:: NATT
integer, dimension(nmtype, MaxSp), intent(inout)	:: NSUC

! Local Stuff

integer									:: i

real									:: SimRatio
real, dimension(2)						:: TarRatio

TarRatio(1) = 0.5
TarRatio(2) = 0.5


do i = 1, Nsp

	if( NATT(1,i) /= 0 ) then

		SimRatio = real( NSUC(1,i) ) / real( NATT(1,i) )

		if( SimRatio > TarRatio(1) ) DXYZ(i) = DXYZ(i) * 1.05
		if( SimRatio < TarRatio(1) ) DXYZ(i) = DXYZ(i) * 0.95

		DXYZ(i) = min( DXYZ(i), 0.5 )

	end if

	if( NATT(2,i) /= 0 ) then
			
		SimRatio = real( NSUC(2,i) ) / real( NATT(2,i) )

		if( SimRatio > TarRatio(2) ) DROT(i) = DROT(i) * 1.05
		if( SimRatio < TarRatio(2) ) DROT(i) = DROT(i) * 0.95

		DROT(i) = min( DROT(i), 0.5 )

	end if

end do

NATT = 0
NSUC = 0

return

end subroutine NewMaxima





⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?