我正在使用旧的 Fortran 语言编写空气动力学代码(源代码在这里)。初始化的一部分是读取包含表面网格信息的文件,基本上是构成表面的一组三角形或四边形面板。我想使用单一类型来描述四边形和三角形面板panel。为此,我编写了两个初始化函数panel_init_3,panel_init_4它将根据面板有多少个顶点将数据加载到类型中。我想将它们绑定到我的panel类型,并根据参数的数量重载它们(即,如果它传递了一个整数和 3 个顶点对象,那么panel_init_3就会被调用,对于 4 个顶点对象也是如此。
这是该类型的源代码:
module panel_mod
use linked_list_mod
use vertex_mod
implicit none
type panel
! A panel with an arbitrary number of sides
integer :: N ! Number of sides/vertices
type(vertex_pointer),dimension(:),allocatable :: vertices
real,dimension(3) :: n_hat ! Normal vector
real :: A ! Surface area
contains
procedure :: init => panel_init_3, panel_init_4
procedure :: calc_area => panel_calc_area
procedure :: calc_normal => panel_calc_area
end type …Run Code Online (Sandbox Code Playgroud)