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

t18.cpp

Blame
  • EigenSolve.cpp 1.78 KiB
    // GetDP - Copyright (C) 1997-2018 P. Dular and C. Geuzaine, University of Liege
    //
    // See the LICENSE.txt file for license information. Please report all
    // bugs and problems to the public mailing list <getdp@onelab.info>.
    
    #include "GetDPConfig.h"
    #include "Message.h"
    #include "EigenSolve.h"
    
    #if ((PETSC_VERSION_RELEASE == 0) || ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 7)))
    #define PetscTruth PetscBool
    #define PetscOptionsGetTruth(A, B, C, D) PetscOptionsGetBool(A, NULL, B, C, D)
    #elif ((PETSC_VERSION_MAJOR == 3) && (PETSC_VERSION_MINOR >= 2))
    #define PetscTruth PetscBool
    #define PetscOptionsGetTruth PetscOptionsGetBool
    #endif
    
    void EigenSolve(struct DofData * DofData_P, int NumEigenvalues,
    		double shift_r, double shift_i, int FilterExpressionIndex,
                    List_T *RationalCoefsNum, List_T *RationalCoefsDen)
    {
    #if defined(HAVE_ARPACK) && defined(HAVE_SLEPC)
      // if both Arpack and SLEPC are available, use Arpack by default
      // (set "-slepc" on the command line to force SLEPC)
      PetscTruth slepc = PETSC_FALSE, set;
      PetscOptionsGetTruth(PETSC_NULL, "-slepc", &slepc, &set);
      if(slepc)
        EigenSolve_SLEPC(DofData_P, NumEigenvalues, shift_r, shift_i,
                         FilterExpressionIndex,
                         RationalCoefsNum, RationalCoefsDen);
      else
        EigenSolve_ARPACK(DofData_P, NumEigenvalues, shift_r, shift_i,
                          FilterExpressionIndex);
    #elif defined(HAVE_ARPACK)
      EigenSolve_ARPACK(DofData_P, NumEigenvalues, shift_r, shift_i,
                        FilterExpressionIndex);
    #elif defined(HAVE_SLEPC)
      EigenSolve_SLEPC(DofData_P, NumEigenvalues, shift_r, shift_i,
                       FilterExpressionIndex,
                       RationalCoefsNum, RationalCoefsDen);
    #else
      Message::Error("EigenSolve not available without SLEPC or ARPACK");
    #endif
    }