设计模式和Fortran 2003

A. Markus
{"title":"设计模式和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":"{\"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}","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

摘要

界面!! 存储初始值的子程序!子程序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),…/)
本文章由计算机程序翻译,如有差异,请以英文原文为准。
Design patterns and Fortran 2003
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), ... /)
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
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学术官方微信