diff --git a/Fltk/solverWindow.cpp b/Fltk/solverWindow.cpp index e919f787cee8b20176cac7c395701e288b6136d0..22a79d7cbf1cd3fee8e91cf7d31c44f355a204a1 100644 --- a/Fltk/solverWindow.cpp +++ b/Fltk/solverWindow.cpp @@ -399,7 +399,7 @@ static void solver_command_cb(Fl_Widget *w, void *data) optionIndex += numPercentS(ConnectionManager::get(num)->buttonSwitch[i]); int optionChoice = 0; - if(optionIndex >= 0 && optionIndex < FlGui::instance()->solver[num]->choice.size()) + if(optionIndex >= 0 && optionIndex < (int)FlGui::instance()->solver[num]->choice.size()) optionChoice = FlGui::instance()->solver[num]->choice[optionIndex]->value(); ConnectionManager::get(num)->runCommand(idx, optionIndex, optionChoice); diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp index 46c21a244fb48cdc82614050a0c5cdfef761e9a3..fc8400c91ee46959532708463aa390409726c85b 100644 --- a/Geo/GFace.cpp +++ b/Geo/GFace.cpp @@ -936,6 +936,7 @@ bool GFace::fillVertexArray(bool force) va_geom_triangles->add(x, y, z, n, col); } va_geom_triangles->finalize(); + return true; } // by default we assume that straight lines are geodesics diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 545b24549e8f32df10e0209187e43493a708f5dc..f15e7842acefc47bb335b9c5e5cd5db20d88be6a 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -1104,7 +1104,7 @@ void GModel::createTopologyFromFaces(std::vector<discreteFace*> &discFaces) for (std::vector<discreteEdge*>::iterator itE = discEdges.begin(); itE != discEdges.end(); itE++){ bool candidate = true; - for (int i=0; i < (*itE)->getNumMeshElements(); i++){ + for (unsigned int i = 0; i < (*itE)->getNumMeshElements(); i++){ MEdge me = (*itE)->getMeshElement(i)->getEdge(0); if (std::find(myEdges.begin(), myEdges.end(), me) == myEdges.end()){ candidate = false; @@ -1117,7 +1117,7 @@ void GModel::createTopologyFromFaces(std::vector<discreteFace*> &discFaces) std::vector<int> tagEdges; tagEdges.push_back((*itE)->tag()); //printf("push back edge %d\n", (*itE)->tag()); - for (int i=0; i < (*itE)->getNumMeshElements(); i++){ + for (unsigned int i = 0; i < (*itE)->getNumMeshElements(); i++){ MEdge me = (*itE)->getMeshElement(i)->getEdge(0); std::vector<MEdge>::iterator itME = std::find(myEdges.begin(), myEdges.end(), me); myEdges.erase(itME); diff --git a/Geo/GeomMeshMatcher.cpp b/Geo/GeomMeshMatcher.cpp index 1ffbce151d2658d02230144a9568f0e784636bf5..21382cb11bf1a627db60c54db13656a809722dba 100644 --- a/Geo/GeomMeshMatcher.cpp +++ b/Geo/GeomMeshMatcher.cpp @@ -230,7 +230,7 @@ GeomMeshMatcher::matchEdges(GModel* m1, GModel* m2, } - for (int i = 0; i < choice->getNumMeshElements(); i++) { + for (unsigned int i = 0; i < choice->getNumMeshElements(); i++) { for (int j = 0; j < choice->getMeshElement(i)->getNumVertices(); j++) { MVertex* v = choice->getMeshElement(i)->getVertex(j); double param = ((GEdge*) *entity1)->parFromPoint(v->point()); @@ -315,7 +315,7 @@ GeomMeshMatcher:: matchFaces(GModel* m1, GModel* m2, choice->setTag(((GFace*) *entity1)->tag()); num_matched_faces++; - for (int i = 0; i < choice->getNumMeshElements(); i++) { + for (unsigned int i = 0; i < choice->getNumMeshElements(); i++) { MVertex* v1 = choice->getMeshElement(i)->getVertex(0); MVertex* v2 = choice->getMeshElement(i)->getVertex(1); SPoint2 param1 = ((GFace*) *entity1)->parFromPoint(v1->point()); diff --git a/Graphics/gl2ps.cpp b/Graphics/gl2ps.cpp index cb66c91b1127d4a5dd4fe139af4d7ce829365138..8d3554d8b70ffef74122be9258172915eab53281 100644 --- a/Graphics/gl2ps.cpp +++ b/Graphics/gl2ps.cpp @@ -3403,7 +3403,7 @@ static void gl2psPutPDFText(GL2PSstring *text, int cnt, GLfloat x, GLfloat y) cnt, text->fontsize, x, y, text->str); } else{ - rad = M_PI * text->angle / 180.0F; + rad = (GLfloat)M_PI * text->angle / 180.0F; srad = (GLfloat)sin(rad); crad = (GLfloat)cos(rad); gl2ps->streamlength += gl2psPrintf diff --git a/Numeric/Numeric.cpp b/Numeric/Numeric.cpp index bcff7a120fcc4d73c62dc95a7baa569cf5cc2668..3f110c426f955324b1557134b23fcde4a789d1a8 100644 --- a/Numeric/Numeric.cpp +++ b/Numeric/Numeric.cpp @@ -640,8 +640,8 @@ void gmshLineSearch(double (*func)(fullVector<double> &, void *), void* data, } } -double minimize_grad_fd (double (*func)(fullVector<double> &, void *), - fullVector<double> &x, void *data) +double minimize_grad_fd(double (*func)(fullVector<double> &, void *), + fullVector<double> &x, void *data) { const int MAXIT = 3; const double EPS = 1.e-4; @@ -708,69 +708,69 @@ distance to segment */ -void signedDistancesPointsTriangle (std::vector<double>&distances, - const std::vector<SPoint3> &pts, - const SPoint3 &p1, - const SPoint3 &p2, - const SPoint3 &p3){ - SVector3 t1 = p2-p1; - SVector3 t2 = p3-p1; - SVector3 t3 = p3-p2; - SVector3 n = crossprod(t1,t2); +void signedDistancesPointsTriangle(std::vector<double>&distances, + const std::vector<SPoint3> &pts, + const SPoint3 &p1, + const SPoint3 &p2, + const SPoint3 &p3) +{ + SVector3 t1 = p2 - p1; + SVector3 t2 = p3 - p1; + SVector3 t3 = p3 - p2; + SVector3 n = crossprod(t1, t2); n.normalize(); - double mat[3][3] = {{t1.x(),t2.x(),-n.x()}, - {t1.y(),t2.y(),-n.y()}, - {t1.z(),t2.z(),-n.z()}}; + double mat[3][3] = {{t1.x(), t2.x(), -n.x()}, + {t1.y(), t2.y(), -n.y()}, + {t1.z(), t2.z(), -n.z()}}; double inv[3][3]; - double det = inv3x3(mat,inv); + double det = inv3x3(mat, inv); distances.clear(); distances.resize(pts.size()); - for (int i=0; i<pts.size();i++) + for (unsigned int i = 0; i < pts.size(); i++) distances[i] = 1.e22; - if (det = 0.0)return; - - const double n2t1 = dot(t1,t1); - const double n2t2 = dot(t2,t3); - const double n2t3 = dot(t3,t3); + if (det = 0.0) return; + const double n2t1 = dot(t1, t1); + const double n2t2 = dot(t2, t3); + const double n2t3 = dot(t3, t3); - double u,v,d; - for (int i=0; i<pts.size();i++){ - const SPoint3 & p = pts[i]; - SVector3 pp1 = p-p1; + double u, v, d; + for (unsigned int i = 0; i < pts.size();i++){ + const SPoint3 &p = pts[i]; + SVector3 pp1 = p - p1; u = (inv[0][0] * pp1.x() + inv[0][1] * pp1.y() + inv[0][2] * pp1.z()); v = (inv[1][0] * pp1.x() + inv[1][1] * pp1.y() + inv[1][2] * pp1.z()); d = (inv[2][0] * pp1.x() + inv[2][1] * pp1.y() + inv[2][2] * pp1.z()); - double sign = (d>0) ? 1.0 : -1.0; + double sign = (d > 0) ? 1. : -1.; if (d == 0) sign = 1.e10; - - if (u >= 0 && v >=0 && 1.-u-v >= 0.0){ + if (u >= 0 && v >= 0 && 1.-u-v >= 0.0){ distances[i] = d; } else { - const double t12 = dot(pp1,t1) / n2t1; - const double t13 = dot(pp1,t2) / n2t2; + const double t12 = dot(pp1, t1) / n2t1; + const double t13 = dot(pp1, t2) / n2t2; SVector3 pp2 = p - p2; - const double t23 = dot(pp2,t3) / n2t3; + const double t23 = dot(pp2, t3) / n2t3; d = 1.e10; bool found = false; - if (t12 >=0 && t12 <= 1.0){ - d = sign * std::min(fabs(d),p.distance(p1+(p2-p1)*t12)); + if (t12 >= 0 && t12 <= 1.){ + d = sign * std::min(fabs(d), p.distance(p1 + (p2 - p1) * t12)); found = true; } - if (t13 >=0 && t13 <= 1.0){ - d = sign * std::min(fabs(d),p.distance(p1+(p3-p1)*t13)); + if (t13 >= 0 && t13 <= 1.){ + d = sign * std::min(fabs(d), p.distance(p1 + (p3 - p1) * t13)); found = true; } - if (t23 >=0 && t23 <= 1.0){ - d = sign * std::min(fabs(d),p.distance(p2+(p3-p2)*t23)); + if (t23 >= 0 && t23 <= 1.){ + d = sign * std::min(fabs(d), p.distance(p2 + (p3 - p2) * t23)); found = true; } - d = sign * std::min(fabs(d),std::min(std::min(p.distance(p1),p.distance(p2)),p.distance(p3))); + d = sign * std::min(fabs(d), std::min(std::min(p.distance(p1), p.distance(p2)), + p.distance(p3))); distances[i] = d; } } diff --git a/Numeric/functionSpace.cpp b/Numeric/functionSpace.cpp index c535a49c53fe6ea4e2e22486eb1f5357b714738a..e2259ec1378fbd174b0ef021ae00761cda9395e6 100644 --- a/Numeric/functionSpace.cpp +++ b/Numeric/functionSpace.cpp @@ -630,7 +630,8 @@ static fullMatrix<double> gmshGeneratePointsQuad(int order, bool serendip) point.copy(inner, 0, nbPoints - index, 0, 2, index, 0); } } - } else { + } + else { point(0, 0) = 0; point(0, 1) = 0; } @@ -662,86 +663,93 @@ static fullMatrix<double> generateLagrangeMonomialCoefficients return coefficient; } - -// ----------------------------------------------------------------------------- -static void getFaceClosure(int iFace, int iSign, int iRotate , std::vector<int> & closure, int order) { +static void getFaceClosure(int iFace, int iSign, int iRotate, std::vector<int> &closure, + int order) +{ closure.clear(); - closure.reserve((order+1)*(order+2)/2); + closure.reserve((order + 1) * (order + 2) / 2); switch (order){ case 0: - closure[0]=0; + closure[0] = 0; break; default: - int face[4][3] = {{0, 1, 2},{0, 4, -3},{1, 5, -4},{-2, 5, -3}}; - int order1node[4][3] = {{0,1,2},{0,1,3},{1,2,3},{0,2,3}}; - // int facedofstmp[200]; - //face 0 | 0 1 2 - //face 1 | 0 4 -3 - //face 2 | 1 5 -4 - //face 3 | -2 5 -3 + int face[4][3] = {{0, 1, 2}, {0, 4, -3}, {1, 5, -4}, {-2, 5, -3}}; + int order1node[4][3] = {{0, 1, 2}, {0, 1, 3}, {1, 2, 3}, {0, 2, 3}}; + // int facedofstmp[200]; + // face 0 | 0 1 2 + // face 1 | 0 4 -3 + // face 2 | 1 5 -4 + // face 3 | -2 5 -3 // edge 0 | 4 -> 4+order-2 // edge 1 | 4+order-1 -> 4 + 2*(order-1)-1 // edge 2 | 4+2*(order-1)-> 4+ 3*(order-1)-1 // edge k | 4+k*(order-1) -> 4+(k+1)*(order-1)-1 - for (int i =0;i<3;++i){ - int k=(3+(iSign*i)+iRotate)%3; - closure[i]=order1node[iFace][k]; + for (int i = 0; i < 3; ++i){ + int k = (3 + (iSign * i) + iRotate) % 3; + closure[i] = order1node[iFace][k]; } - for (int i =0;i < 3;++i){ - int edgenumber = iSign*face[iFace][(6+i*iSign+(-1+iSign)/2+iRotate)%3]; - for (size_t k =0; k< (order-1); k++){ - if (edgenumber > 0 || ((edgenumber == 0) && (iSign >0) )) - closure [3+i*(order-1)+k] = 4 + edgenumber*(order-1)+k; + for (int i = 0;i < 3; ++i){ + int edgenumber = iSign * + face[iFace][(6 + i * iSign + (-1 + iSign) / 2 + iRotate) % 3]; + for (int k = 0; k < (order - 1); k++){ + if (edgenumber > 0 || ((edgenumber == 0) && (iSign > 0))) + closure[3 + i * (order - 1) + k] = + 4 + edgenumber * (order - 1) + k; else - closure [3+i*(order-1)+k] = 4 +(1- edgenumber)*(order-1)-1-k; + closure[3 + i * (order - 1) + k] = + 4 + (1 - edgenumber) * (order - 1) - 1 - k; } } - int fi = 3+3*(order-1); - int ti = 4+6*(order-1); - int ndofff = (order-3+2)*(order-3+1)/2; - ti = ti +iFace * ndofff; - for (size_t k=0; k<order/3;k++){ - int orderint = order - 3 - k*3; - if (orderint>0){ - for (int ci =0; ci <3 ; ci++){ - int shift = (3+iSign*ci+iRotate)%3; - closure[fi+ci] = ti+shift; + int fi = 3 + 3 * (order - 1); + int ti = 4 + 6 * (order - 1); + int ndofff = (order - 3 + 2) * (order - 3 + 1) / 2; + ti = ti + iFace * ndofff; + for (int k = 0; k < order / 3; k++){ + int orderint = order - 3 - k * 3; + if (orderint > 0){ + for (int ci = 0; ci < 3 ; ci++){ + int shift = (3 + iSign * ci + iRotate) % 3; + closure[fi + ci] = ti + shift; } - fi= fi+3; ti= ti+3; - for (int l=0; l< orderint-1; l++){ - for (int ei =0; ei<3; ei++) - { - int edgenumber = (6+ei*iSign+(-1+iSign)/2+iRotate)%3; - if (iSign > 0) closure[fi+ei*(orderint-1)+l] = ti + edgenumber*(orderint-1)+l; - else closure[fi+ei*(orderint-1)+l] = ti + (1+edgenumber)*(orderint-1)-1-l; - } + fi = fi + 3; ti = ti + 3; + for (int l = 0; l < orderint - 1; l++){ + for (int ei = 0; ei < 3; ei++){ + int edgenumber = (6 + ei * iSign + (-1 + iSign) / 2 + iRotate) % 3; + if (iSign > 0) + closure[fi + ei * (orderint - 1) + l] = + ti + edgenumber * (orderint - 1) + l; + else + closure[fi + ei * (orderint - 1) + l] = + ti + (1 + edgenumber) * (orderint - 1) - 1 - l; + } } - fi=fi+3*(orderint-1); ti = ti+3*(orderint -1); + fi = fi + 3 * (orderint - 1); ti = ti + 3 * (orderint - 1); } else { - closure[fi] = ti ; + closure[fi] = ti; ti++; fi++; } } break; } - return; } -static void generate3dFaceClosure ( functionSpace::clCont & closure , int order) { - for (int iRotate=0;iRotate<3;iRotate++){ - for (int iSign=1;iSign>=-1;iSign-=2){ - for (int iFace=0;iFace<4;iFace++){ +static void generate3dFaceClosure(functionSpace::clCont &closure, int order) +{ + for (int iRotate = 0; iRotate < 3; iRotate++){ + for (int iSign = 1; iSign >= -1; iSign -= 2){ + for (int iFace = 0; iFace < 4; iFace++){ std::vector<int> closure_face; - getFaceClosure(iFace,iSign,iRotate,closure_face,order); + getFaceClosure(iFace, iSign, iRotate, closure_face, order); closure.push_back(closure_face); } } } } -static void generate2dEdgeClosure ( functionSpace::clCont & closure , int order) { +static void generate2dEdgeClosure(functionSpace::clCont &closure, int order) +{ closure.clear(); // first give edge nodes of the three edges in direct order int index = 3; @@ -752,10 +760,10 @@ static void generate2dEdgeClosure ( functionSpace::clCont & closure , int order closure.push_back(c0);closure.push_back(c1);closure.push_back(c2); // then give edge nodes in reverse order std::vector<int> c3,c4,c5; - for (int i=c0.size()-1;i>=0;i--)c3.push_back(c0[i]); - for (int i=c1.size()-1;i>=0;i--)c4.push_back(c1[i]); - for (int i=c2.size()-1;i>=0;i--)c5.push_back(c2[i]); - closure.push_back(c3);closure.push_back(c4);closure.push_back(c5); + for (int i = c0.size() - 1; i >= 0; i--) c3.push_back(c0[i]); + for (int i = c1.size() - 1; i >= 0; i--) c4.push_back(c1[i]); + for (int i = c2.size() - 1; i >= 0; i--) c5.push_back(c2[i]); + closure.push_back(c3); closure.push_back(c4); closure.push_back(c5); } std::map<int, functionSpace> functionSpaces::fs; diff --git a/Solver/dofManager.h b/Solver/dofManager.h index 20f7aa5a5ef59b38fc5146135632cb35a8f864d4..9ff945e0ff3bcec912af9da80f0d5b56fe6b63e7 100644 --- a/Solver/dofManager.h +++ b/Solver/dofManager.h @@ -141,23 +141,23 @@ class dofManager{ { if (!_current->isAllocated()) _current->allocate(unknown.size()); - std::vector<int> NR(R.size()), NC(C.size()); + std::vector<int> NR(R.size()), NC(C.size()); - for (int i=0; i<R.size(); i++){ + for (unsigned int i = 0; i < R.size(); i++){ std::map<Dof, int>::iterator itR = unknown.find(R[i]); if (itR != unknown.end()) NR[i] = itR->second; else NR[i] = -1; } - for (int i=0; i< C.size(); i++){ + for (unsigned int i = 0; i < C.size(); i++){ std::map<Dof, int>::iterator itC = unknown.find(C[i]); if (itC != unknown.end()) NC[i] = itC->second; else NC[i] = -1; } - for (int i=0; i<R.size(); i++){ + for (unsigned int i = 0; i < R.size(); i++){ if (NR[i] != -1){ - for (int j=0; j<C.size(); j++){ + for (unsigned int j = 0; j < C.size(); j++){ if (NC[j] != -1){ - _current->addToMatrix(NR[i], NC[j], m(i,j)); + _current->addToMatrix(NR[i], NC[j], m(i, j)); } else{ typename std::map<Dof, dataVec>::iterator itFixed = fixed.find(C[j]); @@ -175,22 +175,22 @@ class dofManager{ std::vector<int> NR(R.size()); - for (int i=0; i<R.size(); i++){ + for (unsigned int i = 0; i < R.size(); i++){ std::map<Dof, int>::iterator itR = unknown.find(R[i]); if (itR != unknown.end()) NR[i] = itR->second; else NR[i] = -1; } - for (int i=0; i<R.size(); i++){ + for (unsigned int i = 0; i < R.size(); i++){ if (NR[i] != -1){ - for (int j=0; j<R.size(); j++){ + for (unsigned int j = 0; j < R.size(); j++){ if (NR[j] != -1){ - _current->addToMatrix(NR[i], NR[j], m(i,j)); + _current->addToMatrix(NR[i], NR[j], m(i, j)); } else{ typename std::map<Dof, dataVec>::iterator itFixed = fixed.find(R[j]); if (itFixed != fixed.end()){ - _current->addToRightHandSide(NR[i], -m(i,j) * itFixed->second); + _current->addToRightHandSide(NR[i], -m(i, j) * itFixed->second); } } } diff --git a/Solver/elasticitySolver.cpp b/Solver/elasticitySolver.cpp index 0301f64de8887557ccd7f4f13e2db18c95026dc4..558fdf6a99e71ad41ed68117af9bb4493937c96d 100644 --- a/Solver/elasticitySolver.cpp +++ b/Solver/elasticitySolver.cpp @@ -21,7 +21,7 @@ PView* elasticitySolver::buildDisplacementView (const std::string &postFileName){ std::map<int, std::vector<double> > data; std::set<MVertex*> v; - for (int i = 0; i < elasticFields.size(); ++i){ + for (unsigned int i = 0; i < elasticFields.size(); ++i){ groupOfElements::elementContainer::const_iterator it = elasticFields[i].g->begin(); for ( ; it != elasticFields[i].g->end(); ++it){ SElement se(*it); @@ -35,7 +35,7 @@ PView* elasticitySolver::buildDisplacementView (const std::string &postFileName) for ( ; it != v.end(); ++it){ std::vector<double> d; d.push_back(0); d.push_back(0); d.push_back(0); - for (int i = 0; i < elasticFields.size(); ++i){ + for (unsigned int i = 0; i < elasticFields.size(); ++i){ const double E = (elasticFields[i]._enrichment) ? (*elasticFields[i]._enrichment)((*it)->x(), (*it)->y(), (*it)->z()) : 1.0; // printf("%g %d \n",pAssembler->getDofValue(*it,0,elasticFields[i]._tag),elasticFields[i]._tag); @@ -232,7 +232,7 @@ void elasticitySolver::solve() // we number the nodes : when a node is numbered, it cannot be numbered // again with another number. so we loop over elements - for (int i = 0; i < elasticFields.size(); ++i){ + for (unsigned int i = 0; i < elasticFields.size(); ++i){ groupOfElements::elementContainer::const_iterator it = elasticFields[i].g->begin(); for ( ; it != elasticFields[i].g->end(); ++it){ SElement se(*it); @@ -301,9 +301,9 @@ void elasticitySolver::solve() } // assembling the stifness matrix - for (int i = 0; i < elasticFields.size(); i++){ + for (unsigned int i = 0; i < elasticFields.size(); i++){ SElement::setShapeEnrichement(elasticFields[i]._enrichment); - for (int j = 0; j < elasticFields.size(); j++){ + for (unsigned int j = 0; j < elasticFields.size(); j++){ elasticityTerm El(0, elasticFields[i]._E, elasticFields[i]._nu, elasticFields[i]._tag, elasticFields[j]._tag); SElement::setTestEnrichement(elasticFields[j]._enrichment); diff --git a/Solver/groupOfElements.cpp b/Solver/groupOfElements.cpp index e409dbc663d5c841fff0b052004d4275e3fc381a..74cd63e139bc4b6e24ee9e30618ae8b2920ae738 100644 --- a/Solver/groupOfElements.cpp +++ b/Solver/groupOfElements.cpp @@ -9,7 +9,7 @@ groupOfElements::groupOfElements(GFace*gf) } void groupOfElements::addElementary(GEntity *ge, const elementFilter &filter){ - for (int j = 0; j < ge->getNumMeshElements(); j++){ + for (unsigned int j = 0; j < ge->getNumMeshElements(); j++){ MElement *e = ge->getMeshElement(j); if (filter(e)){ insert(e); @@ -22,7 +22,7 @@ void groupOfElements::addPhysical(int dim, int physical, std::map<int, std::vector<GEntity*> > groups[4]; GModel::current()->getPhysicalGroups(groups); std::vector<GEntity*> ent = groups[dim][physical]; - for (int i = 0; i < ent.size(); i++){ + for (unsigned int i = 0; i < ent.size(); i++){ addElementary(ent[i], filter); } }