【エラー報告】3D 周期 missing face
3次元モデルでフォトニックバンドを計算しようとしている際のエラー
(*下記はお試しの例)
missing face 340 146 147 150 missing face 341 147 150 151 missing face 342 145 146 149 missing face 343 146 149 150 missing face 344 144 145 148 missing face 345 145 148 149 3d periodic FE: number of missing periodic faces 6 current line = 45 Exec error : 3d periodic condition missing common face -- number :1 Exec error : 3d periodic condition missing common face -- number :1
どうやら周期関数の関数空間の設定でエラーしているよう
調べてみるとマニュアルNote6.1の特記事項のことらしい
周期的に関数をする場合、周期的にくっつける境界の
四角いメッシュの斜めの線の方向が同じじゃないとエラーをはくが
BuildLayer mesh generatorはメッシュの最大インデックス番号側に
斜めの線を構築するしてしうまうので上手くいかないときがある旨の内容
なので底面のメッシュのナンバリングの再設定が必要
それは以下で行うことができて
{ // for cleanning memory.. int[int] old2new(0:Th.nv-1); fespace Vh2(Th,P1); Vh2 sorder=x+y; sort(sorder[],old2new); int[int] new2old=old2new^-1; // inverse the permuation //for(int i=0;i< Th.nv;++i) // so by hand. // new2old[old2new[i]]=i; Th= change(Th,renumv=new2old); sorder[]=0:Th.nv-1; }
メッシュに座標の(x+y)を割り当てて
大きい順に並べなおす感じ?
動作に関しては
examples++-3d/periodic-3d.edpを参照のこと
メッシュの詳細に関して
いじるようなことが初めてだったので
ちょっとわかるまで時間がかかりました
スペシャリストになるには
この辺もわかっておくようにならないとな~~
(BuildLayer mesh generatorのインデックス振りが
どうなっているのか現状私は理解していないです・・・)