void Init() { glClearColor(1.0,1.0,1.0,0.0); glColor3f(0.0,0.0,0.0); GetPointList(); SceneInit(); }
//弾性体用 メッシュ生成 void tetgen_function::TetGen_elastic(mpsconfig &CON, vector<mpselastic> &PART, int fluid_number, int particle_number, vector<tetgen_node> &NODEall, vector<tetgen_facet> &FACEall, vector<tetgen_element> &ELEMall, vector<int> &TRANS) { //tetgenioクラス宣言と初期化 tetgenio in, out; in.initialize(); out.initialize(); //TetGen設定クラス tetgen_config TET; //全体配列初期化 NODEall.clear(); FACEall.clear(); //各部品用配列(使い回し) vector<tetgen_node> NODE; vector<tetgen_facet> FACE; ////////////エラストマー領域//////////// NODE.clear(); FACE.clear(); SetElastBoundary(CON, PART, TET, NODE, FACE); SetTRANS(NODE, TRANS); //粒子が節点に対応する時に実行??? AddBoundaryData(CON, NODEall, FACEall, NODE, FACE, MAGELAST);//* //////////////電磁石領域///////////// NODE.clear(); FACE.clear(); SetMagnetBoundary(CON, TET, NODE, FACE); AddBoundaryData(CON, NODEall, FACEall, NODE, FACE, MAGNET);//*/ /////////////コイル領域////////////// /*NODE.clear(); FACE.clear(); SetCOILBoundary(CON, TET, NODE, FACE); AddBoundaryData(CON, NODEall, FACEall, NODE, FACE, COIL);*/ ////////////鉄心領域///////////////////* /*NODE.clear(); FACE.clear(); SetIRONBoundary(CON, TET, NODE, FACE); AddBoundaryData(CON, NODEall, FACEall, NODE, FACE, IRON);*/ ////////////空気領域//////////// NODE.clear(); FACE.clear(); SetAirBoundary(CON, TET, NODE, FACE); AddBoundaryData(CON, NODEall, FACEall, NODE, FACE, AIR); /* //////////////空気領域追加節点//////////// NODE.clear(); FACE.clear(); SetAirFineBoundary(CON, PART, TET, NODE, FACE); AddBoundaryData(CON, NODEall, FACEall, NODE, FACE, AIR); //*/ //.nodeファイル作成 MakeNodeFile(CON, NODEall, "all_boundary.node"); //.polyファイルの出力 MakePolyFile(CON, TET, NODEall, FACEall, "all_boundary.poly"); cout<<"polyファイル読み込み"<<endl; in.load_poly("all_boundary"); //.polyを読み込んだら自動的に.nodeも読み込むらしい cout<<"自動分割開始"<<endl; tetrahedralize("pq1.1a1.0e-4AYYn", &in, &out); //1.1未満では切れない デフォルトはrqa1.1AYYn pq1.3a1.67e-7AYYn out.save_nodes("output"); out.save_elements("output"); //out.save_faces("output"); //out.save_neighbors("output"); //*/ cout<<"材質の修正開始\n"; //cout<<"材質修正"<<endl; //ModifyAttribute(CON, TET, NODEall, ELEMall, in, out); ModifyAttribute_tetgenio(CON, TET, NODEall, ELEMall, in, out); //tetgenioを直接編集 //出力 cout<<"TetView用ファイル出力"<<endl; //MakeNodeFile(CON, NODEall, "output_final.node"); //MakeElemFile(CON, ELEMall, "output_final.ele"); out.save_nodes("output_final"); out.save_elements("output_final"); //節点・要素データ取得 cout<<"TetGenより節点・要素データ取得"<<endl; GetPointList(NODEall, in, out); GetTetrahedronList_full(ELEMall, in, out); }