TypechoJoeTheme

MetMan's Blog

网站页面
2023-10-21

Fortran Interface更多功能

Fortran Interface更多功能
过程重载过程重载类似C++中的函数重载功能,使用相同的过程名称,但根据接口匹配情况编译器调用不同的过程。编译器会根据实际调用过程的参数、返回值特征在接口块中匹配某个过程,如果匹配不上编译器会报错。过程重载定义要求接口块中多个过程的接口要有区别,不能有歧义,否则编译器不能确定使用哪个过程。一般会将多个功能相同、但传递参数区别的过程写在一个接口块中,实现过程重载功能。Fortran内置函数重度使用该功能,比如三角函数sin(x)可以对单精度、双精度、复数的参数x求sin,对应的函数是sin(x)、dsin(x)、csin(x)等。过程重载常用于函数库的编写,提供统一过程名称供用户使用。比如我们读写NetCDF数据时经常要根据处理变量的类型(整型、单双精度实型)、不同维数数组传递不同的参数给NetCDF提供的库函数。我们可以利用过程重载功能将这些细节进行封装,根据传递参数的不同编写多个处理过程,然后封装成一个接口过程供用户使用,用户不用处理这些繁琐的细节。以下是两个外部过程iadd,radd通过过程重载功能供主程序调用,我们既可以使用add这个接口名称,也可以直接使用特定的过程,比如对...
2023年10月21日
196 阅读
0 评论
2023-10-21

Fortran过程接口

Fortran过程接口
前言为了避免英文术语翻译成中文带来的歧义,首先解释下本文涉及的Fortran术语。procedure过程,简单理解就是指Fortran的函数(function)和子例程(subroutine)function函数,与C函数相同,在表达式中被调用评估(evalute)返回函数值subroutine子例程,CALL语句调用,没有返回值,类似C语言中返回类型是void的函数procedure interface过程接口,类似C语言中函数声明dummy argument哑元,也可以称为虚参,过程定义时参数actual argument实参,过程调用时传入的参数过程接口含义及分类每个过程都有一个接口说明:包括过程名称和特征,每个哑元的名称、特征及可能存在的过程被引用的通用generic标识符。上述过程特征包括:函数还是子例程如果是函数,返回值特征哑元特征是否是pure/impure/elemental是否有BIND属性哑元特征包括(也就是类型、属性登):类型和类型参数(有的话)shape/intent是否是optional是否是allocatable是否是pointer或target是否p...
2023年10月21日
192 阅读
0 评论
2023-10-21

Fortran现代化

Fortran现代化
前言Fortran作为一门非常古老的高级语言(1957年由IBM公司Backus等人设计实现),至今仍是科学工程计算领域主要编程语言之一。但由于Fortran没有跟上互联网时代现代软件开发实践,Fortran受欢迎程度在降低,使用场景逐渐被C++、Python等语言取代。大学里开设Fortran编程课程的也不多,导致Fortran生力军缺乏。下图是编程语言排行榜TIOBE Index统计的Fortran语言二十多年来的热门程度。最好的排名是在2002年排到了第10名;最低位置在2020年,第50名;目前最新排名是26名。Fortran优点Fortran语言以下设计理念及特点仍使其作为追求高性能数值计算的首选语言。目前气象数值模式领域依然将其作为主要编程语言。简单易学 正如Fortran名字由来“公式翻译器”,Fortran面向数值计算领域科学计算,语法简单易学,能够让科学家快速写出高性能的代码。Fortran强类型声明、指针的限制使用(虽然指针是C语言的最大特色)使程序不容易出错。高性能 Fortran与C/C++性能处于同一级别。作为静态强类型的编译型语言,编译器可以进行充分...
2023年10月21日
168 阅读
0 评论
2023-10-21

Typecho博客网格

Typecho博客网格
基于油管视频搭建个人Typecho博客网站。视频对应文字介绍:https://iweec.com/336.htmlVPS目前使用Racknerd VPS。主题主题不使用视频中提供的版本,而是使用joe魔改版1.1.9,主题下载地址:https://github.com/XG2020/Typecho-Joe-Theme。侧边栏广告位图片适配图片分辨率调整设置广告位高度为90px (原先190px)usr/themes/Typecho-Joe-Theme/assets/css/joe.min.css外链图片不能正常显示在控制台->外观->设置外观->公共设置中“自定义head标签末尾位置内容”中添加<meta name="referrer" content="no-referrer" /> 插件代码高亮试用了CodeStyle和ColorHighlight插件发现与现在的主题不适配,最终选择了SyntaxHighlighter这款插件。插件地址:https://github.com/tinpont/SyntaxHi...
2023年10月21日
18,716 阅读
1 评论
登录
X
用户名
密码