Ansys2026で作成したジオメトリをAnsys2024で読み込む
後方互換で読み込めたフォーマット
- Ansys mesh file (.msh)
読み込めなかったフォーマット
- .db(DesignModeler)
- .scdocx(SpaceClaim)
- .pmdb(Ansys Mechanical Export>ジオメトリ>PMDB)
- .tgf(Ansys Mechanical Export>ジオメトリ>TGrid)
- .avz(Ansys Mechanical Export>ジオメトリ>Ansys Viewer FIie)
エクスポート
Ansys Mechanicalでメッシュを読み込む
File>Export>Mesh>Fluent Input File

インポート
File>Import>Case

All mesh files

読み込めた

ウェーブレットパラメータの離散化

(a,b)→(j,k)に変換する


パラメータjを解像度と呼ぶ
三角波の場合
clear; close all; x = 0:0.05:5; j = 0; k = 0; y = mother_wavelet(x,j,k); plot(x,y,'DisplayName',sprintf('j=%d,k=%d',j,k)); hold on; j = 2; k = 1; y = mother_wavelet(x,j,k); plot(x,y,'DisplayName',sprintf('j=%d,k=%d',j,k)); j = -1; k = 1; y = mother_wavelet(x,j,k); plot(x,y,'DisplayName',sprintf('j=%d,k=%d',j,k)); legend(); title('Effect of parameter (j,k)'); big; function y=mother_wavelet(x,j,k) y = zeros(length(x),1)'; slice = (2^j*x-k)>0 & (2^j*x-k)<=0.25; t = x(slice); y(slice) = 2^(j/2)*2*(2^j*t-k); slice = (2^j*x-k)>0.25 & (2^j*x-k)<=0.75; t = x(slice); y(slice) = 2^(j/2)*(-2*(2^j*t-k)+1); slice = (2^j*x-k)>0.75 & (2^j*x-k)<=1; t = x(slice); y(slice) = 2^(j/2)*(2*(2^j*t-k)-2); end

SINC関数の場合
jを大きくすると周波数が上がり、波のピークも上がる
clear; close all; x = -5:0.049:5; k = 0; js = [-3,-1,0,1,3]; hold on; for idx = 1:length(js) j = js(idx); y = mother_wavelet(x,j,k); plot(x,y,'DisplayName',sprintf('j=%d',j)); end legend(); title('Effect of parameter j'); big; function y=mother_wavelet(x,j,k) t = 2^j*x-k; y = 2^(j/2)*sin(t)./(t); end

ウェーブレット変換のパラメータ(a,b)の影響
まずスケールパラメータaの影響を見る。

Matlabを久しぶりに触ったら全然忘れていて驚いた
生成AIでバカになる?のは本当だった
結論から言うと、
- aを大きくすると波長は伸びて、ピークは低くなる
- aを小さくすると波長が短くなって、ピークが大きくなる
三角波の場合
配列をスライスする部分で少し詰まった。
例えば以下のような感じ。
y(x>0.25*a & x<=0.75*a) = 1/sqrt(abs(a))*(-2*(x(x>0.25*a & x<=0.75*a)/a)+1);
clear; close all; x = 0:0.05:3; a = 1; y = scale_phi(x,a); plot(x,y,'DisplayName',sprintf('a=%.2f',a)); hold on; a = 3; y = scale_phi(x,a); plot(x,y,'DisplayName',sprintf('a=%.2f',a)); a = 1/4; y = scale_phi(x,a); plot(x,y,'DisplayName',sprintf('a=%.2f',a)); legend(); title('Effect of scaling parameter a'); big; function y=scale_phi(x,a) y = zeros(length(x),1)'; y(x<=0.25*a) = 1/sqrt(abs(a))*(2*(x(x<=0.25*a)/a)); y(x>0.25*a & x<=0.75*a) = 1/sqrt(abs(a))*(-2*(x(x>0.25*a & x<=0.75*a)/a)+1); y(x>0.75*a & x<=1*a) = 1/sqrt(abs(a))*(2*(x(x>0.75*a & x<=1*a)/a)-2); end

SINC関数の場合
実装はこっちのほうが簡単だった。(スライスしないでいいので)
clear; close all; x = -20:0.05:20; a = 1; y = scale_phi(x,a); plot(x,y,'DisplayName',sprintf('a=%.2f',a)); hold on; a = 3; y = scale_phi(x,a); plot(x,y,'DisplayName',sprintf('a=%.2f',a)); a = 1/4; y = scale_phi(x,a); plot(x,y,'DisplayName',sprintf('a=%.2f',a)); legend(); title('Effect of scaling parameter a'); big; function y=scale_phi(x,a) y = 1/sqrt(abs(a))*sin(x/a)./(x/a); end

次にシフト(推移)パラメータbの影響を見る。
式からシフトの様子は明らかだけど、一応。
clear; close all; x = -20:0.05:20; a = 1; b = 0; y = scale_shift_phi(x,a,b); plot(x,y,'DisplayName',sprintf('b=%d',b)); hold on; b = 5; y = scale_shift_phi(x,a,b); plot(x,y,'DisplayName',sprintf('b=%d',b)); b = 10; y = scale_shift_phi(x,a,b); plot(x,y,'DisplayName',sprintf('b=%d',b)); legend(); title('Effect of shift parameter b'); big; function y=scale_shift_phi(x,a,b) y = 1/sqrt(abs(a))*sin((x-b)/a)./((x-b)/a); end

NASA GMATのサンプルスクリプト(SSO)
%コメント、空行を入れると動かない
Create Spacecraft Sat;
Sat.DateFormat = TAIModJulian;
Sat.Epoch = '21545.000000';
Sat.CoordinateSystem = EarthMJ2000Eq;
Sat.SMA = 7078.137;
Sat.ECC = 0.001;
Sat.INC = 98.19;
Sat.RAAN = 0;
Sat.AOP = 0;
Sat.TA = 0;
Create ForceModel DefaultProp_ForceModel;
DefaultProp_ForceModel.CentralBody = Earth;
DefaultProp_ForceModel.PrimaryBodies = {Earth};
DefaultProp_ForceModel.GravityField.Earth.Degree = 10;
DefaultProp_ForceModel.GravityField.Earth.Order = 10;
Create Propagator NearEarthProp;
NearEarthProp.Type = PrinceDormand78;
NearEarthProp.InitialStepSize = 60;
NearEarthProp.FM = DefaultProp_ForceModel;
Create OrbitView DefaultOrbitView;
DefaultOrbitView.Add = {Sat, Earth};
DefaultOrbitView.ViewPointVector = [0 0 30000];
Create GroundTrackPlot DefaultGroundTrack;
DefaultGroundTrack.Add = {Sat};
BeginMissionSequence;
Propagate NearEarthProp(Sat) {Sat.ElapsedSecs = 86400};