当前位置: 首页>>代码示例>>C++>>正文


C++ TPZCompEl类代码示例

本文整理汇总了C++中TPZCompEl的典型用法代码示例。如果您正苦于以下问题:C++ TPZCompEl类的具体用法?C++ TPZCompEl怎么用?C++ TPZCompEl使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了TPZCompEl类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: point

void TPZAnalysis::PrePostProcessTable(){
	TPZCompEl *cel;
	int numvar = fTable.fVariableNames.NElements();
	for(int iv=0; iv<numvar; iv++) {
		int numel = fTable.fCompElPtr.NElements();
		for(int iel=0; iel<numel; iel++) {
			cel = (TPZCompEl *) fTable.fCompElPtr[iel];
			if(cel) cel->PrintTitle((char *)fTable.fVariableNames[iv],*(fTable.fOutfile));
		}
	}
	*(fTable.fOutfile) << endl;
	int dim;
	TPZVec<REAL> point(fTable.fDimension);
	for(dim=1; dim<fTable.fDimension+1; dim++) {
		for(int iv=0; iv<numvar; iv++) {
			int numel = fTable.fCompElPtr.NElements();
			for(int iel=0; iel<numel; iel++) {
				int d;
				for(d=0; d<fTable.fDimension; d++) {
					point[d] = fTable.fLocations[iel*fTable.fDimension+d];
				}
				cel = (TPZCompEl *) fTable.fCompElPtr[iel];
				if(cel) cel->PrintCoordinate(point,dim,*(fTable.fOutfile));
			}
		}
		*(fTable.fOutfile) << endl;
	}
}
开发者ID:JoaoFelipe,项目名称:oceano,代码行数:28,代码来源:pzanalysis.cpp

示例2:

TPZGraphMesh::TPZGraphMesh(TPZCompMesh *cm, int dimension, TPZAutoPointer<TPZMaterial> mat)
{
	int nel,i;
	fElementList.Resize(0);
	fElementList.CompactDataStructure(1);
	fNodeMap.Resize(0);
	fNodeMap.CompactDataStructure(1);
	fMaterial = mat;
	fCompMesh = cm;
	fDimension = dimension;
	//   TPZGeoMesh *geomesh = fCompMesh->Reference();
	//   TPZAdmChunkVector<TPZGeoEl *> &gelvec = geomesh->ElementVec();
	//   TPZGeoEl *ge;
	//   nel = gelvec.NElements();
	//   for(i=0;i<nel;i++) {
	//     ge = gelvec[i];
	//     if(!ge || !ge->Reference() || ge->Reference()->Type() == EInterface ) continue;
	//       ge->Reference()->CreateGraphicalElement(*this, dimension);
	//   }
	
	TPZAdmChunkVector<TPZCompEl *> &celvec = fCompMesh->ElementVec();
	TPZCompEl *ce;
	nel = celvec.NElements();
	for(i=0;i<nel;i++) {
		ce = (TPZCompEl *) celvec[i];
		if(!ce) continue;
		//    if (ce->Dimension() != dimension) continue;
		ce->CreateGraphicalElement(*this, dimension);
	}
	
	fScalarNames = "";
	fVecNames = "";
}
开发者ID:JoaoFelipe,项目名称:oceano,代码行数:33,代码来源:pzgraphmesh.cpp

示例3: TPZGraphMesh

TPZDXGraphMesh::TPZDXGraphMesh(TPZCompMesh *cmesh, int dimension, TPZAutoPointer<TPZMaterial> mat, const TPZVec<std::string> &scalarnames, const TPZVec<std::string> &vecnames) :
TPZGraphMesh(cmesh,dimension,mat) {
	SetNames(scalarnames,vecnames);
	fNextDataField = 1;
	fStyle = EDXStyle;
	//	int index = 0;
	TPZCompEl *ce = FindFirstInterpolatedElement(cmesh,dimension);
	fElementType = "noname";
	if(ce) {
		int type = ce->Type();
		if(type == EOned)               fElementType = "lines";
		if(type == ETriangle)           fElementType = "triangles";
		if(type == EQuadrilateral)      fElementType = "quads";
		if(type == ECube)               fElementType = "cubes";
		if(type == EPrisma)             fElementType = "cubes";
		TPZGeoEl *gel = ce->Reference();
		if( type == EDiscontinuous || (type == EAgglomerate && gel) ){
			int nnodes = gel->NNodes();
			if(nnodes==4 && dimension==2) fElementType = "quads";
			if(nnodes==3 && dimension==2) fElementType = "triangles";
			if(dimension==3)              fElementType = "cubes";
		}
	}
	fNumCases = 0;
	fNumConnectObjects[0] = 1;
	fNumConnectObjects[1] = 1;
	fNumConnectObjects[2] = 1;
	fNormalObject = 0;
	
	for(int i = 0; i < 8; i++) fElConnectivityObject[i] = -1;
	
}
开发者ID:JoaoFelipe,项目名称:oceano,代码行数:32,代码来源:pzdxmesh.cpp

示例4: ErrorH1

void ErrorH1(TPZCompMesh *l2mesh, std::ostream &out)
{
    int64_t nel = l2mesh->NElements();
    int dim = l2mesh->Dimension();
    TPZManVector<STATE,10> globerrors(10,0.);
    for (int64_t el=0; el<nel; el++) {
        TPZCompEl *cel = l2mesh->ElementVec()[el];
        if (!cel) {
            continue;
        }
        TPZGeoEl *gel = cel->Reference();
        if (!gel || gel->Dimension() != dim) {
            continue;
        }
        TPZManVector<STATE,10> elerror(10,0.);
        elerror.Fill(0.);
        cel->EvaluateError(SolSuave, elerror, NULL);
        
        int nerr = elerror.size();
        //globerrors.resize(nerr);
#ifdef LOG4CXX
        if (logger->isDebugEnabled()) {
            std::stringstream sout;
            sout << "L2 Error sq of element " << el << elerror[0]*elerror[0];
            LOGPZ_DEBUG(logger, sout.str())
        }
#endif
        for (int i=0; i<nerr; i++) {
            globerrors[i] += elerror[i]*elerror[i];
        }
    }
开发者ID:labmec,项目名称:neopz,代码行数:31,代码来源:main.cpp

示例5: DebugStop

TPZCompEl *TPZGraphMesh::FindFirstInterpolatedElement(TPZCompMesh *mesh, int dim) {
	int64_t nel = mesh->NElements();
	TPZCompEl *cel;
	int64_t iel;
	for(iel=0; iel<nel; iel++) {
		cel = mesh->ElementVec()[iel];
		if(!cel) continue;
		int type = cel->Type();
		if(type == EAgglomerate){
#ifndef STATE_COMPLEX
			if(!cel->Reference()) continue;
			TPZAgglomerateElement *agg = dynamic_cast<TPZAgglomerateElement *>(cel);
			if(agg && agg->Dimension() == dim) return agg;
#else
			DebugStop();
#endif
		}
		if(type == EDiscontinuous){
			TPZCompElDisc *disc = dynamic_cast<TPZCompElDisc *>(cel);
			if(disc && disc->Reference()->Dimension() == dim) return disc;
		}
		TPZCompEl *intel = dynamic_cast<TPZInterpolatedElement *>(cel);
		if(intel && intel->Reference()->Dimension() == dim) return intel;
		TPZSubCompMesh *subcmesh = dynamic_cast<TPZSubCompMesh *> (cel);
		if(subcmesh) {
			intel = FindFirstInterpolatedElement(subcmesh,dim);
			if(intel) return intel;
		}
	}
	return 0;
}
开发者ID:labmec,项目名称:neopz,代码行数:31,代码来源:pzgraphmesh.cpp

示例6: ReadSolution

void ReadSolution(ifstream &arq, TPZVec<REAL> &sol, TPZCompMesh *cmesh, int &nstate, TPZVec<int> &dimstate){

  int i,j,totaldim=0;
  for(i=0;i<nstate;i++) totaldim += dimstate[i];
  TPZVec<REAL> pt(3,0.);
  TPZVec<REAL> coord(3,0.);
  TPZVec<REAL> auxsol(totaldim,0.);

  int iter = 0;
  int nel = cmesh->NElements();
  int solsize = totaldim * nel;
  sol.Resize(solsize);
  sol.Fill(0.);

  for(i=0; i<nel; i++){
    TPZCompEl *el = cmesh->ElementVec()[i];
    if (!el) continue;
    el->Reference()->CenterPoint(el->Reference()->NSides()-1,pt);
    el->Reference()->X(pt,coord);
    EvaluateSolution(coord,auxsol);
    for (j=0;j<totaldim;j++){
      sol[iter] = auxsol[j];
      iter++;
    }
  }
}
开发者ID:labmec,项目名称:neopz,代码行数:26,代码来源:main.cpp

示例7: RemoveCloneBC

void TPZAdaptMesh::RemoveCloneBC(TPZCompMesh *mesh)
{
    int nelem = mesh->NElements();
    int iel;
    for(iel=0; iel<nelem; iel++) {
        TPZCompEl *cel = mesh->ElementVec()[iel];
        if(!cel) continue;
        int matid = cel->Material()->Id();
        if(matid == -1000) delete cel;
    }
}
开发者ID:labmec,项目名称:neopz,代码行数:11,代码来源:pzadaptmesh.cpp

示例8: sloan

void TPZAnalysis::SetBlockNumber(){
	//enquanto nao compilamos o BOOST no windows, vai o sloan antigo
#ifdef WIN32
	if(!fCompMesh) return;
	fCompMesh->InitializeBlock();
	TPZVec<int> perm,iperm;
	
	TPZStack<int> elgraph,elgraphindex;
	int nindep = fCompMesh->NIndependentConnects();
	fCompMesh->ComputeElGraph(elgraph,elgraphindex);
	int nel = elgraphindex.NElements()-1;
	TPZSloan sloan(nel,nindep);
	sloan.SetElementGraph(elgraph,elgraphindex);
	sloan.Resequence(perm,iperm);
	fCompMesh->Permute(perm);
#else
	if(!fCompMesh) return;
	fCompMesh->InitializeBlock();
	
	TPZVec<int> perm,iperm;
	
	TPZStack<int> elgraph,elgraphindex;
	int nindep = fCompMesh->NIndependentConnects();
	fCompMesh->ComputeElGraph(elgraph,elgraphindex);
	int nel = elgraphindex.NElements()-1;
	int el,ncel = fCompMesh->NElements();
	int maxelcon = 0;
	for(el = 0; el<ncel; el++)
	{
		TPZCompEl *cel = fCompMesh->ElementVec()[el];
		if(!cel) continue;
		std::set<int> indepconlist,depconlist;
		cel->BuildConnectList(indepconlist,depconlist);
		int locnindep = indepconlist.size();
		maxelcon = maxelcon < locnindep ? locnindep : maxelcon;
	}
	fRenumber->SetElementsNodes(nel,nindep);
	//	TPZSloan sloan(nel,nindep,maxelcon);
	fRenumber->SetElementGraph(elgraph,elgraphindex);
	fRenumber->Resequence(perm,iperm);
	fCompMesh->Permute(perm);
	/*
	 fCompMesh->ComputeElGraph(elgraph,elgraphindex);
	 
	 TPZMetis metis(nel,nindep);
	 metis.SetElementGraph(elgraph,elgraphindex);
	 metis.Resequence(perm,iperm);
	 fCompMesh->Permute(iperm);
	 */
	
#endif
	
}
开发者ID:JoaoFelipe,项目名称:oceano,代码行数:53,代码来源:pzanalysis.cpp

示例9: RefinElemComp

void RefinElemComp(TPZCompMesh  *cMesh, int indexEl)
{
    
    TPZVec<int64_t > subindex;
    int64_t nel = cMesh->ElementVec().NElements();
    for(int64_t el=0; el < nel; el++){
        TPZCompEl * compEl = cMesh->ElementVec()[el];
        if(!compEl) continue;
        int64_t ind = compEl->Index();
        if(ind==indexEl){
            compEl->Divide(indexEl, subindex, 1);
        }
    }
}
开发者ID:labmec,项目名称:neopz,代码行数:14,代码来源:Main.cpp

示例10: HasTrueError

int TPZAdaptMesh::HasTrueError(int clindex, REAL &minerror, TPZVec<REAL> &ervec){
    
    TPZGeoCloneMesh *gmesh = dynamic_cast<TPZGeoCloneMesh *> (fCloneMeshes [clindex]->Reference());
    int nref = gmesh->NReference();
    int i;
    for (i=0;i<nref;i++){
        TPZGeoEl *gel = gmesh->ReferenceElement(i);
        TPZCompEl *cel = gel->Reference();
        if (!cel) continue;
        int celindex = cel->Index();
        if (ervec[celindex] >= minerror) return 1;
    }
    return 0;
}
开发者ID:labmec,项目名称:neopz,代码行数:14,代码来源:pzadaptmesh.cpp

示例11: RefinUniformElemComp

void RefinUniformElemComp(TPZCompMesh  *cMesh, int ndiv)
{
    
    TPZVec<int64_t > subindex;
    for (int64_t iref = 0; iref < ndiv; iref++) {
        TPZAdmChunkVector<TPZCompEl *> elvec = cMesh->ElementVec();
        int64_t nel = elvec.NElements();
        for(int64_t el=0; el < nel; el++){
            TPZCompEl * compEl = elvec[el];
            if(!compEl) continue;
            int64_t ind = compEl->Index();
            compEl->Divide(ind, subindex, 0);
        }
    }
}
开发者ID:labmec,项目名称:neopz,代码行数:15,代码来源:Main.cpp

示例12: CreatInterface

void CreatInterface(TPZCompMesh *cmesh){
    
    for(int el = 0; el < cmesh->ElementVec().NElements(); el++)
    {
        TPZCompEl * compEl = cmesh->ElementVec()[el];
        if(!compEl) continue;
        int index = compEl ->Index();
        if(compEl->Dimension() == cmesh->Dimension())
        {
            TPZInterpolationSpace * InterpEl = dynamic_cast<TPZInterpolationSpace *>(cmesh->ElementVec()[index]);
            if(!InterpEl) continue;
            InterpEl->CreateInterfaces(false);
        }
    }
    
    // cmesh->AdjustBoundaryElements();
    //cmesh->CleanUpUnconnectedNodes();
}
开发者ID:labmec,项目名称:neopz,代码行数:18,代码来源:main.cpp

示例13: elerror

void TPZAnalysisError::EvaluateError(REAL CurrentEtaAdmissible, std::ostream &out) {
	//Code isn�t place to chat
	//#warning Philippe, tambem nao entendo aqui //<!>
	
	TPZManVector<REAL,3> elerror(3);
	elerror.Fill(0.);
	TPZManVector<REAL,3> errorSum(3);
	errorSum.Fill(0.0);
	
	TPZBlock<REAL> *flux = 0;
	int elcounter=0;
	int numel = Mesh()->ElementVec().NElements();
	fElErrors.Resize(numel);
	fElIndexes.Resize(numel);
	Mesh()->ElementSolution().Redim(numel,1);
	//soma de erros sobre os elementos
	int el;
	for(el=0;el< numel;el++) {
		TPZCompEl *elptr = Mesh()->ElementVec()[el];
		if(elptr && !(elptr->Material()->Id() < 0)) {
			elptr->EvaluateError(fExact,elerror, flux);
			int nerrors = elerror.NElements();
			errorSum.Resize(nerrors, 0.);
			for(int ii = 0; ii < nerrors; ii++)
				errorSum[ii] += elerror[ii]*elerror[ii];
			
			fElErrors[elcounter] = elerror[0];
			(Mesh()->ElementSolution())(el,0) = elerror[0];
			fElIndexes[elcounter++] = el;
		} else {
			(Mesh()->ElementSolution())(el,0) = 0.;
		}
	}
	fElErrors.Resize(elcounter);
	fElIndexes.Resize(elcounter);
	fTotalError = sqrt(errorSum[0]);
	Mesh()->EvaluateError(NullFunction,elerror);
	//   fAdmissibleError = CurrentEtaAdmissible*sqrt(true_error*true_error + fTotalError*fTotalError) / sqrt(1.*elcounter);
	//<!>pra compilar
	//Code isn�t place to chat
	//#warning Phil, ver isso urgente. Tiago
	fAdmissibleError = CurrentEtaAdmissible*sqrt(elerror[0]*elerror[0] + fTotalError*fTotalError) / sqrt(1.*elcounter);
}
开发者ID:JoaoFelipe,项目名称:oceano,代码行数:43,代码来源:pzanalysiserror.cpp

示例14: fCompMesh

TPZGraphMesh::TPZGraphMesh(TPZCompMesh *cm, int dimension, const std::set<int> & matids, const TPZVec<std::string> &scalarnames, const TPZVec<std::string> &vecnames, const TPZVec<std::string> &tensornames) :
fCompMesh(cm), fDimension(dimension), fMaterialIds(matids), fScalarNames(scalarnames), fVecNames(vecnames), fTensorNames(tensornames)
{
    int64_t nel,i;
    fElementList.Resize(0);
    fElementList.CompactDataStructure(fElementList.NOW);
    fNodeMap.Resize(0);
    fNodeMap.CompactDataStructure(fNodeMap.NOW);
    
    TPZAdmChunkVector<TPZCompEl *> &celvec = fCompMesh->ElementVec();
    TPZCompEl *ce;
    nel = celvec.NElements();
    for(i=0;i<nel;i++) {
        ce = (TPZCompEl *) celvec[i];
        if(!ce) continue;
        ce->CreateGraphicalElement(*this, dimension);
    }
    
}
开发者ID:labmec,项目名称:neopz,代码行数:19,代码来源:pzgraphmesh.cpp

示例15: elerror

void TPZAnalysisError::EvaluateError(REAL CurrentEtaAdmissible, bool store_error, std::ostream &out) {
	//Code isn�t place to chat
	//#warning Philippe, tambem nao entendo aqui //<!>
	
	TPZManVector<REAL,3> elerror(3);
	elerror.Fill(0.);
	TPZManVector<REAL,3> errorSum(3);
	errorSum.Fill(0.0);
	
	TPZBlock<REAL> *flux = 0;
	int64_t elcounter=0;
	int64_t numel = Mesh()->ElementVec().NElements();
	fElErrors.Resize(numel);
	fElIndexes.Resize(numel);
	Mesh()->ElementSolution().Redim(numel,1);
	// Sum of the errors over all computational elements
	int64_t el;
	for(el=0;el< numel;el++) {
		TPZCompEl *elptr = Mesh()->ElementVec()[el];
		if(elptr && !(elptr->Material()->Id() < 0)) {
			elptr->EvaluateError(fExact,elerror, flux);
			int nerrors = elerror.NElements();
			errorSum.Resize(nerrors, 0.);
			for(int ii = 0; ii < nerrors; ii++)
				errorSum[ii] += elerror[ii]*elerror[ii];
			
			fElErrors[elcounter] = elerror[0];
			(Mesh()->ElementSolution())(el,0) = elerror[0];
			fElIndexes[elcounter++] = el;
		} else {
			(Mesh()->ElementSolution())(el,0) = 0.;
		}
	}
	fElErrors.Resize(elcounter);
	fElIndexes.Resize(elcounter);
	fTotalError = sqrt(errorSum[0]);
//    void NullFunction(TPZVec<REAL> &point,TPZVec<STATE>&val,TPZFMatrix<STATE> &deriv);

    std::function<void(const TPZVec<REAL> &,TPZVec<STATE>&,TPZFMatrix<STATE> &)> func(NullFunction);
	Mesh()->EvaluateError(func,store_error, elerror);
	fAdmissibleError = CurrentEtaAdmissible*sqrt(elerror[0]*elerror[0] + fTotalError*fTotalError) / sqrt(1.*elcounter);
}
开发者ID:labmec,项目名称:neopz,代码行数:42,代码来源:pzanalysiserror.cpp


注:本文中的TPZCompEl类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。