![]() |
#2
debroa7232010-04-19 21:43
|
类的成员函数定义如下
double** Mmatrix::WMmatrix(int ielem)
{
int Ngauss;
double Posgp[10];
double Weigp[10];
int iNxd,jNyd,iG,jG;
double dSum;
double** pMtr;
double JaDet,Weight;
TwoArrayAllocation pT;
pMtr=pT.TwoArrayDoubleAlloc((Nx+1)*(Ny+1),(Nx+1)*(Ny+1));
XYandPhaiDifferential JD;
GaussianQuadrature(Ngauss,Posgp,Weigp);
for(iNxd=0;iNxd<(Nx+1)*(Ny+1);iNxd++)
{
for(jNyd=0;jNyd<(Nx+1)*(Ny+1);jNyd++)
{
dSum=0;
for(iG=0;iG<Ngauss;iG++)
{
for(jG=0;jG<Ngauss;jG++)
{
JaDet=JD.JacobiDeterminant(ielem,Posgp[iG],Posgp[jG]);
Weight=Weigp[iG]*Weigp[jG];
pMtr=SumforDegree(Posgp[iG],Posgp[jG]);
dSum+=pMtr[iNxd][jNyd]*Weight*JaDet;
}
}
pMtr[iNxd][jNyd]=dSum;
cout<<"pMtr["<<iNxd<<"]["<<jNyd<<"]="<<pMtr[iNxd][jNyd]<<endl;
}
}
return(pMtr);
pT.DoubleTwoArrayFree((Nx+1)*(Ny+1),pMtr);
}
调用的语句为
double** paT;
int i,j;
Mmatrix aTem;
paT=aTem.WMmatrix(0);
for(j=0;j<(Nx+1)*(Ny+1);j++)
{
for(i=0;i<(Nx+1)*(Ny+1);i++)
{
cout<<"paT["<<i<<"]["<<j<<"]="<<paT[i][j]<<endl;
}
按理说两次输出结果应该相同,可是事实不是一样的,百思不得其解。望论坛上的高手赐教。