[ 例 ] マトリックスの加算 C 良い例 106 3 ) ーに 4 ) 5 ) い例 I = J = 4. 実習用プログラム F OR TR AN では , 2 次元配列を , 列ごとにまとめて , 列番号順にメモリ ようにするとよい . 近い時点で使用するデータは近い番地に入れておく 入れている . 第 1 列の第 2 列の データデータ 第れ列の 上記 2 , 3 の理由から , なるべく , 列番号の近いデータをまとめて処理するこ したがって , マトリックスの計算する場合 , 原則として とが望ましい . 小さい ( 内側の ) ループでは行番号をコントロールする 大きい ( 外側の ) ループでは列番号をコントロールする という形にするとよい . = A 十 B の場合 , D 0 D O 1 J = 1 , N 1 1 = 1 , N D O D O 悪 1 1 1 , N 1 , N 1 4 ・ 3 C い , J ) = A ( I , J ) + B い , J) データ入力方法の合理化 1 C ( I , J ) = A い , J) + B い , J ) 有限要素法のプログラムの , データ入力部分は , いることが望ましい . データ作成の労力が少なくて済むこと データの追加や変更が容易であること 十分に「誤りの対策」をしてあること 次の三つの条件を満たして これを実現する方法として , いろいろなアイディアが浮かぶが , 大別して フ。ログラムの改良によって使い易くする 自動分割 図形入力装置の利用 この内 , などが考えられると思う . 自動分割と図形入力装置については ,
4.3 データ入力方法の合理化 たとえば , 地盤の弾性係数を 3 通り変えて計算してみる , も , たいへん便利である . このプログラムでは , また , L E T H = A 十 B ー 3 . 6 109 というような場合に というような代人文を使うことも可能である . そういう機能があれば , 自動分 割 ( の簡単なもの ) と同じような処理ができる . よく使われる材料の特性を , データ・ライプラリーとして ( システムの側で ) 記憶しておいて , データ・カードに材料名 ( 規格番号など ) をパンチしておけ ば , 該当する値をとり出してそれで計算してくれる , という方式もある . これ も , 実用上 , 非常に便利である . フリー・フォーマット普通の FORTRAN の READ 文は , 変数名と穿孔位 置の対応が固定していて , 必ず指定された位置にパンチしなければならない . しかし , それでは不便なことが多いので , 最近は 項目の区切りは , 空白またはコンマで表す 項目の順序を変えてはいけない しかし ( 上記の二つを守れば ) 位置は自由 という方式が , 新しいプログラミング言語や , TSS 用 FORTRAN などで , よく使われるようになってきた . 使ってみると , 確かに便利である . たとえば , 85 ページのプログラムでは , 節点のデータを 点番号空白 ェ座標 1 7 5 . 8 座標 これを左につめて というような形で入れるようになっているが , 2 6 1 7 5 . 8 とパンチすることが許されるようになるわけである . そういうプログラムを , 普通の FORTRA N の文法で書こうとすると , なか なか手間がかかる . しかし書けないことはない . あとで示すプログラム ( pp ・ まちがいや , 書きまちがい , 転記ミス , 記入方法のまちがい , カード穿孔のミ 入力データの確認入力データの作成の段階では手作業が多く , 座標の読み 136 ~ 142 ) はその 1 例である .
目 実習用プログラム あとがき 5.4 5 ・ 3 5.2 5.1 5 4 4.2 4.3 4.4 4.5 4.6 スンド・マトリックス・ 連立 1 次方程式の解法 データ入力方法の合理化 実習用フ。ログラム・ 入力データの作成法と結果の読みかた・ プログラムのリスト・ 使用法と計算例 いろいろな分割で計算してみる・ 精度の検討・ 簡単な例題・ 要素分割・ 次 91 97 ・ 106 ・ 111 ・ 112 ・ 121 ・ 174 ・ 173 ・ 159 ・ 154 ・ 15 0 ・ 143
107 4.3 データ人力方法の合理化 「高等技術」であ。て本書の程度を越える t 多額の開発費がかかる かなり用途を限定しないと「便利なシステム」にならない などの理由により , 説明は省略し , 以下では , 主として , プログラムの簡単な 改造で実施できる方法 ( しかも , かなり一般的に応用できる方法 ) について述 べる . 座標変換節点の座標は , 図面から読み取。てデータ・シートに記入するわ けであるが , そのときに 読み取りの際には , 作業につごうのよい座標系で読む ータで行なう その値から実際の座標値への変換はコンヒ。 = ということにすれば便利であろう . 特に , 3 次元データの入力に際しては , のような機能がぜひ必要である . ごく簡単で , 要するに , 節点データを読み取。たあとで , 座 プログラムは , 標変換の計算をしてやればよいわけであるから , プ。グラム例を示す必要もな いであろう . プログラムを書く上で , ちょ。と問題になるのは , どのデータにどのような 処理をするかという指定のしかた ( 表しかた ) である . ひと口に座標変換とい っても , 拡大縮小 , 平行移動 , 回転 , 符号反転 , 極座標や曲線座標から直交座標への変換 など , いろいろある . そういうものを , 何でもできるようにすることは , 技術 的には可能であろうが , 使用法が複雑になり , かえ。て不便なシステムにな。 てしまうおそれがある . 実際には , むしろ , 使用目的を限定して , 仕様を簡素 化しておく方がよいと思う . 123 ページのプ。グラム例では , 「係数を掛ける」「平行移動」「極座標から ↑特別にむすかしい , というわけではないが , 本書は一般の研究者 , 技術者を対象 にしており , プログラミングの技巧的な話に深く立ち入ることは避けた方がいいと考 ータ・マニア向きの話は , いつか別の機会に書 えて , 省略することにした . コンヒュ きたいと思っている .
112 これは 自由書式 4. 実習用プログラム データ・カードの中に変数名や算術式を書ける 前のカードの同じ欄の値を引用できる コメントを挿入できる 簡単な規則的データならば自動生成できる などの特長をもっている . 4. 5 入力データの作成法と結果の読みかた 書式カードの書式は , いわゆる自由書式というスタイルで , どのデータを 何字目に書かなければいけないというような制約はなく , 順番だけを守って , という点に注意することす ( 普通の書式の場合には空白は 0 とみなされるが , 自 ーっのデータの途中に空白を入れてはいけない データとデータの間は , 必ず 1 字以上あける ( 空白を入れる ) 自由な位置に書いてよい . ただし 由書式では空白はデータの区切り記号とみなされる ) . 数値としては , いわゆる E タイプの形 土 X X X . X X E 士 X X またはそれの一部分を省いた形 , たとえば 1 2 3 . 0 6 E 8 などが許される . 整数型と実数型の区別はない . カード構成基本的なカード構成を図 4.4 に示す . 各部分の詳細は次のとお t この点だけ注意すれば , 要素法入門」サイエンス社 , ムで処理できる . 拙著「 FORTRAN による有限 の 2 章のためのデータ・カードは , そのまま本プログラ 前章末のプログラムや ,
4.4 実習用プログラム 111 汎用プログラムを作る場合には , 関数 / の形として , どのようなものまで扱 うか ( 一様分布荷重だけにするか , 1 次式も扱うか , ・・・ ) , また , 力の方向を どのように表すか ( たとえば壁面にかかる水圧の場合は , 「面に垂直で内側向 き」という情報を入力し , 各成分の値はコンビータで計算させると便利 ) , など , ちょっと , やっかいな問題がある . 何でもできるようにしておけば , 安 全ではあるが , 使いにくいものになってしまうから , 用途をよく考えて , なる べく簡素な仕様にするのがよいと思う . 4. 4 実習用プログラム 以上の方針で作成したプログラムの 1 例を紹介しよう . このプログラムは , 2 次元的な応力解析の実習用に作られたもので 節点数 2 5 0 要素数 2 5 0 帯幅 7 0 までの計算が可能である . 使用できる要素としては 定歪三角形要素 簡略四辺形要素す 棒要素 ( トラス要素 ) であり , 応力ー歪関係式としては 平面応力モデル ( 80 ページ参照 ) 平面歪モデル ( 80 ページ参照 ) が用意されている . 連立 1 次方程式の解法は , いわゆる , くンド・マトリックス 法で , 仮想記憶方式の計算機に適した形でコーディングしてある . データ入力部分には筆者が開発した DDL という方式廿を採用している . ↑実際には二つの三角形要素に分解して計算するが , 入力データ作成を簡単にする ためと , 四辺形要素に慣れさせるために組み込んである・ 材戸川隼人 ; 有限要素法の汎用プログラムの入力データの記述の合理化に関する一 つの試み , 日本鋼構造協会第 13 会大会研究集会マトリックス解析法研究発表論文集 ( 1979 ) pp. 93 ー 96
110 4. 実習用プログラム ス , など , 誤りの起こる可能性が大きい . 誤りを防ぐため , できるだけ注意深 く作業を行ない , 十分な検査を行なうことが望ましいが , チーック・システム の一環として , 入力したデータは , 確認のため , ただちに印刷しておく という方式をとるとよい . 計算結果が , 万一 , 異常であった場合 , その原因を 究明するための手がかりとして , このような記録はたいへん役に立っ 印刷の書式としては カードにパンチされている内容を ( 文字列として ) そのまま印刷する ータの内部データとして変換された数値を印刷する の二通りが考えられるが , どちらも重要なので , 両方とも印刷しておくとよい . ただし , 普通の FORTRAN では , 1 枚のカードを 2 通りの FORMAT で読む ことができないので , 前者 ( そのまま印刷 ) を実現するには , ちょっと手間が かかる . すなわち , 全欄を書式 A 1 で入力しプログラムで数値に変換する 入力ファイルの内容を他のファイルにコビーして読む というような方法をとらなければならない . あとで示すプログラム例 (). 136 ) では前者の方法を用いている . ただし , 機種によっては , スイッチの操作 , ま たは制御カードの指示により , 読み込んだカードの内容をそのまま印刷できる ことがある . 分布荷重の処理 1 章のプログラムは , 分布荷重を , 節点にかかる集中荷重 に ( 人手で ) 換算してから入力する , という仕様になっている . しかし , 実際 には , これでは不便であるから , 分布荷重をそのままコンビータに入力して , 集中荷重への換算は内部で処理する方がよいであろう . 特に , 2 次元弾性問題 で , 三角形 1 次式要素を使用する場合 , / が一定 ( 一様分布荷重 ) ならば fS 3 1 要素上 / 臼 d = (S は三角形の面積 ) となるから , 各要素について , 要素にかかる荷重を計算し , 3 で割って各頂点 に振り分け , 節点ごとに加え合わせれば , 等価な節点荷重を得ることができる ( 129 ページのプログラム例参照 ) .
4 ・ 5 入力データの作成法と結果の読みかた [ 要素カード ] 枚 三角形要素の場合四辺形要素の場合 項目の順番 要素番号 要素番号 歹節点番号 ノ 節点番号 ん ( 反時計まわり ) 断面積 115 棒要素の場合 要素番号 節点番号 1 2 3 4 5 6 7 8 9 E Young 率 ただし レ Poisson 上ヒ ん 板厚にこを 0 にすると平面歪要素になる ) P 密度 ( 自動計算のため ) 要素の種類の指定は下記の制御カードによる ( 特に指定をしなければ三角形 要素とみなされる ). 以下のカードが三角形要素のデータであることを示す . * T R I * QUAD 以下のカードが四辺形要素のデータであることを示す . 以下のカードが棒要素のデータであることを示す . * L I N [ 固定条件カード ] 枚 項目の順番項目の説明 固定する節点の番号 ェ方向の変位を拘束したいとき 1 , そうでないとき 0 とする . 方向の変位を拘束したいとき 1 , そうでないとき 0 とする . [ 荷重条件カード ] 枚 項目の順番項目の説明 荷重をかける節点の番号 荷重のェ成分 荷重のク成分 レん〃 1 ワっ 0 1 ワっ 0
154 5. 使用法と計算例 とよい . 末尾の方の数字は機種によって違うことがあるから , あまり気にする 必要はないが , 結果が全然違うようなら , 何かミスをしている可能性があるか ら , 原因を調べる . まずは「人力データの一」を , もとのデータと照合し てみるとよいであろう . 5. 3 精度の検討 上記のようにして , 「一応もっともらしい答」は , 比較的容易に得ることが できる . しかし , その結果は , どの程度 , 信頼できるものであろうか . モデル化の段階に無理がなく , 分割を十分に細かくして , 桁数も十分にとっ て計算すれば , いくらでも精密な答を出せる , ということを , 有限要素法の基 礎理論は保証している . しかし , 粗い分割を用いた場合に「あまり見当違いで ない答が出る」という保証はない . そのあたりは , 個々のケースについて , 自 分で検討する必要がある . その方法としては , たとえば今の問題の場合 , 図 5.4 の ( d ) と ( e ) の分割で 十算し , 前記の結果 ( 分割 ( a ) ) と比較してみるとよい . 分割 ( b) や ( c ) と比 較しただけでは , 「分割のやりかたによって , 結果がすいぶん違う」というこ ( d ) , ( e ) と比較すれば , 細分化していくときの収束率を としかわからないが , 推定することができ , それから逆算して , 概略の誤差評価をすることができる . [ 演習 ] 図 5.4 の分割 ( d ) のテータ・カードを作って , コンヒ。 = ータで計算 し , 結果 ( たとえば先端のたわみ ) を分割 ( a ) の値と比較せよ . 分割 ( e ) の計算は , 小さなコンヒ。ータでは容量不足になる可能性があるか ら , 出力例を 5.2 にあけておく . 分割 ( a ) ( d ) ( e ) の結果をグラフ用紙にフ。ロ はっきりした収東傾向が見られる . こうい ットしてみると , 図 5.7 のように うグラフを描いてみれば , いま得られた結果が , どの程度まで信用できるか , おおよその見当をつけることができる . また , 補外公式を使えば , さらに高精 度の値を算出することも可能である . ニ二ロ
2. 2 三角形の網目を使う 分割する もとの図形 点番号 1 【 / 4 8 ー 1 ワ 1 ワ 3 っ 0 -4 一 0 一覧表を作る 点の一覧表 三角形の 、 1 対応表を作る 頂点の番号 1 1 1 4 一 0 っ 0 三角形の一覧表 図 2.4 図形データ入力の定石 手順としては , まず「与えられた図形を三角形に分割する」という作業があ るが , これを自動的にやるのはむずかしいから , 人手でやることにする . すな