Skip to content
Snippets Groups Projects
Select Git revision
  • afc3df4b82da9f39fac646f1732d6e2b71c26d5d
  • 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

gsl_min.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    adaptiveData.cpp 39.04 KiB
    // Gmsh - Copyright (C) 1997-2009 C. Geuzaine, J.-F. Remacle
    //
    // See the LICENSE.txt file for license information. Please report all
    // bugs and problems to <gmsh@geuz.org>.
    
    #include <math.h>
    #include <list>
    #include <set>
    #include "adaptiveData.h"
    #include "Plugin.h"
    #include "OS.h"
    #include "GmshDefines.h"
    
    //#define TIMER
    
    std::set<adaptivePoint> adaptiveLine::allPoints;
    std::set<adaptivePoint> adaptiveTriangle::allPoints;
    std::set<adaptivePoint> adaptiveQuadrangle::allPoints;
    std::set<adaptivePoint> adaptiveTetrahedron::allPoints;
    std::set<adaptivePoint> adaptiveHexahedron::allPoints;
    std::set<adaptivePoint> adaptivePrism::allPoints;
    
    std::list<adaptiveLine*> adaptiveLine::all;
    std::list<adaptiveTriangle*> adaptiveTriangle::all;
    std::list<adaptiveQuadrangle*> adaptiveQuadrangle::all;
    std::list<adaptiveTetrahedron*> adaptiveTetrahedron::all;
    std::list<adaptiveHexahedron*> adaptiveHexahedron::all;
    std::list<adaptivePrism*> adaptivePrism::all;
    
    int adaptiveLine::numNodes = 2;
    int adaptiveTriangle::numNodes = 3;
    int adaptiveQuadrangle::numNodes = 4;
    int adaptivePrism::numNodes = 6;
    int adaptiveTetrahedron::numNodes = 4;
    int adaptiveHexahedron::numNodes = 8;
    
    int adaptiveLine::numEdges = 1;
    int adaptiveTriangle::numEdges = 3;
    int adaptiveQuadrangle::numEdges = 4;
    int adaptivePrism::numEdges = 9;
    int adaptiveTetrahedron::numEdges = 6;
    int adaptiveHexahedron::numEdges = 12;
    
    template <class T>
    static void cleanElement()
    {  
      for(typename std::list<T*>::iterator it = T::all.begin(); it != T::all.end(); ++it)
        delete *it;
      T::all.clear();
      T::allPoints.clear();
    }
    
    static void computeShapeFunctions(fullMatrix<double> *coeffs, fullMatrix<double> *eexps,
                                      double u, double v, double w, fullVector<double> *sf,
                                      fullVector<double> *tmp)
    {
      for(int i = 0; i < eexps->size1(); i++) {
        (*tmp)(i) = pow(u, (*eexps)(i, 0));
        if(eexps->size2() > 1) (*tmp)(i) *= pow(v, (*eexps)(i, 1));
        if(eexps->size2() > 2) (*tmp)(i) *= pow(w, (*eexps)(i, 2));
      }
      coeffs->mult(*tmp, *sf);
    }
    
    adaptivePoint *adaptivePoint::add(double x, double y, double z,
                                      std::set<adaptivePoint> &allPoints)
    {
      adaptivePoint p;
      p.x = x;
      p.y = y;