JP2765888B2 - プログラム生成方法および実行方法 - Google Patents

プログラム生成方法および実行方法

Info

Publication number
JP2765888B2
JP2765888B2 JP63304154A JP30415488A JP2765888B2 JP 2765888 B2 JP2765888 B2 JP 2765888B2 JP 63304154 A JP63304154 A JP 63304154A JP 30415488 A JP30415488 A JP 30415488A JP 2765888 B2 JP2765888 B2 JP 2765888B2
Authority
JP
Japan
Prior art keywords
program
execution
simulation
information
simulation program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP63304154A
Other languages
English (en)
Other versions
JPH02151927A (ja
Inventor
千里 金野
忠 太田
光祥 猪貝
征雄 梅谷
みちる 山部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi ULSI Engineering Corp
Hitachi Ltd
Original Assignee
Hitachi ULSI Engineering Corp
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi ULSI Engineering Corp, Hitachi Ltd filed Critical Hitachi ULSI Engineering Corp
Priority to JP63304154A priority Critical patent/JP2765888B2/ja
Priority to US07/443,252 priority patent/US5148379A/en
Publication of JPH02151927A publication Critical patent/JPH02151927A/ja
Application granted granted Critical
Publication of JP2765888B2 publication Critical patent/JP2765888B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S706/00Data processing: artificial intelligence
    • Y10S706/902Application using ai with detail of the ai system
    • Y10S706/911Nonmedical diagnostics
    • Y10S706/916Electronic or computer, internal or network, circuit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、物理現象を計算機で模擬的に再現する数値
シミュレーション用のプログラムの生成方法に係り、特
にそのプログラム作成から結果の分析に至る一貫した工
数を大幅に削減するのに好適なプログラムの生成方法お
よび実行方法に関する。
[従来の技術] 第2図に示すように、熱伝導率Cの異なる2つの物質
コンクリートと鉄の接した初期温度0℃のブロック21に
おいて、左右の壁L,Rは断熱、上下の壁U,Dを100℃に固
定した際の内部の温度変化は、熱拡散方程式22を時間を
追って解く事により求められる。この値の計算を行うプ
ログラムを生成するための簡単な方法として、情報処理
学会誌第26巻第1号P.168−180や特開昭60−140433号公
報に記載されているように、シミュレーションすべき物
理現象が起こる領域の形状情報と、その上での現象の計
算手順等を表わすシミュレーションモデルの数式情報を
記述する高水準の言語で書かれたプログラム(以下入力
プログラムと呼ぶ)から、上記物理現象を計算するため
の通常の計算機で実行可能なFORTRAN言語等で書かれた
シミュレーションプログラムを、プログラム生成プログ
ラムにより自動的に作成することが知られている。
第3図は、この高水準言語によるプログラムの例を示
す。
初めにこの高水準言語による入力プログラムの概要に
ついて説明しておく。本プログラムは、プログラムの異
った構成要素を表すキーワードで始まり、セミコロ
ン(;)で終る文の列から成る。PROG文31は、生成され
るシミュレーションプログラムの名称を、METHOD文32は
数値解析上の手法を指示しており、本例は差分法(FD
M)を指している。文33から文36はこのプログラムでシ
ミュレーションすべきモデルの構造を規定している。空
間領域(DOMAIN)、時間領域(TIME)、差分法の解析に
用いる空間格子(MESH)、時間に沿って解を追跡する時
間ステップ間隔(TSTEP)、解析領域の境界や部分領域
に名称を与えるための領域文(REGION)、熱伝導率や材
質定数などを与える定数文(CONST)、プログラム中で
用いる物理変数(VAR)、アルゴリズム中の繰り返しを
制御するカウンタ変数(COUNT)などの宣言と、境界条
件文35(BCOND)、初期条件文(ICOND)によって、シミ
ュレーションモデルの構造が与えられる。例えば、REGI
ON文において、X=0でYは任意(本入力プログラムで
は*を使用)の境界に“L"という名称を与え、その名称
を引用する事で、BCOND文において、断熱という条件DX
(F)=0(本言語では1次微分∂/∂xをDXと表記)
をATという場所指定子を用いてLとRに設定している。
SCHEME文から始まりEND SCHEME文で終る文列37中に、
本問題を解くための数値計算の手順を記述する。本例で
は、第2図に示す方程式22を時間ステップDLTを0.2(TS
TEPで指定)づつ進めながら繰り返し100回行なう事で、
Tが0から20の間の各時刻の温度を計算することを示し
ている。ITER文38からEND ITER文30の間は、ITER文38
中のUNTIL以降の条件が成立するまで繰り返し実行され
る。SOLVE文39で現在の温度Fから1タイムステップ後
の温度FNが求まり、F=FNで現在の温度が更新されると
いう過程を反復する。ここでDIV,GRADは微分演算子の発
散と勾配を表わしており、本言語ではこのように偏微分
方程式を殆どそのままの形式で表わす事ができる。
以上のプログラムを、プログラム生成プログラムによ
りFORTRAN等の言語によるシミュレーションプログラム
に変換される。このプログラム生成プログラムは、上記
プログムのデータ型や文型などの文法チェック、領域の
無矛盾性のチェック、初期条件や境界条件の適合性や過
不足性のチェックを行なった後、FORTRAN言語等による
シミュレーションプログラムの生成を行なう。生成され
るシミュレーションプログラムの構成を第4図に示す。
メインプログラム41はプログラムの実行に必要な変数や
作業領域の宣言をする部分42、格子(メッシュ)の生成
や前処理をする部分43、定数指定文(CONST)や初期条
件文(ICOND)に対応する値の設定処理をする部分44に
引き続いて、SCHEMEブロック(例えば第3図の37)の各
実行文に対するサブルーチンの呼び出し文(CALL文)や
入出力文やITER文などからなる制御ループ45から成る。
それに引き続いて、SOLVE文39に対応するサブルーチン
群46や代入文に対するサブルーチン群47が生成される。
特に微分演算子を含むSOLVE文や代入文は、その離散化
を行なって、代入式や係数行列を計算する4則演算子に
よる式とDOループに変換され、プログラム化される。ま
た、プログラム単位が長大とならぬよう、上記のような
サブルーチン分割が自動的に行なわれている。
[発明が解決しようとする問題点] 上記従来技術で生成されるシミュレーションプログラ
ムはユーザの介入できないバッチ形式のプログラムのた
め、計算時の動作の確認の配慮がなされておらず、アル
ゴリズム上の誤まりや数値計算時の異常の検出方法がな
かった。また、プログラムの記述内容のチェックは文法
上のエラーに限られ、数値計算手順上の誤りは全てユー
ザ責任として、生成シミュレーションプログラム実行後
にしか確認できず、生成シミュレーションプログラムの
信頼性に対する問題があった。上記従来技術は、テキス
ト(文字列)でユーザが全て入力プログラムを記述する
事を前提にしており、数値計算手順を構成する能力の劣
っているユーザの利用に対する配慮がされていなかっ
た。また、言語のレベルがまだ低く、定型化された数値
計算手順に対しても、ユーザが全て記述しなくてはなら
ず、工数削減の配慮が充分でなかった。また、従来技術
はシミュレーションプログラムの生成の自動化に限定さ
れており、全シミュレーション工程の短縮に対する配慮
がなされてなかった。また、計算結果の良否の判断とな
る診断情報や結果のグラフ化による目視チェックの配慮
がなされておらず、生成シミュレーションプログラムの
信頼性に対する問題があった。
本発明の目的は、数値シミュレーションの全工程を通
して、生成プログラムへの介入方法の設定、プログラミ
ングの高水準化および容易化、生成プログラムの信頼性
の向上、計算実行の確認、計算結果の分析と診断を可能
とするプログラムを生成する方法を提供することにあ
る。
[問題点を解決するための手段] プログラミングの高水準化および容易化の目的は、解
こうとする問題の分野や式の特徴などを指定する入力に
応答してその問題に適したアルゴリズム(数値計算手
順)をアルゴリズム(数値計算手順)データベース11
(第5図)から、抽出・生成するデータベースガイダン
ス処理(4)と、ユーザの入力したアルゴリズムを数値
解析上の公式や規則を有する知識ベース(12)を用いて
診断する問題診断処理(5)と、入力された高水準言語
のプログラムから、それが対象とするシミュレーション
モデルを可視情報として画面上に表示し引用を可能とす
るモデル可視化処理(6)により達成される。
プログラム生成の高度化の目的は数値計算手順を記述
した入力プログラムからだけでなく、数値計算手順の代
りにその手順を表わすアルゴリズムを含む入力プログラ
ムからも、シミュレーションプログラム(18)を生成す
ることができるとともに、そのシミュレーションプログ
ラムとして、実行時に、ユーザの介入が可能なものを生
成するプログラム生成処理、(7)により達成される。
計算実行の確認の可視化の目的は、シミュレーションプ
ログラム(18)の実行時の介入を制御するデバッグ処理
(8)と、計算結果の分析と診断として、生成シミュレ
ーションプログラム(18)の実行状態を診断する実行診
断処理(9)と、シミュレーションプログラム(18)の
実行時および実行終了時に結果をグラフ化や諸演算によ
って結果の良否を判定する結果分析処理(10)を備える
事により、達成される。
[作用] データベースガイダンス処理(4)は、問題の応用分
野や式の形式や問題の特徴を有するリソース量などの必
ずしも、数値計算固有の専門用語だけでないユーザの世
界の平易な言葉で問題を指定させるガイダンスをユーザ
に対して行い、アルゴリズムデータベース(11)の中か
らその問題に適するアルゴリズムを選択する。それによ
って、ユーザは最少限の専門知識で、迅速に該当するア
ルゴリズムを選択できる。
問題診断処理(5)は、高水準言語で記述された入力
プログラムから、その高水準性を生かして逆にユーザの
意図している数値計算手順の特徴や名称を導き出し、数
値解析の知識ベース(12)からその数値計算手順に対す
る安定性や収束性等の定理や規準を入力プログラム
(2)が満たしているかを検証し、ユーザにその結果や
プログラムの違反箇所をアドバイスすることにより、プ
ログラムの数値計算手順上の誤まりを計算実行前に検出
することができる。
モデル可視化処理(6)は、高水準言語による入力プ
ログラム(2)の入力と同期して画面上に、それが指定
する形状情報と式情報を表示し、両情報の関連付けの確
認を目視によって可能とし、またプログラミングを進め
る上で表示されている情報の画面上でのピックによる引
用を可能とし、また逆に不足情報を画面上の該当位置の
ブリンキング等によって入力を指示誘導する事によっ
て、完全な入力プログラム(2)を迅速に構成できる。
プログラム生成処理(7)は、高水準言語の入力プロ
グラム(2)からシミュレーションプログラム(18)の
生成にあたって、アルゴリズム(数値計算手順)名の引
用に対してスケルトンを有し、それに従って高水準言語
による手順を生成し、また高水準言語プログラムの各実
行文に対する指定によってその実行文を行なって得られ
る数値結果がどの程度信頼できるかを判断するための情
報を求めるプログラム部分を生成シミュレーションプロ
グラム中に生成し、またシミュレーションプログラム
(18)への実行介入を可能とするため、シミュレーショ
ンプログラム(18)中に介入の要求の有無で分枝する条
件文と、その要求を、高水準言語の入力プログラム
(2)によるユーザ指定を可能とする対応テーブル(実
行制御テーブル(17))を同時に生成する事により、シ
ミュレーションプログラム(18)への実行時の介入がで
きる。
デバッグ処理(8)は、上記プログラム生成処理
(7)の生成した実行制御テーブル(17)を入力し、高
水準言語の入力プログラム(2)を画面上に表示し、そ
の中のブレークポイントとして指定される実行文がシミ
ュレーションプログラム(18)のどこに対応するかを実
行制御テーブル(17)に情報付加し、シミュレーション
プログラム(18)をこの指定に従って実行し、シミュレ
ーションプログラム(18)中に組み込まれた上記条件分
枝文が本実行制御テーブル(17)を参照し、ブレークポ
イントの指定があればシミュレーションプログラム(1
8)の変数と内部情報を引数として本デバッグ処理
(8)に制御を受け取る事により、実行時の変数情報や
計算の診断情報を抽出する事ができる。
実行診断処理(9)を、上記デバッグ処理(8)内で
呼び出す事により、シミュレーションプログラム(18)
の実行中の診断をする事ができる。
結果分析処理(10)を、上記デバッグ処理(8)内で
呼び出す事により、シミュレーションプログラム(18)
の実行中の各変数の数値結果の分析ができ、また計算実
行後にそのデータを受け取る事により、実行後の数値結
果の分析ができる。
[実施例] 以下、本発明の一実施例を第1図、第5図から第35図
により説明する。初めに全体の概略動作フローを述べ、
ついで各処理の詳細を説明する。
第1図は、本発明の一実施例によるプログラム生成お
よびその実行のためプログラムモジュール群を示す。
数値シミュレーションにおけるプログラム生成とその
実行は入力プログラム(2)の入力シミュレーションプ
ログラムの生成、そのプログラムの実行、結果分析から
成るのでそれに従って本発明の全体フローを述べる。
入力プログラム2の入力はディスプレイとキーボード
よりなる入出力装置1によりなされる。それを補助する
手段としてデータベースガイダンス処理4では、ユーザ
の問題の特徴をユーザに、入出力装置1より入力させ
(入力例第7図)、データベース11からその問題に適し
た数値計算手順の候補を抽出し、高水準言語入力プログ
ラムの一部(例えば第3図37)としてユーザに提示す
る。ユーザはこれに他の情報をキーボード1などから補
うことにより、プログラムを完成できる。また、問題診
断処理5はユーザの入力した、高水準言語により入力プ
ログラムの高水準性を利用してそのプログラムからユー
ザの意図している数値計算手順(アルゴリズム)の特徴
や名称を抽出し、それに従って数値解析知識ベース12中
の該当アルゴリズムの数値計算上の限界などの該知識を
検索し、入力されたプログラムの数値計算手順やメッシ
ュの密度などの他の情報がそれを満足しているかを診断
し、満さない場合、高水準言語プログラムの修正箇所と
方法をユーザにアドバイスする。また、モデル可視化処
理6では、ユーザの入力した高水準言語によるプログラ
ムまたはその一部を形状情報とそれに付随する数式情報
に分類し、それをディスプレイ1A上に図形とテキストに
よって表示し、また、その表示物の選択(ピック)によ
ってプログラムの追加や削除や修正を可能とし、また、
プログラムの不足や不適正情報をディスプレイ1A上の該
当箇所のブリンキングによって表示し、その修正や入力
をガイダンスする(表示例第10図)。
プログラム生成の工程7では、上記の方法によって作
成された高水準言語による入力プログラム2(第3図又
は第31図)からFORTRAN等による標準的言語による、通
常の計算機で実行可能なシミュレーションプログラム
(18)へ変換する。プログラム生成処理7では、例え
ば、特開昭60−140433号公報に記載されたプログラム生
成処理10dに加えて、本発明では特に、生成したシミュ
レーションプログラムの計算実行結果を診断するプログ
ラム部分も一緒に生成する診断処理生成処理13、高水準
言語から名称によってアルゴリズムの適用を許容する手
続き名称解釈処理15、生成シミュレーションプログラム
に介入する事を可能とするブレークポイント処理生成処
理16および元の高水準言語の入力プログラム2と生成さ
れたシミュレーションプログラム18を対応づける情報を
生成する実行制御テーブル生成処理14をも行うことを特
徴とする。
プログラム実行の工程には、生成したシミュレーショ
ンプログラム18を翻訳・結合・実行する(ステップ、2
0)が、その実行時にプログラムに介入し、プログラム
の実行状態を検証する。デバッグ処理8では、生成した
シミュレーションプログラム18の実行時にそれから制御
を受け取り、プログラム生成処理7での作成した実行制
御テーブル17に基づいて、ディスプレイ1Aなど通し、実
行状態を表示する。但し、シミュレーションプログラム
18の実行前に、その元となった高水準言語の入力プログ
ラム2を表示し、そのどの行でユーザが介入するかを入
力指定させて、その情報を実行制御テーブル17に反映さ
せておく。その後シミュレーションプログラム18が実行
され、シミュレーションプログラム18の介入要求箇所
(ブレーク・ポイント)にさしかかると、デバッグ処理
はシミュレーションプログラム18の実行状態より制御と
その変数値などの内部情報を受け取り、その表示,変
更,加工をし、数値検証などの目的を達すると再びシミ
ュレーションプログラム18の実行状態に制御を戻す。実
行診断処理9では、解析している行列の性質や数値解析
上の基準等を検討する。結果分析処理10は、計算された
各変数値に四則演算,微積分演算、ノルム計算などを施
して、数値解析上の基準や物理法則の充足性の検定を
し、また居所的な位置におけるデータの抽出や、大局的
な把握を可能とするグラフ化などを行なう。実行診断処
理9と結果分析処理10は、デバック処理8によって制御
と変数値などの内部情報を受け取り、数値シミュレーシ
ョンプログラム18の実行時での適用が可能である。
結果分析の工程は、計算結果の検証を行なうが、上述
したようにシミュレーションプログラムの実行時に行な
う方法と、結果分析処理10に、シミュレーションプログ
ラムの計算結果19を入力して行なう事もできる。
以下、第1図における各処理の詳細の動作フローにつ
いて述べる。
第1図のデータベースガイダンス処理4とアルゴリズ
ム・データベース11の動作フローを第5図から第7図を
用いて説明する。
第5図はアルゴリズム・データベース11に蓄えられる
数値計算手順の管理情報と検索キーを示している。管理
情報はキー・インデックス51の集合として保持される。
内容は、熱伝導,拡散,電磁場などのユーザ側から見た
応用分野や、数値計算手順の構成を特徴づけている各分
野別の特徴、例えば流体であれば圧縮/非圧縮,層流/
乱流などの応用分野を更に分類するユーザ側からの特徴
や、対象としている式の特徴として定常/非定常,連立
/単一式,線形/非線形などの情報や、問題の定義され
ている領域の次元や、該数値計算手順(アルゴリズム)
の制限などから構成される。キーインデックス5は52に
示すように、各数値計算手順対応の検索キーとして与え
られ、また各数値計算手順固有の制限や能力などを有し
ている。
第6図は、データベースガイダンス処理4の動作フロ
ーを示している。ユーザは初めにディスプレイ1を通し
てガイダンスの要否を指示し、それに従ってステップ60
によりガイダンスを始める。初めに、上述のキーインデ
ックスの中でどのインデックスから対象アルゴリズムを
しぼっていくのかの、ガイダンス順序の決定を、ユーザ
の指示により行なう(ステップ61)。これは画面にキー
インデックスの一覧を表示し、ユーザに順位を入力させ
れば良い。その第1キーインデクスに従い該当インデッ
クスの一覧が画面に表示される(ステップ62)。第7図
71に第1キーインデックスが“応用分野”である場合の
画面を示す。画面右下のカッコ72にはその時点でのキー
を満たす数値計算手順(アルゴリズム)数が示されてい
る。該当画面で一つのキーを選択し、ガイダンスを更に
継続すると、第2のキーインデックスによるガイダンス
を行ない(ステップ63)、同様にガイダンス画面73,74
(第7図)が表示され、ガイダンスが継続される。ガイ
ダンス継続を打ち切ると、それ迄に指定されたキーを満
たすアルゴリズムの一覧が表示される(ステップ64)。
その中から一つのアルゴリズムの特徴や内容などが表示
される(ステップ65)。これは該当アルゴリズムによる
問題への適応能力(例えば流体ならレイノルズ数など)
やそのアルゴリズムの実行時に必要とされるリソース
(主記憶容量や計算CPU時間)などへの要請などであ
る。以上の検索によって、アルゴリズムの選択を行なう
(ステップ66)。選択されたアルゴリズムは、高水準言
語プログラムのスキーブロック(第3図37)に対応す
る、プログラムの一部が出力される。その中で、用いら
れている物理変数は、ユーザが解こうとしている問題と
必ずしも一致しないので、アルゴリズム中で用いられて
いる変数とユーザの問題中の変数名称の変更(マッピン
グ)を行なう処理で、これは画面に変数一覧を表示し、
ユーザに該当名称を入力させれば、容易に行なう事がで
きる(ステップ67)。以上によって、第1図アルゴリズ
ムデータベース11中にあるアルゴリズムから、所望のア
ルゴリズムを迅速に抽出する事ができ、ユーザの高水準
言語によるプログラミングもしくその一部の工数が削減
される。
データベースガイダンス処理4で述べた方法の他に、
ガイダンスをもっとユーザ主体に行なう方法として、キ
ーインデックスの一覧を表示し、ユーザによるその指定
によって該当するキーに対応するインデックスから選択
し、またキーインデックスの一覧を表示し、という操作
の繰り返しでインデックスの選択を行なわせたり、また
一度選択したキーインデックスに対応する内容を変更も
しくは再設定させるなどの方法がある。
第1図の問題診断処理5の処理フローを第8図,第9
図を用いて説明する。本処理は高水準言語プログラム
(第3図もしくは第31図)を入力して、そのスキーム部
分(第3図37,第31図310)の構造を分析し、他の言語部
分との適合性を検証する。
まず、スキームの構造抽出ステップ81では、与えられ
た高水準の言語で記述されたプログラムの構造として、
Iteration(反復)ブロックやIF−THEN−ELSEで示され
る条件分枝ブロックを検出(ステップ90(第9図
(a)))と、各物理量更新文の意味の検出(ステップ
91(第9図(a)))を行う。Iterationブロックの検
出では、そのブロックの始論文(第3図のプログラムで
は、38)と、それに対応する終端文(30)を検出する。
また、物理量更新文の意味の検出は、どの物理変数が陰
的また陽的のどちらの手法で更新されたかを検出する。
第3図のプログラムの場合、前者はSOLVE文で39で、後
者は代入文(F=FN)によって記述されるので、SOLVE
文39で、Fが陰的に更新された事を検出する。このよう
に、高水準言語で記述されているが故に、スキームの制
御と物理量更新の方法を容易に検出することができる。
次に第8図のスキームの解釈処理82は、上記検出情報か
らスキームの構造を解釈するもので、これは各反復や条
件分枝ブロックの意味解釈処理92(第9図)と、スキー
ムの手順構造の構成解析処理93(第9図)を行なう。意
味解釈処理92では各ブロックが時間,非線形、連立性な
どのいずれを解決するための反復や条件分枝なのかを、
反復の条件となっている制御変数やそのブロック内で更
新されている変数の種類やブロックのネフト数によって
判断する。例えば、第3図のプログラム例では、Intera
tionブロック38中では、RNという変数が更新され、その
式中には時間のきざみを示すDLTという変数を含み、か
つ一番外側のブロックである事から、時間を進める(発
展させる)ための時間反復ブロックであると解釈され
る。構成解析処理93では、上記の手順の検出および解釈
結果から第9図(b)に示す。構造テーブル94を構成す
る。ここで反復ブロック95は検出処理90で、更新情報97
は意味検出処理91で、反復内容96はブロックの意味解釈
92でそれぞれ得られた情報である。
次に第8図の数値計算手順(アルゴリズム)の推定処
理83は、上記検出処理81,82で得られた第9図(b)の
スキーム構造テーブル94から、記述された数値計算手順
(アルゴリズム)の内容を推定する。これは各分野で名
称付けられた典型的なアルゴリズムであれば、スキーム
の構造のマッピングからその名称を検出し、またそうで
なければ各部分ブロックがどのような手順でどの物理量
を更新しているかをテーブル(第9図(b))の構造を
解析して検出する。例えば、第3図のプログラム例で
は、FNをバックワードオイラー型の陰解法によって時間
に沿って更新していく、といった具合である。
第8図の処理84は、該当するアルゴリズムに対する数
値解析上の知識を、数値解析知識ベース12より検索す
る。数値解析知識ベース12は、名称付けられた典型的な
数値計算(アルゴリズム)に対する基準や既知の法則
と、時間反復や非線形反復や行列解法などのアルゴリズ
ムを構成するための基本的な手順に対する基準などの二
通りより構成する。
第8図の安定性・収束性に対する検証処理85は、典型
的なアルゴリズムであれば、知識ベース12により抽出し
た基準を与えられたメッシュや反復条件などが満たして
いるかを検証し、また一般的なアルゴリズムであれば各
部分ブロックを構成している陽解法や陰解法などが安定
性の基準を満たしているか、あるいは非線形性に対する
ブロックではどの手法による非線形性の解消を行ってい
るかにより無限ループとならない条件になっているかな
どを検証する。第8図の処理86では知識ベースにある基
準や法則に反する場合、どの基準を何故満たされていな
いかを判断し、メッシュや反復条件などのプログラムの
どこを修正すれば良いかをガイダンスする。例えば、空
間メッシュと時メッシユの比率がいくつ以下でないと発
散するとか、該数値計算手順はレイノルズ数などの数値
解析で知られた量の値が、どの程度までなら実績があ
る、といった情報を知識ベース12より抽出し、それに沿
ったメッシュや物性値の修正を提示する。最後に第8図
の処理87では、与えられた高水準言語から生成したシミ
ュレーションプログラムが実用的であるかを診断するた
めに、実行時の主記憶容量や計算所要時間などの見積り
を行なう。これは第9図のスキーム構成テーブル94か
ら、各ブロックでの反復回数を重みを付けて計算式によ
って見積り、また各物理量更新にあたって用いられてい
る手法が陽的であるのか陰的であるのか、また陰的であ
ればその行列を解く解法が何であるのかを高水準言語の
プログラムから抽出し、また同様に時間と空間のメッシ
ュ数を抽出すれば、高水準言語プログラムの各行の負荷
と実行回数の期待値が分り、そこから、必要とする主記
憶容量と計算時間の予測値の算出式を導出する事が容易
にできる。計算時間に対しては、ある範囲を持って与え
られる。
以上の問題診断処理5の実施例は、与えられた高水準
言語プログラムを直接解釈し、表わしているアルゴリズ
ムを逆に抽出する事から行ったが、この他に上述した第
1図のデータベースガイダンス処理4を利用した場合に
は、予め組み込まれたアルゴリズムに対する情報は既知
のものとして利用する事も可能であり、また、後述する
第1図プログラム生成処理7中の手続名称解釈処理15を
利用した場合には、第31図に入力例を示すようにスキー
ム中で利用されている一部のアルゴリズムは既知とな
り、それを利用してアルゴリズム構造を解釈する事も可
能である。
次に第1図のモデル可視化処理6の処理フローを第10
図から第11図を用いて説明する。
例えば、第3図のプログラムに対して、この処理6で
は各文の入力に同期して、画面上に領域情報や数式情
報、およびその関連付けも可視情報として表示する。第
3図の領域指定文33に対して第10図の領域の実形状100
を、第3図の部分領域指定文34に対して第10図の名称10
3を領域の該当箇所に、第3図中の物理定数指定文(CON
ST)に対して第10図の指定式105を領域の該当箇所に、
第3図の境界条件文35に対して第10図の条件式101,102
を領域の該当箇所に表示する。これはプログラム中で領
域に関する座標情報が与えられており、また式情報との
関連付けがその領域名称をプログラム中のAT以降で引用
して行なわれているので、容易に実現できる。また表示
は、第10図のプログラム中には明示されていない領域の
境界線104も検出し、表示する事も可能である。また表
示は、入力された全てを一括して表示するのではなく、
特定のキーワード(DOMAIN,REGION,CONST,MESH,BCONDな
ど)に関連する情報、もしくはVAR文中やCONST文中の特
定の変数や定数に関連する情報、もしくは特定の領域に
関連する情報、およびこれらの諸指定の組み合わせで得
られる情報のみを表示する事も入力プログラム中の情報
として現れており可能である。例えば第10図(a)
(b)(c)は同一入力プログラムの全体もしくは一部
の表示例である。
表示された対象に対しては、指定式や条件式を画面上
で選択する事により、それが与えられている領域をハイ
ライト表示する。また、逆に領域の選択によって、そこ
に与えられている指定式や条件式をハイライト表示す
る。それにより、それらの関係付けの問合わせを実現す
ることにより、表示上の曖昧さを補う。例えば、第10図
(b)の境界条件式102が選択されれば、107の領域をハ
イライトが表示する。また、表示されている領域を選択
する事により、その領域に指定式や条件式を付与可能と
する事で、可視情報をベースとして、プログラム作成を
継続していける。例えば、第10図108を選択する事で、
画面と実際の座標系との比較から領域名称としてUをシ
ステム側が検出でき、その選択のもとでUに境界条件を
与える事ができる。また、第10図の109の領域を選択す
る事で材質定数などを該当領域に設定できる。
このように、既入力情報の可視化によって、そのチェ
ックや可視情報の引用によるプログラミングの効率化を
図る事ができる。
また、既入力情報に対して、プログラムを完成させる
ための不足情級、システムがガイダンスする。そのフロ
ーを第11図を用いて説明する。ユーザの既入力情報に対
して、ユーザ主体で入力を完成させるのであれば分枝処
理1101を経て、上述した手順で入力に同期して表示し、
表示物をピックしてそれを引用する処理110を行なえば
良い。
既入力情報に対して不足している情報をシステムのガ
イダンスによって入力するのであれば、分枝処理1101を
経て次の二つのステップを踏む。
まず初めに、既入力情報の各領域に対する、変数,定
数の情報の付与状況テーブル113を作成する(ステップ1
11)。図示した付与状況テーブル113内のデータは第3
図のプログラムに対するものである。付与状況テーブル
113は、情報の付与される領域の対象箇所と、情報の付
与される変数や定数を、独立の軸として構成する。領域
の対象箇所として、解析領域の内部に含まれる内部領域
群114と境界部の境界領域群115を既入力の形状情報から
抽出すれば良く、この形状情報は第3図のプログラムで
は、DOMAIN文とREGION文で与えられる。また変数と定数
116に対しては同様に宣言VAR文とCONST文を検索すれば
良い。次に対象箇所と各変数・定数との関係付け情報と
して、境界条件要否フラグ117と、初期条件要否フラグ1
18と、領域依存情報要否フラグ119を設定する。その設
定法は、各変数において、フラグ117に対しては、偏微
分方程式の求解の対象になっているか、かつその変数に
2階の偏微分がかかっているかを、またフラグ118に対
してはその変数が時間依存であるかを、ともに既入力情
報から検出し、それぞれの検出結果が肯定的な場合には
それぞれのフラグとして要フラグを立て、それ以外は否
フラグを立てる。また、各定数において、フラグ119に
対しては、その定数が領域依存であるか、かつその定数
が式中で参照されているかを、既入力情報から検出し、
その結果により要又は否のフラグを立てる。ついで、既
入力のプログラムによる情報の中で、各領域に対する情
報の設定が済んでいるか否かを調べるが、それは既入力
プログラム情報のCONST文やBCOND文やICOND文を検索す
れば容易に分り、フラグフィールド117,118,119の要フ
ラグを設定されていれば済フラグに、未設定であれば未
フラグに変更する。
次にこの付与状況テーブル113に従って入力をガイダ
ンスする(ステップ112)。そのガイダンスは、領域対
応,変数対応または情報対応毎にユーザの指定に従って
不足している情報をガイダンスする事ができる。領域対
応ガイダンスでは付与状況テーブル113の各領域群毎に
横にたどっていって未フラグに対する領域に関する情報
の入力をガイダンスする。また変数対応ガイダンスで
は、テーブル113の変数毎に縦にたどって未フラグに対
する変数の入力をガイダンスする。また情報対応ガイダ
ンスでは、テーブル113の全ての変数・定数に対する同
種の要否フラグをたどって情報の入力のガイダンスを行
なう。それぞれのガイダンス時の入力にあたっては、領
域の該当箇所をハイライト表示し、不足情報内容を示す
ものとして変数名や情報種別(条件名など)を画面上で
システムが名称をテキスト表示によって指示し、ユーザ
がキーイン情報を入力すれば良い。本フローに従ってプ
ログラムが完成するまで、ガイダンスが行なわれる(ス
テップ1102)。
次に第1図のプログラム生成処理7の処理フローを第
12図から第16図と第31図を用いて説明する。
本発明によるプログラム生成処理7の入力である高水
準言語プログラム2は、従来入力例第3図にかわって、
第31図に示すものに拡張されている。拡張されているの
は、第31図の手続き名称(THROUGH ‘BACKWARD EULE
R')を含んだSOLVE文や、第31図の診断処理生成指定(R
ES(4))を含んだSOLVE文と代入文が書ける点であ
る。また、生成するシミュレーションプログラム18は、
従来出力例第4図にかわって第16図に示す仕様のものと
なる。拡張されているのは、高水準言語の実行文対応に
ブレークポイントを設定させるための処理161と162と、
制御構造とCALL文から成る各実行文に対する処理148で
ある。
第1図において、プログラム生成処理7は、従来処理
1001に加えて、入力された高水準言語プログラム2(第
31図)中の手続き(数値計算手順)に与えられた名称を
引用した高水準言語プログラムに対して、その手続きが
既存高水準言語で記述されたのと同等のシミュレーショ
ンプログラムを生成する手続き名称解釈処理15を設けた
点と、高水準言語プログラムの各実行文対応に得られた
数値解の正しさを診断する情報としてその数値解が偏微
分方程式をどの程度満たしているかを計算する残差計算
処理や解いた行列の固有値計算処理などを生成されたシ
ミュレーションプログラムに付加する診断処理生成処理
13と、入力された高水準言語プログラム2の各実行文に
対応する、生成されたシミュレーションプログラム内の
部分の、実行直後の変数値や内部情報と制御を外部プロ
グラムへ引き渡すプログラム部分を生成し、シミュレー
ションプログラムに付加するブレークポイント処理生成
処理16と、生成されたシミュレーションプログラムと入
力された高水準プログラム100との対応を保持し、その
実行時の制御情報となる実行制御テーブル生成処理14を
設けたことが、従来例と異なる。
プログラム生成処理7の全体フローを初めに述べ、各
処理の詳細は後述する。第1図に示すように、高水準言
語プログラム2を入力し、手続き名称解釈処理7は手続
き名称がプログラム中に表われていれば、その手続きに
対応する、手続き名称を含まない従来仕様の高水準プロ
グラムへ変換し、出力する。それを入力してコード化処
理1001は従来処理に従ってFORTRANプログラムへ変換す
るが、その過程において、診断処理生成処理13は送定さ
れた診断を行なうシミュレーションプログラム部分と、
ブレークポイント生成処理16はシミュレーションプログ
ラムへの介入を行なうプログラム部分を生成する。
以下、本発明の従来と異なる各処理について説明す
る。
第13図に手続き名称解釈処理15の処理フローを示す。
第3図の従来の記述例に対して、例えば第13図の131
は、SOLVE文に対して手続き名称としてバックワードオ
イラー法を指定している。与えられた手続名称は137に
示すように、展開される。即ち、該手法によって必要と
なる1タイムステップ前の変数名称132と、それに対す
る境界条件133と初期条件134を入力された原高水準プロ
グラムの宣言部に付加し、またSOLVE文を指定された手
法によって展開した文135および1ステップ前の変数の
更新文136へと変換する。これは各手法による展開のス
ケルトンを有し、ユーザがプログラム中で使用していな
い変数名称(本例ではFOLD)を使用し、上述の必要とな
る宣言部の付加とスケルトンによる展開を行なう事によ
り生成できる。例えば第32図に示すプログラムが本手続
き名称解釈処理に入力されると、第3図に示す高水準言
語プログラムに展開される。従って、FOLDのように本来
問題に表われてこない変数を数値計算手順を構成するた
めに用いる必要がなく、より容易にプログラムを記述す
ることができる。
次に第12図に診断処理生成処理13の前提とする指示入
力と、生成するFORTRANの構成を示す。ユーザは入力さ
れた高水準言語プログラム2の各実行文対応に、その実
行文で得られた数値結果の正しさを診断するための情報
を抽出するプログラム部分をユーザの指示で、生成され
たシミュレーションプログラムに付加する。ユーザの指
示法は、例えば第3図のプログラム例中で偏微分方程式
の求解を行なうSOLVE文39に対して、第12図の残差診断
指示キーワード121や行列診断指示キーワード124のよう
に該当するSOLVE文をキーワードとカッコで直接指定す
るようにする。診断するための情報としては、SOLVE文
の実行で得られた数値解が元の偏微分方程式をどの程度
満たしているかの残差診断121や、数値解を得た際の行
列診断124が挙げられる。残差診断は、偏微分方程式の
両辺を離散化した一次方程式の両辺に数値解を代入した
際の両辺の差異を得れば良いが、これは得られる離散化
一次方程式を解く訳ではないからどのような高精度の離
散化を行なっても必要とする主記憶容量には影響を与え
ないので、ユーザによって例えば4次精度を示すパラメ
タ122のように指定させることも可能である。行列診断
はSOLVE文や代入文に対して構成した行列に対してその
行列を抽出して、後述の実行診断処理9を利用すれば良
く、また微分演算子を右辺に含む代入文(例えばF=FO
LD+DLT*DIV(C*GRAD(FOLD)))に対しては既知量
FOLDに対してかかる微分演算子に対する行列を構成す
る。生成するFORTRANは第4図に対して、127に示すよう
に、SOLVE文に対応するCALL文125に引き続いて、残差や
行列を計算するCALL文126を主(メイン)プログラムに
生成すれば良い。同様に、入力された高水準言語128に
対しては、SOLVE文に対するCALL文(SUB3と固有値を計
算するCALL文(SUB4)から成る129を生成すれば良い。
各CALL文に対応する計算を行なうFORTRANのサブルーチ
ンは、従来の公知例に従って、離散化,行列生成の手順
で容易に生成する事ができる。
では、コード化処理1001の全体の処理フローをフロー
チャート第33図と第34図を用いて説明する。生成するプ
ログラムを第16図と第14図に示すが、その動作は後述す
る。処理フローはメインプログラム生成処理(第33図)
とサブルーチン生成処理(第34図)の2つより成る。
初めに第33図により、シミュレーションプログラム18
のメインプログラムの生成処理330を説明する。まず、
高水準言語中に用いられている変数、定数、行列解法に
必要な配列など、プログラム中で用いる変数の宣言部
(第16図160)を生成する(ステップ331)。実行制御テ
ーブル17をシミュレーションプログラム中の該当テーブ
ルに入力するプログラム部分(第16図161)を生成する
(ステップ332)。高水準言語プログラムをディスプレ
イ1に表示し、実行条件(ブレークポイント/コメント
行)をディスプレイ1より入力し、該テーブルに設定す
るプログラム部分(第16図162)を生成する(ステップ3
33)。高水準言語プログラム中のメッシュ指定文に従っ
て(MESH文)、独立変数テーブルに該当値を設定するプ
ログラム部分(第16図164)を生成する(ステップ33
4)。高水準言語プログラム中の初期条件文や定数文(I
COND文やCONST文)に従って、シミュレーションプログ
ラム中の変数テーブルに該当値を設定するプログラム部
分(第16図165)を生成する(ステップ335)。続いて、
高水準言語プログラムの各実行文対応に(ステップ33
6)、ブレークポイントやコメント指定を許容する制御
部分(第16図148)を生成し(ステップ337)、その中で
実行文に対して指定された診断に対応するCALL文を実行
文に対するCALL文に付加したCALL文列(第14図144)を
生成する(ステップ338)。全ての高水準言語プログラ
ムの実行文に対する上記処理の終了後、メインプログラ
ムの終端部分を生成する(ステップ339)。
次に第34図により、シミュレーションプログラム18の
サブルーチン生成処理340を説明する。サブルーチン生
成処理は、高水準言語プログラムの各実行文対応に以下
の処理を繰り返す(ステップ341)。まず、各実行文に
対応するサブルーチンのヘッダを生成し、必要な宣言部
を生成する(ステップ343)。ついで該実行文に含まれ
る式に微分演算子が含まれていれば、その対象式を差分
法もしくは有限要素法に従って離散化(偏微分方程式を
解析領域中の有限個の離散点と呼ぶ節点上の連立一次方
程式に変換する操作をこう呼ぶ)し、一次方程式を得る
(ステップ343)。各離散点対応の一次方程式の係数を
4則演算により計算するプログラム部分を生成する(ス
テップ344)。その係数から構成される行列を解く部分
を生成する(ステップ345)。これにより該実行文の式
が解けた事になり、サブルーチンの終端部分を生成する
(ステップ346)。以上が従来処理であったが、本発明
では更に各実行文対応に以下の処理が追加されている。
前述した診断処理の指定が高水準言語プログラム上で成
されていれば(ステップ347)、該当処理に対するサブ
ルーチンヘッダを生成し、必要な宣言部を生成する(ス
テップ348)。実行文中の対象式を、診断処理指定され
ている離散化の精度に従って離散化し、一次方程式を得
る(ステップ349)。各離散点対応の一次方程式の係数
を4則演算により計算するプログラム部分を生成し(ス
テップ3401)、その係数を成分とする行列に対して、診
断処理で指定された操作をする部分を生成する(ステッ
プ3402)。これは例えば残差診断であれば実行文で得ら
れた解を本処理で得た一次方程式に代入する式を生成
し、行列診断であれば、その求解や固有値計算といった
プログラム部分を生成する。最後に、該サブルーチンの
終端部分を生成する(ステップ3403)。
ここで、コード化処理1001を表わす第33図,第34図の
中で、ステップ332,333,337がブレークポイント生成処
理16にあたり、ステップ338,347,348,349,3401,3402,34
03が診断処理生成処理13にあたる。
第16図はコード化処理1001およびその中のブレークポ
イント処理生成16(第1図)が生成するシミュレーショ
ンプログラムの全体構成を、第14図はその内の高水準言
語プログラムの各実行文に対応して生成されるそのメイ
ンプログラム中のサブルーチンCALLの構成の詳細を示し
ている。また、第15図は実行制御テーブル生成処理14
(第1図)で生成する実行制御テーブル17の構成を示し
ている。
従来の生成シミュレーションプログラムの構成は第4
図に示したように、そのメインプログラムでは高水準言
語の一実行文対応のサブルーチンのCALL文を生成するも
のであった。これに対して、本発明の生成シミュレーシ
ョンプログラムの構成は第16図に示すように、メインプ
ログラムの冒頭で実行制御テーブルの入力処理(161)
と、高水準言語プログラムの表示および実行条件の設定
処理(162)と、高水準言語プログラムの各実行文対応
の制御と各実行文をFORTRANで実行するCALL文の列から
成る163において、第14図を用いて後述するように実行
をブレークポイントに従って制御する処理部分が付加さ
れた事が異なっている。ここで実行制御テーブル入力処
理161は、実行制御テーブル17(第1図)の入力を行な
い、実行条件設定処理162は本実行制御テーブルを、シ
ミュレーションプログラム自体の実行に先立って、設定
する。その生成シミュレーションプログラム18に対応す
る高水準言語プログラム2を画面上に表示し(例は第17
図)、ユーザによってその実行文の各行を指定させる事
によりブレークポイントを設定させる。代替方法として
予め高水準言語プログラム中にその旨を指定しておいて
生成時にその情報を予め設定しておく方法や、フォーマ
ットを予め決めた外部ファイルに設定しておいてそれを
入力する方法なども挙げられる。
次に高水準言語プログラムの各実行文に対するブレー
クポイントの指定に従って動作するシミュレーションプ
ログラムの構成法として、第16図のプログラム部分164
の具体例を説明する。従来は第4図に示したように、メ
インプログラムでは高水準言語プログラムの一実行文対
応のサブルーチンのCALL文を生成するものであった。即
ち、第14図(a)に示すように、SOLVE文141は、メイン
プログラム41(第4図)ではCALL文142となっていた
が、それに換えて、FORTRAN文列148を生成すれば良い。
分列148の内容を説明する。まず、以降の生成されたシ
ミュレーションプログラム部分(分列148)が、高水準
言語プログラム中のどの(何番目の)実行文に対応する
かを生成プログラム中に埋め込む処理がステップ143で
ある。それを仮にN番目としておくと、そのNを用い
て、実行制御テーブル17(第15図)を検索し、以降の動
作を制御する。
ここで、実行制御テーブル17の内容と、実行制御テー
ブル生成処理13を示す。まず、第15図で、実行制御テー
ブル17の内容について説明する。本テーブルは入力され
た高水準言語プログラムおよび、テーブルTAB17AとNAME
17Bより成る。テーブルTAB17Aは高水準言語プログラム
2の各実行文対応に以下の情報を保有する。実行時にコ
メント化されたかを示すフラグ151、ブレークポイント
(BP)に指定されたかを示すフラグ152、その際のブレ
ークポイントを通過する回数の何回に一回の割で実際に
ブレークするかを示すブレークポイント頻度153、その
実行文の実行回数をカウントする実行カウント154、高
水準言語プログラム2の実行文に対してSOLVE文や代入
文や入出文や反復制御文などのいずれであるかを示す実
行部種別155、その実行文が高水準言語の冒頭から数え
て何行目にあたるかを示す画面上の対応行156、その実
行文までで更新・設定された変数をさす参照可能変数ポ
インタ157より成る。この参照可能変数ポインタ157は変
数一覧テーブル17Bを指し、本変数一覧テーブル17Bは変
数名称と変数属性を有し、高水準言語プログラム中での
各変数の設定される順に並べられている。
次に、プログラム生成処理7中の実行制御テーブル生
成処理14の処理フローを第35図を用いて説明する。本処
理はまず入力した高水準言語プログラム中で用いられて
いる変数の一覧を作成する(ステップ351)。ついで、
高水準言語プログラムの実行文の制御フローを解析し、
各実行文によって更新される変数の順序を得る(ステッ
プ352)。変数の一覧をこの順序に従ってソーティング
し、変数一覧テーブル第15図17Bを生成し、実行制御テ
ーブル17の一部として出力する(ステップ353)。つい
で、各実行文で、該変数一覧テーブルのどの変数まで更
新されたかのポインタ(第15図157)を求め(ステップ3
54)、また各実行文を画面上に表示した時の対応行を入
力された高水準言語プログラムの行数から求める(ステ
ップ355)。この両情報を設定した実行文管理テーブル
第15図17Aを生成し、実行制御テーブル17の一部として
出力する(ステップ356)。最後に、高水準言語プログ
ラムをテキスト形式で実行制御テーブル17に追加して出
力する(ステップ357)。
第14図の、生成プログラム148の動作のフローの説明
に戻る。シミュレーションプログラム148はTAB17Aを参
照する事により、高水準言語の実行文に対応するそのプ
ログラム部分を実行するかを判定し、分枝する(ステッ
プ149)。コメント化されていなければ、該当する実行
文に対するCALL文を実行する(ステップ144)。ここで
第12図を用いて上述したように、高水準言語プログラム
の各実行文に診断処理生成が指定されていれば本CALL文
は複数となる。TAB17Aを参照し、画面上の高水準言語プ
ログラム表示画面(第17図)の該当行の色を変更し(ス
テップ145)、現在の実行位置をユーザに表示する。次
に、実行カウンタ154TAB(N,4)と、参照可能変数ポイ
ンタ157TAB(N,5)をカウントアップする(ステップ14
6)。ついで、ブレークポイントフラグTAB(N,2)を参
照してブレークポイントの指定があるのか、あればブレ
ークポイント頻度TAB(N,3)と該当行の通過回数を示す
実行カウンタTAB(N,4)によりブレークポイントの頻度
条件(MOD(TAB(N,4),TAB(N,3))=0)が成立して
いるかを検定し、成立していればデバッグ処理8などの
外部プログラム(本例では名称はDBGCTL)へ制御を引き
渡す(ステップ147)。不成立であればシミュレーショ
ンプログラム18を続行する。
本例では生成シミュレーションプログラムの対話実行
を前提に示したが、バッチ的にブレークポイントで外部
プログラムに制御を引き渡すのであれば、ステップ145
は不要となる。
外部プログラム(DBGCTL)、本例ではデバッグ処理8
の実行後、制御は再び元のシミュレーションプログラム
18に戻される。
次に第1図のデバッグ処理8の動作フローを第14図か
ら第18図と第29図を用いて説明する。
デバッグ処理の説明に先立ち、その動作と使われ方を
明確化するため、生成されたシミュレーションプログラ
ム18との関係を実行時の制御の流れに沿って述べる。
上述したプログラム生成処理7によって生成されたシ
ミュレーションプログラム18は、その実行において、第
16図で説明したようにその冒頭で、実行制御テーブル17
を入力し(処理161)、入力した高水準言語プログラム
を画面上に表示し、実行に先立って、ブレークポイント
の設定(B)、実行文のコメント化の指定(C)を行な
う(処理162)。第3図のプログラム例に対する表示画
面とその指定例を第17図に示す。第17図は、第3図の入
力プログラムの実行文から成るスキームブロック37と、
各文への介入(8)やコメント化(C)を指示入力する
カッコ([ ])よりなる。ブレークポイントの設定
(Bを入力)171、ブレーク頻度指定172、コメント化の
指定(Cを入力)173を行ない、以後、本指令が変更さ
れるまでこの制御に従う。本例では、時間ステップを更
新していくIterationブロック174内で、偏微分方程式の
求解を行なうSOLVE文175が4回実行される毎に、ブレー
クポイント171での処理に制御が渡され、また、PRIND文
176は当面出力が抑止された状態となる。
その動作フローを実際に追ってみると、第16図の生成
シミュレーションプログラム18は実行制御テーブル入力
処理161で第15図の実行制御テーブル17を入力する。こ
の内、予め設定されているのは、高水準言語種別155、
表示画面上の対応行156、参照可能変数ポインタ157、変
数一覧テーブル158である。ついで、第16図のプロジェ
クト部分162で高水準言語プログラムの実行文から成る
スキームブロック(第17図)を表示し、ユーザにブレー
クポイント(BP)、コメント化(当面実行がスキップさ
れる)行を指定させ、それを入力して、第15図テーブル
17Aのコメントフラグ151、BPフラグ152、BP頻度153に設
定する。以後、シミュレーションの実行を行なうが、高
水準言語プログラム2の各実行文に対する生成シミュレ
ーションプログラム18の部分163においては、第14図の
プログラム部分148に従って、コメント化されていれ
ば、即ち該当行に第15図のフラグ151が設定されていれ
ば実行をスキップし、コメント指定されておらず実行す
る(処理144)と画面上(第17図)の該当行の色を変更
して現実行位置をユーザに示し(処理145)、第15図154
の実行カウンタをアップし、151でブレークポイントの
指定の有無を見、ブレークの頻度条件も成立していれ
ぼ、デバッグ処理(DBGCTL)8に制御を渡す(147)。
デバッグ処理8の動作をフローチャート第29図を用い
て説明する。ブレークポイントにおいて制御をもらった
デバッグ処理8は、デバッグの終了指示キーが入力され
るまず以下の処理を繰り返す(ステップ291)。まず、
第18図に示すデバッグメニューの選択画面をディスプレ
イ1に表示する(ステップ292)。その画面を通してユ
ーザの入力した選択指定を入力し(ステップ293)、指
定可能キーでなければシステムメッセージを出力し(ス
テップ294)、再入力待ち状態となる。指定可能キーが
入力された場合、実行制御変更キー(第18図184)か否
かによって処理が異なる(ステップ290)。実行制御変
更キーであれば、高水準言語プログラムの実行文画面
(第17図)を表示し、実行制御情報の変更部分を入力す
る(ステップ295)。入力に従って実行制御テーブル17
を更新し(ステップ296)、デバッグ終了指示キーが入
力された以降の実行はそれに従う。実行制御変更キー以
外であれば、指定されたメニューキー内容に従って、実
行診断処理9や結果分析処理10の該当機能が呼び出さ
れ、実行される(ステップ297)。デバッグ終了指示キ
ーが入力されると、ディスプレイ1上に高水準言語プロ
グラムの実行文画面(第17図)を回復表示し(ステップ
298)、シミュレーションプログラムのブレークポイン
トでデバッグ処理に制御渡した次の実行行へ制御を戻す
(ステップ299)。
第18図のメニューの一覧について説明する。本発明に
おけるブレークポイントは、それぞれのブレークポイン
トが高水準言語プログラムの実行文の実行直後であるの
で、物理量の更新単位となる。更新された量の参照や、
更新に用いられた行列等の良否の診断が、計算手順が正
常に行なわれているかを検証する有効な手段となる。変
数抽出,変数作画,変数変更や、行列検定やスキームの
安定性の検定などのメニューの他に、第18図の実行制御
変更キー184は、既に設定してあるブレークポイントや
コメント化の指定を変更する機能であり、本メニューが
選択されると上述したフローで述べたように、第17図高
水準言語プログラムの実行文例が表示され、その設定の
変更によって、第15図の実行制御テーブル17が更新され
る。
本デバッグ処理は、シミュレーションプログラムから
変数や行列情報などの全ての情報を受け取るので、後述
する実行診断処理9や結果分析処理10の強化によって、
種々のデバッグメニューを備えることができる。本デバ
ッグ処理は、その終了が指示されると、シミュレーショ
ンプログラムに制御を戻し(即ち、本サブルーチンを終
了し)、再びある行でブレーク条件が成立する迄、シミ
ュレーションが続行される。
次に第1図の実行診断処理9の動作フローを第19図と
第20図と第30図を用いて説明する。
実行診断処理9の動作をフローチャート第30図を用い
て説明する。上述したように、デバッグ処理中の第29図
297より制御を受け取った本処理は、該当する診断機能
による診断終了3指示キーが入力されるまで以下の処理
ぐ繰り返す(ステップ301)。まず該当機能の実行に必
要となるパラメタを入力するためのパラメタ入力画面を
ディスプレイ1に表示する(ステップ302)。画面形式
は機能によって異なるが、例えば対角優位性検定機能の
第19図の画面表示191や実固有値スペクトル機能の第28
図の画面表示280などである。次にその画面を通してパ
ラメタを入力し(ステップ303)、その入力パラメタに
従って該当機能を実行する(ステップ304)。ついでそ
の実行結果をディスプレイ1に出力表示する。例えば、
対角優位性検定機能では第19図の画面表示192や実固有
値スペクトル機能では第28図の画面表示281などであ
る。パラメタを変更して必要な回数、該当機能を実行し
た後、診断終了を指示するキーが入力されると、本処理
の呼び出し元に制御を戻す(ステップ306)。
実行診断処理は主に、物理量を更新する際に、高水準
言語プログラム2のSOLVE文などの偏微分方程式の離散
化によって作成、使用された行列の性質を診断する情報
などを抽出する。その処理は、作成された行列の成分値
を直接検証する処理と、行列の内部に埋め込まれた性質
としての固有値などを検証する処理に分けられる。行列
は生成シミュレーションプログラム18中で、特定の配列
名称と決められた形式によって保有されているので、本
処理はそれを受けとって上記2つの処理を適用する。ま
た、陽解法による代入文においては、表面上は行列は生
成されないが、上述した第1図診断処理生成13を利用す
る事により、代入文は旧物理量にかかる操作として行列
表現され、それを受けとって上記2つの処理を適用すれ
ば良い。
前者の成分値を直接検証する方法として、成分値を単
に抽出する以外に、ある対角優位性などの条件式を満た
す(または満さない)行を抽出する方法と、成分値を目
視で判断できる図形として表示する方法を本発明では有
する。以下、そのいくつかを示す。
第19図に、条件式を与えた場合の実施例を示す。対角
優位性というのは、対角成分が非対角成分に較べどれだ
け強いかという条件で、数値計算上、妥当な離散化が行
なわれたかの重要な尺度となる。その度合を、パラメタ
入力指示画面191中に示す重みαのように指定し、その
条件式194を満たす行列の行に該当する格子点を、格子
番号や座標位置で示すか、結果の画面表示192に示すよ
うに領域上の格子上に193の如くマーカを表示すること
で、その箇所を示す。これにより、領域上のどのあたり
で離散化が良くないか(あるいは良いか)をユーザは知
ることができる。
第20図に、成分値を目視で判断できる図形として表示
する実施例を示す。ここで、第20図(a)は画面表示
例、(b),(c)は原理説明図である。偏微分方程式
200は離散化により、201の形式の一次方程式の群(I=
1,……?)で表わさ、それを合成したのが行列表示202
である。ここでFは変数をaは係数を表わしている。従
って、各格子点の周囲格子点からの影響の強さは、対角
成分aIに対する相対値|aI-1|/|aI|等として、203に示す
ように該当する格子点方向への長さによって表示する事
ができ、こうすれば、この多角形の大きさや歪み具合
で、どの方向の格子点からの影響が強いのか、また対角
優位性が満たされているかも、目視的に検証することが
可能となる。
固有値を検証する機能としては、後で例を示すが(第
28図)、対象とする行列の実固有値の個数や実際の固有
値、および全体の分布をグラフによって表示する事によ
り、離散化の正しさや計算アルゴリズムの安定性を検証
できる。
本実施例の方法は差分法データ(正規格子)に対して
示したが、有限要素法データ(任意メッシュ)に対して
も全く同様に適用できる。
次に第1図の結果分析処理10の実施例と動作フローを
第21図から第24図を用いて説明する。
第21図は結果分析処理10の構成を示している。本処理
はシミュレーションプログラム18の実行によって得られ
た時空間領域におけるシミュレーション結果19と、入出
力画面であるディスプレイ1からその分析対象とする結
果の変数名称やその加工法やその出力方法を入力とし、
シミュレーション結果19内の該当データを入力処理212
によって入力し、それをデータ加工処理211によって指
定された加工法でデータ加工し、それを出力処理213に
よって指定された出力方法で作画データやファイルデー
タとして入出力画面1や出力ファイル215に出力する。
データ加工処理211は、四則演算やノルム計算などの演
算処理、時間微積分処理,空間微積分処理,入力データ
のデータ補間処理から成る。
以下、入力データ形式(第22図)と処理フロー(第24
図)を示す。
入力となるシミュレーション結果19は、シミュレーシ
ョンプログラム18の計算結果で、独立変数として計算の
行なわれた格子点の座標値や、従属変数として各格子点
で得られた各物理変数の名称や変数値から成る。第22図
にその一例を示す。各座標方向のメッシュ数221,格子点
の座標値222,空間領域の各格子点や各メッシュにおける
各物理量の数値データを各時刻毎に所有する。各時刻の
データは、物理変数の名称223と、それがスカラ量であ
るかベルトル量であるかの種別と、ベクトルであればそ
の要素変数名225と、その各変数の物理量の数値データ2
26から成る。同一時刻の複数の物理変数に対する数値デ
ータは同一形式で格納されている。本例は規則格子メッ
シュ(差分法)によるデータ形式であるが、不規則メッ
シュ(有限要素法など)によるデータ形式も同様の構成
で与えられる。
第23図にディスプレイ1より入力される指定内容の構
成を示す。指定内容は、データ加工法指定231と、対象
とするデータ名指定232と、抽出するデータ範囲指定233
と、加工したデータの出力指定234から成る。データ加
工法指定231は、加工方法として変数間の四則演算やノ
ルム計算から成る演算処理加工と、変数の時間に関する
微積分処理加工と、変数の空間に関する微積分加工と、
変数の時間または空間に対するデータ補間処理加工を指
定する。各加工方法が指定されると、その加工法に固有
となる加工パラメタの種類が決まるのでそれを指定す
る。例えば、微積分であればどの手法の数値微積分か、
データ補間であれば線型,スプライン,ラグランジェと
いったどの手法の補間か、などである。データ名指定23
2は、加工の対象とする(従属)変数を指定するもの
で、シミュレーション効果19内にある変数のスカラー量
一覧とベクタ量一覧の中から選択すれば良い。データ範
囲指定233は、抽出する独立変数の範囲を指定するもの
で、時間範囲,空間範囲を指定する。出力指定は、抽
出,加工されたデータを出力するのに数値と作画グラフ
のいずれの方法で出力するかを指定する。出力方法が指
定されると、その出力方法に固有となる出力パラメタの
種類が決まるのでそれを指定する。例えば、数値出力で
あればそのフォーマットや、作画出力であればグラフの
種別や視点などの作画仕様などである。
結果分析処理の動作フローを第24図に示す。
初めに入力処理第21図212により、第23図で示した入
力を画面1より入力する(ステップ241)。その入力方
法としては、システム側が各指定項目のメニューを画面
に表示し、それに対する選択や値の指定を行なえば良
い。各指定項目は独立に決まるのではないから、各指定
項目の中で既に入力指定された項目に対して許されるメ
ニューのみをシステム側が表示すれば、ユーザの指定誤
まりを未然に防ぐことができる。次に指定されたデータ
をシミュレーション結果19又は、加工データ214より入
力する(ステップ242)。ついで指定された加工法に従
って、指定データを加工する(ステップ243)。加工さ
れたデータは、シミュレーション結果(第22図)と同じ
各格子点やメッシュ上で定義された変数値か、またはそ
の一部か、または単一の値であるスカラー量の、3種類
の内のいずれかの形式となる。四則演算や微分処理やデ
ータ補間は第一または第二のデータ形式に、ノルム計算
や積分は第三のデータ形式となる。加工したデータを第
21図加工データファイル214に出力し(ステップ244)、
上述の第一もしくは第二のデータであれば再加工が可能
であるので、指定によっては入力処理241に戻る(ステ
ップ245)。このように処理の途中で生成される加工デ
ータ214も、入力データの対象となる。最後に出力指定
に従って、ファイルやプリンタ215に出力するか、線画
や画像等の作画データに変換して画面1に出力する。
以上の結果分析処理の一実施例であるが、その特徴
は、シミュレーション結果の良否を判断し易い情報にデ
ータを加工するための処理(ツール)を有し、それを再
帰的に利用できる環境を提供している点にある。
最後に、第1図プログラム生成処理7によって生成さ
れたシミュレーションプログラム18の、デバッグ処理8
と実行診断処理9と結果分析処理10の連繋から成る動作
フローを、第17図と第18図と、第25図から第28図を用い
て説明する。本動作フローは、生成シミュレーションプ
ログラム内にユーザが対話的に介入し、デバッグ,実行
診断,結果分析を行なうものである。
生成されるシミュレーションプログラムは、プログラ
ム生成処理7のブレークポイント処理生成16と実行制御
テーブル生成14(第14図から第16図)で説明したよう
に、そのシミュレーションプログラムへの元の高水準言
語プログラムの各実行文単位での介入が可能となる。そ
の介入方法は、デバッグ処理8(第14図から第18図と第
29図)で説明したように、シミュレーションプログラム
18の実行の冒頭で、第17図の高水準言語プログラムの実
行文部分(スキーム)が表示され、各行にブレークポイ
ントの設定やコメント化の指定をする事で行なわれる。
実行中の実行終了行および現在の実行中の行は第17図の
高水準言語プログラムの各行の色変化で追跡する事がで
き、設定されたブレークポイントの条件が成立すると、
デバッグ処理8に制御とプログラム内の変数が引き渡さ
れ、デバッグ処理8は第18図に示すデバッグメニューの
機能選択画面180を表示し、その選択でユーザのデバッ
グ,実行診断,結果分析を可能とする。デバッグの終了
を指示すると、制御と変数は再びデバッグ処理からシミ
ュレーションプログラム18の元の位置に戻され、シミュ
レーションが続行される。
第25図は、シミュレーションプログラム実行時の画面
の構成を示している。ここで高水準言語プログラムを仮
にDEQSOLと命令している。シミュレーションプログラム
の実行時はC/B指定画面として251のDEQSOLソース画面が
表示されており、ブレークポイントでデバッグ処理8に
制御が渡されると機能選択のために252のデバッグメニ
ュー画面(第18図)が表示される。第18図に示すデバッ
グメニューは変数抽出・作画・変更機能181と、結果分
析機能183と、行列検定機能182およびスキーム検定機能
と、DEQSOL実行制御変更機能184残差検出機能1801など
から成る。デバッグメニューの機能が選択されると、即
ち第18図のデバッグメニュー選択画面のカッコ内に選択
マークSが入力されると、画面には各機能の固有のパラ
メタを設定するパラメータ設定画面(第25図253)が表
示される。
第18図と第25図の対応をもう一度述べると、第18図自
体は第25図252のデバッグメニュー画面であり、第18図1
81が選択されると第25図255のパラメータ設定画面が、
第18図183が選択されると第25図258のパラメータ設定画
面が、第18図182が選択されると第25図256のパラメータ
設定画が、第18図185が選択されると第25図258パラメー
タ設定の画面がそれぞれ表示され、各機能のパラメータ
の入力を誘導する。
ここで第1図デバッグ処理8と実行診断処理9と結果
分析処理10の連繋動作として、第18図の結果分析機能18
3が選択されると上述した結果分析処理10に、第18図の
列検定機能182またはスキーム検定機能185が選択される
と上述した実行診断処理9に制御と内部変数が引き渡さ
れ、シミュレーションプログラム内からの各処理の対話
実行が可能となる。これはデバッグ処理がシミュレーシ
ョンプログラムから全ての変数を受け取るので、各処理
への引数渡しによって容易に実現できる。
以下、第18図のデバッグメニューが選択された際の画
面の遷移と動作フローについて、いくつかの例を示す。
第18図デバッグ・メニュー181は、シミュレーション
プログラムから受けとった変数を抽出(数値表示),作
画,変更するもので、例えばデバッグメニュー186の変
数作画機能が選択されると、第26図の作画機能パラメタ
画面260が表示される。作画を決めるパラメタはグラフ
の種別261と作画対象変数名262と263である。デバッグ
処理8は、上述したように実行制御テーブル17を参照す
る事により、そのブレークポイントで有意な値が設定さ
れている変数とその属性(スカラ,ベクタなど)を検出
し、第26図262と263に示すように、変数の一覧を表示す
る。ユーザは、グラフタイプと変数名と選択すれば、所
望のグラフが表示される。
第18図の行列検定機能の係数行列抽出メニュー189が
選択されると第27図に示す係数行列抽出パラメータ画面
270が表示され、出力領域として格子点番号271,272と、
出力オプションとしてその係数の主対角からの距離273
や格子点番号付加274の指定により、所望の位置の係数
行列が表示される。この他、対角優位性検定を選択する
と第19図が、離散化多角形出力を選択すると第20図の仕
様で述べた出力がそれぞれ得られる。
第18図の行列検定機能の実固有値スペクトル分布187
が選択されると、ブレークポイントで与えられた行列に
対する固有値が計算され、その結果が第28図280に示す
ように表示され、それをグラフ化する為にグラフの上下
端282とその分割数283を指定すると、棒グラフ281が表
示される。
ここではいくつかの例を示したが、各デバッグメニュ
ーが選択されると、デバッグ処理8と実行診断処理9と
結果分析処理10の連繋によって、シミュレーションプロ
グラムの各ブレークポイントでの変数や行列情報が、ユ
ーザの判断し易い形に加工されて表示され、シミュレー
ションプログラムの実行状況とその計算の良否を把握す
る事が可能となる。
以上、本発明の一実施として、全体構成および各処理
の機能内容と動作フローについて述べた。以下で本発明
のいくつかの変形について述べる。
本実施例では規則格子(差分法)の解析を例に説明し
たが、不規則格子や任意メッシュ(有限要素法)などの
他の解析手法に対しても、全く同様に本発明を適用する
ことが可能である。
また本実施例では、シミュレーションプログラムに介
入するブレークポイントをその実行時に対話的に設定す
る例を述べたが、プログラム生成機能の入力となる高水
準言語プログラム上で予め明示的に指示する用語を導入
してプログラム生成時に固定でブレークポイントを設定
したり、またプログラム生成機能の生成モードとして高
水準言語プログラムの全ての実行文にブレークポイント
を設定させたり、またそれらと対話実行時の設定・変更
を併用したりといった変形も可能である。
また本実施例では、実行診断処理や結果解析処理を全
て生成シミュレーションプログラムから利用できるもの
としたが、各処理の中にはその実用において計算機リソ
ース(メモリやCPU)を多く要求するものがあるので、
各処理の中で予め利用するもののみをプログラム生成処
理でユーザに指定させる事により、ユーザのデバッグメ
ニューのバリエーションと生成シミュレーションプログ
ラムの実行時のリソース負荷を動的に変更するプログラ
ム生成が可能である。
また本実施例では高水準言語プログラムの各実行文の
実行後にデバッグ処理に制御を渡したが、指定された各
実行文の実行直前にデバッグ処理に制御を渡す変形も可
能である。
[発明の効果] 本発明によれば、高水準言語から自動生成したシミュ
レーションプログラムの実行に際して、高水準言語の任
意の実行文でブレークポイントを設定でき、それに従っ
て実行中のシミュレーションプログラム中に介入する事
ができるので、生成したシミュレーションプログラムの
動作の自跡や行列などの内部情報を抽出でき、シミュレ
ーションプログラムの実行によって得られる解の信頼性
を検証できる効果がある。
本発明によれば、アルゴリズムを構成する能力の乏し
いユーザも既存のデータベースからアルゴリズムを平易
に選択でき、また高水準の言語によって定型化されたア
ルゴリズムを簡潔に記述でき、また記述されたアルゴリ
ズムを実行前に数値解析で知られた知識との照合によっ
て予想される計算時の異常を予め診断でき、また高水準
言語によるプログラムを形状情報と数式情報とその間の
関係という形式で可視的に確認およびプログラミング時
の引用ができ、また上記の高水準言語プログラムからFO
RTRAN等の通常の計算機で実行可能なシミュレーション
プログラムを生成でき、また生成されたシミュレーショ
ンプログラムは実行時のデバッグや計算の診断や結果の
分析を行なうことができるので、数値シミュレーション
の大幅な工程短縮とその信頼性の向上を図る効果があ
る。
【図面の簡単な説明】
第1図は本発明の全体構成を示すプログラムの生成およ
び実行方法の機能ブロック構成図、第2図は数値シミュ
レーションのモデル例、第3図は従来のプログラム生成
方法の入力である高水準言語によるプログラム例、第4
図は従来方法により生成されたシミュレーションプログ
ラムの構成、第5図はアルゴリズムの管理情報と検索キ
ー、第6図はデータベースガイダンス処理の動作フロ
ー、第7図はデータベースガイダンス画面例、第8図は
問題診断処理の動作フロー、第9図は第8図の説明のた
めの詳細フロー、第10図はモデル可視化処理の動作時の
表示画面例、第11図はモデル可視化処理のプログラム作
成ガイダンスの動作フロー、第12図はプログラム生成処
理の診断生成処理に対する高水準言語例とその生成プロ
グラム構成、第13図はプログラム生成処理の名称解釈処
理の処理フロー、第14図はプログラム生成処理の生成プ
ログラム(一部)、第15図は実行制御テーブルの構成、
第16図はプログラム生成処理の生成プログラム構成、第
17図はデバッグ処理の表示画面例、第18図はデバッグ処
理のバッグメニュー選択画面例、第19図は実行診断処理
の機能例、第20図は実行診断処理の別の機能例、第21図
は結果分析処理の構成、第22図は結果分析処理の入力例
(シミュレーション結果)、第23図は結果分析処理の動
作指定メニュー例、第24図は結果分析処理の動作フロ
ー、第25図はシミュレーションプログラム実行時の画面
構成、第26図から第28図はデバッグメニュー選択時の画
面遷移と動作例、第29図はデバッグ処理の処理フロー、
第30図は実行診断処理の処理フロー、第31図は本発明に
よって拡張された高水準言語プログラム例、第32図は本
発明によって拡張された高水準言語による従来例(第3
図)と同等なプログラム例、第33図と第34図はプログラ
ム生成処理7中のコード化処理1001のフローチャート、
第35図は実行制御テーブル生成処理14のフローチャート
をそれぞれ示す。 4……データベースガイダンス処理、 5……問題診断処理、 6……モデル可視化処理、 7……プログラム生成処理、 8……デバッグ処理、 9……実行診断処理、 10……結果分析処理、 11……アルゴリズムデータベース、 12……数値解析知識ベース、 13……診断処理生成、 14……実行制御テーブル生成、 15……手続き名称解釈処理、 16……ブレークポイント処理生成、 17……実行制御テーブル、 18……シミュレーションプログラム、 19……シミュレーション結果、 1001……コード化処理。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 猪貝 光祥 東京都小平市上水本町5丁目20番1号 日立超エル・エス・アイ・エンジニアリ ング株式会社内 (72)発明者 梅谷 征雄 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 山部 みちる 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (56)参考文献 特開 昭63−208166(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/06 G06F 9/44 G06F 15/328

Claims (14)

    (57)【特許請求の範囲】
  1. 【請求項1】物理現象が起っている空間領域の形状情報
    と、該物理現象を数値的に解析するために必要な変数,
    定数,該変数と定数を用いた偏微分方程式、上記空間領
    域内の初期条件と境界条件と物性値各条件および計算手
    順を含む数式情報を表わす問題記述プログラムから通常
    の計算機で実行可能な言語により記述されたシミュレー
    ションプログラムを自動生成するシミュレーションプロ
    グラム生成方法であって、問題記述プログラム上でユー
    ザがブレーク・ポイントとして指定する任意の実行文の
    実行直後または直前におけるシミュレーションプログラ
    ムの内部情報と制御を外部プログラムへ引き渡すプログ
    ラム部分がその一部としてなるシミュレーションプログ
    ラムを生成することを特徴とするシミュレーションプロ
    グラム生成方法。
  2. 【請求項2】上記プログラム部分は、上記問題記述プロ
    グラムによる偏微分方程式求解の実行文に対して、ユー
    ザの言語レベルの指定によって、得られる数値解の正し
    さを診断する情報として、偏微分方程式をどの程度満た
    しているかを計算する残差計算処理のプログラム部分
    と、解いた行列の固有値計算処理のプログラム部分とを
    含む請求項第1項記載のシミュレーションプログラム生
    成方法。
  3. 【請求項3】上記シミュレーションプログラムを生成す
    る処理は、計算手順を記述する上記問題記述プログラム
    に対して、計算手順に名称を付与し、該名称の引用によ
    って指定した偏微分方程式に手続きが施されたことと同
    等のシミュレーションプログラムを生成する処理を含む
    請求項第1項記載のシミュレーションプログラム生成方
    法。
  4. 【請求項4】上記シミュレーションプログラムを生成す
    る処理は、上記問題記述プログラムの各実行文のそれぞ
    れの実行直後または直前におけるシミュレーションプロ
    グラムの変数値と内部情報と制御を外部プログラムへ引
    き渡す機能を生成すべきシミュレーションプログラムに
    付加する処理と、生成したシミュレーションプログラム
    と入力された問題記述プログラムとの対応を示す実行制
    御テーブルを生成する処理を含む請求項第1項記載のシ
    ミュレーションプログラム生成方法。
  5. 【請求項5】請求項第4項記載の方法によって生成され
    たシミュレーションプログラムの実行方法であって、実
    行の冒頭で上記実行制御テーブルに従って画面上に該当
    する問題記述プログラムを表示し、該問題記述プログラ
    ムの実行文単位にユーザにより指定された実行頻度を条
    件とするブレークポイントおよび実行抑止化に従ってシ
    ミュレーションプログラムを実行し、数値シミュレーシ
    ョンの進行状態をその実行部分に該当する問題記述プロ
    グラムの実行文の画面上の色で表示し、上記ブレークポ
    イントの通過時に指定条件の成立に伴って既設定のブレ
    ークポイントを含む実行条件の変更とその時点でのシミ
    ュレーション結果の抽出と該結果の良否を診断する情報
    の抽出とを行ない、上記表示された色の目視で再びユー
    ザにより指定された上記実行抑止化によってシミュレー
    ションプログラムを実行することを特徴とするシミュレ
    ーションプログラム実行方法。
  6. 【請求項6】上記抽出を行なう処理は、 (1)対象とする偏微分方程式の中で用いられている変
    数と行列の値を所定の形式で上記シミュレーションプロ
    グラムから計算機に入力する処理と、 (2)行列の成分値を解析対象領域を指定することによ
    り抽出して行列の各行の成分値を対角成分に対応する領
    域上の節点位置に対角成分値との相対的な大きさを用い
    た多角形で表示する処理と、 (3)行列の各行の対角成分値とその他の成分値との間
    の与えられた条件式を満さない行を抽出しその行番号と
    対角成分に対応する領域上の節点位置を表示する処理
    と、 を含む請求項第5項記載のシミュレーションプログラム
    実行方法。
  7. 【請求項7】上記数値シミュレーションを実行する処理
    は、 (1)対象とする編微分方程式の中で用いられている変
    数の値を所定の形式で上記シミュレーションプログラム
    から計算機に入力する処理と、 (2)保存則を含む物理法則の変数値との充足性と数値
    計算上の諸定理を検証するために必要な所定の演算を上
    記変数に対して行なう処理と、 を含む請求項第5項記載のシミュレーションプログラム
    実行方法。
  8. 【請求項8】請求項第5項記載の方法において、上記ブ
    レークポイントで請求項第6項記載の処理を実行するシ
    ミュレーションプログラム実行方法。
  9. 【請求項9】高水準の問題向き言語により記述された問
    題記述プログラムの生成方法であって、偏微分方程式の
    形式、数値シミュレーションにおける各アルゴリズムを
    特徴付けている方式、アルゴリズム名、および許容可能
    な計算機リソースをキーインデクスとしてユーザに問い
    合わせることによりアルゴリズムを格納したデータベー
    スを検索し、指定されたキーインデクスを満たすアルゴ
    リズムの一覧から選択されたアルゴリズム中で使用され
    ている変数名称を書きかえ、書きかえた変数名称を使用
    したアルゴリズムを高水準の問題向き言語により記述し
    て問題記述プログラムを生成することを特徴とする問題
    記述プログラム生成方法。
  10. 【請求項10】高水準の問題向き言語により記述された
    問題記述プログラムの生成方法であって、問題記述プロ
    グラムから逆にユーザの意図しているアルゴリズムの特
    徴と名称を導き出し、該特徴と名称にもとずき数値解析
    における知識ベースから該アルゴリズムに対する安定性
    と収束性の定理及び基準を検索し、問題記述プログラム
    の記述内容が該安定性と収束性の定理及び基準を満たし
    ているかを検証し、該検証内容に従って問題に対するプ
    ログラムの変更方針をユーザにアドバイスするための情
    報を出力して問題記述プログラムを生成することを特徴
    とする問題記述プログラム生成方法。
  11. 【請求項11】高水準の問題向き言語により記述された
    問題記述プログラムの生成方法であって、シミュレーシ
    ョンモデルを構成している領域形状情報と偏微分方程
    式,初期条件及び境界条件を含む数式情報とを、それぞ
    れ実際の形と式としてシミュレーションプログラムと計
    算機への入力に同期して画面上に表示することによって
    両情報の関連づけを可視情報としてユーザに提示し、既
    入力情報に対する不足情報をユーザに入力させるための
    ガイダンス情報を出力して問題記述プログラムを生成す
    ることを特徴とする問題記述プログラム生成方法。
  12. 【請求項12】上記提示する処理は、請求項第10項にお
    ける検証する処理により得られた検証内容を可視情報と
    して提示する処理からなる請求項第11項記載の問題記述
    プログラム生成方法。
  13. 【請求項13】物理現象が起っている空間領域の形状情
    報と、概物理現象を数値的に解析するために必要な変
    数,定数,該変数と定数を用いた偏微分方程式、上記空
    間領域内の初期条件と境界条件と物性値とからなる各条
    件および計算手順を含む数式情報を基にして、物理現象
    を計算機内で模擬的に再現して数値的な解を得る数値シ
    ミュレーションをおこなうシミュレーションプログラム
    生成支援方法であって、高水準の問題向き言語により記
    述された問題記述プログラムから通常の計算機で実行可
    能なシミュレーションプログラムを自動生成するシミュ
    レーションプログラム生成処理と、アルゴリズムや既定
    義の領域形状を格納したデータベースを検索するデータ
    ベース検索処理と、可視情報として画面に表示した既定
    義情報を引用して既定義情報に対する不足情報を教示す
    るモデル可視化処理と、数値解析の知識ベースを参照し
    てユーザの定義した問題の不完全さ及び不合理性をシミ
    ュレーションプログラムの実行以前に検出する問題診断
    処理とからなることを特徴とするシミュレーションプロ
    グラム生成支援方法。
  14. 【請求項14】物理現象が起っている空間領域の形状情
    報と、概物理現象を数値的に解析するために必要な変
    数,定数,該変数と定数を用いた偏微分方程式、上記空
    間領域内の初期条件と境界条件と物性値とからなる各条
    件および計算手順を含む数式情報を基にして、物理現象
    を計算機内で模擬内に再現する数値的な解を得る数値シ
    ミュレーションプログラムの実行過程における計算の値
    と状況にもとづき計算が正しく行なわれているか否かを
    判断する情報及び実行時の変数情報の表示を行うデバッ
    グ支援処理と、計算の正しさを実行時に検証するための
    機能部分を生成したシミュレーションプログラムに付加
    して該機能部分の計算実行から得られる情報により計算
    が正しく行なわれているか否かを診断する実行診断処理
    と、生成したシミュレーションプログラムの計算実行後
    に得られた計算結果の表示を行なう結果分析処理とから
    なることを特徴とするシミュレーションプログラム実行
    支援方法。
JP63304154A 1988-12-02 1988-12-02 プログラム生成方法および実行方法 Expired - Lifetime JP2765888B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP63304154A JP2765888B2 (ja) 1988-12-02 1988-12-02 プログラム生成方法および実行方法
US07/443,252 US5148379A (en) 1988-12-02 1989-11-30 Method for automatically generating a simulation program for a physical phenomenon governed by a partial differential equation, with simplified input procedure and debug procedure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63304154A JP2765888B2 (ja) 1988-12-02 1988-12-02 プログラム生成方法および実行方法

Publications (2)

Publication Number Publication Date
JPH02151927A JPH02151927A (ja) 1990-06-11
JP2765888B2 true JP2765888B2 (ja) 1998-06-18

Family

ID=17929706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63304154A Expired - Lifetime JP2765888B2 (ja) 1988-12-02 1988-12-02 プログラム生成方法および実行方法

Country Status (2)

Country Link
US (1) US5148379A (ja)
JP (1) JP2765888B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197440B2 (en) 2001-07-11 2007-03-27 Canon Kabushiki Kaisha Finite element method library, finite element method program, and storage medium

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03263174A (ja) * 1990-03-14 1991-11-22 Hitachi Ltd プログラム生成方法およびそのための領域分割方法
JPH03268058A (ja) * 1990-03-19 1991-11-28 Hitachi Ltd 文書作成方法及びその装置
JPH03276071A (ja) * 1990-03-27 1991-12-06 Yoshiomi Kondo 流体及び電磁流体の物理量予測方法
US5428740A (en) * 1990-10-18 1995-06-27 Ventana Systems, Inc. Applying successive data group operations to an active data group
IE69192B1 (en) * 1990-12-21 1996-08-21 Hitachi Europ Ltd A method of generating partial differential equations for simulation a simulation method and a method of generating simulation programs
US5390320A (en) * 1991-01-22 1995-02-14 Grumman Aerospace Corporation Automatically converting structured analysis tool database outputs into an integrated simulation model via transportable standardized metafile
US5557773A (en) * 1991-06-12 1996-09-17 Wang; Cheh C. Computational automation for global objectives
US5438526A (en) * 1991-07-12 1995-08-01 Hitachi, Ltd. Program generation method for particles simulation
KR950007521B1 (ko) * 1992-08-14 1995-07-11 엘지전자주식회사 시로코우 팬
JP2513417B2 (ja) * 1993-07-05 1996-07-03 日本電気株式会社 情報処理装置
US5640331A (en) * 1993-07-30 1997-06-17 Gas Research Institute Method and apparatus for obtaining species concentrations and reaction rates in a turbulent reacting flow
US5583789A (en) * 1993-07-30 1996-12-10 Gas Research Institute Local integral method for computing molecular diffusion and chemical reaction
GB9316856D0 (en) * 1993-08-13 1993-09-29 Philips Electronics Uk Ltd A method of predicting distributed effects within a device such as a power semiconductor device
US5812435A (en) * 1993-09-21 1998-09-22 Mitsubishi Denki Kabushiki Kaisha Shape simulation method allowing simulation of processed shape during steps of manufacturing a semiconductor device in a short period of time
US5604687A (en) * 1994-01-31 1997-02-18 Texas Instruments Incorporated Thermal analysis system and method of operation
US5828867A (en) * 1994-08-04 1998-10-27 Lucent Technologies Inc. Method for discrete digital event simulation
US5629857A (en) * 1994-11-15 1997-05-13 International Business Machines Corporation Method and system for indicating a status of a circuit design
US5588142A (en) * 1995-05-12 1996-12-24 Hewlett-Packard Company Method for simulating a circuit
US6236956B1 (en) 1996-02-16 2001-05-22 Avant! Corporation Component-based analog and mixed-signal simulation model development including newton step manager
US5963724A (en) * 1996-02-16 1999-10-05 Analogy, Inc. Component-based analog and mixed-signal simulation model development
DE19626984C1 (de) * 1996-07-04 1997-11-27 Siemens Ag Verfahren zur rechnergestützten Ermittlung einer Systemzusammenhangsfunktion
US6317871B1 (en) * 1997-07-18 2001-11-13 Compaq Computer Corporation System for ensuring the accuracy of file structures in a source-to-source computer program translator
US6425118B1 (en) 1997-07-18 2002-07-23 Compaq Computer Corporation System for automatically generating tests to ensure binary compatibility between software components produced by a source-to-source computer language translator
TW388921B (en) * 1997-11-28 2000-05-01 Nippon Electric Co Semiconductor process device simulation method and storage medium storing simulation program
JP3878345B2 (ja) * 1998-12-01 2007-02-07 富士通株式会社 シミュレーション装置及び方法並びにプログラム記録媒体
US6718291B1 (en) * 1999-07-02 2004-04-06 Vadim Shapiro Mesh-free method and system for modeling and analysis
US6526545B1 (en) * 2000-08-07 2003-02-25 Vanguard International Semiconductor Corporation Method for generating wafer testing program
WO2004017380A2 (en) * 2002-08-19 2004-02-26 The Trustees Of Columbia University In The City Of New York A single-shot semiconductor processing system and method having various irradiation patterns
CA2408457A1 (en) * 2002-10-17 2004-04-17 Ibm Canada Limited-Ibm Canada Limitee Collection and detection of differences of values of expressions/variables when debugging a computer process
US7429860B2 (en) * 2003-01-28 2008-09-30 University Of Southern California Noise reduction for spectroscopic signal processing
US7028494B2 (en) * 2003-08-22 2006-04-18 Carrier Corporation Defrosting methodology for heat pump water heating system
US7787688B1 (en) * 2006-01-25 2010-08-31 Pixar Interactive depth of field using simulated heat diffusion
JP4875224B2 (ja) * 2009-06-25 2012-02-15 旭硝子株式会社 物理量計算方法、数値解析方法、物理量計算プログラム、数値解析プログラム、物理量計算装置及び数値解析装置
DE102012211511A1 (de) * 2012-07-03 2014-01-09 Siemens Aktiengesellschaft Bestimmung der Eignung einer Ressource
US9134966B2 (en) * 2013-12-12 2015-09-15 International Business Machines Corporation Management of mixed programming languages for a simulation environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677587A (en) * 1985-05-14 1987-06-30 Sanders Associates, Inc. Program simulation system including means for ensuring interactive enforcement of constraints
US4742473A (en) * 1985-07-16 1988-05-03 Shugar Joel K Finite element modeling system
JPH07120276B2 (ja) * 1986-03-10 1995-12-20 株式会社日立製作所 シミュレーションプログラム生成方法
JPH07120351B2 (ja) * 1986-03-14 1995-12-20 株式会社日立製作所 シミュレーションプログラム生成方法
US4866663A (en) * 1987-02-13 1989-09-12 Sanders Associates, Inc. Simulation system
JP2718935B2 (ja) * 1988-02-09 1998-02-25 株式会社日立製作所 プログラム生成方法
US4933889A (en) * 1988-04-29 1990-06-12 International Business Machines Corporation Method for fine decomposition in finite element mesh generation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197440B2 (en) 2001-07-11 2007-03-27 Canon Kabushiki Kaisha Finite element method library, finite element method program, and storage medium

Also Published As

Publication number Publication date
US5148379A (en) 1992-09-15
JPH02151927A (ja) 1990-06-11

Similar Documents

Publication Publication Date Title
JP2765888B2 (ja) プログラム生成方法および実行方法
US9612806B2 (en) Verification of computer-executable code generated from a model
US6385765B1 (en) Specification and verification for concurrent systems with graphical and textual editors
US8423345B1 (en) Mapping between code coverage and model coverage for a design
US8151244B2 (en) Merging graphical programs based on an ancestor graphical program
US8869103B2 (en) Using intermediate representations to verify computer-executable code generated from a model
US5557774A (en) Method for making test environmental programs
US8234625B2 (en) Optimized look-up table calculations in block diagram software
Chen et al. RIPPLES: tool for change in legacy software
US20010011370A1 (en) Interactive software testing system and method
Nayak et al. Automatic Test Data Synthesis using UML Sequence Diagrams.
JP3195839B2 (ja) 発電所の施設の運転を監視する方法
EP0869433A2 (en) A test development system and method for software with a graphical user interface
US9354846B2 (en) Bidomain simulator
JP5039130B2 (ja) シミュレーション結果を表示するための信号の仕様をサポートする方法、システム、およびプログラム製品
US7437694B1 (en) System and method for determining and identifying signals that are relevantly determined by a selected signal in a circuit design
US5907698A (en) Method and apparatus for characterizing static and dynamic operation of an architectural system
US20080255818A1 (en) Test System Design Tool With Model-Based Tool Support
JPH02272645A (ja) プログラム・デバツグ支援方法
JPH04270447A (ja) シミュレーション用偏微分方程式の決定方法、シミュレーション方法およびシミュレーションプログラム生成方法
US5799295A (en) Constraint-based spreadsheet system capable of displaying a process of execution of programs
Gunter et al. Path exploration tool
Bunus et al. Automated static analysis of equation-based components
US8798971B2 (en) System and method for using a truth table graphical function in a statechart
Cheng et al. Formalizing and integrating the dynamic model for object-oriented modeling