-1

みなさんおはようございます、

Matlab を使用して、これから説明することに近いことができるかどうか疑問に思うことがあります。

  1. 外部ツール (つまり、Ansys、Abaqus、またはその他のソフトウェア) を使用して、次のステップの参照として使用される「シード」リスト (ファイル拡張子 .inp、.db など) ファイルを生成します。

  2. このシードにリストされたファイルから始めて、たとえば、シードと比較していくつかのわずかな違いを含む 200 の類似したプロジェクト ファイルを取得したいと思います。たとえば、シミュレーション時間やその他の特性です。

簡単な例を挙げます。私は現在、風力エネルギー アプリケーションの空力弾性シミュレーションを実行するソフトウェア、ブレードに取り組んでいます。たとえば、Blade は乱気流の風域を生成する機会を与えてくれます。シード コードは次のようになります。

<?xml version="1.0" encoding="ISO-8859-1" ?>
<BladedProject version="4.2.0.46">
    <BladedData dataFormat="project">
        <![CDATA[
VERSION 4.2.0.46
MULTIBODY    1
CALCULATION 3
OPTIONS 0
PROJNAME    
DATE    
ENGINEER    
NOTES   ""
PASSWORD    
MSTART WINDND
SPMODEL 7
NLAT    31
NVER    45
LATDIM   150
VERDIM   220
LONGLS   340.2
LATLS    42.1482
VERTLS   42.1467
XLV  113.4
YLV  66.3117
ZLV  33.1546
XLW  27.72
YLW  25.228
ZLW  50.4542
LAMBDA1  0
CohScale     340.2
COHDEC   12
SCALE    0
GAMMA    0
YDIML    0
N2  0
YDIMS    0
K1MIN    3
LENGTH   1830
STEP     .2233905
UBAR     3
SEED    3
OUTFILE l:\02_turb_dev\50-1\loads\50-1_D116_Validation_adapted_to_AV07\wind\DLC1-2_Kaimal\s1\3.wnd
DIAM     0
HUBHT    0
TURBHTTYPE   0
TURBBOTTOM   0
GUSTAVT  0
GUSTSPEED    0
TOLERANCE    0
DLONGMIN     0
DLONGMAX     0
Z0MIN    0
Z0MAX    0
MAXITER  14
MAXSEED  100
NFILES   1
UseWindShear     0
UseShearToGust   0
WVMODEL 0
MATCHFILE   ''
SPACING  0
SAMPLEFREQ   0
MEANSPEED    0
ILAT     0
IVERT    0
GUSTMETHOD   0
DLONG    0
ILAT     0
IVERT    0
LONGGUST     0
LATGUST  0
VERTGUST     0
iLONGGUST    0
iLATGUST     0
iVERTGUST    0
PEAKINESS    0
MAXFRAN  0
MEND

0WINDND
        ]]>
    </BladedData>
</BladedProject>

matlab を使用して、さまざまな風速とランダム シード (UBAR、SEED) に対して同様のプロジェクト ファイルを生成し、これらのファイルを所定のサブフォルダーに保存できるようにしたいと考えています。

最後に、手がかりやアドバイスがあれば教えていただければ幸いです。次に、コーディングに適したアーキテクチャを見つけることが私の仕事になります。

ご支援いただきありがとうございます。

よろしく、フランチェスコ

4

1 に答える 1

1

ここにいくつかの答えがあります.Matlabのドキュメントで使用されている関数の詳細を読んでください. 以下のコードは単なる例ですが、問題なく展開できます。このコードは、値を含む 5 つのファイルを書き込みUBARます1..5。実行の開始時に、現在の作業ディレクトリが、少なくとも一時的に、これらの 5 つのファイルを配置するのに適した場所であると仮定します。

for ubar = 1:5  %using the name of the variable as the iteration variable here
    fname = ['bladefile' num2str(ubar) '.txt'] % filenames will be bladefile1.txt etc
    fid = fopen(fname,'w') % open the file for writing, keep the file id for later reference
    fprintf(fid, '<?xml version="1.0" encoding="ISO-8859-1" ?>\n<BladedProject version="4.2.0.46">\n    <BladedData dataFormat="project">\n      <![CDATA[\n')

このfprintf呼び出しは、(ファイル id を使用してfid) 出力ファイルに書き込みます。XML ヘッダーを書き込みます。\n出力ファイルで新しい行に変換される埋め込み s に注意してください。

    fprintf(fid, 'VERSION 4.2.0.46\n') % note, again, the trailing newline so the next line of output starts on a new line
    ...
    fprintf(fid, 'ubar %i\n', ubar)

この への呼び出しは、文字列をファイルにfprintf書き込み、次に は整数が書き込まれることを示し、その整数の値は変数から取得されます。ubar%iubar

など、ループの終わりまで

    fclose(fid)
end % and loop around

これで作業を開始できます。出力ファイルのセットを 1 回だけ書き込むことが目的であれば、使い捨てで十分です。

コードを再利用する場合は、他のプログラミング言語と同じように関数にラップしてください。たとえば、次のように、の値ubarと の値をseed入力として取り、ファイルに書き込む関数を作成できます。

for ubar = 1:5
    for seed = 1:7
        write_inp_file(ubar,seed)
    end
end
于 2012-08-21T10:54:15.393 に答える