LoginSignup
1
0

More than 3 years have passed since last update.

plantFEM(旧SiCroF)におけるファイルIO

Posted at

plantFEM(旧SiCroF)メンテナをしております。

plantFEMは、Fortranベースのアプリケーションで、Fortranを独自拡張したモジュールを多数用意しております。
まずは、File-IOについての機能をご紹介します。

plantFEMにおけるIO: IOClass

Fortranでは、ファイルIOの際に煩雑な文法を意識する必要がありますが、plantFEMではこの煩雑さを(ある程度)解消しています。

では、まず、ファイルを開く→書き込む→閉じる
までを実装してみましょう。

IOについては、IOClassという部品を用意しております。
これは、stdという部品群に含まれていますので、stdをuse(importやincludeに相当)してきて使います。

まず、新規プロジェクトを作成します。

./plantfem new

すると、プロジェクト名やスクリプトの種類を聞かれますので、適当にエンターキーを連打します。
すると、home/以下にプレーンスクリプトが作成されますので、そこに書き込んでいきます。

program main
    use std
    implicit none

    type(IO_) :: f

    call f%open("./","hello",".txt")
    call f%write("Hello, world")
    call f%write(str(100)//"hello")
    call f%write(trim(str(100))//"hello")
    write(f%fh,*) 100.0d0
    call f%close()

end program main

ファイル入出力用のカーネルを起動し、openコマンドを実行します。実行オプション(カッコの中)に、順に、ファイルパス、ファイル名、拡張子をカンマ区切りで入力すると、その名前のファイルが作成されます。
次いで、writeコマンドを実行すると、実行オプションに入った文字列をファイルに書き込みます。
注意として、文字列にしないと書き込めませんので、数値の場合はstr関数を使って、数値を文字列に変換して出力します。
また、str関数は出力末尾にスペースが含まれる場合がありますので、それを嫌う場合はtrim関数を用いて末尾スペースをカットして出力するとよいでしょう。
また、f%fhとするとファイルハンドルを呼び出せますので、Fortranのwrite文法とも組み合わせて使えます。

スクリプトを保存しましたら、

./plantfem home/untitled/main.f90

のようにして実行できます。

ファイルの中身はこのようになります。

✗ cat hello.txt                    
Hello, world
100                 hello
100hello
   100.00000000000000   

今後、html、json、csv形式などに対応予定です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0