Design patterns and Fortran 2003

A. Markus
{"title":"Design patterns and Fortran 2003","authors":"A. Markus","doi":"10.1145/1462614.1462615","DOIUrl":null,"url":null,"abstract":"interface ! ! Subroutine for storing the initial values ! subroutine initial( solver, initial_data ) type(ode_solver) :: solver real, dimension(:) :: initial_data end subroutine initial ! ! Function to compute the derivative ! function eval_deriv( x, t ) real, dimension(:) :: x real, dimension(size(x)) :: eval_deriv ! Derivative is array of ! same size as x real :: t end function eval_deriv ! ! Interface function to hide the internal workings ! function next(solver, time, time_step) type(ode_solver) :: solver real :: time real :: time_step real, dimension(size(ode_solver%state)) :: next_step end function next_step ! ! Function to actually compute the new values ! function solve_step(solver, time, time_step) type(ode_solver) :: solver real :: time real :: time_step real, dimension(size(ode_solver%state)) :: next_step 9 ACM Fortran Forum, December 2008, 27, 3 end function next_step end interface ! ! Declaration of the functions ! procedure(initial) :: initial_values procedure(next) :: next_step procedure(solve_step) :: solve_euler procedure(solve_step) :: solve_heun procedure(solve_step) :: solve_runge_kutta procedure(solve_step) :: ... ! ! Definition of the specific methods for ! solving the ODE ! type(ode_method), dimension(10) :: solvers = & (/ ode_method(solve_euler), ode_method(solve_heun), & ode_method(solve_runge_kutta), ... /)","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"23 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2008-11-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"7","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"ACM SIGPLAN Fortran Forum","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1462614.1462615","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 7

Abstract

interface ! ! Subroutine for storing the initial values ! subroutine initial( solver, initial_data ) type(ode_solver) :: solver real, dimension(:) :: initial_data end subroutine initial ! ! Function to compute the derivative ! function eval_deriv( x, t ) real, dimension(:) :: x real, dimension(size(x)) :: eval_deriv ! Derivative is array of ! same size as x real :: t end function eval_deriv ! ! Interface function to hide the internal workings ! function next(solver, time, time_step) type(ode_solver) :: solver real :: time real :: time_step real, dimension(size(ode_solver%state)) :: next_step end function next_step ! ! Function to actually compute the new values ! function solve_step(solver, time, time_step) type(ode_solver) :: solver real :: time real :: time_step real, dimension(size(ode_solver%state)) :: next_step 9 ACM Fortran Forum, December 2008, 27, 3 end function next_step end interface ! ! Declaration of the functions ! procedure(initial) :: initial_values procedure(next) :: next_step procedure(solve_step) :: solve_euler procedure(solve_step) :: solve_heun procedure(solve_step) :: solve_runge_kutta procedure(solve_step) :: ... ! ! Definition of the specific methods for ! solving the ODE ! type(ode_method), dimension(10) :: solvers = & (/ ode_method(solve_euler), ode_method(solve_heun), & ode_method(solve_runge_kutta), ... /)
设计模式和Fortran 2003
界面!! 存储初始值的子程序!子程序initial(solver, initial_data) type(ode_solver):: solver real, dimension(:):: initial_data结束子程序initial !! 计算函数的导数!函数eval_deriv(x, t) real, dimension(:):: x real, dimension(size(x)):: eval_deriv !导数是数组!与x real:: t大小相同end function eval_deriv !! 接口功能隐藏内部工作原理!Function next(solver, time, time_step) type(ode_solver):: solver real:: time real:: time_step real, dimension(size(ode_solver%state)):: next_step end Function next_step !! 函数来实际计算新值!function solve_step(solver, time, time_step) type(ode_solver):: solver real:: time real:: time_step real, dimension(size(ode_solver%state)):: next_step 9 ACM Fortran论坛,2008年12月27日! 函数的声明!过程(initial):: initial_values过程(next):: next_step过程(solve_step):: solve_euler过程(solve_step):: solve_heun过程(solve_step):: solve_runge_kutta过程(solve_step)::…! ! 定义具体方法为!解ODE !类型(ode_method),维度(10)::solvers = & (/ ode_method(solve_euler), ode_method(solve_heun), & ode_method(solve_runge_kutta),…/)
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信