質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

0回答

658閲覧

データを多次元配列に変換する際に起きるバグ

goose7

総合スコア0

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/11/07 07:59

前提・実現したいこと

txtファイルからデータを読み込みnetcdfファイルに使うための新しい変数に入れ込むコードを書いています。
データは36072030年*12か月分入っています。
この多量のデータをまず一つの変数に読み込ませ, (緯度,経度,月)の配列をもつ新しい変数に変換しようと思っています。
最後の3年×12か月分のデータだけほしいので以下のコードを書いてみました。
コードにエラーは起きていないのですが問題はないのですがそれが私を余計に混乱させています。
データがしっかり読み込まれているか確認するため新しい変数に配列外の値を読み込んでもエラーが起きないので困惑しています。
明らかにおかしいコードでもエラーが起きないのはなぜなのでしょうか?

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

program file

implicit none

   character(len=*),parameter:: Fn_out_NSC = '/home/code/mpi2/out_NSC.txt'

integer :: j,k,t,i
real :: lonNo, latNo
integer, parameter::NX= 720, NY = 360, Simulation_year = 30, time = 3, month = 12 !simulation year

integer,parameter::LatNoStart = 1
integer,parameter::LatNoEnd = 360
integer,parameter::LonNoStart = 1
integer,parameter::LonNoEnd = 720

real, dimension(1:360) :: lat
real, dimension(1:720) :: lon

integer,parameter::LatMax = 360
integer,parameter::LonMax = 720

integer, dimension(1:720360) :: landmask
real, dimension(720,360) :: outlandmask
real, dimension(1:LonMax
LatMaxmonthSimulation_year) :: NSC !simulation year
real, dimension(720, 360, month*time):: out_NSC !simulation year

open (1, file = Fn_out_NSC, status = 'old') k = 1 do j = 1,LatMax*month*Simulation_year read (1, '(720f9.3)') NSC(k:k+LonMax-1) k = LonMax * (j) + 1 end do close (1) DO t = 1, time*month DO k = 1, 360 DO j = 1, 720 out_NSC(j,k,t) = NSC(j+LonMax*(k-1)+LonMax*LatMax*(t+(Simulation_year+1)*month-1)) END DO END DO END DO

stop
end program

Fortran

1ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

binz

2020/11/11 14:14 編集

示されているコードは、「最後の3年×12か月分のデータだけ」を取り出すコードなのでしょうか。それとも、「データがしっかり読み込まれているか確認するため新しい変数に配列外の値を読み込」んでみたコードなのでしょうか。 また、コードを動かした結果について、「コードにエラーは起きていない」ものの、どのように期待した結果と違っていたのでしょうか。 質問は「明らかにおかしいコードでもエラーが起きないのはなぜなのでしょうか?」ということですが、コンパイラやコンパイルオプションによって結果がかわるかもしれませんので、それらの具体的な情報があると回答がつくかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問