Helyx-OS の改造2014年5月17日 | |
はじめにHelyx-OS を改造してみる。 使用バージョンHelyx-OS 2.0.0/2.0.1, OpenFOAM 2.2.2, Ubuntu 12.04 LTS/Linux Mint 13 LTS コンパイルバイナリ版のインストールを行っておく。ここでは 2.0.1 を想定。 ここ からソースパッケージをダウンロードする。ここでは 2.0.0 を想定。 オリジナルと区別するために、インストールディレクトリをコピーする。 $ cd ~/opt/Engys $ cp -r HELYX-OS HELYX-OS-2.0.1-build ソースパッケージを展開。 $ tar xvjf 20131121-engys-HELYX-OS-2.0.0-src.tar.bz2 -C ~/opt/Engys/HELYX-OS-2.0.1-build/v2.0.1 コンパイル用のパッケージをインストール。 $ sudo apt-get install ant $ sudo apt-get install openjdk-7-jdk Java の環境変数を ~/.bashrc に設定しておく。 export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre ~/.bashrc を読み直して、コンパイル。 cd ~/opt/Engys/HELYX-OS-2.0.1-build/v2.0.1 ant -buildfile build_src.xml 確認改造できるかどうか簡単に確認する。 src/eu/engys/application/StandardCFD.java
private static final String VERSION = "version 2.0.0";
以下のように修正。
private static final String VERSION = "version 2.0.0-mod";
再コンパイル。メニュー [Help]-[About] でバージョンが変わっていれば OK。 ボタンを増やす"browse" ボタンを増やしてみる。 src/eu/engys/gui/view/ApplicationToolBar.java (layoutComponents の中)
add(createToolBarButton(new TerminalAction()));
add(createToolBarButton(new OpenBaseDirAction()));
以下を追加。
add(createToolBarButton(new OpenBaseDirAction()));
ボタンが増える。 ![]() ホームディレクトリ表示ボタンの追加ホームディレクトリを表示するボタンを作ってみる。 src/eu/engys/gui/view/ApplicationToolBar.java import java.io.File; layoutComponents の中
add(createToolBarButton(new TerminalAction()));
add(createToolBarButton(new OpenBaseDirAction()));
以下を追加。
add(createToolBarButton(new OpenHomeDirAction()));
OpenBaseDirAction の定義の後に以下を追加。
public class OpenHomeDirAction extends ViewAction {
public OpenHomeDirAction() {
super(OPEN_HOME_LABEL, OPEN_HOME_ICON, OPEN_HOME_TOOLTIP);
}
@Override
public void actionPerformed(ActionEvent e) {
FileManagerSupport.open(new File(System.getProperty("user.home"), ""));
}
};
最後に以下を追加。
private static final String OPEN_HOME_LABEL = ResourcesUtil.getString("case.browse.label");
public static final Icon OPEN_HOME_ICON = ResourcesUtil.getIcon("case.browse.icon");
private static final String OPEN_HOME_TOOLTIP = ResourcesUtil.getString("case.browse.tooltip");
src/eu/engys/resources/bundle.properties terminal.open.label Terminal terminal.open.tooltip Open Terminal in case folder terminal.open.icon eu/engys/resources/images/terminal16.png case.browse.label Browse case.browse.tooltip Browse Case Folder case.browse.icon eu/engys/resources/images/browse16.png 以下を追加。 home.browse.label Home home.browse.tooltip Browse Home Folder home.browse.icon eu/engys/resources/images/browse16.png ![]() ParaView ボタンの追加ケースの設定の方にある ParaView ボタンを上に追加してみる。 src/eu/engys/gui/view/ApplicationToolBar.java import java.io.File; layoutComponents の中に以下を追加。
add(createToolBarButton(new OpenParaviewAction(model)));
![]() Linux Mint への対応Helyx-OS は Linux Mint のファイルマネージャに対応していないので、追加する。 src/eu/engys/core/executor/FileManagerSupport.java
private static String getFileManager() {
if (checkTerminal("nautilus")) {
return "nautilus";
} else if (checkTerminal("dolphin")) {
return "dolphin";
} else if (checkTerminal("konqueror")) {
return "konqueror";
} else {
System.err.println("No terminal found");
JOptionPane.showMessageDialog(null, "No file manager found" , "Filesystem error", ionPane.ERROR_MESSA GE);
}
return "";
}
konqueror の記述の下に追加。
} else if (checkTerminal("caja")) {
return "caja";
solver.run スクリプトの場所src/eu/engys/core/controller/DefaultScriptFactory.java の getLinuxSerialSolverScript(), getLinuxParallelSolverScript()。 境界条件の作成境界条件タイプ "patch" をコピーして "patch2" を作ってみる。 src/eu/engys/core/project/zero/patches/BoundaryType.java
public class BoundaryType {
public static final String INLET_KEY = "inlet";
public static final String OUTLET_KEY = "outlet";
public static final String OPENING_KEY = "patch";
public static final String PATCH_KEY = "patch";
...
private static final String INLET_LABEL = "Inlet";
private static final String OUTLET_LABEL = "Outlet";
private static final String OPENING_LABEL = "Opening";
private static final String PATCH_LABEL = "Patch";
以下を追加。
public static final String PATCH2_KEY = "patch2";
private static final String PATCH2_LABEL = "Patch2";
また、以下の部分
public static final BoundaryType PATCH = new BoundaryType(PATCH_KEY, PATCH_LABEL, true);
以下を追加。
public static final BoundaryType PATCH2 = new BoundaryType(PATCH2_KEY, PATCH2_LABEL, true);
src/eu/engys/gui/casesetup/boundaryconditions/panels で、patch をコピーして patch2 を作る。ファイル名、クラス名などに "2" を付ける。 MomentumPatch2.java PhasePatch2.java TurbulencePatch2.java PatchSettingsPanel2.java ThermalPatch2.java PatchSettingsPanel2.java
package eu.engys.gui.casesetup.boundaryconditions.panels.patch2;
...
@Inject
public PatchSettingsPanel2(Model model) {
super(model);
setName("Turbulence");
}
public BoundaryType getType() {
return BoundaryType.PATCH2;
}
MomentumPatch2.java
package eu.engys.gui.casesetup.boundaryconditions.panels.patch2;
...
public class MomentumPatch2 extends MomentumParametersPanel {
public MomentumPatch2(BoundaryTypePanel parent) {
super(parent);
}
src/eu/engys/application/modules/StandardCFDBoundaryConditionsModule.java import eu.engys.gui.casesetup.boundaryconditions.panels.patch.PatchSettingsPanel; 以下を追加。 import eu.engys.gui.casesetup.boundaryconditions.panels.patch2.PatchSettingsPanel2; また
bcMultibinder.addBinding().to(PatchSettingsPanel.class).in(Singleton.class);
以下を追加。
bcMultibinder.addBinding().to(PatchSettingsPanel2.class).in(Singleton.class);
![]() totalPressure 修正totalPressure を非圧縮性でも使えるように修正。 src/eu/engys/gui/casesetup/boundaryconditions/factories/StandardPressureFactory.java
public static final Dictionary totalPressure = new Dictionary("p"){
{
add("type", "totalPressure");
add("value", "uniform 0");
add("p0", "uniform 0");
add("gamma", "0");
add("rho", "rho");
}
};
"rho" の行をコメント。
// add("rho", "rho");
ベクトル版 bounded upwind の追加$ cd lib/StandardCFD-data.jar $ jar xvf StandardCFD-data.jar caseSetupDict.schemes
vector
(
{
key Gauss upwind;
label Upwind - 1st Order;
}
{
key Gauss linearUpwindV grad(%s);
label Linear Upwind - 2nd Order;
}
{
key bounded Gauss linearUpwindV grad(%s);
label Bounded Linear Upwind - 2nd Order;
}
以下を追加。
{
key bounded Gauss upwind;
label Bounded Upwind - 1st Order;
}
更新。 $ mv StandardCFD-data.jar StandardCFD-data.org.jar $ jar cvf StandardCFD-data.jar StandardCFD | |
| PENGUINITIS | |