2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

FEMプログラムのバグ取り(ソース付)

1 :デフォルトの名無しさん:03/05/31 18:26
初投稿で,お手柔らかにお願いします.
FEMプログラムを作成しているのですが
4節点の四面体要素の積分計算がうまくいきません.
是非間違いを指摘してください.お願いします.

bool dnxyz_Tetrahedron(Element &elem){
int i;
double detji, vdetji, b, c, d;
Coord node[8];
for(i=0; i<4; i++){
node[i]=data->get_coord(elem.n[i]-1);
node[i+4]=node[i];}
detji=(node[1].x-node[0].x)*(node[2].y-node[0].y)*(node[3].z-node[0].z)
+(node[2].x-node[0].x)*(node[3].y-node[0].y)*(node[1].z-node[0].z)
+(node[3].x-node[0].x)*(node[1].y-node[0].y)*(node[2].z-node[0].z)
-(node[1].x-node[0].x)*(node[3].y-node[0].y)*(node[2].z-node[0].z)
-(node[2].x-node[0].x)*(node[1].y-node[0].y)*(node[3].z-node[0].z)
-(node[3].x-node[0].x)*(node[2].y-node[0].y)*(node[1].z-node[0].z);
if(detji < 1.0e-20){
vdetji=1.0/detji;
detj[0]=detji/6.0;
for(i=0; i<4; i++){
b=(node[i+2].y*node[i+1].z+node[i+1].y*node[i+3].z+node[i+3].y*node[i+2].z)
-(node[i+2].y*node[i+3].z+node[i+1].y*node[i+2].z+node[i+3].y*node[i+1].z);
c=(node[i+3].x*node[i+1].z+node[i+2].x*node[i+3].z+node[i+1].x*node[i+2].z)
-(node[i+1].x*node[i+3].z+node[i+3].x*node[i+2].z+node[i+2].x*node[i+1].z);
d=(node[i+3].x*node[i+2].y+node[i+2].x*node[i+1].y+node[i+1].x*node[i+3].y)
-(node[i+1].x*node[i+2].y+node[i+2].x*node[i+3].y+node[i+3].x*node[i+1].y);
dndx[i][0]=b*vdetji; dndy[i][0]=c*vdetji; dndz[i][0]=d*vdetji;}
return true;
}


2 :2:03/05/31 18:28
2Get

3 :3:03/05/31 18:40
ド━━━━━━(゚Д゚)━━━━━━ン!!!!

2 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)