Skip to content
Snippets Groups Projects
Select Git revision
  • fb3251cd5f312f9512fff4ada6ad60f02b1a0c0a
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

Timer.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    • Christophe Geuzaine's avatar
      4e249276
      · 4e249276
      Christophe Geuzaine authored
      First batch of changes so that we can compile the code on windows
      without cygwin. With these changes gmsh compiles and runs cleanly
      without solver/jpeg/png/triangle/netgen/gsl support.
      4e249276
      History
      Christophe Geuzaine authored
      First batch of changes so that we can compile the code on windows
      without cygwin. With these changes gmsh compiles and runs cleanly
      without solver/jpeg/png/triangle/netgen/gsl support.
    meshGRegionLocalMeshMod.cpp 37.37 KiB
    // Gmsh - Copyright (C) 1997-2014 C. Geuzaine, J.-F. Remacle
    //
    // See the LICENSE.txt file for license information. Please report all
    // bugs and problems to the public mailing list <gmsh@geuz.org>.
    
    #include "meshGRegionLocalMeshMod.h"
    #include "GEntity.h"
    #include "GRegion.h"
    #include "GmshMessage.h"
    #include "Numeric.h"
    
    static int edges[6][2] =    {{0,1},{0,2},{0,3},{1,2},{1,3},{2,3}};
    static int efaces[6][2] =   {{0,2},{0,1},{1,2},{0,3},{2,3},{1,3}};
    //static int enofaces[6][2] = {{1,3},{2,3},{0,3},{1,2},{0,1},{0,2}};
    //static int facesXedges[4][3] = {{0,1,3},{1,2,5},{0,2,4},{3,4,5}};
    static int faces[4][3] = {{0,1,2},{0,2,3},{0,1,3},{1,2,3}};
    static int vnofaces[4] = {3,1,2,0};
    static int vFac[4][3] = {{0,1,2},{0,2,3},{0,1,3},{1,2,3}};
    
    // as input, we give a tet and an edge, as return, we get
    // all tets that share this edge and all vertices that are
    // forming the outer ring of the cavity
    // we return true if the cavity is closed and false if it is open
    
    void computeNeighboringTetsOfACavity(const std::vector<MTet4*> &cavity,
                                         std::vector<MTet4*> &outside)
    {
      outside.clear();
      for (unsigned int i = 0; i < cavity.size(); i++){
        for (int j = 0; j < 4; j++){
          MTet4 * neigh = cavity[i]->getNeigh(j);
          if(neigh){
            bool found = false;
            for (unsigned int k = 0; k < outside.size(); k++){
              if(outside[k] == neigh){
                found = true;
                break;
              }
            }
            if(!found){
              for (unsigned int k = 0; k < cavity.size(); k++){
                if(cavity[k] == neigh){
                  found = true;
                }
              }
            }
            if(!found)outside.push_back(neigh);
          }
        }
      }
    }
    
    bool buildEdgeCavity(MTet4 *t, int iLocalEdge, MVertex **v1, MVertex **v2,
                         std::vector<MTet4*> &cavity, std::vector<MTet4*> &outside,
                         std::vector<MVertex*> &ring)
    {
      cavity.clear();
      ring.clear();
    
      *v1 = t->tet()->getVertex(edges[iLocalEdge][0]);
      *v2 = t->tet()->getVertex(edges[iLocalEdge][1]);
    
      // the 5 - i th edge contains the other 2 points of the tet
      MVertex *lastinring = t->tet()->getVertex(edges[5 - iLocalEdge][0]);
      ring.push_back(lastinring);
      cavity.push_back(t);
    
      while (1){
        MVertex *ov1 = t->tet()->getVertex(edges[5 - iLocalEdge][0]);
        MVertex *ov2 = t->tet()->getVertex(edges[5 - iLocalEdge][1]);