我正在设计一个福特兰代码 解决PDE系统。
它现在的设计方式是,我有一个类型 Variable
,它有几个属性,其中最重要的属性是存储该值的数组 val
。
现在,我还有一个 solver
类,它将对 变量
进行计算。 我设想,每次我想运行整个 变量
将整个 变量
转到解决问题者, 并使用 变量% val
来操作, 效率都很低( 输出过程中有几千次), 因此我决定定义 solver
类中的指针字段, 以便把求解器绑在适当的变量上。 例如 。
program example
use variable
use solvers
type(Variable) T
type(Solver) solver_temperature
!Contructors
call T%create()
call solver_temperature%create(T)
call solver_temperature%solve()
end program example
求解模块
module solvers
type Solver
real*8, pointer :: T(:,:)
contains
procedure :: create
procedure :: solve
end type
contains
subroutine create(this,T)
type(Solver) :: this
type(Variable) :: T
this%T => T%val
end subroutine
end module
在我的程序里,我定义了不同的变量 不同的物理属性 和不同的解决方案 与这些变量有关
我对 OOP 来说是新鲜的, 所以我的问题是, 如果这是一个体面的设计呢? 特别是从性能角度来说。 这和制作 < code> T 只是一个阵列, 并将其传递给一个子常规 < code> 溶解 code > 的速度相比如何? 是否有常规方法可以这样做?