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};