![e03e857c3e37a2c85f39200aa49fc250.png](https://i-blog.csdnimg.cn/blog_migrate/a691a729dda8c5c9a8b43ec104fb6002.jpeg)
hello, 小伙伴们大家好。前些天看到粉丝的留言说等我出子程序的教程,那么今天就写一期关于子程序的教学。也确实没写过关于子程序的教程,是该写点了(其实是想满足粉丝的需求,咳咳)。
我们今天的任务有两个,一个是解释一下,什么是fortran的子程序,一个是解释一个abaqus的DLOAD子程序。
![fd0a2d41e70f0543f191403263058125.png](https://i-blog.csdnimg.cn/blog_migrate/aee92e981f639405484910d278a22d2b.png)
1 什么是fortran子程序
大家可能觉得我说这个是废话,因为能阅读到这篇专栏的人,都是写过abaqus用户子程序的做过二次开发的程序大佬,难道还不知道什么是fortran子程序吗?你说这玩意不是班门弄斧吗。其实不然,也不见得全都是废话。大家且听我细细道来。(一个人自言自语ing,快快乐乐 ^_^)
首先,相必大家都知道什么是子程序什么是函数了,这两个在任何程序语言中,都是负责实验某一功能的程序块。而子程序与函数之间的区别在于,一般用函数只是为了获取一个返回值,而不改变其他变量。子程序不同,子程序可以没有返回值,它是操作调用的参数和全局变量,可以理解为数据进子程序之后,加个工,然后返回主程序。。。我在说什么,一脸懵逼。。把我自己都绕晕了。讲个例子解释一下吧,我喜欢例子
1.1 子程序小例子
我这里写了一个相加的subroutine add(形参),形式参数大家应该都明白吧,就相当于只是个变量的名字,主程序的实际参数(实参)是带值的变量。
![489482de364b80ce12950e3f298c4549.png](https://i-blog.csdnimg.cn/blog_migrate/04b6d3d0bf04460c948fa8a4d2a22589.jpeg)
那么它有那些特点,我这里列一下:
1 它的形参在子程序里是可以不用申明变量类型的,而其他变量,一定一定一定要申明变量类型,申明类型是一定不会出错的,这是个好习惯,fortran与python不同,这个特点不要忘了,像我,写子程序就容易忘记申明变量类型,然后找错找到裂开,你们千万不能学我。
2 子程序的形参,有些是传入进来供你操作的,有些是储存计算后的数据,然后返回主程序做操作的。这一点有点像函数的返回值,但是必返回值更加精简,容易操作具有多个返回值的对象。
![fd0a2d41e70f0543f191403263058125.png](https://i-blog.csdnimg.cn/blog_migrate/aee92e981f639405484910d278a22d2b.png)
1.2 Abaqus子程序框架
我说完了,是不是大家觉我说的还是废话,说的都是你们知道的内容。好,那我再带你看个例子。