コード例 #1
0
ファイル: tpzquadraticquad.cpp プロジェクト: labmec/neopz
inline void TPZQuadraticQuad::GradX(const TPZFMatrix<REAL> &nodes,TPZVec<T> &loc, TPZFMatrix<T> &gradx){
    
    gradx.Resize(3,2);
    gradx.Zero();
    int nrow = nodes.Rows();
    int ncol = nodes.Cols();
#ifdef PZDEBUG
    if(nrow != 3 || ncol  != 8){
        std::cout << "Objects of incompatible lengths, gradient cannot be computed." << std::endl;
        std::cout << "nodes matrix must be 3x8." << std::endl;
        DebugStop();
    }
    
#endif
    TPZFNMatrix<3,T> phi(NNodes,1);
    TPZFNMatrix<6,T> dphi(2,NNodes);
    TShape(loc,phi,dphi);
    for(int i = 0; i < NNodes; i++)
    {
        for(int j = 0; j < 3; j++)
        {
            gradx(j,0) += nodes.GetVal(j,i)*dphi(0,i);
            gradx(j,1) += nodes.GetVal(j,i)*dphi(1,i);
        }
    }
    
}
コード例 #2
0
ファイル: TPBConservacao1DMarx.cpp プロジェクト: labmec/neopz
void TPBrCellMarx::ExtractMatrix(TPZManVector<REAL> &input, TPZFMatrix<REAL> &output)
{
	output.Resize(input.NElements(), 1);
	int i;
	for (i=0; i<input.NElements(); i++) {
		output(i,0) = input[i];
	}
}
コード例 #3
0
ファイル: main.cpp プロジェクト: labmec/neopz
void SolExataU(const TPZVec<REAL> &pt, TPZVec<STATE> &solU, TPZFMatrix<STATE> &GradU){
    
    double x = pt[0];
    GradU.Resize(2, 1);
    
    solU[0]= 4.*x - 4.*x*x;
    GradU(0,0) = 4.-8.*x;
    GradU(1,0) = 0.;
}
コード例 #4
0
ファイル: main.cpp プロジェクト: labmec/neopz
void SolSuave(const TPZVec<REAL> &loc, TPZVec<STATE> &u, TPZFMatrix<STATE> &du){
    
    const REAL x = loc[0];
    const REAL y = loc[1];
    const REAL sol = /*x*(1.-x)*y*(1.-y);*/sin(M_PI*x)*sin(M_PI*y);
    u[0] = sol;
    du.Resize(2, 1);
    du(0,0) = /*(1. - x)*(1. - y)*y - x*(1. - y)*y;*/M_PI*cos(M_PI*x)*sin(M_PI*y);
    du(1,0) = /*(1. - x)*x*(1. - y) - (1. - x)*x*y;*/M_PI*cos(M_PI*y)*sin(M_PI*x);
}
コード例 #5
0
ファイル: TPBConservacao1DMarx.cpp プロジェクト: labmec/neopz
void TPBrCellMarx::ExtractMatrix(TPZManVector<TFad<TPBrCellMarx::NUMVARS,REAL> > &input, TPZFMatrix<REAL> &output)
{
	output.Resize(NUMVARS, NUMVARS);
	int i,j;
	for (i=0; i<NUMVARS; i++) {
		for (j=0; j<NUMVARS; j++) {
			output(i,j) = input[i].d(j);
		}
	}
}
コード例 #6
0
ファイル: main.cpp プロジェクト: labmec/neopz
void SolExataP(const TPZVec<REAL> &pt, TPZVec<STATE> &solP, TPZFMatrix<STATE> &GradP){
    
    REAL x = pt[0];
    REAL y = pt[1];
    
    GradP.Resize(2, 1);
    
    solP[0]= sin(M_PI*x)*sin(M_PI*y);
    
    GradP(0,0) = M_PI*cos(M_PI*x)*sin(M_PI*y);
    GradP(1,0) = M_PI*cos(M_PI*y)*sin(M_PI*x);
}
コード例 #7
0
ファイル: pzgeotriangle.cpp プロジェクト: JoaoFelipe/oceano
void TPZGeoTriangle::Jacobian(TPZFMatrix<REAL> & coord, TPZVec<REAL> &param,TPZFMatrix<REAL> &jacobian,TPZFMatrix<REAL> &axes,REAL &detjac,TPZFMatrix<REAL> &jacinv) {

    int spacedim = coord.Rows();
    jacobian.Resize(2,2);
    axes.Resize(2,3);
    jacinv.Resize(2,2);
    TPZFNMatrix<3> phi(3,1);
    TPZFNMatrix<6> dphi(2,3),axest(3,2);
    jacobian.Zero();
    Shape(param,phi,dphi);
    TPZFNMatrix<6> VecMatrix(3,2,0.);
    for(int i = 0; i < 3; i++) {
        for(int j = 0; j < spacedim; j++) {
            VecMatrix(j,0) += coord(j,i)*dphi(0,i);
            VecMatrix(j,1) += coord(j,i)*dphi(1,i);
        }
    }
    VecMatrix.GramSchmidt(axest,jacobian);
    axest.Transpose(&axes);
    detjac = jacobian(0,0)*jacobian(1,1)-jacobian(1,0)*jacobian(0,1);
    if(IsZero(detjac))
    {
        std::stringstream sout;
        sout << "Singular Jacobian " << detjac;
        LOGPZ_ERROR(logger, sout.str())
        detjac = ZeroTolerance();
    }
    if(detjac)
    {
        jacinv(0,0) =  jacobian(1,1)/detjac;
        jacinv(1,1) =  jacobian(0,0)/detjac;
        jacinv(0,1) = -jacobian(0,1)/detjac;
        jacinv(1,0) = -jacobian(1,0)/detjac;
    }
    else
    {
        jacinv.Zero();
    }
}
コード例 #8
0
ファイル: MainOptimalControl.cpp プロジェクト: labmec/neopz
void EstadoAd(const TPZVec<REAL> &loc, TPZVec<STATE> &u, TPZFMatrix<STATE> &du){
    
    const REAL x = loc[0];
    const REAL y = loc[1];
    u.Resize(1, 0.);
    du.Resize(3, 1.);
    du(0,0)=du(1,0)=du(2,0)=0.;
    
	//const REAL alpha=0.001;
    
    const REAL sol = 10.*x*y*(1-x)*(1-y);
    u[0] = sol;
    
    
}
コード例 #9
0
ファイル: OOPParMatrix.cpp プロジェクト: labmec/oopar
void OOPParMatrix::BuildMe(int size, TPZMatrix<REAL> * matrix, TPZFMatrix<REAL> & vU)
{
	matrix->Resize(size, size);
	int i, j;
	
	vU.Resize(size, 1);
	for(i = 0; i < size; i++)
	{
		double value;
		for(j=0; j < size; j++)
		{
			value = rand()/1e8;
			matrix->Put(i, j, value);
		}
		vU.Put(i, 0,value * 1.4);
	}
	
}
コード例 #10
0
ファイル: pzerror_ind.cpp プロジェクト: labmec/neopz
void TPZErrorIndicator::Sort(TPZFMatrix &error, TPZFMatrix &perm) {
  int i,j,k;
  int imin = 0;
  int imax = error.Rows();
  perm.Resize(imax,error.Cols());
  for (i=0;i<imax;i++)
    for (j=0;j<error.Cols();j++) perm(i,j) = i;
  	for(i=imin; i<imax; i++) {
    	for(j=i+1; j<imax; j++) {
      	for (k=0;k<error.Cols();k++){
					if(error((int)perm(i,k)) < error((int)perm(j,k))) {
	  				int kp = (int) perm(i,k);
	  				perm(i,k) = perm(j,k);
	  				perm(j,k) = kp;
					}
      	}
    	}
  }
}
コード例 #11
0
ファイル: tpzprism.cpp プロジェクト: labmec/neopz
    bool TPZPrism::MapToSide(int side, TPZVec<T> &InternalPar, TPZVec<T> &SidePar, TPZFMatrix<T> &JacToSide) {
        double zero = 1.E-5;
		
		T qsi = InternalPar[0];
		T eta = InternalPar[1];
		T zeta = InternalPar[2];

		bool regularmap = true;
		switch(side)
		{
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
            {
                SidePar.Resize(0); JacToSide.Resize(0,0);
                break;
            }
			case 6://1D
				SidePar.Resize(1);
				JacToSide.Resize(1,3);
				if(fabs((T)(eta-1.)) < zero)
				{
					SidePar[0] = 0.;
					JacToSide(0,0) = 1.;
					JacToSide(0,1) = 1.;
					JacToSide(0,2) = 0.;
					regularmap = false;
				}
				else
				{
					SidePar[0] = 2.*qsi/(1.-eta) - 1.;
					JacToSide(0,0) = 2./(1.-eta); JacToSide(0,1) = 2.*qsi/((1.-eta)*(1.-eta)); JacToSide(0,2) = 0.;
				}
				break;
				
			case 7://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				if(fabs((T)(qsi+eta)) < zero)
				{
					SidePar[0] = 0.;
                    JacToSide(0,0) = 1.;
					JacToSide(0,1) = 1.;
					JacToSide(0,2) = 0.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 1. - 2.*qsi/(qsi + eta);
                    JacToSide(0,0) = -2.*eta/((qsi+eta)*(qsi+eta)); JacToSide(0,1) = 2.*qsi/((qsi+eta)*(qsi+eta)); JacToSide(0,2) = 0.;
				}
				break;
				
			case 8://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				if(fabs((T)(qsi-1.)) < zero)
				{
                    SidePar[0] = 0.;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 1. - 2.*eta/(1.-qsi);
                    JacToSide(0,0) = -2.*eta/((1.-qsi)*(1.-qsi)); JacToSide(0,1) = -2./(1.-qsi); JacToSide(0,2) = 0.;
				}
				break;
				
			case 9://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				SidePar[0] = zeta;
				JacToSide(0,0) = 0.; JacToSide(0,1) = 0.; JacToSide(0,2) = 1.;
				break;
				
			case 10://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				SidePar[0] = zeta;
				JacToSide(0,0) = 0.; JacToSide(0,1) = 0.; JacToSide(0,2) = 1.;
				break;
				
			case 11://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				SidePar[0] = zeta;
				JacToSide(0,0) = 0.; JacToSide(0,1) = 0.; JacToSide(0,2) = 1.;
				break;
				
			case 12://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				if(fabs((T)(eta-1.)) < zero)
				{
                    SidePar[0] = 0.;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 2.*qsi/(1.-eta) - 1.;
                    JacToSide(0,0) = 2./(1.-eta); JacToSide(0,1) = 2.*qsi/((1.-eta)*(1.-eta)); JacToSide(0,2) = 0.;
				}
				break;
				
			case 13://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				if(fabs((T)(qsi+eta)) < zero)
				{
                    SidePar[0] = 0.;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 1. - 2.*qsi/(qsi + eta);
                    JacToSide(0,0) = -2.*eta/((qsi+eta)*(qsi+eta)); JacToSide(0,1) = 2.*qsi/((qsi+eta)*(qsi+eta)); JacToSide(0,2) = 0.;
				}
				break;
				
			case 14://1D
				SidePar.Resize(1); JacToSide.Resize(1,3);
				if(fabs((T)(qsi-1.)) < zero)
				{
                    SidePar[0] = 0.;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 1. - 2.*eta/(1.-qsi);
                    JacToSide(0,0) = -2.*eta/((1.-qsi)*(1.-qsi)); JacToSide(0,1) = -2./(1.-qsi); JacToSide(0,2) = 0.;
				}
				break;
				
			case 15://2D - triangle
				SidePar.Resize(2); JacToSide.Resize(2,3);
				SidePar[0] = qsi; SidePar[1] = eta;
				JacToSide(0,0) = 1.; JacToSide(0,1) = 0.; JacToSide(0,2) = 0.;
				JacToSide(1,0) = 0.; JacToSide(1,1) = 1.; JacToSide(1,2) = 0.;
				break;
				
			case 16://2D - quadrilateral
				SidePar.Resize(2); JacToSide.Resize(2,3);
				if(fabs((T)(eta-1.)) < zero)
				{
                    SidePar[0] = 0.; SidePar[1] = zeta;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
                    JacToSide(1,0) = 0.; JacToSide(1,1) = 0.; JacToSide(1,2) = 1.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 2.*qsi/(1.-eta) - 1.; SidePar[1] = zeta;
                    JacToSide(0,0) = 2./(1.-eta); JacToSide(0,1) = 2.*qsi/((1.-eta)*(1.-eta)); JacToSide(0,2) = 0.;
                    JacToSide(1,0) = 0.; JacToSide(1,1) = 0.; JacToSide(0,2) = 1.;
				}
				break;
				
			case 17://2D - quadrilateral
				SidePar.Resize(2); JacToSide.Resize(2,3);
				if(fabs((T)(qsi+eta)) < zero)
				{
                    SidePar[0] = 0.; SidePar[1] = zeta;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
                    JacToSide(1,0) = 0.; JacToSide(1,1) = 0.; JacToSide(1,2) = 1.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 1. - 2.*qsi/(qsi + eta); SidePar[1] = zeta;
                    JacToSide(0,0) = -2.*eta/((qsi+eta)*(qsi+eta)); JacToSide(0,1) = 2.*qsi/((qsi+eta)*(qsi+eta)); JacToSide(0,2) = 0.;
                    JacToSide(1,0) = 0.; JacToSide(1,1) = 0.; JacToSide(0,2) = 1.;
				}
				break;
				
			case 18://2D - quadrilateral
				SidePar.Resize(2); JacToSide.Resize(2,3);
				if(fabs((T)(qsi-1.)) < zero)
				{
                    SidePar[0] = 0.; SidePar[1] = zeta;
                    JacToSide(0,0) = 1.; JacToSide(0,1) = 1.; JacToSide(0,2) = 0.;
                    JacToSide(1,0) = 0.; JacToSide(1,1) = 0.; JacToSide(1,2) = 1.;
					regularmap = false;
				}
				else
				{
                    SidePar[0] = 1. - 2.*eta/(1.-qsi); SidePar[1] = zeta;
                    JacToSide(0,0) = -2.*eta/((1.-qsi)*(1.-qsi)); JacToSide(0,1) = -2./(1.-qsi); JacToSide(0,2) = 0.;
                    JacToSide(1,0) = 0.; JacToSide(1,1) = 0.; JacToSide(0,2) = 1.;
				}
				break;
				
			case 19://2D - triangle
				SidePar.Resize(2); JacToSide.Resize(2,3);
				SidePar[0] = qsi; SidePar[1] = eta;
				JacToSide(0,0) = 1.; JacToSide(0,1) = 0.; JacToSide(0,2) = 0.;
				JacToSide(1,0) = 0.; JacToSide(1,1) = 1.; JacToSide(1,2) = 0.;
				break;
            case 20:
                SidePar = InternalPar;
                JacToSide.Resize(3, 3);
                JacToSide.Identity();
                break;
		}
		if(side > 20)
		{
			cout << "Cant compute MapToSide method in TPZGeoPrism class!\nParameter (SIDE) must be between 6 and 19!\nMethod Aborted!\n";
			DebugStop();
		}
		return regularmap;
	}
コード例 #12
0
ファイル: tpzpoint.cpp プロジェクト: labmec/neopz
    bool TPZPoint::MapToSide(int side, TPZVec<T> &InternalPar, TPZVec<T> &SidePar, TPZFMatrix<T> &JacToSide) {
		SidePar.Resize(0); JacToSide.Resize(0,0);
		return true;
	}
コード例 #13
0
ファイル: pzgeotriangle.cpp プロジェクト: JoaoFelipe/oceano
void TPZGeoTriangle::VecHdiv(TPZFMatrix<REAL> & coord, TPZFMatrix<REAL> & fNormalVec,TPZVec<int> &fVectorSide) {
    if(coord.Rows()!=3)
    {
        cout<< "Erro na dimens�o das linhas de coord"<< endl;
    }
    if(coord.Cols()!=3)
    {
        cout<< "Erro na dimens�o das colunas de coord"<< endl;
    }
    TPZVec<REAL> p1(3), p2(3), p3(3),result(3);
    for(int j=0; j<3; j++)
    {
        p1[j]=coord(j,0);
        p2[j]=coord(j,1);
        p3[j]=coord(j,2);
    }
    fNormalVec.Resize(14, 3);
    fVectorSide.Resize(14);
    int count=0;

    //primeira face
    for(int j=0; j<3; j++) //v0
    {
        fNormalVec(0,j) = coord(j,0)- coord(j,2);
    }
    fVectorSide[count]=0;
    count++;
    for(int j=0; j<3; j++) //v1
    {
        fNormalVec(1,j) = coord(j,1)- coord(j,2);
    }
    fVectorSide[count]=1;
    count++;
    //v2
    ComputeNormal(p1,p2,p3,result);
    fNormalVec(2,0) = -result[0];
    fNormalVec(2,1) = -result[1];
    fNormalVec(2,2) = -result[2];
    fVectorSide[count]=3;
    count++;
    //segunda face
    for(int j=0; j<3; j++) //v3
    {
        fNormalVec(3,j) = coord(j,1)- coord(j,0);
    }
    fVectorSide[count]=1;
    count++;
    for(int j=0; j<3; j++) //v4
    {
        fNormalVec(4,j) = coord(j,2)- coord(j,0);
    }
    fVectorSide[count]=2;
    count++;
    //v5
    ComputeNormal(p2,p3,p1,result);
    fNormalVec(5,0) = -result[0];
    fNormalVec(5,1) = -result[1];
    fNormalVec(5,2) = -result[2];
    fVectorSide[count]=4;
    count++;
    //terceira face
    for(int j=0; j<3; j++) //v6
    {
        fNormalVec(6,j) = coord(j,2)- coord(j,1);
    }
    fVectorSide[count]=2;
    count++;
    for(int j=0; j<3; j++) //v7
    {
        fNormalVec(7,j) = coord(j,0)- coord(j,1);
    }
    fVectorSide[count]=0;
    count++;
    //v8
    ComputeNormal(p3,p1,p2,result);
    fNormalVec(8,0) = -result[0];
    fNormalVec(8,1) = -result[1];
    fNormalVec(8,2) = -result[2];
    fVectorSide[count]=5;
    count++;
    // internos tangentes
    for(int j=0; j<3; j++) //v9
    {
        fNormalVec(9,j) = coord(j,1)- coord(j,0);
    }
    fVectorSide[count]=3;
    count++;
    for(int j=0; j<3; j++) //v10
    {
        fNormalVec(10,j) = coord(j,2)- coord(j,1);
    }
    fVectorSide[count]=4;
    count++;

    for(int j=0; j<3; j++) //v11
    {
        fNormalVec(11,j) = coord(j,0)- coord(j,2);
    }
    fVectorSide[count]=5;
    count++;
    //internos meio
    TPZVec<REAL> midle(3,0.);
    midle[0]=(1./3.)*(coord(0,2)+coord(0,0)+coord(0,1));
    midle[1]=(1./3.)*(coord(1,2)+coord(1,0)+coord(1,1));
    midle[2]=(1./3.)*(coord(2,2)+coord(2,0)+coord(2,1));
    TPZFMatrix<REAL> jacobian;
    TPZFMatrix<REAL> axes;
    REAL detjac;
    TPZFMatrix<REAL> jacinv;
    Jacobian(coord,midle,jacobian,axes,detjac,jacinv);
    fNormalVec(12,0)=axes(0,0);
    fNormalVec(12,1)=axes(0,1);
    fNormalVec(12,2)=axes(0,2);
    fNormalVec(13,0)=axes(1,0);
    fNormalVec(13,1)=axes(1,1);
    fNormalVec(13,2)=axes(1,2);
    fVectorSide[count]=6;
    fVectorSide[count+1]=6;
    //normaliza��o
    for(int k=0; k<14; k++)
    {
        REAL temp=0.;
        temp=sqrt( fNormalVec(k,0)*fNormalVec(k,0) + fNormalVec(k,1)*fNormalVec(k,1) + fNormalVec(k,2)*fNormalVec(k,2));
        fNormalVec(k,0) *=1./temp;
        fNormalVec(k,1) *=1./temp;
    }
    // produto normal == 1
    for(int kk=0; kk<3; kk++)
    {
        REAL temp1=0.;
        REAL temp2=0.;
        temp1 =  fNormalVec(kk*3,0)*fNormalVec(kk*3+2,0) + fNormalVec(kk*3,1)*fNormalVec(kk*3+2,1);
        temp2 =  fNormalVec(kk*3+1,0)*fNormalVec(kk*3+2,0) + fNormalVec(kk*3+1,1)*fNormalVec(kk*3+2,1);
        fNormalVec(kk*3,0) *=1./temp1;
        fNormalVec(kk*3,1) *=1./temp1;
        fNormalVec(kk*3+1,0) *=1./temp2;
        fNormalVec(kk*3+1,1) *=1./temp2;
    }
#ifdef LOG4CXX
    {
        std::stringstream sout;
        fNormalVec.Print("fNormalVec", sout);
        LOGPZ_DEBUG(logger,sout.str())
    }
#endif

}
コード例 #14
0
ファイル: pzgeotriangle.cpp プロジェクト: JoaoFelipe/oceano
bool TPZGeoTriangle::MapToSide(int side, TPZVec<REAL> &InternalPar, TPZVec<REAL> &SidePar, TPZFMatrix<REAL> &JacToSide) {

    double zero = 1.E-5;
    REAL qsi = InternalPar[0];
    REAL eta = InternalPar[1];
    SidePar.Resize(1);
    JacToSide.Resize(1,2);
    if((qsi + eta - 1.) > 1.e-5 || qsi < -1.e-5 || eta < -1.e-5)
    {
        cout << "Point (qsi,eta) = (" << qsi << "," << eta << ") is out of TPZGeoTriangle Master Element Range!\n";
        cout << "See TPZGeoTriangle::MapToSide() method!\n";
        DebugStop();
    }
    if(qsi < 0.) qsi = 0.;
    if(eta < 0.) eta = 0.;
    if(qsi+eta > 1.)
    {
        REAL qsieta = 1.-qsi-eta;
        qsi += qsieta/2.;
        eta += qsieta/2.;
    }
    bool regularmap = true;

    switch(side)
    {
    case 3:
        if(fabs(eta - 1.) < zero)
        {
            SidePar[0] = 0.;
            JacToSide(0,0) = 0.;
            JacToSide(0,1) = 0.;
            regularmap = false;
        }
        else
        {
            SidePar[0] = 2.*qsi/(1.-eta) - 1.;
            JacToSide(0,0) = 2./(1.-eta);
            JacToSide(0,1) = 2.*qsi/((1.-eta)*(1.-eta));
        }
        break;

    case 4:
        if(qsi+eta < zero)
        {
            SidePar[0] = 0.;
            JacToSide(0,0) = 0.;
            JacToSide(0,1) = 0.;
            regularmap = false;
        }
        else
        {
            SidePar[0] = 1. - 2.*qsi/(qsi + eta);
            JacToSide(0,0) = -2.*eta/((qsi+eta)*(qsi+eta));
            JacToSide(0,1) = 2.*qsi/((qsi+eta)*(qsi+eta));
        }
        break;

    case 5:
        if(fabs(qsi - 1.) < zero)
        {
            SidePar[0] = 0.;
            JacToSide(0,0) = 0.;
            JacToSide(0,1) = 0.;
            regularmap = false;
        }
        else
        {
            SidePar[0] = 1. - 2.*eta/(1.-qsi);
            JacToSide(0,0) = -2.*eta/((1.-qsi)*(1.-qsi));
            JacToSide(0,1) = -2./(1.-qsi);
        }
        break;
    }
    if(side < 3 || side > 5)
    {
        cout << "Cant compute MapToSide method in TPZGeoTriangle class!\nParameter (SIDE) must be 3, 4 or 5!\nMethod Aborted!\n";
        DebugStop();
    }
    return regularmap;
}
コード例 #15
0
    /**
     * Calcula os valores das funcoes de forma e suas derivadas
     * @point ponto onde calcular as funcoes de forma
     * @phi valores das funcoes de forma
     * @dphi valores das derivadas das funcoes de forma
     */
void TElemento0d::Shape(std::vector<double> &point, std::vector<double> &phi, TPZFMatrix &dphi) 
{
  phi.resize(1);
  phi[0] = 1.;
  dphi.Resize(0,1);
}
コード例 #16
0
void TElemento0d::Jacobian(std::vector< double >& point, TPZFMatrix& jacobian, TPZFMatrix& jacinv, double &detjac, TMalha& malha)
{
  jacobian.Resize(0,0);
  jacinv.Resize(0,0);
  detjac = 1;
}