了解 Fortran 中的不同类型
Understanding different types in Fortran
我正在阅读 Fortran 代码,遇到以下代码,无法理解它的作用。
m%AllOuts( BAzimuth(k) ) = m%BEMT_u(indx)%psi(k)*R2D
我知道这里的 % 像管道指示器一样工作,以类似于 Python 中的字典的方式访问值。我有一本字典 m 比方说,第一个键是 AllOuts,但是括号内的任何内容是什么意思?它像另一本词典吗?
百分号不表示字典。 Fortran 中没有本地词典。
百分号表示类型的组成部分。例如:
! Declare a type
type :: rectangle
integer :: x, y
character(len=8) :: color
end type rectangle
! Declare a variable of this type
type(rectangle) :: my_rect
! Use the type
my_rect % x = 4
my_rect % y = 3
my_rect % color = 'red'
print *, "Area: ", my_rect % x * my_rect % y
圆括号可以表示数组的索引,也可以表示调用的参数。
因此,例如:
integer, dimension(10) :: a
a(8) = 16 ! write the number 16 to the 8th element of array a
或者,作为程序:
print *, my_pow(2, 3)
...
contains
function my_pow(a, b)
integer, intent(in) :: a, b
my_pow = a ** b
end function my_pow
为了弄清楚 m
是什么,您需要查看 m
的声明,类似于
type(sometype) :: m
或
class(sometype) :: m
然后你需要找出类型声明,类似于
type :: sometype
! component declarations in here
end type
现在,其中一个组件 BEMT_u
几乎可以肯定是不同类型的数组,您还需要查找它。
我正在阅读 Fortran 代码,遇到以下代码,无法理解它的作用。
m%AllOuts( BAzimuth(k) ) = m%BEMT_u(indx)%psi(k)*R2D
我知道这里的 % 像管道指示器一样工作,以类似于 Python 中的字典的方式访问值。我有一本字典 m 比方说,第一个键是 AllOuts,但是括号内的任何内容是什么意思?它像另一本词典吗?
百分号不表示字典。 Fortran 中没有本地词典。
百分号表示类型的组成部分。例如:
! Declare a type
type :: rectangle
integer :: x, y
character(len=8) :: color
end type rectangle
! Declare a variable of this type
type(rectangle) :: my_rect
! Use the type
my_rect % x = 4
my_rect % y = 3
my_rect % color = 'red'
print *, "Area: ", my_rect % x * my_rect % y
圆括号可以表示数组的索引,也可以表示调用的参数。
因此,例如:
integer, dimension(10) :: a
a(8) = 16 ! write the number 16 to the 8th element of array a
或者,作为程序:
print *, my_pow(2, 3)
...
contains
function my_pow(a, b)
integer, intent(in) :: a, b
my_pow = a ** b
end function my_pow
为了弄清楚 m
是什么,您需要查看 m
的声明,类似于
type(sometype) :: m
或
class(sometype) :: m
然后你需要找出类型声明,类似于
type :: sometype
! component declarations in here
end type
现在,其中一个组件 BEMT_u
几乎可以肯定是不同类型的数组,您还需要查找它。