Fortran

【マンデルブロー集合で学ぶFortran入門】変数とデータ

こんにちは(@t_kun_kamakiri

本記事ではFortranの変数とデータの型について解説を行います。

実例を交えながら確認した方が理解しやすいし、何より楽しいと思うのでこちらに書いた「マンデルブロー集合」のコードを例に確認していくことにします。

環境

  • WSL(ubuntu 20.04.4 LTS)
  • gfortran 9.4.0
  • paraview

マンデルブロー集合のFortranコード

全体のコードがこちら。

こちらを実行することでマンデルブロー集合を再現できます。

コードはそこまで長くないのでべた書きしていますが、追々改良を進めていきます。

変数・データの型

Fortranの変数とデータの型の定義は以下の部分です。

変数とデータの型は以下のように定義します。

データの型には以下のような組み込み型があります。

整数型4バイト整数(符号付き)integer
実数型単精度

倍精度

real

double precision
(or real(8) )

複素数型単精度

倍精度

complex

complex(kind(0d0))
(or complex(8) )

論理型logical
文字型character

変数の属性

変数に属性を付けることができます。

parameter属性

例えば以下のように変数が定数であることを明示して値がプログラム内で固定することができます。

dimension

例えば以下のように変数配列の大きさを指定することができます

これは以下のように書いても良いのですが、上記の書き方の方がシンプルでわかりやすい書き方になっていますね。

allocatable属性

配列の割付けにはallocatable属性を使って配列を定義することができます。しかし、2行目では配列の大きさは決まっていないので4行目のallocate文で配列の大きさを定義する必要があります。

このように配列を定義して、不要になった変数はdeallocate文で配列の解除を行うとに対してはメモリ削減に良いです。

本プログラム内ではこれらを組み合わせて以下のように書いています。

参考書

Fortranは日本の書籍がかなり少ないのですが以下のようなサイトがあり、とても参考になります。

その他出版されている参考書を挙げておきます。

数値計算のためのFortran90/95プログラミング入門(第2版)

数値計算のためのFortran90/95プログラミング入門(第2版)

牛島 省
3,470円(05/24 12:07時点)
Amazonの情報を掲載しています

こちらの参考書は文法からちょっとした応用(偏微分方程式を解く)まで解説がありFortranを使う人にとって手元に置いておきたい参考書ですね。OpenMPによる並列計算の解説もあります。
しかし、Fortran90/95の記述のみなのでForran2003以降を学ぶにはやはり上記のサイトを参考にした方が良いでしょう。

Fortran ハンドブック

Fortran ハンドブック

田口俊弘
3,344円(05/24 14:20時点)
発売日: 2015/07/22
Amazonの情報を掲載しています

こちらはFortranのコード集となっています。
Fortranは科学計算のためのプログラミング言語ですので数値計算の参考コードがいっぱい載っているこちらの参考書はとても勉強になります。
Fortran文法の解説はありませんが、数値計算の勉強にはとても良いです。

C & Fortran 演習で学ぶ数値計算

C & Fortran 演習で学ぶ数値計算

片桐 孝洋, 大島 聡史
2,970円(05/24 13:32時点)
Amazonの情報を掲載しています

こちらはC言語とFortranの両方を学びながら数計算の基礎力を身に付けるための参考書です。問題演習の全てにサンプルコードがあるため本書を読みながらサンプルコードをじっくり眺めるだけでも大変力が付きます。

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。