Help us understand the problem. What is going on with this article?

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

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形式などに対応予定です。

soybean
HPC: https://github.com/kazulagi/plantFEM
https://github.com/kazulagi/plantFEM
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした