MacOSXでWindowsで作成した.exeを実行する

monoフレームワークというものを良く分かっていませんでした。
WindowsのC#環境でコンパイルした.exeはMacOSXにインストールしたmonoフレームワークで実行できました。

そういうものだったのか…。

ファイルシステム関連やコマンド実行関連の命令でうまくいかないものもあるようですが、基本的な部分では AEiexclcsv もWidnows環境でコンパイルした .exe が正しく動作しました。

monoフレームワークはLinux環境にも実装されているので、WindowsでコンパイルしたものをLinuxで実行することが可能であるということなのですね。

netDxfでDXFを操る

netDxfはDXFの.net用の読書きライブラリです。
https://github.com/haplokuon/netDxf

DXFはHEADERやCLASSES、図の本体部分のENTITIESなどの各セクションを真面目に記載しようとすると結構面倒。
そうした面倒な部分を意識することなく、C#やVB.NETでDXFを読書きできるライブラリがnetDxfです。

使い方はこんな感じになります。

using System;
using netDxf;
using netDxf.Entities;

namespace netdxftest
{
    class MainClass
    {
        public static void Main(string[] args)
        {

            string file = "sample.dxf";
            DxfDocument dxf = new DxfDocument();
            Line entity = new Line(new Vector2(5, 5), new Vector2(10, 5));
            dxf.AddEntity(entity);
            dxf.Save(file);
        }
    }
}


上記は x=2,y=5 の点から x=10,y=5 まで線を描き、sample.dxf に保存するプログラムです。

ところで、MacOSXのVS2017で上記のプログラムをコンパイルして動作させる為にはmonoフレームワークから実行する必要があります。

手元の環境では以下の方法で実行できました。

/Library/Frameworks/Mono.framework/Versions/5.18.1/bin/mono32 netdxftest.exe

そして、出来上がったDXFをWeb上で描画するサービスをAutodeskが提供していて、以下のサイトにDXFをアップロードするとWeb上で描画することができます。
https://viewer.autodesk.com

利用にはアカウント登録が必要です。

応答スペクトルの減衰値の違いで、加速度応答の大小関係が逆転する現象

加速度応答スペクトル図

良く見かける基盤波の加速度応答スペクトルの図です。詳しく見ると、周期0.15秒の加速度応答が、減衰1%と3%で値の大小関係が逆転しています。

一般に入力が同じなら構造物の減衰が1%と3%とでは、1%の方が応答は大きくなります。

しかし、上記の様なスペクトルの特徴を持つ基盤波を入力とした場合、構造物の卓越周期が0.15秒ならば、減衰が3%の方が1%の場合より応答が大きくなることがあります。

構造物の応答は全てのモードの重ね合せであるため、周期0.15秒のモードだけで応答が決まることはありませんが、鉄塔の様に単純な構造物の上下動解析では、1次モードだけが励起されることもあり、この周期が上記の入力の0.15秒に合致してしまった場合は減衰3%の方が応答が大きくなるという不思議な現象が起こります。

長く振動解析をしていますが、過去にこの様な現象に一度だけ出くわしたことがあります。

※上記の地震波は以下のサイトからダウンロードしたものを少々編集したものです。
https://www.bcj.or.jp/download/wave/

化学構造式検索データベース

以前に関わったことがある技術です。

その頃は日化辞Webと言っていましたが、今はJ-GLOBALに統合されたようです。
J-GLOBALとは科学技術振興機構が運営している、様々な分野の科学技術情報を集めたサイトです。

このサイトの検索フォームにあるプルダウンから「化学物質」を選択すると、化学構造式を描画できるフォームが現れます。

このフォームにベンゼン環を描画して検索すると、化学構造式の一部にベンゼン環が含まれる化学構造の一覧が表示されます。

まるで、ベンゼン環の画像を部分的に含んでいる画像を検索しているかのようですが、これはバックエンドのデータベースにベンゼン環の化学構造式を投げ、部分一致検索で結果を抽出しているものです。

化学構造式をクエリ変換し、SQL文としてデータベースに問い合わせる仲立ちをしているものはCartridgeと呼ばれるものです。

以前は、データベースはOracleでしたが、現在はMySqlでも実現可能なようです。

ところで、FUJIFILMのサイトでも化学構造式検索が可能です。
FUJIFILMは事業転換がうまかったですね。
企業は常に変化を見極めていかなければいけないのだろうと思える事例です。


自動車分野におけるAEiの可能性

自動車の質量を低減することは燃費性能を向上させることになり、昨今の世界的なCO2排出量の削減の流れとともに重要な達成目標になっています。一方、衝突安全性の確保など、車体に要求される性能も高まっていて、この「質量の低減」と「車体性能の向上」の両立が課題となっています。

設計のプロセスにおいては長くCAEの技術が利用されてきましたが、解析の種別と各解析モデルにおけるパラメータの変化は多岐に渡ります。

解析の種別は車体のねじり剛性の確保を確認する解析から、生存空間量を確認する側面衝突解析や前面・後面衝突解析などがあり、これらの解析に対し、変化させる設計変数として、車体の材質や材料の板厚などがあります。

目標質量値を定め、これらの多岐に渡る解析を実施するわけですが、例えば生存空間量などの解析結果の評価をする小さなプログラム(或いは既存の仕組み)と組合せることで、解析パラメータを変化させていきながら結果を評価していくAEIという考え方は有効なのではないかと考えています。

AEi(解析連続実行)

AEi(Analysis Execution interpreter )は if 文制御、for 文ループを備え、簡単な記述でCSVファイルからデータを読み込み、変数に代入することができる独自言語のインタープリタです。

この変数を、解析データの元となるテンプレートデータに展開することで解析データを作成し、解析を実行します。

簡単な処理の流れを以下に記載します。

1)テンプレートデータ
解析データの元となるテンプレートデータに「$◯◯◯」という$変数名で変化させていくデータを記述する。

2)CSVファイルの数値を$変数に代入する
この変化させていく$変数にCSVファイルから読み込んだ数値や文字列などを代入し、それらの値でテンプレートデータを書き換え、解析用のデータを作成する。

3)解析を実行する
作成されたデータを解析コードに渡して解析を実行する。

exclcsv(Excel←→CSV相互変換)

exclcsvはExcelシートとCSVファイルを相互に変換するコマンドです。ClosedXMLを使用しており、Excelがインストールされていないサーバコンピュータなどでも動作します。

簡単なコマンドの例を以下に記載します。

exclcsv.exe -proc ex2csv -excel sample.xlsx –sheet sheet1 –csv sample.csv
「sample.xlsx」の「sheet1」シートを「sample.csv」に出力する
exclcsv.exe -proc csv2ex  –csv sample.csv -excel sample.xlsx –sheet sheet2
「sample.csv」を「sample.xlsx」の「sheet2」シートに出力する

二つの世界を渡り歩く

振動解析に関する持論です。

時刻歴データに係数を乗じて足し合わせるプログラムを作れば時間領域を制圧できます。

伝達関数データに係数を乗じて乗算除算するプログラムを作れば周波数領域を制圧できます。

そして、ホワイトノイズに精通すれば二つの世界を渡り歩く事ができます。

簡易的な強制変位解析

通常の構造解析では、

[P]=[K][d]

といったように剛性マトリクスと変位ベクトルの積が左辺項の荷重ベクトルと釣り合う方程式を記述し、各変位ベクトルを求める連立方程式を解きます。

強制変位解析では、剛性マトリクスではなく柔性マトリクスを作成して、各点の変位を与え、反力を求める計算になります。

解法のアプローチが違うわけですが、荷重を与える通常の解法でも、強制変位させる点に充分に剛なバネを接続し、このバネ剛性に釣り合う荷重で変位をコントロールすることで簡易的な強制変位解析を実施できます。

UNIXという考え方

とても気に入っていて、プログラムを作る上で大切にしていることです。

[定理1] スモール・イズ・ビューティフル
[定理2] 1つのプログラムには1つのことをうまくやらせる
[定理3] できるだけ早く試作する
[定理4] 効率より移植性を優先する
[定理5] 数値データはASCIIフラットファイルに保存する
[定理6] ソフトウェアを梃子として使う
[定理7] シェルスクリプトによって梃子の効果と移植性を高める
[定理8] 過渡の対話的インターフェースを避ける
[定理9] すべてのプログラムをフィルタとして設計する