Skip to content
Snippets Groups Projects
Select Git revision
  • eeefe8a9f79bf35ca279b5c7933441a71393865e
  • master default protected
  • hierarchical-basis
  • alphashapes
  • bl
  • relaying
  • new_export_boris
  • oras_vs_osm
  • reassign_partitions
  • distributed_fwi
  • rename-classes
  • fix/fortran-api-example-t4
  • robust_partitions
  • reducing_files
  • fix_overlaps
  • 3115-issue-fix
  • 3023-Fillet2D-Update
  • convert_fdivs
  • tmp_jcjc24
  • fixedMeshIF
  • save_edges
  • gmsh_4_14_0
  • gmsh_4_13_1
  • gmsh_4_13_0
  • gmsh_4_12_2
  • gmsh_4_12_1
  • gmsh_4_12_0
  • gmsh_4_11_1
  • gmsh_4_11_0
  • gmsh_4_10_5
  • gmsh_4_10_4
  • gmsh_4_10_3
  • gmsh_4_10_2
  • gmsh_4_10_1
  • gmsh_4_10_0
  • gmsh_4_9_5
  • gmsh_4_9_4
  • gmsh_4_9_3
  • gmsh_4_9_2
  • gmsh_4_9_1
  • gmsh_4_9_0
41 results

Remove.cpp

Blame
  • frameSolver.cpp 9.24 KiB
    // Gmsh - Copyright (C) 1997-2019 C. Geuzaine, J.-F. Remacle
    //
    // See the LICENSE.txt file for license information. Please report all
    // issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
    
    #include "GmshConfig.h"
    #include "GModel.h"
    #include "GVertex.h"
    #include "GEdge.h"
    #include "frameSolver.h"
    #include "linearSystemCSR.h"
    #include "linearSystemPETSc.h"
    #include "linearSystemFull.h"
    
    #if defined(HAVE_POST)
    #include "PView.h"
    #include "PViewData.h"
    #endif
    
    frameSolver2d::frameSolver2d(GModel *gm) : pAssembler(0), _myModel(gm) {}
    
    void frameSolver2d::addFixations(const std::vector<int> &dirs,
                                     const std::vector<int> &modelVertices,
                                     double value)
    {
      for(std::size_t j = 0; j < modelVertices.size(); j++) {
        GVertex *gv = _myModel->getVertexByTag(modelVertices[j]);
        if(gv) {
          for(std::size_t i = 0; i < dirs.size(); i++) {
            _fixations.push_back(gmshFixation(gv, dirs[i], value));
          }
        }
      }
    }
    
    void frameSolver2d::addNodalForces(const std::vector<int> &modelVertices,
                                       const std::vector<double> &force)
    {
      for(std::size_t j = 0; j < modelVertices.size(); j++) {
        GVertex *gv = _myModel->getVertexByTag(modelVertices[j]);
        if(gv) {
          _nodalForces.push_back(std::make_pair(gv, force));
        }
      }
    }
    
    void frameSolver2d::addBeamsOrBars(const std::vector<int> &modelEdges, double E,
                                       double I, double A, int r[2])
    {
      int r_middle[2] = {1, 1}, r_left[2] = {r[0], 1}, r_right[2] = {0, r[1]};
      //  printf("adding %d beams\n",modelEdges.size());
      for(std::size_t i = 0; i < modelEdges.size(); i++) {
        GEdge *ge = _myModel->getEdgeByTag(modelEdges[i]);
        if(ge) {
          //      printf("model edge %d found\n",ge->tag());
          for(std::size_t j = 0; j < ge->lines.size(); ++j) {
            MLine *l = ge->lines[j];
            if(j == 0 && j == ge->lines.size() - 1)
              _beams.push_back(gmshBeam2d(l, E, I, A, r));
            else if(j == 0)
              _beams.push_back(gmshBeam2d(l, E, I, A, r_left));
            else if(j == ge->lines.size() - 1)
              _beams.push_back(gmshBeam2d(l, E, I, A, r_right));
            else
              _beams.push_back(gmshBeam2d(l, E, I, A, r_middle));
          }
        }
      }
    }